我有一个整数数组,其大小在内核启动前已知,但在编译阶段未知。大小的上限约为 10000 个 float3 元素(我猜这意味着 10000 * 3 * 4 = ~120KB)。编译时未知。
所有线程(最多)线性扫描数组中的所有元素。
最佳答案
您可以在运行时检查大小,然后如果它适合使用 cudaMemcpyToSymbol
,或者使用纹理或全局内存。这有点乱,你必须有一些参数来告诉内核数据在哪里。一如既往,始终测试实际性能。在不同类型的内存中,不同的访问模式可能具有截然不同的速度。
另一个想法是退一步,再看一遍算法。通常有不同的方法来划分问题以使常量表始终适合常量内存。
关于c - 放置内核启动前已知且从未更改的常量内存的最佳位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7818765/