PyCuda

Submitted by inducer on Sun, 15/06/2008 - 00:57

PyCuda lets you access Nvidia‘s CUDA parallel computation API from Python. Several wrappers of the CUDA API already exist–so what’s so special about PyCuda?

  • Object cleanup tied to lifetime of objects. This idiom, often called RAII in C++, makes it much easier to write correct, leak- and crash-free code. PyCuda knows about dependencies, too, so (for example) it won’t detach from a context before all memory allocated in it is also freed.
  • Convenience. Abstractions like pycuda.driver.SourceModule and pycuda.gpuarray.GPUArray make CUDA programming even more convenient than with Nvidia’s C-based runtime.
  • Completeness. PyCuda puts the full power of CUDA’s driver API at your disposal, if you wish.
  • Automatic Error Checking. All CUDA errors are automatically translated into Python exceptions.
  • Speed. PyCuda’s base layer is written in C++, so all the niceties above are virtually free.
  • Helpful Documentation.

Documentation

See the PyCuda Documentation.

Support

Having trouble with PyCuda? Maybe the nice people on the PyCuda mailing list can help.

Download

PyCuda may be downloaded from its Python Package Index page or obtained directly from my source code repository by typing

git clone http://git.tiker.net/trees/pycuda.git

You may also browse the source.

Prerequisites:

  • Boost (any recent version should work)
  • CUDA (version 2.0 beta or newer)
  • Numpy (version 1.0.4 or newer)