231
社区成员
发帖
与我相关
我的任务
分享
// 分配内存空间
int nMemorySize = sizeof(Complex) * nSizeX * nSizeY; // 传入的参数是512*512,但是跟踪发现是很大的数字或者0
Complex* pDeviceData;
Complex* pDeviceDataCopy;
cutilSafeCall(cudaMalloc((void**)&pDeviceData, nMemorySize)); // 该行被跳过执行
cutilSafeCall(cudaMalloc((void**)&pDeviceDataCopy, nMemorySize)); // ##
cutilSafeCall(cudaMemcpy(pDeviceData, pData, nMemorySize, cudaMemcpyHostToDevice));
cutilSafeCall(cudaMemcpy(pDeviceDataCopy, pDeviceData, nMemorySize, cudaMemcpyDeviceToDevice));
/* 对原始数据执行 FFT 变换 */
cufftHandle plan;
cufftSafeCall(cufftPlan2d(&plan, nSizeX, nSizeY, CUFFT_C2C));
cufftSafeCall(cufftSetCompatibilityMode(plan, CUFFT_COMPATIBILITY_NATIVE));
cufftSafeCall(cufftExecC2C(plan, (cufftComplex*)pDeviceData, (cufftComplex*)pDeviceData, CUFFT_FORWARD));
/* 滤波 */
float* pDeviceHanning;
cutilSafeCall(cudaMalloc((void**)&pDeviceHanning, sizeof(float)*nSizeX*nSizeY));
cutilSafeCall(cudaMemcpy(pDeviceHanning, pHanning, nMemorySize, cudaMemcpyHostToDevice)); // 执行该行后又回到 ## 处,此前 Output 一切正常,回到 ## 处后输出异常。
LPFilter<<<nSizeX, nSizeY>>>(pDeviceData, pDeviceHanning, nSizeX, nSizeY);