【发布时间】:2013-01-11 16:24:54
【问题描述】:
我应该在 CUDA 中编写一个代码,该代码在递归循环中计算一个数组。有可能在它之前预先计算这个递归循环的一些中间步骤,即分配一些常量数组和标量,这将避免循环中的一些计算。
第一个想法是将常量数组存储在全局内存中,而每次从 CPU 向 GPU 传递标量参数(此处建议:CUDA and shared variables among different global functions)。
我想尝试使用 GPU 常量内存,因为它应该更快。但是,我发现的几个示例代码说明了如何从主机分配常量内存。是否可以从 GPU 分配一些常量内存,即在那里计算它的值(就像我们对全局内存所做的那样)?您能否提供一个示例代码?
编辑:因为我可以分配很多常量数组,所以在这种情况下使用纹理内存可能会更好。是否有一些关于如何从 GPU 分配内存的示例代码?
【问题讨论】:
-
纹理和常量内存空间对于GPU都是只读的,其中的数据只能从CPU初始化
-
@EricShiyinKang 谢谢。您如何看待第一个答案中的建议?
标签: memory-management cuda constants