tongbuxiugai

pull/13/head
陈增辉 2025-03-23 18:49:27 +08:00
parent cb9012e750
commit 96eb60bbec
1 changed files with 32 additions and 43 deletions

View File

@ -510,50 +510,39 @@ __global__ void CUDA_Kernel_RFPC(
cuComplex echo = make_cuComplex(0, 0);
for (long startid = 0; startid < demLen; startid = startid + SHAREMEMORY_DEM_STEP)
{
__syncthreads(); // 确定所有待处理数据都已经进入程序中
for (long i = 0; i < 3; i++) {
long ttid = startid + threadid + i * blockDim.x;
long stid = threadid + i * blockDim.x;
if ((stid < SHAREMEMORY_DEM_STEP) && (ttid < demLen)) {
Ts[stid] = goallist[ttid];
for (long tid = 0;tid < demLen;tid++) {
GoalState p = goallist[tid];
Tx = p.Tx;
Ty = p.Ty;
Tz = p.Tz;
Tx = antPos.Px - Tx; // T->P
Ty = antPos.Py - Ty;
Tz = antPos.Pz - Tz;
R = sqrt(Tx * Tx + Ty * Ty + Tz * Tz);
bool isNearFar = (R < NearR || R > FarR) && ((abs(p.TsX) > 1000) || (abs(p.TsY) > 1000) || (abs(p.TsZ) > 1000));
incAngle = sqrt(p.TsX * p.TsX + p.TsY * p.TsY + p.TsZ * p.TsZ);
incAngle = acos((Tx * p.TsX + Ty * p.TsY + Tz * p.TsZ) / (R * incAngle));
incAngle = GPU_getSigma0dB_params(clsSigma0.p1, clsSigma0.p2, clsSigma0.p3, clsSigma0.p4, clsSigma0.p5, clsSigma0.p6, incAngle); // sigma
incAngle = pow(10.0, incAngle / 10.0); // amp
incAngle = incAngle / (powf(4 * LAMP_CUDA_PI, 2) * powf(R, 4)); //
R = (R - refPhaseRange);
R = factorjTemp * R;
echo_real = incAngle * cos(R) * isNearFar;
echo_imag = incAngle * sin(R) * isNearFar;
echo.x = echo.x + echo_real;
echo.y = echo.y + echo_imag;
if (idx == 0 && tid % (10 * SHAREMEMORY_DEM_STEP) == 0) {
printf("Idx:%d , TsID: %d, TSCOUNT: %d \n", idx, tid, demLen);
}
}
__syncthreads(); // 确定所有待处理数据都已经进入程序中
for (long tid = 0; tid < SHAREMEMORY_DEM_STEP; tid++)
{
if ((tid + startid) < demLen)
{
GoalState p = Ts[tid];
Tx = p.Tx;
Ty = p.Ty;
Tz = p.Tz;
Tx = antPos.Px - Tx; // T->P
Ty = antPos.Py - Ty;
Tz = antPos.Pz - Tz;
R = sqrt(Tx * Tx + Ty * Ty + Tz * Tz);
bool isNearFar = (R < NearR || R > FarR);
incAngle = sqrt(p.TsX * p.TsX + p.TsY * p.TsY + p.TsZ * p.TsZ);
incAngle = acos((Tx * p.TsX + Ty * p.TsY + Tz * p.TsZ) / (R * incAngle));
incAngle = GPU_getSigma0dB_params(clsSigma0.p1, clsSigma0.p2, clsSigma0.p3, clsSigma0.p4, clsSigma0.p5, clsSigma0.p6, incAngle); // sigma
incAngle = pow(10.0, incAngle / 10.0); // amp
incAngle = incAngle / (powf(4 * LAMP_CUDA_PI, 2) * powf(R, 4)); //
R = (R - refPhaseRange);
R = factorjTemp * R;
echo_real = incAngle * cos(R)* isNearFar;
echo_imag = incAngle * sin(R)* isNearFar;
echo.x = echo.x + echo_real;
echo.y = echo.y + echo_imag;
}
}
}
echodata[idx] = cuCaddf(echodata[idx], echo);