fft_workspace_bytes_query Subroutine

public subroutine fft_workspace_bytes_query(bc_is_100, bc_is_110, cdims, try_cufftmp, is_root, worksize_bytes, heap_bytes, xtdesc_bytes, used_cufftmp, stat, query_only)

Creates and destroys the forward and backward FFT plans the way the solver does, for the cell dimensions cdims, and for cuFFTMp also the xtdesc buffer, each bracketed with cudaMemGetInfo. worksize_bytes is the plan workspace (used only on the plain cuFFT path, in cuFFTMp it is part of the heap), heap_bytes the memory the plans took, xtdesc_bytes the xtdesc buffer. The 110 BC never uses cuFFTMp. stat is the first non-zero cuFFT/CUDA code, or 0, and the other outputs are then not valid. A plan that aborts inside the library never returns. With query_only set, a cuFFTMp plan is made with auto-allocation off. heap_bytes is then the plan memory without the workspace, worksize_bytes the workspace of both plans (not allocated), xtdesc_bytes is zero and no xtdesc buffer is allocated. A plain cuFFT plan is not changed by it.

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: bc_is_100
logical, intent(in) :: bc_is_110
integer, intent(in) :: cdims(3)
logical, intent(in) :: try_cufftmp
logical, intent(in) :: is_root
integer(kind=i8), intent(out) :: worksize_bytes
integer(kind=i8), intent(out) :: heap_bytes
integer(kind=i8), intent(out) :: xtdesc_bytes
logical, intent(out) :: used_cufftmp
integer, intent(out) :: stat
logical, intent(in), optional :: query_only

Calls

proc~~fft_workspace_bytes_query~~CallsGraph proc~fft_workspace_bytes_query m_cuda_memcheck_device::fft_workspace_bytes_query cudamemgetinfo cudamemgetinfo proc~fft_workspace_bytes_query->cudamemgetinfo cufftdestroy cufftdestroy proc~fft_workspace_bytes_query->cufftdestroy cufftxtfree cufftxtfree proc~fft_workspace_bytes_query->cufftxtfree cufftxtmalloc cufftxtmalloc proc~fft_workspace_bytes_query->cufftxtmalloc proc~abort_run m_logger::abort_run proc~fft_workspace_bytes_query->proc~abort_run proc~create_fft_plan_pair m_cuda_poisson_fft::create_fft_plan_pair proc~fft_workspace_bytes_query->proc~create_fft_plan_pair proc~cuda_fft_plan_setup m_cuda_poisson_fft::cuda_fft_plan_setup proc~fft_workspace_bytes_query->proc~cuda_fft_plan_setup interface~str m_logger::str proc~abort_run->interface~str mpi_abort mpi_abort proc~abort_run->mpi_abort mpi_barrier mpi_barrier proc~abort_run->mpi_barrier mpi_comm_rank mpi_comm_rank proc~abort_run->mpi_comm_rank mpi_comm_size mpi_comm_size proc~abort_run->mpi_comm_size mpi_finalized mpi_finalized proc~abort_run->mpi_finalized mpi_initialized mpi_initialized proc~abort_run->mpi_initialized proc~create_fft_plan_pair->cufftdestroy proc~check_cufft m_cuda_errors::check_cufft proc~create_fft_plan_pair->proc~check_cufft proc~create_fft_plan m_cuda_poisson_fft::create_fft_plan proc~create_fft_plan_pair->proc~create_fft_plan proc~check_cufft->proc~abort_run proc~check_cufft->interface~str proc~create_fft_plan->cufftdestroy proc~create_fft_plan->interface~str proc~create_fft_plan->proc~check_cufft cufftcreate cufftcreate proc~create_fft_plan->cufftcreate cufftmakeplan3d cufftmakeplan3d proc~create_fft_plan->cufftmakeplan3d cufftmpattachcomm cufftmpattachcomm proc~create_fft_plan->cufftmpattachcomm cufftsetautoallocation cufftsetautoallocation proc~create_fft_plan->cufftsetautoallocation proc~log_warn m_logger::log_warn proc~create_fft_plan->proc~log_warn proc~log_warn->interface~str proc~log_warn->mpi_comm_rank proc~log_warn->mpi_comm_size proc~log_warn->mpi_finalized proc~log_warn->mpi_initialized

Called by

proc~~fft_workspace_bytes_query~~CalledByGraph proc~fft_workspace_bytes_query m_cuda_memcheck_device::fft_workspace_bytes_query 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