求大神指点:cudaError_enum的错误

时间:2022-08-25 19:12:02
出错信息:“test.exe”: 已加载“D:\HealthWay\FDKdll\Debug\test.exe”,已加载符号。
“test.exe”: 已加载“C:\Windows\SysWOW64\ntdll.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\kernel32.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\KernelBase.dll”
“test.exe”: 已加载“D:\HealthWay\FDKdll\Debug\FDK.dll”,已加载符号。
“test.exe”: 已加载“C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\bin\cudart32_42_9.dll”,未使用调试信息生成二进制文件。
“test.exe”: 已加载“D:\HealthWay\FDKdll\Debug\cufft32_42_9.dll”, 未使用调试信息生成二进制文件
“test.exe”: 已加载“C:\Windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_none_bb1f6aa1308c35eb\msvcr90d.dll”,已加载符号。
“test.exe”: 已加载“C:\Windows\SysWOW64\apphelp.dll”
“test.exe”: 已加载“C:\Windows\AppPatch\AcLayers.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\sspicli.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\msvcrt.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\rpcrt4.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\cryptbase.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\sechost.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\user32.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\gdi32.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\lpk.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\usp10.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\advapi32.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\shell32.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\shlwapi.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\ole32.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\oleaut32.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\userenv.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\profapi.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\winspool.drv”
“test.exe”: 已加载“C:\Windows\SysWOW64\mpr.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\imm32.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\msctf.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\nvcuda.dll”,未使用调试信息生成二进制文件。
“test.exe”: 已加载“C:\Windows\SysWOW64\setupapi.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\cfgmgr32.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\devobj.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\ws2_32.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\nsi.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\dwmapi.dll”
“test.exe”: 已卸载“C:\Windows\SysWOW64\dwmapi.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\nvapi.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\version.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\wintrust.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\crypt32.dll”
“test.exe”: 已加载“C:\Windows\SysWOW64\msasn1.dll”
test.exe 中的 0x753eb9bc 处最可能的异常: Microsoft C++ 异常: 内存位置 0x001ff388 处的 cudaError_enum。
test.exe 中的 0x753eb9bc 处最可能的异常: Microsoft C++ 异常: 内存位置 0x001ff314 处的 cudaError_enum。
test.exe 中的 0x040956a1 处最可能的异常: 0xC0000005: 读取位置 0xbaadf00d 时发生访问冲突
test.exe 中的 0x777915de 处未处理的异常: 0xC0000005: 读取位置 0xbaadf00d 时发生访问冲突

出错语句:cufftPlan1d(&plan, filterlength, CUFFT_C2C, prjParam->iPrjX);


部分源代码:
void runFDK(int NumofScan, int totScan, const ProjParameter *prjParam, float voxelsize, int reconSize, float* d_filter, int filterlength, unsigned short* d_bk, unsigned short* d_img, 
cufftComplex* d_data, float* d_filterImg, cudaArray *filteredImg,cudaPitchedPtr devPitchedPtr, cudaExtent extent, const CalibParameter *calib)
{
//初始化复数投影,同时补零
CUDA_SAFE_CALL(cudaMemset(d_data,0,sizeof(cufftComplex) * (prjParam->iPrjX) * filterlength));

//GPU上投影预修正、重排
dim3 threads(16, 16);
dim3 grid(96, 120);
preprocessKernel<<< grid, threads >>>(d_bk,d_img,d_data,calib,filterlength, (prjParam->iPrjX));
cudaThreadSynchronize();

//傅里叶变换
cufftHandle plan;
cufftPlan1d(&plan, filterlength, CUFFT_C2C, prjParam->iPrjX);

//cufftExecC2C(plan, d_data, d_data,CUFFT_FORWARD);

4 个解决方案

#1


我将上面的程序稍微调整下语句次序,结果能运行了.  为什么??  跳出这个函数别的地方又出错了,
我崩溃了. 是系统设置的问题吗?
//傅里叶变换
cufftHandle plan;
cufftPlan1d(&plan, filterlength, CUFFT_C2C, prjParam->iPrjX);

//初始化复数投影,同时补零
CUDA_SAFE_CALL(cudaMemset(d_data,0,sizeof(cufftComplex) * (prjParam->iPrjX) * filterlength));

//GPU上投影预修正、重排
dim3 threads(16, 16);
dim3 grid(96, 120);
preprocessKernel<<< grid, threads >>>(d_bk,d_img,d_data,calib,filterlength, (prjParam->iPrjX));
cudaThreadSynchronize();

cufftExecC2C(plan, d_data, d_data,CUFFT_FORWARD);

#2


问题已经得到解决.
   原因是函数接口里传过来的是指针.导致错误

#3


您好 ,您这个问题怎么解决的 我也遇到了

#4


同上,我也遇到了,求指点!!

#1


我将上面的程序稍微调整下语句次序,结果能运行了.  为什么??  跳出这个函数别的地方又出错了,
我崩溃了. 是系统设置的问题吗?
//傅里叶变换
cufftHandle plan;
cufftPlan1d(&plan, filterlength, CUFFT_C2C, prjParam->iPrjX);

//初始化复数投影,同时补零
CUDA_SAFE_CALL(cudaMemset(d_data,0,sizeof(cufftComplex) * (prjParam->iPrjX) * filterlength));

//GPU上投影预修正、重排
dim3 threads(16, 16);
dim3 grid(96, 120);
preprocessKernel<<< grid, threads >>>(d_bk,d_img,d_data,calib,filterlength, (prjParam->iPrjX));
cudaThreadSynchronize();

cufftExecC2C(plan, d_data, d_data,CUFFT_FORWARD);

#2


问题已经得到解决.
   原因是函数接口里传过来的是指针.导致错误

#3


您好 ,您这个问题怎么解决的 我也遇到了

#4


同上,我也遇到了,求指点!!