调用cufftPlanMany触发CUFFT_INTERNAL_ERROR的技术问询
cuFFT_INTERNAL_ERROR 触发问题
- 循环中对固定尺寸(360行×90列)的输入执行2D cuFFT,每次批次大小在1~100间随机变动
- 特定批次会触发
CUFFT_INTERNAL_ERROR:CUDA12.0时为第640组,升级至12.4后变为第721组 - 各组输入无明显差异,相同输入下错误始终出现在同一批次
- 已通过调试确认无内存泄漏
- 运行环境:RTX3090、Visual Studio2022、Windows10、CUDA12.4
相关代码片段
#define CHECK_CUFFT(cond) check_cufft(cond, __LINE__) inline void check_cufft(cufftResult err, const int line) { if( CUFFT_SUCCESS != err) { fprintf(stderr, "CUFFT error line %d\n error %d: %s\nterminating!\n", line, err, _cudaGetErrorEnum(err)); cudaDeviceReset(); assert(0); } } // 主循环代码 int nFFTbatch = 10; // 实际取值为1~100间随机数 int nEstCompen[2] = { 360 , 90 }; int nEstCompenNum = 90 * 360; cufftHandle planPreCompen; cufftResult cufftRes = cufftPlanMany(&planPreCompen, 2, nEstCompen, nEstCompen, 1, nEstCompenNum, nEstCompen, 1, nEstCompenNum, CUFFT_C2C, nFFTbatch ); CHECK_CUFFT(cufftRes); // 此处触发CUFFT_INTERNAL_ERROR cufftRes = cufftExecC2C(planPreCompen, mCompFFT, mCompFFT, CUFFT_FORWARD); CHECK_CUFFT(cufftRes); cufftRes = cufftDestroy(planPreCompen); CHECK_CUFFT(cufftRes);
内容的提问来源于stack exchange,提问作者powermew
相关产品推荐
相关产品推荐

