pyopencl 2024.1__cp38-cp38-win_amd64.whl → 2024.2__cp38-cp38-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pyopencl might be problematic. Click here for more details.
- pyopencl/__init__.py +82 -80
- pyopencl/_cl.cp38-win_amd64.pyd +0 -0
- pyopencl/algorithm.py +8 -10
- pyopencl/array.py +16 -12
- pyopencl/bitonic_sort.py +5 -4
- pyopencl/cache.py +22 -22
- pyopencl/capture_call.py +4 -3
- pyopencl/characterize/__init__.py +4 -2
- pyopencl/characterize/performance.py +2 -1
- pyopencl/clmath.py +2 -1
- pyopencl/clrandom.py +5 -369
- pyopencl/cltypes.py +4 -1
- pyopencl/compyte/dtypes.py +1 -1
- pyopencl/compyte/ndarray/gen_elemwise.py +6 -5
- pyopencl/compyte/ndarray/gen_reduction.py +6 -6
- pyopencl/compyte/ndarray/setup_opencl.py +3 -2
- pyopencl/compyte/ndarray/test_gpu_elemwise.py +5 -4
- pyopencl/compyte/ndarray/test_gpu_ndarray.py +0 -1
- pyopencl/elementwise.py +4 -6
- pyopencl/invoker.py +15 -9
- pyopencl/ipython_ext.py +1 -1
- pyopencl/reduction.py +5 -5
- pyopencl/scan.py +17 -21
- pyopencl/tools.py +13 -16
- pyopencl/version.py +1 -1
- pyopencl-2024.2.data/data/CITATION.cff +74 -0
- {pyopencl-2024.1.dist-info → pyopencl-2024.2.data/data}/LICENSE +0 -23
- pyopencl-2024.2.data/data/Makefile.in +21 -0
- pyopencl-2024.2.data/data/README.rst +70 -0
- pyopencl-2024.2.data/data/README_SETUP.txt +34 -0
- pyopencl-2024.2.data/data/aksetup_helper.py +1013 -0
- pyopencl-2024.2.data/data/configure.py +6 -0
- pyopencl-2024.2.data/data/contrib/cldis.py +91 -0
- pyopencl-2024.2.data/data/contrib/fortran-to-opencl/README +29 -0
- pyopencl-2024.2.data/data/contrib/fortran-to-opencl/translate.py +1441 -0
- pyopencl-2024.2.data/data/contrib/pyopencl.vim +84 -0
- pyopencl-2024.2.data/data/doc/Makefile +23 -0
- pyopencl-2024.2.data/data/doc/algorithm.rst +214 -0
- pyopencl-2024.2.data/data/doc/array.rst +305 -0
- pyopencl-2024.2.data/data/doc/conf.py +26 -0
- pyopencl-2024.2.data/data/doc/howto.rst +105 -0
- pyopencl-2024.2.data/data/doc/index.rst +137 -0
- pyopencl-2024.2.data/data/doc/make_constants.py +561 -0
- pyopencl-2024.2.data/data/doc/misc.rst +885 -0
- pyopencl-2024.2.data/data/doc/runtime.rst +51 -0
- pyopencl-2024.2.data/data/doc/runtime_const.rst +30 -0
- pyopencl-2024.2.data/data/doc/runtime_gl.rst +78 -0
- pyopencl-2024.2.data/data/doc/runtime_memory.rst +527 -0
- pyopencl-2024.2.data/data/doc/runtime_platform.rst +184 -0
- pyopencl-2024.2.data/data/doc/runtime_program.rst +364 -0
- pyopencl-2024.2.data/data/doc/runtime_queue.rst +182 -0
- pyopencl-2024.2.data/data/doc/subst.rst +36 -0
- pyopencl-2024.2.data/data/doc/tools.rst +4 -0
- pyopencl-2024.2.data/data/doc/types.rst +42 -0
- pyopencl-2024.2.data/data/examples/black-hole-accretion.py +2227 -0
- pyopencl-2024.2.data/data/examples/demo-struct-reduce.py +75 -0
- pyopencl-2024.2.data/data/examples/demo.py +39 -0
- pyopencl-2024.2.data/data/examples/demo_array.py +32 -0
- pyopencl-2024.2.data/data/examples/demo_array_svm.py +37 -0
- pyopencl-2024.2.data/data/examples/demo_elementwise.py +34 -0
- pyopencl-2024.2.data/data/examples/demo_elementwise_complex.py +53 -0
- pyopencl-2024.2.data/data/examples/demo_mandelbrot.py +183 -0
- pyopencl-2024.2.data/data/examples/demo_meta_codepy.py +56 -0
- pyopencl-2024.2.data/data/examples/demo_meta_template.py +55 -0
- pyopencl-2024.2.data/data/examples/dump-performance.py +38 -0
- pyopencl-2024.2.data/data/examples/dump-properties.py +86 -0
- pyopencl-2024.2.data/data/examples/gl_interop_demo.py +84 -0
- pyopencl-2024.2.data/data/examples/gl_particle_animation.py +218 -0
- pyopencl-2024.2.data/data/examples/ipython-demo.ipynb +203 -0
- pyopencl-2024.2.data/data/examples/median-filter.py +99 -0
- pyopencl-2024.2.data/data/examples/n-body.py +1070 -0
- pyopencl-2024.2.data/data/examples/narray.py +37 -0
- pyopencl-2024.2.data/data/examples/noisyImage.jpg +0 -0
- pyopencl-2024.2.data/data/examples/pi-monte-carlo.py +1166 -0
- pyopencl-2024.2.data/data/examples/svm.py +82 -0
- pyopencl-2024.2.data/data/examples/transpose.py +229 -0
- pyopencl-2024.2.data/data/pytest.ini +3 -0
- pyopencl-2024.2.data/data/src/bitlog.cpp +51 -0
- pyopencl-2024.2.data/data/src/bitlog.hpp +83 -0
- pyopencl-2024.2.data/data/src/clinfo_ext.h +134 -0
- pyopencl-2024.2.data/data/src/mempool.hpp +444 -0
- pyopencl-2024.2.data/data/src/pyopencl_ext.h +77 -0
- pyopencl-2024.2.data/data/src/tools.hpp +90 -0
- pyopencl-2024.2.data/data/src/wrap_cl.cpp +61 -0
- pyopencl-2024.2.data/data/src/wrap_cl.hpp +5853 -0
- pyopencl-2024.2.data/data/src/wrap_cl_part_1.cpp +369 -0
- pyopencl-2024.2.data/data/src/wrap_cl_part_2.cpp +702 -0
- pyopencl-2024.2.data/data/src/wrap_constants.cpp +1274 -0
- pyopencl-2024.2.data/data/src/wrap_helpers.hpp +213 -0
- pyopencl-2024.2.data/data/src/wrap_mempool.cpp +731 -0
- pyopencl-2024.2.data/data/test/add-vectors-32.spv +0 -0
- pyopencl-2024.2.data/data/test/add-vectors-64.spv +0 -0
- pyopencl-2024.2.data/data/test/empty-header.h +1 -0
- pyopencl-2024.2.data/data/test/test_algorithm.py +1180 -0
- pyopencl-2024.2.data/data/test/test_array.py +2392 -0
- pyopencl-2024.2.data/data/test/test_arrays_in_structs.py +100 -0
- pyopencl-2024.2.data/data/test/test_clmath.py +529 -0
- pyopencl-2024.2.data/data/test/test_clrandom.py +75 -0
- pyopencl-2024.2.data/data/test/test_enqueue_copy.py +271 -0
- pyopencl-2024.2.data/data/test/test_wrapper.py +1554 -0
- pyopencl-2024.2.dist-info/LICENSE +282 -0
- {pyopencl-2024.1.dist-info → pyopencl-2024.2.dist-info}/METADATA +12 -12
- pyopencl-2024.2.dist-info/RECORD +122 -0
- {pyopencl-2024.1.dist-info → pyopencl-2024.2.dist-info}/WHEEL +1 -1
- pyopencl/cl/pyopencl-ranluxcl.cl +0 -957
- pyopencl-2024.1.dist-info/RECORD +0 -48
- {pyopencl-2024.1.dist-info → pyopencl-2024.2.dist-info}/top_level.txt +0 -0
pyopencl/scan.py
CHANGED
|
@@ -22,33 +22,24 @@ limitations under the License.
|
|
|
22
22
|
Derived from code within the Thrust project, https://github.com/NVIDIA/thrust
|
|
23
23
|
"""
|
|
24
24
|
|
|
25
|
+
import logging
|
|
25
26
|
from abc import ABC, abstractmethod
|
|
26
27
|
from dataclasses import dataclass
|
|
27
28
|
from typing import Any, Dict, List, Optional, Set, Tuple, Union
|
|
28
29
|
|
|
29
30
|
import numpy as np
|
|
31
|
+
from pytools.persistent_dict import WriteOncePersistentDict
|
|
30
32
|
|
|
31
33
|
import pyopencl as cl
|
|
32
|
-
import pyopencl.array
|
|
33
|
-
from pyopencl.tools import (
|
|
34
|
-
KernelTemplateBase,
|
|
35
|
-
DtypedArgument,
|
|
36
|
-
bitlog2,
|
|
37
|
-
context_dependent_memoize,
|
|
38
|
-
dtype_to_ctype,
|
|
39
|
-
get_arg_list_scalar_arg_dtypes,
|
|
40
|
-
get_arg_offset_adjuster_code,
|
|
41
|
-
_process_code_for_macro,
|
|
42
|
-
_NumpyTypesKeyBuilder,
|
|
43
|
-
)
|
|
44
|
-
|
|
45
34
|
import pyopencl._mymako as mako
|
|
35
|
+
import pyopencl.array
|
|
46
36
|
from pyopencl._cluda import CLUDA_PREAMBLE
|
|
47
|
-
|
|
48
|
-
|
|
37
|
+
from pyopencl.tools import (
|
|
38
|
+
DtypedArgument, KernelTemplateBase, _NumpyTypesKeyBuilder,
|
|
39
|
+
_process_code_for_macro, bitlog2, context_dependent_memoize, dtype_to_ctype,
|
|
40
|
+
get_arg_list_scalar_arg_dtypes, get_arg_offset_adjuster_code)
|
|
49
41
|
|
|
50
42
|
|
|
51
|
-
import logging
|
|
52
43
|
logger = logging.getLogger(__name__)
|
|
53
44
|
|
|
54
45
|
|
|
@@ -1141,10 +1132,14 @@ class GenericScanKernelBase(ABC):
|
|
|
1141
1132
|
pass
|
|
1142
1133
|
|
|
1143
1134
|
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1135
|
+
if not cl._PYOPENCL_NO_CACHE:
|
|
1136
|
+
generic_scan_kernel_cache: WriteOncePersistentDict[Any,
|
|
1137
|
+
Tuple[_GeneratedScanKernelInfo, _GeneratedScanKernelInfo,
|
|
1138
|
+
_GeneratedFinalUpdateKernelInfo]] = \
|
|
1139
|
+
WriteOncePersistentDict(
|
|
1140
|
+
"pyopencl-generated-scan-kernel-cache-v1",
|
|
1141
|
+
key_builder=_NumpyTypesKeyBuilder(),
|
|
1142
|
+
in_mem_cache_size=0)
|
|
1148
1143
|
|
|
1149
1144
|
|
|
1150
1145
|
class GenericScanKernel(GenericScanKernelBase):
|
|
@@ -1199,7 +1194,8 @@ class GenericScanKernel(GenericScanKernelBase):
|
|
|
1199
1194
|
self.second_level_scan_gen_info,
|
|
1200
1195
|
self.final_update_gen_info)
|
|
1201
1196
|
|
|
1202
|
-
|
|
1197
|
+
if not cl._PYOPENCL_NO_CACHE:
|
|
1198
|
+
generic_scan_kernel_cache.store_if_not_present(cache_key, result)
|
|
1203
1199
|
|
|
1204
1200
|
# Build the kernels.
|
|
1205
1201
|
self.first_level_scan_info = self.first_level_scan_gen_info.build(
|
pyopencl/tools.py
CHANGED
|
@@ -126,27 +126,27 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
|
126
126
|
OTHER DEALINGS IN THE SOFTWARE.
|
|
127
127
|
"""
|
|
128
128
|
|
|
129
|
+
import re
|
|
129
130
|
from abc import ABC, abstractmethod
|
|
130
131
|
from sys import intern
|
|
131
132
|
from typing import Any, List, Optional, Union
|
|
132
133
|
|
|
133
|
-
# Do not add a pyopencl import here: This will add an import cycle.
|
|
134
|
-
|
|
135
134
|
import numpy as np
|
|
136
135
|
from pytools import memoize, memoize_method
|
|
137
|
-
from pyopencl._cl import bitlog2, get_cl_header_version # noqa: F401
|
|
138
136
|
from pytools.persistent_dict import KeyBuilder as KeyBuilderBase
|
|
139
137
|
|
|
140
|
-
import
|
|
141
|
-
|
|
138
|
+
from pyopencl._cl import bitlog2, get_cl_header_version # noqa: F401
|
|
139
|
+
from pyopencl.compyte.dtypes import TypeNameNotKnown # noqa: F401
|
|
142
140
|
from pyopencl.compyte.dtypes import ( # noqa: F401
|
|
143
|
-
|
|
144
|
-
|
|
141
|
+
dtype_to_ctype, get_or_register_dtype, register_dtype)
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
# Do not add a pyopencl import here: This will add an import cycle.
|
|
145
145
|
|
|
146
146
|
|
|
147
147
|
def _register_types():
|
|
148
148
|
from pyopencl.compyte.dtypes import (
|
|
149
|
-
|
|
149
|
+
TYPE_REGISTRY, fill_registry_with_opencl_c_types)
|
|
150
150
|
|
|
151
151
|
fill_registry_with_opencl_c_types(TYPE_REGISTRY)
|
|
152
152
|
|
|
@@ -160,17 +160,11 @@ _register_types()
|
|
|
160
160
|
# {{{ imported names
|
|
161
161
|
|
|
162
162
|
from pyopencl._cl import ( # noqa: F401
|
|
163
|
-
|
|
164
|
-
ImmediateAllocator, MemoryPool,
|
|
165
|
-
)
|
|
163
|
+
AllocatorBase, DeferredAllocator, ImmediateAllocator, MemoryPool, PooledBuffer)
|
|
166
164
|
|
|
167
165
|
|
|
168
166
|
if get_cl_header_version() >= (2, 0):
|
|
169
|
-
from pyopencl._cl import
|
|
170
|
-
SVMPool,
|
|
171
|
-
PooledSVM,
|
|
172
|
-
SVMAllocator,
|
|
173
|
-
)
|
|
167
|
+
from pyopencl._cl import PooledSVM, SVMAllocator, SVMPool # noqa: F401
|
|
174
168
|
|
|
175
169
|
# }}}
|
|
176
170
|
|
|
@@ -518,6 +512,7 @@ def first_arg_dependent_memoize_nested(nested_func):
|
|
|
518
512
|
nested_func.__code__.co_firstlineno))
|
|
519
513
|
|
|
520
514
|
from inspect import currentframe
|
|
515
|
+
|
|
521
516
|
# prevent ref cycle
|
|
522
517
|
try:
|
|
523
518
|
caller_frame = currentframe().f_back
|
|
@@ -560,6 +555,8 @@ def clear_first_arg_caches():
|
|
|
560
555
|
|
|
561
556
|
|
|
562
557
|
import atexit
|
|
558
|
+
|
|
559
|
+
|
|
563
560
|
atexit.register(clear_first_arg_caches)
|
|
564
561
|
|
|
565
562
|
# }}}
|
pyopencl/version.py
CHANGED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
message: "If you use this software, please cite it as below."
|
|
3
|
+
authors:
|
|
4
|
+
- family-names: "Kloeckner"
|
|
5
|
+
given-names: "Andreas"
|
|
6
|
+
orcid: "https://orcid.org/0000-0003-1228-519X"
|
|
7
|
+
- family-names: "Yu"
|
|
8
|
+
given-names: "Yichao"
|
|
9
|
+
- family-names: "Wala"
|
|
10
|
+
given-names: "Matt"
|
|
11
|
+
- family-names: "Fernando"
|
|
12
|
+
given-names: "Isuru"
|
|
13
|
+
- family-names: "Bencun"
|
|
14
|
+
given-names: "Marko"
|
|
15
|
+
- family-names: "Kulkarni"
|
|
16
|
+
given-names: "Kaushik"
|
|
17
|
+
- family-names: "Diener"
|
|
18
|
+
given-names: "Matthias"
|
|
19
|
+
- family-names: "Gao"
|
|
20
|
+
given-names: "Hao"
|
|
21
|
+
- family-names: "Fikl"
|
|
22
|
+
given-names: "Alex"
|
|
23
|
+
- family-names: "Weiner"
|
|
24
|
+
given-names: "Zach"
|
|
25
|
+
- family-names: "Weigert"
|
|
26
|
+
given-names: "Martin"
|
|
27
|
+
- family-names: "Palmer"
|
|
28
|
+
given-names: "Rebecca"
|
|
29
|
+
- family-names: "Latham"
|
|
30
|
+
given-names: "Shane"
|
|
31
|
+
- family-names: "Magno"
|
|
32
|
+
given-names: "Gonçalo"
|
|
33
|
+
- family-names: "Fuller"
|
|
34
|
+
given-names: "Henry"
|
|
35
|
+
- family-names: "Mackenzie"
|
|
36
|
+
given-names: "Jonathan"
|
|
37
|
+
- family-names: "Niarchos"
|
|
38
|
+
given-names: "Sotiris"
|
|
39
|
+
- family-names: "Gill"
|
|
40
|
+
given-names: "Shahzaib"
|
|
41
|
+
- family-names: "Gohlke"
|
|
42
|
+
given-names: "Christoph"
|
|
43
|
+
- family-names: "Bhosale"
|
|
44
|
+
given-names: "Aditya"
|
|
45
|
+
- family-names: "Rothberg"
|
|
46
|
+
given-names: "Alex"
|
|
47
|
+
- family-names: "Ey"
|
|
48
|
+
given-names: "Emanuel"
|
|
49
|
+
- family-names: "Rapp"
|
|
50
|
+
given-names: "Holger"
|
|
51
|
+
- family-names: "van der Walt"
|
|
52
|
+
given-names: "Stefan"
|
|
53
|
+
# Removed pending resolution of https://github.com/zenodo/zenodo/issues/2343
|
|
54
|
+
# - alias: "gw0"
|
|
55
|
+
- family-names: "Thalhammer"
|
|
56
|
+
given-names: "Gregor"
|
|
57
|
+
- family-names: "Kieffer"
|
|
58
|
+
given-names: "Jerome"
|
|
59
|
+
- family-names: "Poliarnyi"
|
|
60
|
+
given-names: "Nikolai"
|
|
61
|
+
- family-names: "Bollinger"
|
|
62
|
+
given-names: "Drew"
|
|
63
|
+
- family-names: "Nitz"
|
|
64
|
+
given-names: "Alex"
|
|
65
|
+
- family-names: "Bokota"
|
|
66
|
+
given-names: "Grzegorz"
|
|
67
|
+
orcid: 'https://orcid.org/0000-0002-5470-1676'
|
|
68
|
+
|
|
69
|
+
title: "PyOpenCL"
|
|
70
|
+
version: 2022.1.3
|
|
71
|
+
doi: 10.5281/zenodo.6533956
|
|
72
|
+
date-released: 2022-03-10
|
|
73
|
+
url: "https://github.com/inducer/pyopencl"
|
|
74
|
+
license: MIT
|
|
@@ -78,29 +78,6 @@ PyOpenCL includes parts of the Random123 suite of random number generators:
|
|
|
78
78
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
79
79
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
80
80
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
81
|
-
|
|
82
|
-
PyOpenCL includes the RANLUXCL random number generator:
|
|
83
|
-
|
|
84
|
-
Copyright (c) 2011 Ivar Ursin Nikolaisen
|
|
85
|
-
|
|
86
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy of this
|
|
87
|
-
software and associated documentation files (the "Software"), to deal in the Software
|
|
88
|
-
without restriction, including without limitation the rights to use, copy, modify,
|
|
89
|
-
merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
|
|
90
|
-
permit persons to whom the Software is furnished to do so, subject to the following
|
|
91
|
-
conditions:
|
|
92
|
-
|
|
93
|
-
The above copyright notice and this permission notice shall be included in all copies
|
|
94
|
-
or substantial portions of the Software.
|
|
95
|
-
|
|
96
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
|
97
|
-
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
|
98
|
-
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
99
|
-
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
|
100
|
-
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
|
101
|
-
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
102
|
-
|
|
103
|
-
|
|
104
81
|
PyOpenCL wheel includes Khronos Group OpenCL-ICD-Loader which is licensed as below:
|
|
105
82
|
Apache License
|
|
106
83
|
Version 2.0, January 2004
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
.PHONY : all install clean tags dist userdoc devdoc
|
|
2
|
+
|
|
3
|
+
all: tags
|
|
4
|
+
${PYTHON_EXE} setup.py build
|
|
5
|
+
|
|
6
|
+
dist:
|
|
7
|
+
${PYTHON_EXE} setup.py sdist
|
|
8
|
+
|
|
9
|
+
install: tags
|
|
10
|
+
${PYTHON_EXE} setup.py install
|
|
11
|
+
|
|
12
|
+
clean:
|
|
13
|
+
rm -Rf build
|
|
14
|
+
rm -f tags
|
|
15
|
+
|
|
16
|
+
tags:
|
|
17
|
+
ctags -R src || true
|
|
18
|
+
|
|
19
|
+
tests:
|
|
20
|
+
echo "running tests"
|
|
21
|
+
find ./test -type f -name "*.py" -exec python {} \;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
PyOpenCL: Pythonic Access to OpenCL, with Arrays and Algorithms
|
|
2
|
+
===============================================================
|
|
3
|
+
|
|
4
|
+
.. |badge-gitlab-ci| image:: https://gitlab.tiker.net/inducer/pyopencl/badges/main/pipeline.svg
|
|
5
|
+
:alt: Gitlab Build Status
|
|
6
|
+
:target: https://gitlab.tiker.net/inducer/pyopencl/commits/main
|
|
7
|
+
.. |badge-github-ci| image:: https://github.com/inducer/pyopencl/workflows/CI/badge.svg?branch=main&event=push
|
|
8
|
+
:alt: Github Build Status
|
|
9
|
+
:target: https://github.com/inducer/pyopencl/actions?query=branch%3Amain+workflow%3ACI+event%3Apush
|
|
10
|
+
.. |badge-pypi| image:: https://badge.fury.io/py/pyopencl.svg
|
|
11
|
+
:alt: Python Package Index Release Page
|
|
12
|
+
:target: https://pypi.org/project/pyopencl/
|
|
13
|
+
.. |badge-zenodo| image:: https://zenodo.org/badge/1575307.svg
|
|
14
|
+
:alt: Zenodo DOI for latest release
|
|
15
|
+
:target: https://zenodo.org/badge/latestdoi/1575307
|
|
16
|
+
|
|
17
|
+
|badge-gitlab-ci| |badge-github-ci| |badge-pypi| |badge-zenodo|
|
|
18
|
+
|
|
19
|
+
PyOpenCL lets you access GPUs and other massively parallel compute
|
|
20
|
+
devices from Python. It tries to offer computing goodness in the
|
|
21
|
+
spirit of its sister project `PyCUDA <https://mathema.tician.de/software/pycuda>`__:
|
|
22
|
+
|
|
23
|
+
* Object cleanup tied to lifetime of objects. This idiom, often
|
|
24
|
+
called `RAII <https://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization>`__
|
|
25
|
+
in C++, makes it much easier to write correct, leak- and
|
|
26
|
+
crash-free code.
|
|
27
|
+
|
|
28
|
+
* Completeness. PyOpenCL puts the full power of OpenCL's API at
|
|
29
|
+
your disposal, if you wish. Every obscure ``get_info()`` query and
|
|
30
|
+
all CL calls are accessible.
|
|
31
|
+
|
|
32
|
+
* Automatic Error Checking. All CL errors are automatically
|
|
33
|
+
translated into Python exceptions.
|
|
34
|
+
|
|
35
|
+
* Speed. PyOpenCL's base layer is written in C++, so all the niceties
|
|
36
|
+
above are virtually free.
|
|
37
|
+
|
|
38
|
+
* Helpful and complete `Documentation <https://documen.tician.de/pyopencl>`__
|
|
39
|
+
as well as a `Wiki <https://wiki.tiker.net/PyOpenCL>`__.
|
|
40
|
+
|
|
41
|
+
* Liberal license. PyOpenCL is open-source under the
|
|
42
|
+
`MIT license <https://en.wikipedia.org/wiki/MIT_License>`__
|
|
43
|
+
and free for commercial, academic, and private use.
|
|
44
|
+
|
|
45
|
+
* Broad support. PyOpenCL was tested and works with Apple's, AMD's, and Nvidia's
|
|
46
|
+
CL implementations.
|
|
47
|
+
|
|
48
|
+
Simple 4-step `install instructions <https://documen.tician.de/pyopencl/misc.html#installation>`__
|
|
49
|
+
using Conda on Linux and macOS (that also install a working OpenCL implementation!)
|
|
50
|
+
can be found in the `documentation <https://documen.tician.de/pyopencl/>`__.
|
|
51
|
+
|
|
52
|
+
What you'll need if you do *not* want to use the convenient instructions above and
|
|
53
|
+
instead build from source:
|
|
54
|
+
|
|
55
|
+
* g++/clang new enough to be compatible with nanobind (specifically, full support of C++17 is needed)
|
|
56
|
+
* `numpy <https://numpy.org>`__, and
|
|
57
|
+
* an OpenCL implementation. (See this `howto <https://wiki.tiker.net/OpenCLHowTo>`__
|
|
58
|
+
for how to get one.)
|
|
59
|
+
|
|
60
|
+
Links
|
|
61
|
+
-----
|
|
62
|
+
|
|
63
|
+
* `Documentation <https://documen.tician.de/pyopencl>`__
|
|
64
|
+
(read how things work)
|
|
65
|
+
* `Python package index <https://pypi.python.org/pypi/pyopencl>`__
|
|
66
|
+
(download releases, including binary wheels for Linux, macOS, Windows)
|
|
67
|
+
* `Conda Forge <https://anaconda.org/conda-forge/pyopencl>`__
|
|
68
|
+
(download binary packages for Linux, macOS, Windows)
|
|
69
|
+
* `Github <https://github.com/inducer/pyopencl>`__
|
|
70
|
+
(get latest source code, file bugs)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
Hi, welcome.
|
|
2
|
+
|
|
3
|
+
This Python package uses aksetup for installation, which means that
|
|
4
|
+
installation should be easy and quick.
|
|
5
|
+
|
|
6
|
+
If you don't want to continue reading, just try the regular
|
|
7
|
+
|
|
8
|
+
./configure.py --help
|
|
9
|
+
./configure.py --some-options
|
|
10
|
+
make
|
|
11
|
+
sudo make install
|
|
12
|
+
|
|
13
|
+
That should do the trick. (By the way: If a config option says "several ok",
|
|
14
|
+
then you may specify several values, separated by commas.)
|
|
15
|
+
|
|
16
|
+
aksetup also supports regular distutils installation, without using
|
|
17
|
+
configure:
|
|
18
|
+
|
|
19
|
+
python setup.py build
|
|
20
|
+
sudo python setup.py install
|
|
21
|
+
|
|
22
|
+
In this case, configuration is obtained from files in this order:
|
|
23
|
+
|
|
24
|
+
/etc/aksetup-defaults.py
|
|
25
|
+
$HOME/.aksetup-defaults.py
|
|
26
|
+
$PACKAGEDIR/siteconf.py
|
|
27
|
+
|
|
28
|
+
Once you've run configure, you can copy options from your siteconf.py file to
|
|
29
|
+
one of these files, and you won't ever have to configure them again manually.
|
|
30
|
+
In fact, you may pass the options "--update-user" and "--update-global" to
|
|
31
|
+
configure, and it will automatically update these files for you.
|
|
32
|
+
|
|
33
|
+
This is particularly handy if you want to perform an unattended or automatic
|
|
34
|
+
installation via easy_install.
|