RasterProcessTool/GPUTool/GPURFPC.cuh

161 lines
5.2 KiB
Plaintext
Raw Normal View History

#ifndef _GPURFPC_H_
#define _GPURFPC_H_
#include "BaseConstVariable.h"
#include "GPUTool.cuh"
#include <cuda_runtime.h>
#include <device_launch_parameters.h>
#include <cublas_v2.h>
#include <cuComplex.h>
2025-01-15 10:48:43 +00:00
#define RFPCPIDIVLIGHT -4*PI/(LIGHTSPEED/1e9)
#define GPU_SHARE_MEMORY 5888
#define GPU_SHARE_STEP 23
extern "C" struct CUDASigmaParam {
2025-01-14 01:25:23 +00:00
double p1;
double p2;
double p3;
double p4;
double p5;
double p6;
};
2025-01-14 01:25:23 +00:00
extern __device__ double GPU_getSigma0dB(CUDASigmaParam param, double theta);
extern __device__ CUDAVectorEllipsoidal GPU_SatelliteAntDirectNormal(
2025-01-14 01:25:23 +00:00
double RstX, double RstY, double RstZ,
double antXaxisX, double antXaxisY, double antXaxisZ,
double antYaxisX, double antYaxisY, double antYaxisZ,
double antZaxisX, double antZaxisY, double antZaxisZ,
double antDirectX, double antDirectY, double antDirectZ
);
2025-01-14 01:25:23 +00:00
extern __device__ double GPU_BillerInterpAntPattern(double* antpattern,
double starttheta, double startphi, double dtheta, double dphi,
long thetapoints, long phipoints,
2025-01-14 01:25:23 +00:00
double searththeta, double searchphi);
2025-01-14 01:25:23 +00:00
extern __global__ void CUDA_AntPatternInterpGain(double* anttheta, double* antphi, double* gain,
double* antpattern, double starttheta, double startphi, double dtheta, double dphi, int thetapoints, int phipoints, long len);
extern __global__ void CUDA_InterpSigma(
2025-01-14 01:25:23 +00:00
long* demcls, double* sigmaAmp, double* localanglearr, long len,
CUDASigmaParam* sigma0Paramslist, long sigmaparamslistlen);
2025-01-14 01:25:23 +00:00
extern __global__ void CUDA_BillerInterpAntPattern(double* antpattern,
double starttheta, double startphi, double dtheta, double dphi,
long thetapoints, long phipoints,
2025-01-14 01:25:23 +00:00
double* searththeta, double* searchphi, double* searchantpattern,
long len);
2025-01-14 01:25:23 +00:00
2025-01-15 10:48:43 +00:00
extern __global__ void CUDAKernel_RFPC_Computer_R_Gain(
2025-01-14 01:25:23 +00:00
double antX, double antY, double antZ, // <20><><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>
2025-01-15 10:48:43 +00:00
double* targetX, double* targetY, double* targetZ, long len, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
long* demCls,
2025-01-14 01:25:23 +00:00
double* demSlopeX, double* demSlopeY, double* demSlopeZ, // <20>ر<EFBFBD><D8B1><EFBFBD>ʸ<EFBFBD><CAB8>
double antXaxisX, double antXaxisY, double antXaxisZ, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>X<EFBFBD><58>
double antYaxisX, double antYaxisY, double antYaxisZ,// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>Y<EFBFBD><59>
double antZaxisX, double antZaxisY, double antZaxisZ,// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>Z<EFBFBD><5A>
double antDirectX, double antDirectY, double antDirectZ,// <20><><EFBFBD>ߵ<EFBFBD>ָ<EFBFBD><D6B8>
double Pt,// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2025-01-06 11:56:45 +00:00
double refPhaseRange,
2025-01-16 02:12:08 +00:00
double* TransAntpattern, double Transtarttheta, double Transstartphi, double Transdtheta, double Transdphi, int Transthetapoints, int Transphipoints, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>ͼ
double* ReceiveAntpattern, double Receivestarttheta, double Receivestartphi, double Receivedtheta, double Receivedphi, int Receivethetapoints, int Receivephipoints,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>ͼ
2025-01-14 01:25:23 +00:00
double NearR, double FarR, // <20><><EFBFBD>Χ
2025-01-02 16:15:08 +00:00
CUDASigmaParam* sigma0Paramslist, long sigmaparamslistlen,// <20><>ֵͼ
2025-01-15 10:48:43 +00:00
float* outR, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float* outAmp
);
2025-01-15 10:48:43 +00:00
extern __global__ void CUDAKernel_PRF_GeneratorEcho(float* Rarr, float* ampArr,
long pixelcount,
float f0, float dfreq, long freqnum,
2025-01-16 02:12:08 +00:00
float* echo_real, float* echo_imag, long prfid);
2025-01-15 10:48:43 +00:00
2025-01-14 01:25:23 +00:00
2025-01-20 07:49:54 +00:00
//
//extern "C" void CUDA_RFPC_MainBlock(
// double* antX, double* antY, double* antZ, // <20><><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>
// double* antXaxisX, double* antXaxisY, double* antXaxisZ, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>X<EFBFBD><58>
// double* antYaxisX, double* antYaxisY, double* antYaxisZ,// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>Y<EFBFBD><59>
// double* antZaxisX, double* antZaxisY, double* antZaxisZ,// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>Z<EFBFBD><5A>
// double* antDirectX, double* antDirectY, double* antDirectZ,// <20><><EFBFBD>ߵ<EFBFBD>ָ<EFBFBD><D6B8>
// long startpid, long PRFCount, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// float f0, float dfreq, long freqnum, // Ƶ<><C6B5><EFBFBD><EFBFBD>
// double* targetX, double* targetY, double* targetZ, long TargetPixelNumber, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// long* demCls, // <20>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
// double* demSlopeX, double* demSlopeY, double* demSlopeZ, // <20>ر<EFBFBD><D8B1><EFBFBD>ʸ<EFBFBD><CAB8>
// double NearR, double FarR, // <20><><EFBFBD>Χ
//
// float* out_echoReal, float* out_echoImag,// <20><><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD>
// float* temp_R, float* temp_amp
// //,double* temp_phi ,double* temp_real, double* tmep_imag// <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
//);
extern "C" void CUDA_RFPC_MainProcess(
// <20><><EFBFBD><EFBFBD>
double* antX, double* antY, double* antZ, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double* antXaxisX, double* antXaxisY, double* antXaxisZ, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>X<EFBFBD><58>
double* antYaxisX, double* antYaxisY, double* antYaxisZ,// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>Y<EFBFBD><59>
double* antZaxisX, double* antZaxisY, double* antZaxisZ,// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>Z<EFBFBD><5A>
double* antDirectX, double* antDirectY, double* antDirectZ,// <20><><EFBFBD>ߵ<EFBFBD>ָ<EFBFBD><D6B8>
long PRFCount, long FreqNum, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float f0, float dfreq,// <20><>ʼƵ<CABC>ʣ<EFBFBD><CAA3><EFBFBD>ֹƵ<D6B9><C6B5>
2025-01-15 03:35:48 +00:00
double Pt,// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double refPhaseRange,
2025-01-20 07:49:54 +00:00
// <20><><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>ͼ
double* TransAntpattern, double Transtarttheta, double Transstartphi, double Transdtheta, double Transdphi, int Transthetapoints, int Transphipoints, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>ͼ
2025-01-16 02:12:08 +00:00
double* ReceiveAntpattern, double Receivestarttheta, double Receivestartphi, double Receivedtheta, double Receivedphi, int Receivethetapoints, int Receivephipoints,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>ͼ
2025-01-15 03:35:48 +00:00
double NearR, double FarR, // <20><><EFBFBD>Χ
2025-01-20 07:49:54 +00:00
// <20><><EFBFBD><EFBFBD>
double* targetX, double* targetY, double* targetZ, long* demCls, long TargetPixelNumber, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double* demSlopeX, double* demSlopeY, double* demSlopeZ,// <20>ر<EFBFBD><D8B1><EFBFBD>ʸ<EFBFBD><CAB8>
CUDASigmaParam* sigma0Paramslist, long sigmaparamslistlen,// <20><>ֵͼ<D6B5><CDBC>
float* out_echoReal, float* out_echoImag// <20><><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD>
2025-01-15 03:35:48 +00:00
);
2025-01-14 01:25:23 +00:00
2025-01-20 07:49:54 +00:00
#endif
2025-01-14 01:25:23 +00:00