The per-GPU memory estimate of x3d2-memcheck.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public, | parameter | :: | n_halo | = | 4 | |
| integer, | public, | parameter | :: | basis_measured | = | 1 |
How the overhead of an estimate was obtained: from the num_gpus=1 probe or measurement, that scaled to num_gpus>1, from the formula alone, or from the formula with the heap predicted by the plan query (the full-grid probe did not fit). |
| integer, | public, | parameter | :: | basis_extrapolated | = | 2 |
How the overhead of an estimate was obtained: from the num_gpus=1 probe or measurement, that scaled to num_gpus>1, from the formula alone, or from the formula with the heap predicted by the plan query (the full-grid probe did not fit). |
| integer, | public, | parameter | :: | basis_formula | = | 3 |
How the overhead of an estimate was obtained: from the num_gpus=1 probe or measurement, that scaled to num_gpus>1, from the formula alone, or from the formula with the heap predicted by the plan query (the full-grid probe did not fit). |
| integer, | public, | parameter | :: | basis_predicted | = | 4 |
How the overhead of an estimate was obtained: from the num_gpus=1 probe or measurement, that scaled to num_gpus>1, from the formula alone, or from the formula with the heap predicted by the plan query (the full-grid probe did not fit). |
| character(len=12), | public, | parameter | :: | basis_name(4) | = | [character(len=12)::'measured', 'extrapolated', 'formula-only', 'predicted'] |
Bytes to GiB, the one conversion every printed figure goes through.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=i8), | intent(in) | :: | n_bytes |
The FITS, BORDERLINE or DOES_NOT_FIT verdict of every estimate.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(in) | :: | per_gpu_gib | |||
| real(kind=dp), | intent(in) | :: | total_gib |
The reason GPU count num_gpus is not a supported decomposition, blank when it is.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(memcheck_ctx_t), | intent(in) | :: | ctx | |||
| integer, | intent(in) | :: | num_gpus |
The reason the nproc_dir of the input file is not supported, blank when it is. The CUDA backend only supports nproc_dir = [1,1,num_gpus].
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(memcheck_ctx_t), | intent(in) | :: | ctx |
The fields and halo term at num_gpus GPUs for npeak fields.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(memcheck_ctx_t), | intent(in) | :: | ctx | |||
| integer, | intent(in) | :: | num_gpus | |||
| integer, | intent(in) | :: | npeak |
Decides the FFT probe once per run and runs it. The small-grid probe gives the context and the heap. The full-grid probe follows when the mode allows and the card has room for the memory the plans need. The decision is in ctx%probe_plan and ctx%probe_reason (see ensure_probe in the device).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(memcheck_ctx_t), | intent(inout) | :: | ctx |
The per-GPU estimate at num_gpus GPUs. The formula floor stands unless the full-grid probe gave a result and the floor is not over the limit. workspace_gib, overhead_gib and io_gib (optional) split the result. used_gib and npeak (optional) are the num_gpus=1 measurement of the real build and its peak_fields: the estimate is then that measurement scaled to num_gpus, and workspace_gib holds the fields and halo alone.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(memcheck_ctx_t), | intent(inout) | :: | ctx | |||
| integer, | intent(in) | :: | num_gpus | |||
| real(kind=dp), | intent(out) | :: | per_gpu_gib | |||
| integer, | intent(out) | :: | basis | |||
| character(len=12), | intent(out) | :: | verdict | |||
| real(kind=dp), | intent(out), | optional | :: | workspace_gib | ||
| real(kind=dp), | intent(out), | optional | :: | overhead_gib | ||
| real(kind=dp), | intent(out), | optional | :: | io_gib | ||
| real(kind=dp), | intent(in), | optional | :: | used_gib | ||
| integer, | intent(in), | optional | :: | npeak |