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.