Currently cufftMpAttachComm is used to determine whether we can use cufftMp. However, this is deprecated from 11.40 (see https://docs.nvidia.com/cuda/cufftmp/usage/differences.html). Instead it's recommended to use cufftMpMakePlan2d, cufftMpMakePlan3d, or cufftMpMakePlanDecomposition https://docs.nvidia.com/cuda/cufftmp/release_notes.html
This should be a straight-forward fix:
if (use_cufftmp) then
! Try to create cuFFTMp plan (combines MPI attach and plan creation)
ierr = cufftMpMakePlan3d(plan, MPI_COMM_WORLD, nz, ny, nx, plan_type, worksize)
if (ierr /= 0) then
if (is_root) then
print *, 'cuFFTMp: Plan creation failed (error ', ierr, ')'
print *, 'Falling back to single-GPU cuFFT'
end if
cufftmp_failed = .true.
use_cufftmp = .false.
ierr = cufftDestroy(plan)
ierr = cufftCreate(plan)
end if
end if
Currently
cufftMpAttachCommis used to determine whether we can usecufftMp. However, this is deprecated from 11.40 (see https://docs.nvidia.com/cuda/cufftmp/usage/differences.html). Instead it's recommended to usecufftMpMakePlan2d,cufftMpMakePlan3d, orcufftMpMakePlanDecompositionhttps://docs.nvidia.com/cuda/cufftmp/release_notes.htmlThis should be a straight-forward fix: