所以我想在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)