最近有一些模拟代码,在CPU上运行过慢,想要改到gpu上。尝试过直接改gpuarray等,但错误太多,实在是没有头绪。因涉及到的矩阵并不大,可以完全存在显存里,故没有大批量数据交换,所以就没有重构。想请问,在不重构代码的前提下,怎样移植到gpu上?


参考caffe matlab wrapper

如今2020b版本的MATLAB的GPU Coder可从 MATLAB 代码和 Simulink模型生成优化的 CUDA 代码。所生成的代码包含 CUDA 内核,针对深度学习、嵌入式视觉和信号处理演算法的可并行化部分。

为了提高性能,生成的代码会调用优化的 NVIDIA CUDA 库,包括 TensorRT?、cuDNN、cuFFT、cuSolver 和 cuBLAS。可以将这些代码作为源代码、静态库或动态库集成到自己的项目,也可以针对桌面、伺服器和嵌入到 NVIDIA Jetson、NVIDIA DRIVE 及其他平台的 GPU 进行编译。可以使用在 MATLAB 中生成的 CUDA 代码,对深度学习网路以及演算法中的其他计算密集型部分进行加速。使用 GPU Coder,自己可以将手写 CUDA 代码整合到您的 MATLAB 演算法和生成的代码中。

可以将 GPU Coder 与 Embedded Coder 结合使用,以通过软体在环 (SIL) 测试和处理器在环 (PIL) 测试验证生成代码的数值行为。


亲自试过!

不用mex的GPU计算就是坑爹啊!

但是build成mex又超级难用啊而且经常出些莫名其妙的问题有木有!

多少人就此而放弃了啊有木有!当然也包括本人啊!so老老实实的用C吧,或者把中间结果以文件的形式作为媒介来把MATLAB和C桥连起来(悄悄告诉你我就是这么做的)

试试 2017b的 GPU Coder


n卡跟a卡都有编程支持,看看相关说明即可。

gpu的优势用通俗的话来说,就是单核性能不高但核心数量级多,当CPU才十几个几十个核心时,gpu已经达到成百上千条流水线的并行计算。

要优化你的程序上gpu,要点无非就是:让你的程序高度并行化。
jacket ,不过好像不更新了。。。。


推荐阅读:
相关文章