Re: [問題] 使用CUDA來擷取矩陣中部分值

看板C_and_CPP (C/C++)作者 (aada)時間16年前 (2010/02/22 02:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/10 (看更多)
我改了一下, 但是最後結果少了最後一行, 我曾試過在模擬印出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)
文章代碼(AID): #1BWNm_Aj (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1BWNm_Aj (C_and_CPP)