【发布时间】:2013-02-09 17:38:15
【问题描述】:
我需要一些有关 Cuda GLOBAL 内存的帮助。在我的项目中,我必须声明全局数组以避免在每次内核调用时发送这个数组。
编辑:
我的应用程序可以调用内核超过 1,000 次,每次调用时我都会向他发送一个大小超过 [1000 X 1000] 的数组,所以我认为这需要更多时间,这就是我的应用程序运行缓慢的原因。所以我需要为 GPU 声明全局数组,所以我的问题是
1如何声明全局数组
2如何在内核调用前从CPU初始化全局数组
提前致谢
【问题讨论】:
-
共享内存只有块作用域。在内核运行之前,您不能分配和填充共享内存。
-
也许我需要全局内存?我可以为每个块、线程声明全局数组吗?
-
是的,但它不能解决任何问题,尝试将数据保存在全局内存中,当您调用内核时,只需将其复制到内核中的共享内存。但是,如果您只使用该数据一次,或者您的线程中只需要一个数据,那么这样做并没有帮助。那么您最好使用普通变量并将该数据分配给它。这样编译器会自动将该变量转换为寄存器。
-
非常感谢您的回复,您能看看我的编辑吗?
标签: cuda declaration shared-memory