This package extends PyOpenCl by providing an object-oriented kernel programming framework and debugging capabilities.
Project description
This package extends PyOpenCl by providing an object-oriented kernel programming framework and debugging capabilities.
- What makes pyopencl-extension special?
Build on top of PyOpenCl which can increase performance significantly.
Usage of this framework forces consistent code when programming for GPU.
Allows debugging of OpenCl-Programs through kernel emulation in Python using a visual debugger (tested with Pycharm).
OpenCl emulation allows to find out-of-bounds array indexing more easily.
Integrated profiling features give quick overview over performance bottlenecks.
The project is in an early development stage and actively maintained. For any feature requests/feedback/etc. you can get in touch via Github or by E-Mail (philipp.mohr@tuhh.de).
Installation
Install this library with pip install pyopencl-extension
.
When automatic installation of PyOpenCl fails (happens when using Windows):
Download appropriate .whl binary from PyOpenCl binaries for Windows
Make sure to have proper OpenCl driver for your graphics card installed.
Run
pip install "pyopencl-X-cpX-cpX-X.whl"
in terminal, where X must be replaced with corresponding version.
Usage
One very simple example is given below.
from pyopencl_extension import Kernel, Global, Scalar, Types, zeros
import numpy as np
ary = zeros((10,), Types.short)
knl = Kernel('some_operation',
{'ary': Global(ary), # notice that ary is set as default argument
'number': Scalar(Types.short)},
"""
ary[get_global_id(0)] = get_global_id(0) + number;
""",
global_size=ary.shape).compile(emulate=True)
knl(number=3)
assert np.allclose(ary.get(), np.arange(10) + 3)
By setting the argument ‘emulate=True’ the kernel will be compiled in emulation mode. This mode creates a file ‘some_operation.py’, which can be inspected using a visual debugger:
More advanced examples can by found in the tests hosted on Github.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pyopencl_extension-0.2.9-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 090eb8ec5335dfbd307e660fd3fa39848fb1a410f6a58d7a51e89d157ce1b78f |
|
MD5 | 6249f54c46162cc75f6915ee0e16e02d |
|
BLAKE2b-256 | f18b228540030b6a72d4b2a5dd1b883815adb4249752a1da1c867832d9527095 |