【发布时间】:2020-01-09 00:37:40
【问题描述】:
我需要为我的内核使用常量内存中的结构数组,其中数组的实际大小直到运行时才知道。正如Correct way to use __constant__ memory on CUDA? 中的回答,我意识到在编译期间分配了常量内存,因此需要将数组声明为:
__constant__ SKY_GRID_TYPE const_patch_grid_lat[5];
已经定义了尺寸。但是因为我需要的实际大小取决于运行时完成的其他计算,所以我似乎无法使用常量内存。
上面的答案建议改用纹理内存,它说“可以动态设置并被缓存”。但是,我在内存中需要的数据类型是结构数组,根据Structure in Texture memory on CUDA,纹理内存似乎只支持 CUDA 内置类型。
那么有没有办法解决这个问题?常量内存对于我的结构数组来说是完美的,但大小是动态确定的,所以它不起作用。纹理内存本来可以工作,但它只允许 CUDA 内置类型。还有什么我可以使用或一些聪明的方法来解决这个问题吗?
【问题讨论】: