The CUDA device of x3d2-memcheck: the FFT plan probe and the memory readings.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| logical, | public, | save | :: | foreign_start_ok | = | .false. |
The other processes on the card at the start (false: NVML gave no usable list), the largest change from the start over all samples so far, and the process count of the last sample. |
| integer, | public, | save | :: | foreign_start_nproc | = | 0 | |
| integer, | public, | save | :: | foreign_nproc_last | = | 0 | |
| integer(kind=i8), | public, | save | :: | foreign_start_bytes | = | 0_i8 | |
| integer(kind=i8), | public, | save | :: | foreign_worst | = | 0_i8 | |
| logical, | public, | save | :: | foreign_valid | = | .false. |
False after a failed sample, which stops the sampling. |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(probe_result_t), | public | :: | probe |
The probe whose context and heap the estimate uses. |
|||
| logical, | public | :: | full_failed | = | .false. |
The full-grid probe returned a failure status, and that status. The small-grid result then stays in place. |
|
| integer, | public | :: | full_failed_stat | = | 0 | ||
| integer(kind=i8), | public | :: | plan_need_bytes | = | 0_i8 |
The memory the FFT plans of the full grid need, from the query-only mode (see query_plan_need). For cuFFTMp it is the predicted heap plus the xtdesc buffer rounded up to 0.5 GiB. |
|
| logical, | public | :: | heap_predicted | = | .false. |
The estimate takes the heap and the xtdesc buffer from the two sizes above instead of the probe that ran (see use_predicted_heap). |
| procedure, public :: init | |
| procedure, public :: mem_info | |
| procedure, public :: context_bytes | |
| procedure, public :: sz => pencil_size | |
| procedure, public :: overhead_floor_bytes | |
| procedure, public :: overhead_query_bytes | |
| procedure, public :: probe_ran | |
| procedure, public :: ensure_probe | |
| procedure, public :: query_plan_need | |
| procedure, public :: use_predicted_heap | |
| procedure, public :: heap_bytes | |
| procedure, public :: capture_solver_info | |
| procedure, public :: footprint_bytes | |
| procedure, public :: fft_path_known | |
| procedure, public :: uses_distributed_fft |
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.
| Type | Intent | Optional | 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 |