CUDA를 처음 사용했습니다. 크기 MXN의 2D 배열을 할당하는 방법? CUDA에서 배열을 트래버스하는 방법? 샘플 코드를주세요. ................................................. ...........................................CUDA에서 2D 어레이를 사용하는 방법?
안녕하세요. 답변 감사합니다. 나는 당신의 코드를 다음 프로그램에 사용했다. 그러나 나는 정확한 결과를 얻지 못하고있다.
__global__ void test(int A[BLOCK_SIZE][BLOCK_SIZE], int B[BLOCK_SIZE][BLOCK_SIZE],int C[BLOCK_SIZE][BLOCK_SIZE])
{
int i = blockIdx.y * blockDim.y + threadIdx.y;
int j = blockIdx.x * blockDim.x + threadIdx.x;
if (i < BLOCK_SIZE && j < BLOCK_SIZE)
C[i][j] = A[i][j] + B[i][j];
}
int main()
{
int d_A[BLOCK_SIZE][BLOCK_SIZE];
int d_B[BLOCK_SIZE][BLOCK_SIZE];
int d_C[BLOCK_SIZE][BLOCK_SIZE];
int C[BLOCK_SIZE][BLOCK_SIZE];
for(int i=0;i<BLOCK_SIZE;i++)
for(int j=0;j<BLOCK_SIZE;j++)
{
d_A[i][j]=i+j;
d_B[i][j]=i+j;
}
dim3 dimBlock(BLOCK_SIZE, BLOCK_SIZE);
dim3 dimGrid(GRID_SIZE, GRID_SIZE);
test<<<dimGrid, dimBlock>>>(d_A,d_B,d_C);
cudaMemcpy(C,d_C,BLOCK_SIZE*BLOCK_SIZE , cudaMemcpyDeviceToHost);
for(int i=0;i<BLOCK_SIZE;i++)
for(int j=0;j<BLOCK_SIZE;j++)
{
printf("%d\n",C[i][j]);
}
}
도와주세요.
더 정중하고 더 해칠 수는 없습니다. – karlphillip
당신은 cudaMemcpy로 2D 배열의 가치를 되 찾을 수 없지만 cudaMallocPitch 또는 cudaPitchPtr을 @Dave가 말한대로 – ardiyu07