Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

pyopencl-extension

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pyopencl-extension

This package extends PyOpenCl by providing an object-oriented kernel programming framework and debugging capabilities.

  • 0.2.9
  • PyPI
  • Socket score

Maintainers
1

pyopencl-extension

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 <https://pypi.org/project/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 <https://github.com/philipp-mohr/pyopencl-extension/issues>_ or by E-Mail (philipp.mohr@tuhh.de).

Installation

Install this library with :code:pip install pyopencl-extension.

When automatic installation of PyOpenCl fails (happens when using Windows):

1. Download appropriate .whl binary from `PyOpenCl binaries for Windows <https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopencl>`_

2. Make sure to have `proper <https://streamhpc.com/blog/2015-03-16/how-to-install-opencl-on-windows/>`_ OpenCl driver for your graphics card installed.

3. Run :code:`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.

.. code-block:: python

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:

.. image:: https://i.imgur.com/Gfg9AtZ.png :width: 600

More advanced examples can by found in the tests hosted on Github <https://github.com/philipp-mohr/pyopencl-extension/tree/main/tests>_.

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc