假设我在 CUDA 下的 C++ 中有一个二维数组,存储在共享内存中, 像这样:
__shared__ float arr[4][4]; // C++ has a default row-major ordering
默认情况下,C++ 将以行优先格式对 arr
中的元素进行排序。
就是会分配一个连续的内存块,存储这样的元素(0,0), (0,1), (0,2), (0,3), (1,0), ( 1,1), ...等等...
有没有办法告诉 C++/CUDA 编译器以列优先顺序排列它?
最佳答案
为什么不直接交换正在使用的索引?
不要使用 arr[x][y]
,而是使用 arr[y][x]
。
有趣的是你为什么要这样做。也许使用高速缓存可能会有所帮助,但如果没有详细信息,我无法确定。
希望对您有所帮助。
关于c++ - 你能改变二维数组在 C++/CUDA 中的排序方式吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12624282/