小编Mic*_*lia的帖子

全局内存与CUDA中的动态全局内存分配

我有一个需要使用全局内存的CUDA(v5.5)应用程序.理想情况下,我更喜欢使用常量内存,但我已经耗尽了常量内存,并且必须将溢出放在全局内存中.我还有一些需要偶尔编写的变量(在GPU上进行一些减少操作之后),我将它放在全局内存中.

为了阅读,我将以一种简单的方式访问全局内存.我的内核在for循环中调用,并且在内核的每次调用中,每个线程将访问完全相同的全局内存地址而没有偏移.对于写入,在每次内核调用之后,在GPU上执行缩减,并且我必须在循环的下一次迭代之前将结果写入全局存储器.但是,在我的应用程序中,除了写入全局内存之外,还有更多的读取.

我的问题是,使用动态分配的全局内存,使用全局(变量)范围中声明的全局内存是否有任何优势?我需要的全局内存量将根据应用程序而改变,因此动态分配将因此而优选.我知道我的全局内存使用的上限然而我更关心性能,所以我也可以使用一个大的固定分配静态地声明内存,我肯定不会溢出.考虑到性能,是否有理由偏好一种形式的全局内存分配而不是另一种?它们是否存在于GPU上的相同物理位置,是否以相同的方式缓存,或者两种形式的读取成本是否相同?

c++ cuda

3
推荐指数
1
解决办法
4160
查看次数

标签 统计

c++ ×1

cuda ×1