Which GPUs to Get for Deep Learning
timdettmers.wordpress.com
timdettmers.wordpress.com
It's not just about fitting the parameters into GPU memory, but also all the operations you perform on them, which can require a lot of intermediate storage. The example he gives only has fully-connected layers, but convolutional neural networks tend to require more space, especially some more recent implementations (e.g. FFT-based convolutions or the GEMM approach used by Caffe).
He mentions that his network (fully connected) has 52M parameters and compares it to Krizhevsky's 2012 ImageNet network (convolutional) network, which had 60M. But Krizhevsky actually explicitly mentions in his paper that memory was an issue:
"A single GTX 580 GPU has only 3GB of memory, which limits the maximum size of the networks that can be trained on it. It turns out that 1.2 million training examples are enough to train networks which are too big to fit on one GPU. Therefore we spread the net across two GPUs." (from http://papers.nips.cc/paper/4824-imagenet-classification-wit... )
This is a generic wrapper with ndarrays for cuda and normal blas operations. Deeplearning4j (my deeplearning project) also has support for GPUs (it's built on nd4j)
Stable version coming soon =D
For those of you in python land, I would look in to theano
Last I heard CUDA will outperform OpenCL on nVidia vs AMD at the same price point generally as a result of CUDA being in house and closer to hardware. As a result if you just care about compute performance you would go nVidia. If AMD offered their own Mantle based compute offering it would probably shift the other way.
970: $329 for 3494 SP / 109 DP GFLOPS @ 145W TDP
980: $549 for 4612 SP / 144 DP GFLOPS @ 165W TDP
[1] http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-780...
[2] http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-980...
Chances are the first fabbed version simply didn't work and they're waiting for the GM210.
unfortunately I don't know which of these are representative of typical deep learning workloads, i.e. lots of GEMM calls, basically. A discussion about this is ongoing on the G+ Deep Learning community as well: https://plus.google.com/+SanderDieleman/posts/7ua9oCdRFV7
This thread on the NVIDIA forums is also interesting, someone mentions they achieved > 6 TFlops for SGEMM on an overclocked GTX 980: https://devtalk.nvidia.com/default/topic/776043/cuda-program...
Python has pycuda [2]
Python has OpenCL [3] amusing ran by the same person as pycuda
[1] http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using_clu...