在java调用cuda过程中,传递一个二维数组到.cu文件需要的参数中,然后输出一个三维数组,发现计算结果不符合预期结果
下面是cuda代码:
extern “C”
global void addKernel(float **a, float **b, int M, int N)
{
//M表示二维数组长度,N表示每个二维数组元素的长度
int tid = threadIdx.x + blockIdx.xblockDim.x;
if(tid < M ) {
for (int s = 0; s < N; s++) {
for (int k = 0; k < M; k++) {
b[tid][s][k] = (a[tid][s] - a[k][s]) * (a[tid][s] - a[k][s]);
if(tid == 0 && s < 2)printf("outPut[%d][%d][%d]=%f=========input[%d][%d]%f-input[%d][%d]%f\n",tid,s,k,b[tid][s][k],tid,s,a[tid][s],k,s,a[k][s]);
}
}
}
}
截取部分打印输出结果为:
outPut[0][0][0]=0.000001=========input[0][0]0.424876-input[0][0]0.424876
outPut[0][0][1]=0.000061=========input[0][0]0.424876-input[1][0]0.416079
outPut[0][0][2]=0.000013=========input[0][0]0.424876-input[2][0]0.420271
outPut[0][0][3]=0.000186=========input[0][0]0.424876-input[3][0]0.437519
outPut[0][0][298]=0.000084=========input[0][0]0.424876-input[298][0]0.414696
outPut[0][0][299]=0.000094=========input[0][0]0.424876-input[299][0]0.414196
outPut[0][1][0]=0.101227=========input[0][1]2.989578-input[0][1]2.989578
outPut[0][1][1]=0.223761=========input[0][1]2.989578-input[1][1]2.834707
outPut[0][1][2]=0.133107=========input[0][1]2.989578-input[2][1]2.942902
outPut[0][1][3]=0.000164=========input[0][1]2.989578-input[3][1]3.294948
outPut[0][1][4]=0.193222=========input[0][1]2.989578-input[4][1]2.868170
outPut[0][1][5]=0.110597=========input[0][1]2.989578-input[5][1]2.975180
outPut[0][1][6]=0.058004=========input[0][1]2.989578-input[6][1]3.066900
outPut[0][1][7]=0.354050=========input[0][1]2.989578-input[7][1]2.712719
outPut[0][1][8]=0.223143=========input[0][1]2.989578-input[8][1]2.835360
outPut[0][1][9]=0.490569=========input[0][1]2.989578-input[9][1]2.607334
outPut[0][1][10]=0.730798=========input[0][1]2.989578-input[10][1]2.452873
outPut[0][1][11]=0.236546=========input[0][1]2.989578-input[11][1]2.821380
outPut[0][1][12]=0.254271=========input[0][1]2.989578-input[12][1]2.803488
outPut[0][1][13]=0.231349=========input[0][1]2.989578-input[13][1]2.826752
outPut[0][1][14]=0.221342=========input[0][1]2.989578-input[14][1]2.837271
outPut[0][1][15]=0.305343=========input[0][1]2.989578-input[15][1]2.755162
outPut[0][1][16]=0.073500=========input[0][1]2.989578-input[16][1]3.036631
outPut[0][1][17]=0.027384=========input[0][1]2.989578-input[17][1]3.142259
outPut[0][1][18]=0.043254=========input[0][1]2.989578-input[18][1]3.099764
outPut[0][1][19]=0.017618=========input[0][1]2.989578-input[19][1]3.175009
outPut[0][1][20]=0.148790=========input[0][1]2.989578-input[20][1]2.922007
outPut[0][1][21]=0.357083=========input[0][1]2.989578-input[21][1]2.710176
outPut[0][1][22]=0.105014=========input[0][1]2.989578-input[22][1]2.983682
outPut[0][1][23]=0.049462=========input[0][1]2.989578-input[23][1]3.085340
outPut[0][1][24]=0.042256=========input[0][1]2.989578-input[24][1]3.102176
outPut[0][1][25]=0.011032=========input[0][1]2.989578-input[25][1]3.202705
outPut[0][1][26]=0.086732=========input[0][1]2.989578-input[26][1]3.013237
outPut[0][1][27]=0.219316=========input[0][1]2.989578-input[27][1]2.839428
outPut[0][1][28]=0.066658=========input[0][1]2.989578-input[28][1]3.049558
outPut[0][1][29]=0.292984=========input[0][1]2.989578-input[29][1]2.766461
outPut[0][1][30]=0.153860=========input[0][1]2.989578-input[30][1]2.915490
outPut[0][1][31]=0.000000=========input[0][1]2.989578-input[31][1]3.307740
outPut[0][1][32]=0.158063=========input[0][1]2.989578-input[32][1]2.910169
outPut[0][1][33]=0.081769=========input[0][1]2.989578-input[33][1]3.021787
outPut[0][1][34]=0.002683=========input[0][1]2.989578-input[34][1]3.255946
outPut[0][1][291]=0.174846=========input[0][1]2.989578-input[291][1]2.889594
outPut[0][1][292]=0.058331=========input[0][1]2.989578-input[292][1]3.066222
outPut[0][1][293]=0.199200=========input[0][1]2.989578-input[293][1]2.861422
outPut[0][1][294]=0.025794=========input[0][1]2.989578-input[294][1]3.147135
outPut[0][1][295]=0.031946=========input[0][1]2.989578-input[295][1]3.486475
outPut[0][1][296]=0.029818=========input[0][1]2.989578-input[296][1]3.480420
outPut[0][1][297]=0.077792=========input[0][1]2.989578-input[297][1]3.586652
outPut[0][1][298]=0.000103=========input[0][1]2.989578-input[298][1]3.317879
outPut[0][1][299]=0.007788=========input[0][1]2.989578-input[299][1]3.395990