AccelerEyes在2012年12月宣布与Mathworks合作处理GPU代码,并停止了其针对MATLAB的Jacket产品:
http://blog.accelereyes.com/blog/2012/12/12/exciting-updates-from-accelereyes/
不幸的是,他们不再销售Jacket许可证。
据我所知,基于ArrayFire的Jacket GPU数组解决方案比MATLAB提供的gpuArray解决方案快得多。
我开始使用gpuArray,但我发现许多函数实现得很差。例如一个简单的
myArray(:) = 0
非常缓慢。我编写了一些自定义的CUDA-Kernel,但是实现不佳的标准MATLAB功能会增加很多开销,即使在整个代码中始终使用gpuArrays。我通过用手写的CUDA代码替换MATLAB代码来解决了一些问题,但我不想重新实现MATLAB的标准功能。
我还缺少另一个功能,那就是稀疏GPU矩阵。
所以我的问题是:
如何加速MATLAB提供的默认GPU实现的性能不佳?特别是如何在MATLAB中使用GPU加速稀疏矩阵操作?
myArray(:) = 0
的速度较慢-这是将大量零从CPU无故地传输到GPU的原因。这并不意味着MATLAB GPU功能实现不佳,而是需要知道如何使用它们;请尝试使用myArray = gpuArray.zeros(size(myArray))
。 - Sam Robertsa = a - a;
”不一定会导致全零数组,因此建议避免使用这种模式(提示:如果'a'包含NaN或Inf会怎样?)。如果有性能问题,请联系MathWorks以获取详细信息。 - Edric