小编Sam*_*Sam的帖子

如何在 CUDA 中的 CPU / GPU 之间分配内存并复制 2D 数组而不展平它们?

所以我想在CUDA中分配2D数组并在CPU和GPU之间复制它们,但我是一个完全的初学者,其他在线材料对我来说很难理解或不完整。重要的是我能够在内核代码中将它们作为二维数组进行访问,如下所示。

请注意,数组的高度!=宽度,如果可能的话,这会让我更加困惑,因为我总是在选择网格大小方面遇到困难。

我考虑过将它们压平,但我真的想让它以这种方式工作。

这就是我自己的研究所取得的进展。

__global__ void myKernel(int *firstArray, int *secondArray, int rows, int columns) {
    int row = blockIdx.x * blockDim.x + threadIdx.x;
    int column = blockIdx.y * blockDim.y + threadIdx.y;

    if (row >= rows || column >= columns)
        return;

    // Do something with the arrays like you would on a CPU, like:
    firstArray[row][column] = row * 2;
    secondArray[row[column] = row * 3;  
}


int main() {
    int rows = 300, columns = 200;
    int h_firstArray[rows][columns], h_secondArray[rows][columns];
    int *d_firstArray[rows][columns], *d_secondArray[rows][columns]; …
Run Code Online (Sandbox Code Playgroud)

memory-management cuda multidimensional-array

0
推荐指数
1
解决办法
2772
查看次数