最近有一些模擬代碼,在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 ,不過好像不更新了。。。。


推薦閱讀:
相關文章