核函数的调用?

for (int j=nSub; j<=PROBE_DIRECT; j+=nSubset)
{
Projection<<<1,128>>>(dev_pdForProj, j-1, dev_Coor_Corr, X_YORIGIN);
}

global void Projection(float pdForProjection,/ float *pIniImg, */int nAngle, float *pCoor_Corr, float fCoor_Origin)
{
int tid = threadIdx.x;

float dAngle = 0.0; //投影角度改写成弧度制
float dSine = 0.0; //投影角度的正弦值
float dCosine = 0.0; //投影角度的余弦值
float dXCosTable[IMG_SIZE] = {0.0}; //dXtable[i]*cos(dAngle)
float dYSinTable[IMG_SIZE] = {0.0}; //dYtable[i]*sin(dAngle)
dAngle = float(nAngle)/float(IMG_SIZE) * PI;
dSine = sin(dAngle);
dCosine = cos(dAngle);
for (int i=0; i<IMG_SIZE; i++)
{
dXCosTable[i] = pCoor_Corr[i] * dCosine;
dYSinTable[i] = pCoor_Corr[i] * dSine;
}
//基于射线的线积分
for (int j=0; j<IMG_SIZE; j++)
{
float dModXtable = 0.0;
float dModYtable = 0.0;

dModXtable = dXCosTable[j] - dYSinTable[tid] + fCoor_Origin;
dModYtable = dYSinTable[j] + dXCosTable[tid] + fCoor_Origin;

pdForProjection[nAngleIMG_SIZE + tid] += tex2D(texIniImg, dModXtable, dModYtable);
}
}
可以这样调用核函数吗?为什么每次运行后得到的结果都不一样,怎样通过调试实时的看到pdForProjection[nAngle
IMG_SIZE + tid]中的值?

LZ您好:

1:您调用kernel的格式“Projection<<<1,128>>>(dev_pdForProj, j-1, dev_Coor_Corr, X_YORIGIN);”格式上是没有问题的,当然您需要保证参数的正确性。

2:如果您的算法原则上应该是一个确定性的结果,但是实际上跑出了不确定的结果,那么一般是您的代码某处有问题,请您调试解决一下。

3:您可以使用nsight来调试您的kernel代码。

大致如此,祝您调试顺利~

谢谢版主,问题已解决