【问题标题】:CUDA implementation for MATLAB codeMATLAB 代码的 CUDA 实现
【发布时间】:2017-12-22 12:09:40
【问题描述】:

我最近购买了一个 P100 GPU,希望能加快并行代码的速度,并且需要一些帮助来决定如何将 MATLAB 代码转换为 CUDA 代码(我已经远离了普通的 gpuarrays MATLAB)。我已经对 .ptx 内核和 MEX-文件进行了试验,但两者都遇到了一些障碍。

并行代码具有元素取幂、元素乘法以及 FFT 和 IFFT 调用。它还包含复数。

从 CUDA 内核或 MEX CUDA 文件编译的 .ptx 文件是否更易于使用,并且允许我执行必要的 FFT、IFFT、exp 和 mult 调用?

【问题讨论】:

  • 你试过 cuFFT (docs.nvidia.com/cuda/cufft/index.html) 吗?
  • 我相信 cuFFT 内置于 MATLAB 的 gpuArrray fft 调用中。如果是这样的话,这方面就没有什么可改进的了。

标签: matlab cuda mex ptx


【解决方案1】:

真的很简单。您必须使用 MEX,因为您想调用 NVIDIA cufft 库,而您只能从主机执行此操作。但是,在从 MATLAB 调用 FFT 和 IFFT 的情况下,您基本上不会获得合理的加速,因为这些函数只是直接调用 cufft,并具有 MATLAB 的 GPU 内存池和 FFT 计划缓存的额外优势。所以也许你应该专注于元素级内核。

【讨论】:

  • 感谢您的回答。我也意识到了这个问题,我想我会采用你的多核解决方案来进行元素乘法和取幂,并使用 MATLAB 调用 fft 和 ifft。
  • 这是错误的。 MATLAB 的 FFT 的 GPU 实现不是原位的,并且不提供从实数到复数的转换(默认情况下)。
猜你喜欢
  • 2012-11-10
  • 2018-06-15
  • 1970-01-01
  • 2017-10-26
  • 2013-04-06
  • 1970-01-01
  • 2019-04-25
  • 2014-03-22
  • 1970-01-01
相关资源
最近更新 更多