AccelerEyes announced in December 2012 that it works with Mathworks on the GPU code and has discontinued its product Jacket for MATLAB:
http://blog.accelereyes.com/blog/2012/12/12/exciting-updates-from-accelereyes/
Unfortunately they do not sell Jacket licences anymore.
As far as I understand, the Jacket GPU Array solution based on ArrayFire was much faster than the gpuArray solution provided by MATLAB.
I started working with gpuArray, but I see that many functions are implemented poorly. For example a simple
myArray(:) = 0
is very slow. I have written some custom CUDA-Kernels, but the poorly-implemented standard MATLAB functionality adds a lot of overhead, even if working with gpuArrays consistently throughout the code. I fixed some issues by replacing MATLAB code with hand written CUDA code - but I do not want to reimplement the MATLAB standard functionality.
Another feature I am missing is sparse GPU matrices.
So my questions are:
How do is speed up the badly implemented default GPU implementations provided by MATLAB? In particular, how do I speed up sparse matrix operations in MATLAB using the GPU?
myArray(:) = 0is slow - it's moving loads of zeros from the CPU to the GPU for no reason. That doesn't mean MATLAB GPU capabilities are implemented poorly, it means you need to know how to use them; trymyArray = gpuArray.zeros(size(myArray))instead.a = a - a;" does not necessarily result in an array of all zeros, so I would avoid this pattern (hint: what if 'a' containedNaNorInf?). (And rather contact The MathWorks with the details of your performance problem).