将 MATLAB 的函数与 CUDA GPU 变量结合使用



将2D数组从CPU转换到GPU的内存以在GPU上运行后,我面临Matlab内置函数的多个错误,例如minmax(array),说明我的GPU变量不是数组或单元格:

? ?在27时使用==> minmax出错。

传递的变量虽然是转换后的二维数组,但类型由<11x4096 double>改为<11x4096 parallel.gpu.GPUArray>

任何人都可以帮助我使Matlab理解GPU变量是一个数组吗?

谢谢。

仅支持一小部分MATLAB命令用于存储在GPU上的数组(即GPUArray类型的数组)。

有关支持哪些函数的详细信息,请参阅并行计算工具箱的文档页面。你会注意到这个列表只包含了基本MATLAB中的函数,比如算术、指数和三角函数、线性代数和傅里叶变换;与神经网络工具箱中的minmax等高级工具箱函数相去甚远。

为GPUArray输入重载一个函数,使其在GPU而不是CPU上执行,这是一项主要的工作,涉及到新的高度并行架构的算法的重新实现。此外,只有某些类型的高度并行算法通常会受益于GPU并行性。因此,我不希望MathWorks很快在神经网络工具箱中提供GPUArray支持。

如果你特别需要在GPU上并行化minmax,而不是一般的神经网络,你自己做这件事并不难——可能只需要几行涉及min, maxarrayfun

话虽如此,错误消息可以提供更多的问题解释。开发人员似乎也知道这一点:如果输入edit nntype.data并查看第93行,也就是错误消息的来源,您将看到注释行% TODO - More detailed response。好了!

最新更新