c++ - 你能改变二维数组在 C++/CUDA 中的排序方式吗

标签 c++ arrays matrix cuda

假设我在 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/

相关文章:

c# - byte[] 的最大长度?

c++ - 矩阵运算符重载不起作用

c++ - 是否可以使用 setSortRole() 在 QSortFilterProxyModel 中按 bool 设置顺序?

c++ - 从 3 个 vector 中删除重复项

C++将可变数量的位置从给定数组传递给函数

Python:将 numpy 数组保存到 ROOT 文件

javascript - node-mysql 在查询中使用数组

c - MPI_Scatter and Gather - 二维数组,不均匀 block

python - 在 Python 中对矩阵的选定元素求和

c++ - 通过右移测试位与左移相同的速度?