CUDA support

What is CUDA

CUDA is a computing platform taking advantage of Nvidia hardware. It effectively allows for array computations on Graphical Processing Units (GPU).

npstreams relies on the (optional) PyCUDA library to access CUDA functionality.

Advantages of CUDA

TODO: benchmarks

CUDA in npstreams

PyCUDA is an optional dependency. Therefore, the CUDA-enabled functions are located in a separate module, the npstreams.cuda submodule.

Importing from npstreams.cuda submodule

Importing anything from the npstreams.cuda submodule will raise an ImportError in the following cases:

  • PyCUDA is not installed;

  • No GPUs are available;

  • CUDA compilation backend is not available, possibly due to incomplete installation.

With this in mind, it is wise to wrap import statements from npstreams.cuda in a try/except block.

CUDA-enabled routines

A limited set of functions implemented in npstreams also have CUDA-enabled equivalents. For performance reasons, all CUDA-enabled routines operate along the ‘stream’ axis, i.e. as if the arrays had been stacked along a new dimension.