create_fft_plan Subroutine

public subroutine create_fft_plan(plan, use_cufftmp, nx, ny, nz, plan_type, plan_name, worksize_out, stat, auto_alloc_off)

Helper subroutine to create FFT plan with automatic cuFFTMp fallback

Arguments

Type IntentOptional Attributes Name
integer, intent(inout) :: plan
logical, intent(inout) :: use_cufftmp
integer, intent(in) :: nx
integer, intent(in) :: ny
integer, intent(in) :: nz
integer, intent(in) :: plan_type
character(len=*), intent(in) :: plan_name
integer(kind=int_ptr_kind()), intent(out), optional :: worksize_out

Set to cufftMakePlan3D's reported workspace size (bytes) when present. Optional and unused by every real solver call site (init, below); added only so the static memory estimator can read the exact FFT workspace size without a second, duplicate cufftMakePlan3D call.

integer, intent(out), optional :: stat

When present, a failed plain cuFFT plan creation returns its cuFFT error code here instead of stopping. Used only by the static memory estimator; the solver call sites leave it out and keep the stop.

logical, intent(in), optional :: auto_alloc_off

When present and true, a cuFFTMp plan is made with auto-allocation off. The plan then reports its workspace size in worksize_out and does not allocate the workspace. Used only by the static memory estimator.


Calls

proc~~create_fft_plan~~CallsGraph proc~create_fft_plan m_cuda_poisson_fft::create_fft_plan cufftcreate cufftcreate proc~create_fft_plan->cufftcreate cufftdestroy cufftdestroy proc~create_fft_plan->cufftdestroy cufftmakeplan3d cufftmakeplan3d proc~create_fft_plan->cufftmakeplan3d cufftmpattachcomm cufftmpattachcomm proc~create_fft_plan->cufftmpattachcomm cufftsetautoallocation cufftsetautoallocation proc~create_fft_plan->cufftsetautoallocation interface~str m_logger::str proc~create_fft_plan->interface~str proc~check_cufft m_cuda_errors::check_cufft proc~create_fft_plan->proc~check_cufft proc~log_warn m_logger::log_warn proc~create_fft_plan->proc~log_warn proc~check_cufft->interface~str proc~abort_run m_logger::abort_run proc~check_cufft->proc~abort_run proc~log_warn->interface~str mpi_comm_rank mpi_comm_rank proc~log_warn->mpi_comm_rank mpi_comm_size mpi_comm_size proc~log_warn->mpi_comm_size mpi_finalized mpi_finalized proc~log_warn->mpi_finalized mpi_initialized mpi_initialized proc~log_warn->mpi_initialized proc~abort_run->interface~str proc~abort_run->mpi_comm_rank proc~abort_run->mpi_comm_size proc~abort_run->mpi_finalized proc~abort_run->mpi_initialized mpi_abort mpi_abort proc~abort_run->mpi_abort mpi_barrier mpi_barrier proc~abort_run->mpi_barrier

Called by

proc~~create_fft_plan~~CalledByGraph proc~create_fft_plan m_cuda_poisson_fft::create_fft_plan proc~create_fft_plan_pair m_cuda_poisson_fft::create_fft_plan_pair proc~create_fft_plan_pair->proc~create_fft_plan proc~create_plans m_cuda_poisson_fft::cuda_poisson_fft_t%create_plans proc~create_plans->proc~create_fft_plan_pair proc~create_plans_110 m_cuda_poisson_fft::cuda_poisson_110_t%create_plans_110 proc~create_plans_110->proc~create_fft_plan_pair proc~fft_workspace_bytes_query m_cuda_memcheck_device::fft_workspace_bytes_query proc~fft_workspace_bytes_query->proc~create_fft_plan_pair none~ensure_probe m_cuda_memcheck_device::cuda_memcheck_device_t%ensure_probe none~ensure_probe->proc~fft_workspace_bytes_query none~query_plan_need m_cuda_memcheck_device::cuda_memcheck_device_t%query_plan_need none~query_plan_need->proc~fft_workspace_bytes_query proc~prepare_probe m_memcheck_estimate::prepare_probe proc~prepare_probe->none~ensure_probe proc~prepare_probe->none~query_plan_need proc~report m_memcheck_report::report proc~report->proc~prepare_probe program~x3d2_memcheck x3d2_memcheck program~x3d2_memcheck->proc~report