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[nAngleIMG_SIZE + tid]中的值?