layout: blog_post
title: Introducing CUDArray
image: /images/cudarray.png
date: 2014-11-08
---

Neural networks and deep learning are booming (still).
Quite a few software frameworks have appeared over the last year, though none that allow high-level Python/NumPy programming with fast underlying array operations.
In this post, I present my attempt at making the two ends meet.
[CUDArray][cudarray] is a CUDA-accelerated subset of the NumPy library with support for neural networks as its primary goal.

A couple of weeks ago, I tried implementing a handful of NumPy functions using CUDA which turned out to be pretty fun (I just had to fill in the blanks for NumPy's fine interface).
With my appetite whetted, I started developing CUDArray and a deep learning library, [deeppy][deeppy] on top of it.
I plan on elaborating on deeppy in another post - in the meantime, I encourage you to look at the [examples](http://github.com/andersbll/deeppy/tree/master/examples).

The behavior of CUDArray resembles that of [CUDAMat][cudamat]/[Gnumpy][gnumpy] to a large degree and you might ask why I didn't just build on top of these libraries.
Most notably, CUDAMat uses [ctypes](https://docs.python.org/3/library/ctypes.html) whereas CUDArray uses [Cython](http://cython.org/) to wrap C/C++ code.

I should warn you that CUDArray is still in its infancy and that there is a lot of work to be done to mature and extend the framework.
However, I find CUDArray/deepy a very promising approach to deep learning considering the few weeks it took to code.

Have a look at the [source][cudarray] and be sure to check out the [technical report]({{ site.pubs_path }}/larsen2014cudarray.pdf) since it's the only documentation I have written so far!



[cudarray]: http://github.com/andersbll/cudarray
[deeppy]: http://github.com/andersbll/deeppy
[cudamat]: http://github.com/cudamat/cudamat
[gnumpy]: http://www.cs.toronto.edu/~tijmen/gnumpy.html
