| 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). |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(cuda_memcheck_device_t), | intent(inout) | :: | self | |||
| logical, | intent(out) | :: | ok | |||
| character(len=*), | intent(out) | :: | msg |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(cuda_memcheck_device_t), | intent(in) | :: | self | |||
| integer(kind=i8), | intent(out) | :: | total_bytes | |||
| integer(kind=i8), | intent(out) | :: | free_bytes |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(cuda_memcheck_device_t), | intent(in) | :: | self |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(cuda_memcheck_device_t), | intent(in) | :: | self |
The formula overhead at num_gpus GPUs: the context plus, unless the BC is 110 (plain cuFFT), the heap over num_gpus, both from the probe that ran.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(cuda_memcheck_device_t), | intent(in) | :: | self | |||
| integer, | intent(in) | :: | num_gpus | |||
| logical, | intent(in) | :: | bc_is_110 |
The overhead at num_gpus GPUs from the full-grid probe, once probe_ran.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(cuda_memcheck_device_t), | intent(in) | :: | self | |||
| integer, | intent(in) | :: | num_gpus |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(cuda_memcheck_device_t), | intent(in) | :: | self |
Runs the FFT probe in this process. The probe on a 32^3 grid runs first, in every mode, and gives the context and the heap. When try_full is set, the probe on the cell dimensions cdims runs once after it. A full-grid probe that returns a failure status leaves the small-grid result in place and sets full_failed. A plan that does not fit aborts inside the library, so the caller sets try_full only when the plan fits. Stops the program when the small-grid probe fails. Each probe measures its own context just before its query.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(cuda_memcheck_device_t), | intent(inout) | :: | self | |||
| logical, | intent(in) | :: | bc_is_100 | |||
| logical, | intent(in) | :: | bc_is_110 | |||
| integer, | intent(in) | :: | cdims(3) | |||
| logical, | intent(in) | :: | try_full |
Runs the query-only mode of the FFT workspace query on the cell dimensions cdims. It allocates no workspace and no xtdesc buffer, so the plan cannot abort for lack of memory. xtdesc_bytes is the size of the xtdesc buffer, which the caller knows from the spectral slab. Sets plan_need_bytes when stat is zero.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(cuda_memcheck_device_t), | intent(inout) | :: | self | |||
| logical, | intent(in) | :: | bc_is_100 | |||
| logical, | intent(in) | :: | bc_is_110 | |||
| integer, | intent(in) | :: | cdims(3) | |||
| integer(kind=i8), | intent(in) | :: | xtdesc_bytes | |||
| integer, | intent(out) | :: | stat |
Makes the estimate take the heap predicted by query_plan_need, for the case that the full-grid probe does not run. A plain cuFFT plan has no heap, so it stays as it is.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(cuda_memcheck_device_t), | intent(inout) | :: | self |
The NVSHMEM heap the estimate uses: the predicted heap when heap_predicted is set, else the heap of the probe that ran. Both are without the xtdesc buffer.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(cuda_memcheck_device_t), | intent(in) | :: | self |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(cuda_memcheck_device_t), | intent(inout) | :: | self | |||
| class(base_case_t), | intent(in) | :: | flow_case |
The card memory held at the end of the real build: the context at the start plus the fall of the free memory since then.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(cuda_memcheck_device_t), | intent(in) | :: | self | |||
| integer(kind=i8), | intent(in) | :: | free_end_bytes |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(cuda_memcheck_device_t), | intent(in) | :: | self |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(cuda_memcheck_device_t), | intent(in) | :: | self |