在使用dtk22.04的hipfft时采用如下图一cmake语句引入hipfft,产生如图2的错误:
(将rocfft相关内容注释放开后结果亦是如此)
是否hipfft的安装路径等存在问题,或者有无推荐的dtk22.04环境下引入hipfft的cmake语句写法推荐?
这个问题,我的一位同事应该已经私下回复过您了。由于3D FFT对部分size采用了新的执行策略,所以对于有些size,就不需要辅助的内存空间了,所以执行hipfftEstimateMany会返回0。这个不影响您对FFT接口的使用,您可以用cuFFT执行FFT的接口,做对比验证就行。(这个估计的接口,不同库采用的算法不同,略有差别,执行的接口对就行)
上面的问题似乎已经解决了,但似乎dtk22.04中的hipfft存在正确性问题?? 我写了一个如下图的demo测试,结果显示此demo在dtk22.04中hipfftEstimateMany的结果似乎是错误的,而同样的代码在dtk21.04和cuda(本地nvidia设备)中结果是一致的,demo如下图所示,关注的值为hipfftEstimateMany函数后ws_sz的值. blob:https://forum.sourcefind.cn/4194d5ed-a814-4dde-93d0-da4a09d3dbc0
dtk22.04中的编译方式为: hipcc -I/public/software/compiler/dtk-22.04/hipfft/include/ -I/public/software/compiler/dtk-22.04/hip/include/hip -L/public/software/compiler/dtk-22.04/hipfft/lib/ -L/public/software/compiler/dtk-22.04/rocfft/lib -lhipfft -lrocfft hipfft_demo.cpp -o hipfft_demo 运行方式为: srun -N 1 -n 1 --gres=dcu:1 -p yt_xd ./hipfft_demo 结果为: The hipfftEstimateMany n[3] variable is 512 512 512 ------------------------- The hipfftEstimateMany hipfftResult variable is 0 ------------------------- The hipfftEstimateMany ws_sz variable is 0 ------------------------- The hipfftEstimateMany hipfft_type variable is 106 -------------------------
dtk21.04中的编译方式为: module unload compiler/dtk/22.04 module load compiler/dtk/21.04 hipcc -I/public/software/compiler/dtk-21.04/hip/include/hip -I/public/software/compiler/dtk-21.04/rocfft/include -L/public/software/compiler/dtk-21.04/rocfft/lib/ -lrocfft hipfft_demo.cpp -o hipfft_demo 运行方式同上 结果为: The hipfftEstimateMany n[3] variable is 512 512 512 ------------------------- The hipfftEstimateMany hipfftResult variable is 0 ------------------------- The hipfftEstimateMany ws_sz variable is 1077936128 ------------------------- The hipfftEstimateMany hipfft_type variable is 106 -------------------------
在cuda和nvidia设备上编译运行结果如下: blob:https://forum.sourcefind.cn/2fb0aa20-2bb3-4e1f-bbb0-c75080bd41a5
这个问题,我的一位同事应该已经私下回复过您了。由于3D FFT对部分size采用了新的执行策略,所以对于有些size,就不需要辅助的内存空间了,所以执行hipfftEstimateMany会返回0。这个不影响您对FFT接口的使用,您可以用cuFFT执行FFT的接口,做对比验证就行。(这个估计的接口,不同库采用的算法不同,略有差别,执行的接口对就行)
上面的问题似乎已经解决了,但似乎dtk22.04中的hipfft存在正确性问题??
我写了一个如下图的demo测试,结果显示此demo在dtk22.04中hipfftEstimateMany的结果似乎是错误的,而同样的代码在dtk21.04和cuda(本地nvidia设备)中结果是一致的,demo如下图所示,关注的值为hipfftEstimateMany函数后ws_sz的值.
blob:https://forum.sourcefind.cn/4194d5ed-a814-4dde-93d0-da4a09d3dbc0
dtk22.04中的编译方式为:
hipcc -I/public/software/compiler/dtk-22.04/hipfft/include/ -I/public/software/compiler/dtk-22.04/hip/include/hip -L/public/software/compiler/dtk-22.04/hipfft/lib/ -L/public/software/compiler/dtk-22.04/rocfft/lib -lhipfft -lrocfft hipfft_demo.cpp -o hipfft_demo
运行方式为:
srun -N 1 -n 1 --gres=dcu:1 -p yt_xd ./hipfft_demo
结果为:
The hipfftEstimateMany n[3] variable is 512 512 512 -------------------------
The hipfftEstimateMany hipfftResult variable is 0 -------------------------
The hipfftEstimateMany ws_sz variable is 0 -------------------------
The hipfftEstimateMany hipfft_type variable is 106 -------------------------
dtk21.04中的编译方式为:
module unload compiler/dtk/22.04
module load compiler/dtk/21.04
hipcc -I/public/software/compiler/dtk-21.04/hip/include/hip -I/public/software/compiler/dtk-21.04/rocfft/include -L/public/software/compiler/dtk-21.04/rocfft/lib/ -lrocfft hipfft_demo.cpp -o hipfft_demo
运行方式同上
结果为:
The hipfftEstimateMany n[3] variable is 512 512 512 -------------------------
The hipfftEstimateMany hipfftResult variable is 0 -------------------------
The hipfftEstimateMany ws_sz variable is 1077936128 -------------------------
The hipfftEstimateMany hipfft_type variable is 106 -------------------------
在cuda和nvidia设备上编译运行结果如下:
blob:https://forum.sourcefind.cn/2fb0aa20-2bb3-4e1f-bbb0-c75080bd41a5