我改了一下, 但是最後結果少了最後一行,
我曾試過在模擬印出kernel程式的結果,
結果沒錯, 為什麼到後來傳回host的結果是錯的呢?
以及請問一下, 我丟到kernel的變數矩陣大小可以不一樣嗎?
謝謝
__global__ void movaIM11(float *input1, float *output1)
{
int col = blockIdx.x*blockDim.x+threadIdx.x; // x 表示 column
int row = blockIdx.y*blockDim.x+threadIdx.y; // y 表示 row
output1[row*NNx+col] = input1[row*NNx+col+1];
//printf("%f ", output1[row*NNx+col]);
//printf("\n");
}
dim3 blocks(3, 4);
// _______ GPU 矩陣IM2搬移 _______ //
float *d_input;
cudaMalloc((void**)&d_input, sizeof(float)*NNx*NNy);
cudaMemcpy( d_input, input, sizeof(float)*NNx*NNy, cudaMemcpyHostToDevice );
float* d_IM22;
cudaMalloc((void**)&d_IM22, sizeof(float)*(NNx-1)*NNy);
movaIM11<<<1, blocks>>>( d_input, d_IM22 );
float *IM22;
IM22 = (float*) malloc( sizeof(float)*(NNx-1)*NNy );
cudaMemcpy( IM22, d_IM22, sizeof(float)*(NNx-1)*NNy, cudaMemcpyDeviceToHost
);
執行結果
Input
1.000000
2.000000
3.000000
5.000000
6.000000
7.000000
9.000000
10.000000
11.000000
13.000000
14.000000
15.000000
IM22
1.0000 2.0000 3.0000
5.0000 6.0000 7.0000
9.0000 10.0000 11.0000
-0.0000 -0.0000 0.0000
請按任意鍵繼續 . . .
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.122.192.147
※ 編輯: aada 來自: 140.122.192.147 (02/22 04:23)