CUDA中Malloc函数的效率



我正在尝试将一些CPU代码移植到CUDA中。我的CUDA卡是基于费米架构的,因此我可以使用设备中的malloc()函数来动态分配内存,而不需要大量更改原始代码。(malloc()函数在我的代码中被调用了很多次。)我的问题是这个malloc函数是否足够有效,或者我们应该尽可能避免使用它。我在CUDA上运行我的代码没有得到太多的加速,我怀疑这是由使用malloc()函数引起的。

如果你有任何建议或意见,请告诉我。谢谢你的帮助。

当前的设备malloc实现非常缓慢(已经发表了关于高效CUDA动态内存分配的论文,但这项工作尚未出现在发布工具包中,AFAIK)。它分配的内存来自堆,堆是存储全局内存的,而且它也非常慢。除非有非常令人信服的理由这样做,否则我建议避免在内核中进行动态内存分配。这将对整体性能产生负面影响。它是否真的对你的代码有很大的影响是一个完全不同的问题。

相关内容

  • 没有找到相关文章

最新更新