修复bug,

pull/13/head
陈增辉 2025-03-25 23:54:47 +08:00
parent ad377e3165
commit ab8ca4802f
2 changed files with 24 additions and 8 deletions

View File

@ -484,12 +484,24 @@ __global__ void Kernel_Computer_R_amp_NoAntPattern(
long long prfId = idx / SHAREMEMORY_FLOAT_HALF;
long long posId = idx % SHAREMEMORY_FLOAT_HALF + startPosId; // 当前线程对应的影像点
//if (prfId > 20000) {
// printf("prfid %d,PRFCount : %d\n", prfId, PRFCount);
//}
if (prfId < PRFCount && posId < pixelcount) {
double RstX = antlist[prfId].Px - goallist[posId].Tx; // 计算坐标矢量
double RstY = antlist[prfId].Py - goallist[posId].Ty;
double RstZ = antlist[prfId].Pz - goallist[posId].Tz;
double RstR = sqrt(RstX * RstX + RstY * RstY + RstZ * RstZ); // 矢量距离
//if (prfId > 20000) {
// printf("prfid %d,nearR R Rfar %e %e %e ant=[%e,%e,%e] dem_G=[%e,%e,%e]\n", prfId,NearR,RstR,FarR,
// antlist[prfId].Px , antlist[prfId].Py , antlist[prfId].Pz ,
// goallist[posId].Tx, goallist[posId].Ty, goallist[posId].Tz
// );
//}
if (RstR<NearR || RstR>FarR) {
d_temp_R[idx] = 0;
d_temp_amps[idx] = 0;
@ -525,7 +537,9 @@ __global__ void Kernel_Computer_R_amp_NoAntPattern(
d_temp_amps[idx] = temp_amp * isNan;
d_temp_R[idx] = temp_R * isNan;
//printf("out R amp : %f %e %d %e\n", d_temp_R[idx], d_temp_amps[idx], isNan, sigma);
return;
}
}
@ -570,10 +584,11 @@ __global__ void CUDA_Kernel_Computer_echo_NoAntPattern(
__syncthreads(); // 确定所有待处理数据都已经进入程序中
if (fId < maxfreqnum && prfId < temp_PRF_Count) {
long echo_ID = prfId * maxfreqnum + fId; // 计算对应的回波位置
float factorjTemp = RFPCPIDIVLIGHT * (f0 + fId * dfreq);
cuComplex echo = make_cuComplex(0, 0);
@ -583,7 +598,7 @@ __global__ void CUDA_Kernel_Computer_echo_NoAntPattern(
for (long dataid = 0; dataid < SHAREMEMORY_FLOAT_HALF; dataid++) {
temp_phi = s_R[dataid] * factorjTemp;
temp_amp = 1; s_amp[dataid];
temp_amp = s_amp[dataid];
echo.x += (temp_amp * cosf(temp_phi));
echo.y += (temp_amp * sinf(temp_phi));
//if (dataid > 5000) {
@ -596,7 +611,7 @@ __global__ void CUDA_Kernel_Computer_echo_NoAntPattern(
}
}
echodata[echo_ID] = cuCaddf(echodata[echo_ID], echo);
}
@ -695,7 +710,7 @@ extern "C" void ProcessRFPCTask(RFPCTask& task, long devid)
{
size_t pixelcount = task.prfNum * task.freqNum;
size_t grid_size = (pixelcount + BLOCK_SIZE - 1) / BLOCK_SIZE;
printf("computer pixelcount goalnum gridsize blocksize %zu,%zu ,%zu,%d\n", pixelcount, task.targetnum, grid_size, BLOCK_SIZE);
printf("computer pixelcount goalnum gridsize blocksize prfnum %zu,%zu ,%zu,%d ,%d \n", pixelcount, task.targetnum, grid_size, BLOCK_SIZE,task.prfNum);
double* d_R = (double*)mallocCUDADevice(task.prfNum * SHAREMEMORY_FLOAT_HALF * sizeof(double), devid);
double* d_amps = (double*)mallocCUDADevice(task.prfNum * SHAREMEMORY_FLOAT_HALF * sizeof(double), devid);
@ -706,12 +721,13 @@ extern "C" void ProcessRFPCTask(RFPCTask& task, long devid)
long freqpoints = BLOCK_FREQNUM;
printf("freqpoints:%d\n", freqpoints);
long prfcount = task.prfNum;
long process = 0;
for (long sTi = 0; sTi < task.targetnum; sTi = sTi + SHAREMEMORY_FLOAT_HALF) {
cudaBlocknum = (task.prfNum * SHAREMEMORY_FLOAT_HALF + BLOCK_SIZE - 1) / BLOCK_SIZE;
Kernel_Computer_R_amp_NoAntPattern << <cudaBlocknum, BLOCK_SIZE >> >(
task.antlist,
task.prfNum,
prfcount,
task.goallist,
task.targetnum,
sTi, task.targetnum,

View File

@ -1092,7 +1092,7 @@ ErrorCode RFPCProcessCls::RFPCMainProcess_GPU_NoAntPattern(size_t startprfid, si
}
task.antlist = (SateState*)mallocCUDADevice(prfcount * sizeof(SateState), devId);
HostToDevice(h_antlist.get(), task.antlist, sizeof(double) * prfcount);
HostToDevice(h_antlist.get(), task.antlist, sizeof(SateState) * prfcount);
}