保留修改
parent
947146320e
commit
bdaa4f22f7
|
@ -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,
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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 }));
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue