public pure function halo_bytes(padded_dims, sz, n_halo) result(nbytes8)
CUDA-backend halo-exchange buffer bytes. Mirrors the 24 allocate
statements in src/backend/cuda/backend.f90:128-152: 12 arrays shaped
(sz, n_halo, n_groups) for u/v/w send/recv start/end, plus 12 more
shaped (sz, 1, n_groups) for du/dud/d2u send/recv start/end - all
real(dp). n_groups is the max over X/Y/Z of ny_pnz_p/sz, nx_pnz_p/
sz, nx_pny_p/sz (src/allocator.f90:81-83, allocator_t%
n_groups_dir/get_n_groups), where _p are the sz-padded dims (x/y
padded via padded_dim, z untouched, same rule padded_cells uses).
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.