看板 C_and_CPP 關於我們 聯絡資訊
我改了一下, 但是最後結果少了最後一行, 我曾試過在模擬印出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)