2025-03-05 09:10:21 +00:00
|
|
|
|
|
|
|
|
|
#ifndef _BPBASIC0_CUDA_H_
|
|
|
|
|
#define _BPBASIC0_CUDA_H_
|
2025-03-03 08:25:50 +00:00
|
|
|
|
#include <cstdio>
|
|
|
|
|
#include <cufft.h>
|
|
|
|
|
#include <cmath>
|
|
|
|
|
#include <cuda_runtime.h>
|
|
|
|
|
#include "BaseConstVariable.h"
|
|
|
|
|
|
2025-03-05 09:10:21 +00:00
|
|
|
|
//#define cudaCheckError(ans) { gpuAssert((ans), __FILE__, __LINE__); }
|
|
|
|
|
//inline void gpuAssert(cudaError_t code, const char* file, int line) {
|
|
|
|
|
// if (code != cudaSuccess) {
|
|
|
|
|
// fprintf(stderr, "CUDA Error: %s %s %d\n", cudaGetErrorString(code), file, line);
|
|
|
|
|
// exit(code);
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
//
|
|
|
|
|
//#define c LIGHTSPEED
|
2025-03-03 08:25:50 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct GPUDATA {
|
2025-03-04 08:18:35 +00:00
|
|
|
|
long Nfft, K, Np, nx, ny; // <20><><EFBFBD><EFBFBD>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>С<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
|
2025-03-03 09:50:28 +00:00
|
|
|
|
double* AntX, * AntY, * AntZ, * minF; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ꡢ<EFBFBD><EAA1A2>ʼƵ<CABC><C6B5>
|
|
|
|
|
double* x_mat, * y_mat, * z_mat;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
double* r_vec; // <20><><EFBFBD>귶Χ
|
|
|
|
|
double* Freq;// Ƶ<><C6B5>
|
2025-03-06 05:43:56 +00:00
|
|
|
|
cuComplex* phdata;// <20>ز<EFBFBD>
|
|
|
|
|
cuComplex* im_final;// ͼ<><CDBC>
|
2025-03-03 09:50:28 +00:00
|
|
|
|
double R0; // <20>ο<EFBFBD>б<EFBFBD><D0B1>
|
|
|
|
|
double deltaF; // Ƶ<>㷶Χ
|
2025-03-03 08:25:50 +00:00
|
|
|
|
};
|
|
|
|
|
|
2025-03-06 09:58:40 +00:00
|
|
|
|
|
|
|
|
|
struct GPUDATA_single {
|
|
|
|
|
long Nfft, K, Np, nx, ny; // <20><><EFBFBD><EFBFBD>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>С<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
|
|
|
|
|
float* AntX, * AntY, * AntZ, * minF; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ꡢ<EFBFBD><EAA1A2>ʼƵ<CABC><C6B5>
|
|
|
|
|
float* x_mat, * y_mat, * z_mat;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
float* r_vec; // <20><><EFBFBD>귶Χ
|
|
|
|
|
float* Freq;// Ƶ<><C6B5>
|
|
|
|
|
cuComplex* phdata;// <20>ز<EFBFBD>
|
|
|
|
|
cuComplex* im_final;// ͼ<><CDBC>
|
|
|
|
|
float R0; // <20>ο<EFBFBD>б<EFBFBD><D0B1>
|
|
|
|
|
float deltaF; // Ƶ<>㷶Χ
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-03-03 08:25:50 +00:00
|
|
|
|
extern "C" {
|
2025-03-04 08:18:35 +00:00
|
|
|
|
void bpBasic0CUDA(GPUDATA& data, int flag,double* h_R=nullptr);
|
2025-03-03 08:25:50 +00:00
|
|
|
|
void initGPUData(GPUDATA& h_data, GPUDATA& d_data);
|
|
|
|
|
void freeGPUData(GPUDATA& d_data);
|
2025-03-03 09:50:28 +00:00
|
|
|
|
void freeHostData(GPUDATA& d_data);
|
|
|
|
|
void BPBasic0(GPUDATA& h_data);
|
2025-03-03 08:25:50 +00:00
|
|
|
|
};
|
|
|
|
|
|
2025-03-06 09:58:40 +00:00
|
|
|
|
|
|
|
|
|
extern "C" {
|
2025-03-06 12:20:12 +00:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȳ<F1BEABB6><C8B2><EFBFBD>
|
2025-03-11 01:31:03 +00:00
|
|
|
|
void bpBasic0CUDA_single(GPUDATA_single& data, int flag, float* h_R = nullptr);
|
|
|
|
|
void initGPUData_single(GPUDATA_single& h_data, GPUDATA_single& d_data);
|
|
|
|
|
void freeGPUData_single(GPUDATA_single& d_data);
|
|
|
|
|
void freeHostData_single(GPUDATA_single& d_data);
|
|
|
|
|
void BPBasic0_single(GPUDATA_single& h_data);
|
|
|
|
|
|
|
|
|
|
void copy_Host_Single_GPUData(GPUDATA_single& h_data, GPUDATA& d_data);
|
|
|
|
|
|
|
|
|
|
|
2025-03-06 09:58:40 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2025-03-05 09:10:21 +00:00
|
|
|
|
#endif
|