[SciPy-User] ANN: gpustats 0.0.1

Wes McKinney wesmckinn at gmail.com
Thu Feb 24 21:36:26 EST 2011


I'm happy to announce an early version of a new library for doing
calculations related to statistical problems on the GPU. Currently it
implements the univariate and multivariate normal probability density
functions as a proof of concept, but will over time expand to include
many other probability distributions and relevant functions.

Why do this at all? Well, the speedups, even on a modest laptop GPU
(e.g. my GeForce 320M) can be quite significant:

With 1e6 data points:

In [6]: timeit gpustats.normpdf(data, mean, std, logged=False)
100 loops, best of 3: 13 ms per loop

In [7]: timeit scipy.stats.norm.pdf(data, loc=mean, scale=std)
1 loops, best of 3: 191 ms per loop

In higher dimensional problems where GPU shared memory can be highly
utilized, speedups can be even larger, depending of course on your
GPU. An immediate application of interest is in accelerating
likelihood-based Bayesian inference (MCMC).

GitHub repo: https://github.com/dukestats/gpustats
Also on PyPI: http://pypi.python.org/pypi/gpustats

What is it
----------
gpustats is a PyCUDA-based library implementing functionality similar to that
present in scipy.stats.distributions. It implements a simple framework for
specifying new CUDA kernels and extending existing ones. Here is a (partial)
list of target functionality:

* Probability density functions (pdfs). These are intended to speed up
  likelihood calculations in particular in Bayesian inference applications, such
  as in PyMC

* Random variable generation using CURAND

Notes
-----
Requires working PyCUDA installation

Best,
Wes



More information about the SciPy-User mailing list