保留修改

pull/10/head
陈增辉 2025-04-02 03:00:56 +08:00
parent 947146320e
commit bdaa4f22f7
6 changed files with 136 additions and 106 deletions

View File

@ -20,13 +20,15 @@
/** CUDA 调用参数 ************************************************************************************/
#define BLOCK_SIZE 256
#define SHAREMEMORY_BYTE 49152
#define SHAREMEMORY_FLOAT_HALF 6144
#define SHAREMEMORY_FLOAT_HALF_STEP 24
#define SHAREMEMORY_FLOAT_HALF_STEP 2
#define SHAREMEMORY_FLOAT_HALF SHAREMEMORY_FLOAT_HALF_STEP*BLOCK_SIZE
#define SHAREMEMORY_DEM_STEP 768
#define SHAREMEMORY_Reflect 612
enum LAMPGPUDATETYPE {
LAMP_LONG,
LAMP_FLOAT,

View File

@ -110,7 +110,7 @@ __global__ void processPulseKernel(
im_final[idx].x += phCorr.x;
im_final[idx].y += phCorr.y;
//printf("r_start=%e;dr=%e;nR=%d\n", r_start, dr, nR);
//if (abs(phCorr.x) > 1e-100 || abs(phCorr.y > 1e-100)) {
if (abs(phCorr.x) > 1e-100 || abs(phCorr.y > 1e-100)) {
//printf(
// "[DEBUG] prfid=%-4ld | idx=%-8lld\n"
// " Ant: X=%-18.10e Y=%-18.10e Z=%-18.10e\n"
@ -133,7 +133,7 @@ __global__ void processPulseKernel(
// phCorr.x, phCorr.y,
// im_final[idx].x, im_final[idx].y
//);
//}
}
}
void bpBasic0CUDA(GPUDATA& data, int flag,double* h_R) {

View File

@ -487,8 +487,8 @@ __global__ void Kernel_Computer_R_amp_NoAntPattern(
double Pt,
double refPhaseRange,
double NearR, double FarR,
double maxGain,double GainWeight,
double* d_temp_R, double* d_temp_amps// 计算输出
double maxGain, double GainWeight,
float* d_temp_R, float* d_temp_amps// 计算输出
) {
long long idx = blockIdx.x * blockDim.x + threadIdx.x; // 获取当前的线程编码
long long prfId = idx / SHAREMEMORY_FLOAT_HALF;
@ -509,12 +509,23 @@ __global__ void Kernel_Computer_R_amp_NoAntPattern(
if (RstR<NearR || RstR>FarR) {
if (prfId > 200) {
printf("error prfId:%d ,idx:%d RstR:%e antP=[%e,%e,%e] ,gp=[%e,%e,%e]\n", prfId, idx, RstR,
antp.Px, antp.Py, antp.Pz, gp.Tx, gp.Ty, gp.Tz
);
}
d_temp_R[idx] = 0;
d_temp_amps[idx] = 0;
return;
}
else {
if (prfId > 200) {
printf(" prfId:%d ,idx:%d RstR:%e antP=[%e,%e,%e] ,gp=[%e,%e,%e]\n", prfId, idx, RstR,
antp.Px, antp.Py, antp.Pz, gp.Tx, gp.Ty, gp.Tz
);
}
RstX = RstX / RstR;
RstY = RstY / RstR;
RstZ = RstZ / RstR;
@ -525,8 +536,8 @@ __global__ void Kernel_Computer_R_amp_NoAntPattern(
float slopR = sqrtf(slopeX * slopeX + slopeY * slopeY + slopeZ * slopeZ); //
if (slopR > 1e-3) {
float localangle = acosf((RstX * slopeX + RstY * slopeY + RstZ * slopeZ) / ( slopR));
float dotAB = RstX * slopeX + RstY * slopeY + RstZ * slopeZ;
float localangle = acosf(dotAB / (slopR));
if (localangle < 0 || localangle >= LAMP_CUDA_PI / 2 || isnan(localangle)) {
d_temp_R[idx] = 0;
@ -542,91 +553,113 @@ __global__ void Kernel_Computer_R_amp_NoAntPattern(
+ antp.antDirectY * antp.antDirectY
+ antp.antDirectZ * antp.antDirectZ);
float diectAngle = -1*(RstX*antp.antDirectX+
RstY*antp.antDirectY+
RstZ*antp.antDirectZ) / (antDirectR );
float diectAngle = -1 * (RstX * antp.antDirectX +
RstY * antp.antDirectY +
RstZ * antp.antDirectZ) / (antDirectR);
diectAngle = acosf(diectAngle);// 弧度制
diectAngle = diectAngle * GainWeight;
float ampGain = 1;
ampGain=2 * maxGain * (1 - (powf(diectAngle,2) / 6)
ampGain = 2 * maxGain * (1 - (powf(diectAngle, 2) / 6)
+ (powf(diectAngle, 4) / 120)
- (powf(diectAngle, 6) / 5040)); //dB
ampGain = powf(10.0, ampGain / 10.0);
ampGain = ampGain / (PI4POW2 * powf(RstR, 4)); // 反射强度
float sigma = GPU_getSigma0dB(sigma0Params, localangle);
sigma = powf(10.0, sigma / 10.0);
double temp_amp = double(ampGain * Pt * sigma);
double temp_R = double(RstR - refPhaseRange);
float temp_amp = float(ampGain * Pt * sigma);
float temp_R = float(double(RstR - refPhaseRange));
bool isNan = !(isnan(temp_amp) || isnan(temp_R) || isinf(temp_amp) || isinf(temp_R));
if (isnan(temp_amp) || isnan(temp_R) || isinf(temp_amp) || isinf(temp_R)) {
printf("amp is nan or R is nan,amp=%f;R=%f; \n", temp_amp, temp_R);
d_temp_R[idx] = 0;
d_temp_amps[idx] = 0;
return;
}
else {
d_temp_amps[idx] = temp_amp * isNan;
d_temp_R[idx] = temp_R * isNan;
d_temp_amps[idx] = temp_amp ;
d_temp_R[idx] = temp_R;
return;
return;
}
}
}
}
else {
d_temp_R[idx] = 0;
d_temp_amps[idx] = 0;
return;
}
}
__global__ void CUDA_Kernel_Computer_echo_NoAntPattern_Optimized(
double* d_temp_R, double* d_temp_amps, long posNum,
__global__ void CUDA_Kernel_Computer_echo_NoAntPattern(
float* d_temp_R, float* d_temp_amps,
double f0, double dfreq,
long FreqPoints, // 当前频率的分块
long maxfreqnum, // 最大脉冲值
long maxfreqnum, long nextfreqNum,// 最大脉冲值
cuComplex* echodata,
long temp_PRF_Count
) {
// 使用动态共享内存,根据线程块大小调整
extern __shared__ double s_data[];
double* s_R = s_data;
double* s_amp = s_data + blockDim.x;
__shared__ float s_R[SHAREMEMORY_FLOAT_HALF]; // 注意一个完整的block_size 共享相同内存
__shared__ float s_amp[SHAREMEMORY_FLOAT_HALF];
const int tid = threadIdx.x;
const int prfId = blockIdx.x;
const int fId = tid; // 每个线程处理一个频率点
long long tid = threadIdx.x;
long long bid = blockIdx.x;
long long idx = bid * blockDim.x + tid;
long long prfId = idx / nextfreqNum; // 脉冲ID
long long fId = idx % nextfreqNum;//频率ID
double factorjTemp = RFPCPIDIVLIGHT * (f0 + fId * dfreq);
cuComplex echo = make_cuComplex(0.0f, 0.0f);
// 分块加载数据并计算
for (int block_offset = 0; block_offset < posNum; block_offset += blockDim.x) {
int psid = block_offset + tid;
int pixelId = prfId * posNum + psid;
// 加载当前块到共享内存
if (psid < posNum) {
s_R[tid] = static_cast<double>(d_temp_R[pixelId]);
s_amp[tid] = static_cast<double>(d_temp_amps[pixelId]);
long long psid = 0;
long long pixelId = 0;
for (long ii = 0; ii < SHAREMEMORY_FLOAT_HALF_STEP; ii++) { // SHAREMEMORY_FLOAT_HALF_STEP * BLOCK_SIZE=SHAREMEMORY_FLOAT_HALF
psid = ii * BLOCK_SIZE + tid;
pixelId = prfId * SHAREMEMORY_FLOAT_HALF + psid;
s_R[psid] = d_temp_R[pixelId];
s_amp[psid] = d_temp_amps[pixelId];
if (prfId > 200) {
printf("prfId:%d ,idx:%d s_R:%f S_amp:%f \n", prfId, idx, s_R[psid], s_amp[psid]);
}
else {
s_R[tid] = 0.0f;
s_amp[tid] = 0.0f;
}
__syncthreads();
// 计算当前块的贡献
for (int dataid = 0; dataid < blockDim.x; ++dataid) {
float temp_phi =fmod( s_R[dataid] * factorjTemp,2*PI);
float temp_amp = s_amp[dataid];
float sin_phi, cos_phi;
sincosf(temp_phi, &sin_phi, &cos_phi);
echo.x += temp_amp * cos_phi;
echo.y += temp_amp * sin_phi;
}
__syncthreads();
}
// 只处理有效的频率点和PRF
if (prfId < temp_PRF_Count && fId < FreqPoints && fId < maxfreqnum) {
const int echo_ID = prfId * maxfreqnum + fId;
atomicAdd(&echodata[echo_ID].x, echo.x);
atomicAdd(&echodata[echo_ID].y, echo.y);
__syncthreads(); // 确定所有待处理数据都已经进入程序中
if (fId < maxfreqnum && prfId < temp_PRF_Count) {
long echo_ID = prfId * maxfreqnum + fId; // 计算对应的回波位置
double factorjTemp = RFPCPIDIVLIGHT * (f0 + fId * dfreq);
cuComplex echo = make_cuComplex(0, 0);
for (long dataid = 0; dataid < SHAREMEMORY_FLOAT_HALF; dataid++) {
float temp_real = 0;
float temp_imag = 0;
double R = s_R[dataid];
float temp_phi = fmod(R * factorjTemp, 2 * PI);
float temp_amp = s_amp[dataid];
sincosf(temp_phi, &temp_imag, &temp_real);
echo.x = echo.x + (temp_amp * temp_real);
echo.y = echo.y + (temp_amp * temp_imag);
//if (dataid > 5000) {
// printf("echo_ID=%d; dataid=%d;ehodata=(%f,%f);R=%f;amp=%f;\n", echo_ID, dataid, temp_real, temp_imag, s_R[0], s_amp[0]);
//}
if (isnan(temp_phi) || isnan(temp_amp) || isnan(echo.x) || isnan(echo.y)
|| isinf(temp_phi) || isinf(temp_amp) || isinf(echo.x) || isinf(echo.y)
) {
printf("[amp,phi,real,imag]=[%f,%f,%f,%f];\n", temp_amp, temp_phi, echo.x, echo.y);
}
}
echodata[echo_ID] = cuCaddf(echodata[echo_ID], echo);
}
}
@ -638,23 +671,23 @@ 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 prfnum %zu,%zu ,%zu,%d ,%d \n", pixelcount, task.targetnum, grid_size, BLOCK_SIZE,task.prfNum);
printf("computer pixelcount goalnum gridsize blocksize prfnum %zu,%zu ,%zu,%d ,%d \n", pixelcount, task.targetnum, grid_size, BLOCK_SIZE, task.prfNum);
printf("Dev:%d ,freqnum%d , prfnum:%d ,Rref: %e ,Rnear : %e ,Rfar: %e , StartFreq: %e ,DeletFreq: %e \n",
devid, task.freqNum, task.prfNum, task.Rref, task.Rnear, task.Rfar, task.startFreq, task.stepFreq);
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);
float* d_R = (float*)mallocCUDADevice(task.prfNum * SHAREMEMORY_FLOAT_HALF * sizeof(float), devid);
float* d_amps = (float*)mallocCUDADevice(task.prfNum * SHAREMEMORY_FLOAT_HALF * sizeof(float), devid);
long BLOCK_FREQNUM = NextBlockPad(task.freqNum, BLOCK_SIZE); // 256*freqBlockID
long cudaBlocknum = 0;
long freqpoints = BLOCK_FREQNUM;
printf("freqpoints:%d\n", freqpoints);
long freqpoints = BLOCK_SIZE;
printf("freqpoints:%d\n", task.freqNum);
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 >> >(
Kernel_Computer_R_amp_NoAntPattern << <cudaBlocknum, BLOCK_SIZE >> > (
task.antlist,
prfcount,
task.goallist,
@ -664,39 +697,26 @@ extern "C" void ProcessRFPCTask(RFPCTask& task, long devid)
task.Pt,
task.Rref,
task.Rnear, task.Rfar,
task.maxGain,task.GainWeight,
task.maxGain, task.GainWeight,
d_R, d_amps// 计算输出
);
);
PrintLasterError("CUDA_Kernel_Computer_R_amp");
cudaDeviceSynchronize();
dim3 blocks(task.prfNum);
dim3 threads(BLOCK_SIZE);
size_t shared_mem_size = 2 * BLOCK_SIZE * sizeof(double);
CUDA_Kernel_Computer_echo_NoAntPattern_Optimized << <blocks, threads, shared_mem_size >> > (
d_R, d_amps, SHAREMEMORY_FLOAT_HALF,
task.startFreq/1e9, task.stepFreq / 1e9,
freqpoints, task.freqNum,
task.d_echoData,
task.prfNum
);
//cudaBlocknum = (task.prfNum * BLOCK_FREQNUM + BLOCK_SIZE - 1) / BLOCK_SIZE;
//CUDA_Kernel_Computer_echo_NoAntPattern << <cudaBlocknum, BLOCK_SIZE >> > (
// d_R, d_amps, SHAREMEMORY_FLOAT_HALF,
// task.startFreq/1e9, task.stepFreq / 1e9,
// freqpoints, task.freqNum,
// task.d_echoData,
// task.prfNum
// );
cudaBlocknum = (task.prfNum * BLOCK_FREQNUM + BLOCK_SIZE- 1) / BLOCK_SIZE;
CUDA_Kernel_Computer_echo_NoAntPattern << <cudaBlocknum, BLOCK_SIZE >> > (
d_R, d_amps,
task.startFreq / 1e9, task.stepFreq / 1e9,
task.freqNum, BLOCK_FREQNUM,
task.d_echoData,
task.prfNum
);
PrintLasterError("CUDA_Kernel_Computer_echo");
cudaDeviceSynchronize();
if ((sTi * 100.0 / task.targetnum) - process >= 10) {
process = sTi * 100.0 / task.targetnum;
PRINT("device ID : %d , TargetID [%f]: %d / %d finished %d\n",devid, sTi * 100.0 / task.targetnum, sTi, task.targetnum,devid);
PRINT("device ID : %d , TargetID [%f]: %d / %d finished %d\n", devid, sTi * 100.0 / task.targetnum, sTi, task.targetnum, devid);
}
}
@ -707,7 +727,7 @@ extern "C" void ProcessRFPCTask(RFPCTask& task, long devid)
FreeCUDADevice(d_amps);
}
#endif

View File

@ -1120,12 +1120,14 @@ ErrorCode RFPCProcessCls::RFPCMainProcess_GPU_NoAntPattern(size_t startprfid, si
// 分块计算
for (const auto& pair : clsGoalStateDict) {
long clsid = pair.first;
task.sigma0_cls = clsCUDASigmaParamsDict[clsid];
size_t clscount = clsCountDict[clsid];
PRINT("Process Class ID : %d , Count: %d Device: %d\n", clsid, clscount,devId);
PRINT("Process Class ID : %d , Count: %d Device: %d , sigma Prams :[%f,%f,%f,%f,%f,%F]\n", clsid, clscount,devId,
task.sigma0_cls.p1, task.sigma0_cls.p2, task.sigma0_cls.p3, task.sigma0_cls.p4, task.sigma0_cls.p5, task.sigma0_cls.p6);
task.targetnum = clscount;
task.goallist = (GoalState*)mallocCUDADevice(clscount * sizeof(GoalState), devId);
HostToDevice(clsGoalStateDict[clsid].get(), task.goallist, sizeof(GoalState) * clscount);
task.sigma0_cls = clsCUDASigmaParamsDict[clsid];
ProcessRFPCTask(task, devId);
FreeCUDADevice(task.goallist);
}

View File

@ -30,50 +30,55 @@ SigmaDatabase::SigmaDatabase()
this->VH_sigmaParam.insert(std::pair<long, SigmaParam>(0, SigmaParam{ 0,0,0, 0, 0,0 }));
this->VV_sigmaParam.insert(std::pair<long, SigmaParam>(0, SigmaParam{ 0,0,0, 0, 0,0 }));
this->HH_sigmaParam.insert(std::pair<long, SigmaParam>(10, SigmaParam{ -21.1019701821713, 9.00621457243906, 6.52932182540331, -1.11157376729893, -15.8022895411007, 11.4690828129602 }));
this->HH_sigmaParam.insert(std::pair<long, SigmaParam>(20, SigmaParam{ -43.6677042155964, 32.0245140457417, 0.511060658303930, -2.68482232690106, 6.29783274559538, 1.96648609622833 }));
this->HH_sigmaParam.insert(std::pair<long, SigmaParam>(40, SigmaParam{ 50.97, -62.9, -0.0968, 1.604, -4.637, 6.108 }));
this->HH_sigmaParam.insert(std::pair<long, SigmaParam>(60, SigmaParam{ -12.45,23.3097,3.187,-2.482,8.244,0.3632 }));
////12
//this->HH_sigmaParam.insert(std::pair<long, SigmaParam>(12, SigmaParam{ -21.1019701821713, 9.00621457243906, 6.52932182540331, - 1.11157376729893, - 15.8022895411007, 11.4690828129602 }));
this->HH_sigmaParam.insert(std::pair<long, SigmaParam>(12, SigmaParam{ -21.1019701821713, 9.00621457243906, 6.52932182540331, - 1.11157376729893, - 15.8022895411007, 11.4690828129602 }));
//this->HV_sigmaParam.insert(std::pair<long, SigmaParam>(12, SigmaParam{ -30.0103645753547, 27.1700862271921, 11.8007376386356, - 0.933835390422269, - 16.4640776105300, 11.8318838032267 }));
//this->VH_sigmaParam.insert(std::pair<long, SigmaParam>(12, SigmaParam{ -30.0103645753547, 27.1700862271921, 11.8007376386356, -0.933835390422269, -16.4640776105300, 11.8318838032267 }));
//this->VV_sigmaParam.insert(std::pair<long, SigmaParam>(12, SigmaParam{ -21.1019701821713, 9.00621457243906, 6.52932182540331, -1.11157376729893, -15.8022895411007, 11.4690828129602 }));
////22
//this->HH_sigmaParam.insert(std::pair<long, SigmaParam>(22, SigmaParam{ -43.6677042155964, 32.0245140457417, 0.511060658303930, - 2.68482232690106, 6.29783274559538, 1.96648609622833 }));
this->HH_sigmaParam.insert(std::pair<long, SigmaParam>(22, SigmaParam{ -43.6677042155964, 32.0245140457417, 0.511060658303930, - 2.68482232690106, 6.29783274559538, 1.96648609622833 }));
//this->HV_sigmaParam.insert(std::pair<long, SigmaParam>(22, SigmaParam{ -36.3971634075803, 13.1296247093899, 1.12707368693158, - 1.88195857790977, 6.57450737122974, 2.11755051297951 }));
//this->VH_sigmaParam.insert(std::pair<long, SigmaParam>(22, SigmaParam{ -36.3971634075803, 13.1296247093899, 1.12707368693158, -1.88195857790977, 6.57450737122974, 2.11755051297951 }));
//this->VV_sigmaParam.insert(std::pair<long, SigmaParam>(22, SigmaParam{ -43.6677042155964, 32.0245140457417, 0.511060658303930, -2.68482232690106, 6.29783274559538, 1.96648609622833 }));
////30
//this->HH_sigmaParam.insert(std::pair<long, SigmaParam>(30, SigmaParam{ -59.1080014669385, 47.6710707363975, 0.300193452564135, - 3.93463636916976, 5.99799798331127, - 10.3772604045974 }));
this->HH_sigmaParam.insert(std::pair<long, SigmaParam>(30, SigmaParam{ -59.1080014669385, 47.6710707363975, 0.300193452564135, - 3.93463636916976, 5.99799798331127, - 10.3772604045974 }));
//this->HV_sigmaParam.insert(std::pair<long, SigmaParam>(30, SigmaParam{ -55.1864353240982, 32.2453149408716, 0.333758208816865, - 3.38774208141056, 6.12774897769798, - 10.1192846531823 }));
//this->VH_sigmaParam.insert(std::pair<long, SigmaParam>(30, SigmaParam{ -55.1864353240982, 32.2453149408716, 0.333758208816865, - 3.38774208141056, 6.12774897769798, - 10.1192846531823 }));
//this->VV_sigmaParam.insert(std::pair<long, SigmaParam>(30, SigmaParam{ -59.1080014669385, 47.6710707363975, 0.300193452564135, -3.93463636916976, 5.99799798331127, -10.3772604045974 }));
////50
//this->HH_sigmaParam.insert(std::pair<long, SigmaParam>(50, SigmaParam{ -22.9105602882378, 8170.54100628307, 15.4916054293135, - 0.970580847008280, 28.9025325818511, - 21.4319176514170 }));
this->HH_sigmaParam.insert(std::pair<long, SigmaParam>(50, SigmaParam{ -22.9105602882378, 8170.54100628307, 15.4916054293135, - 0.970580847008280, 28.9025325818511, - 21.4319176514170 }));
//this->HV_sigmaParam.insert(std::pair<long, SigmaParam>(50, SigmaParam{ -39.7459019584805, 151.391039247574, 5.17117231380975, - 4.10303899418773, 8.04893424718507, - 3.17171678851531 }));
//this->VH_sigmaParam.insert(std::pair<long, SigmaParam>(50, SigmaParam{ -39.7459019584805, 151.391039247574, 5.17117231380975, -4.10303899418773, 8.04893424718507, -3.17171678851531 }));
//this->VV_sigmaParam.insert(std::pair<long, SigmaParam>(50, SigmaParam{ -22.9105602882378, 8170.54100628307, 15.4916054293135, -0.970580847008280, 28.9025325818511, -21.4319176514170 }));
////61
//this->HH_sigmaParam.insert(std::pair<long, SigmaParam>(61, SigmaParam{ 27.2590864500905, 95.6840751800642, 3.98975084647232, 50.3262749621072, 3.09962879546370, - 5.10400310274333 }));
this->HH_sigmaParam.insert(std::pair<long, SigmaParam>(61, SigmaParam{ 27.2590864500905, 95.6840751800642, 3.98975084647232, 50.3262749621072, 3.09962879546370, - 5.10400310274333 }));
//this->HV_sigmaParam.insert(std::pair<long, SigmaParam>(61, SigmaParam{ -65.9799383836613, 106.831320929437, 1.53821651203361, 0.704332523237733, 36.3654715437260, - 13.7449876973719 }));
//this->VH_sigmaParam.insert(std::pair<long, SigmaParam>(61, SigmaParam{ -65.9799383836613, 106.831320929437, 1.53821651203361, 0.704332523237733, 36.3654715437260, -13.7449876973719 }));
//this->VV_sigmaParam.insert(std::pair<long, SigmaParam>(61, SigmaParam{ 27.2590864500905, 95.6840751800642, 3.98975084647232, 50.3262749621072, 3.09962879546370, -5.10400310274333 }));
////62
//this->HH_sigmaParam.insert(std::pair<long, SigmaParam>(62, SigmaParam{ -34.3961764495281, 21.7503968763591, 1.15914650010176, - 2.83950292185421, 10.3519995095232, 2.75293811408200 }));
this->HH_sigmaParam.insert(std::pair<long, SigmaParam>(62, SigmaParam{ -34.3961764495281, 21.7503968763591, 1.15914650010176, - 2.83950292185421, 10.3519995095232, 2.75293811408200 }));
//this->HV_sigmaParam.insert(std::pair<long, SigmaParam>(62, SigmaParam{ -34.0710914034599, 14.1778732014224, 3.47049853590805, - 1.73813229616801, 10.9627971440838, 2.19731364578002 }));
//this->VH_sigmaParam.insert(std::pair<long, SigmaParam>(62, SigmaParam{ -34.0710914034599, 14.1778732014224, 3.47049853590805, -1.73813229616801, 10.9627971440838, 2.19731364578002 }));
//this->VV_sigmaParam.insert(std::pair<long, SigmaParam>(62, SigmaParam{ -34.3961764495281, 21.7503968763591, 1.15914650010176, -2.83950292185421, 10.3519995095232, 2.75293811408200 }));
////80
//this->HH_sigmaParam.insert(std::pair<long, SigmaParam>(80, SigmaParam{ -5.76486750987210, - 7.80014668607246, 0.0880097904597720, - 5.44564720816575, - 0.530358195545799, 1.04332202699956 }));
this->HH_sigmaParam.insert(std::pair<long, SigmaParam>(80, SigmaParam{ -5.76486750987210, - 7.80014668607246, 0.0880097904597720, - 5.44564720816575, - 0.530358195545799, 1.04332202699956 }));
//this->HV_sigmaParam.insert(std::pair<long, SigmaParam>(80, SigmaParam{ 484.928701445606, - 0.992170190244375, - 1.98914783519718, - 507.127544388772, 0.195180814149377, 6.21339949756719 }));
//this->VH_sigmaParam.insert(std::pair<long, SigmaParam>(80, SigmaParam{ 484.928701445606, -0.992170190244375, -1.98914783519718, -507.127544388772, 0.195180814149377, 6.21339949756719 }));
//this->VV_sigmaParam.insert(std::pair<long, SigmaParam>(80, SigmaParam{ -5.76486750987210, -7.80014668607246, 0.0880097904597720, -5.44564720816575, -0.530358195545799, 1.04332202699956 }));
////90
//this->HH_sigmaParam.insert(std::pair<long, SigmaParam>(90, SigmaParam{ -20.1761798059391, 13.2752519275021, 2.74667225608397, 3.63052241744923, 8.99932188120922, 34.8246533269446 }));
this->HH_sigmaParam.insert(std::pair<long, SigmaParam>(90, SigmaParam{ -20.1761798059391, 13.2752519275021, 2.74667225608397, 3.63052241744923, 8.99932188120922, 34.8246533269446 }));
//this->HV_sigmaParam.insert(std::pair<long, SigmaParam>(90, SigmaParam{ -26.8776515733889, 10.4251866500052, 8.43273666535992, 4.33165922141213, 8.68204389555939, - 2.51718779582920 }));
//this->VH_sigmaParam.insert(std::pair<long, SigmaParam>(90, SigmaParam{ -26.8776515733889, 10.4251866500052, 8.43273666535992, 4.33165922141213, 8.68204389555939, - 2.51718779582920 }));
//this->VV_sigmaParam.insert(std::pair<long, SigmaParam>(90, SigmaParam{ -20.1761798059391, 13.2752519275021, 2.74667225608397, 3.63052241744923, 8.99932188120922, 34.8246533269446 }));

View File

@ -337,6 +337,7 @@ ErrorCode TBPImageAlgCls::ProcessGPU()
h_data.AntZ = (double*)mallocCUDAHost(sizeof(double) * block_pfrcount);
qDebug() << "r_vec [0]:\t" << h_data.r_vec[0];
qDebug() << "r_vec [end]:\t" << h_data.r_vec[h_data.Nfft-1];
qDebug() << "Range resolution(m):\t" << step;
qDebug() << "range Scence(m):\t" << maxWr;
qDebug() << "start Freq:\t" << centerFreq - bandwidth / 2;