Log the process grid + this rank’s subdomain shape. Call from rank 0 after decomp_init_from_config so a run’s decomposition is visible at startup (the halo perimeter is what auto_factor minimises, printed here as the per-rank interior:ghost ratio cue).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(decomp_t), | intent(in) | :: | d | |||
| integer, | intent(in) | :: | nprocs |
Total compute ranks (px*py) |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| character(len=16), | private | :: | shape_note |
subroutine decomp_log_summary(d, nprocs) !! Log the process grid + this rank's subdomain shape. Call from !! rank 0 after decomp_init_from_config so a run's decomposition is !! visible at startup (the halo perimeter is what auto_factor !! minimises, printed here as the per-rank interior:ghost ratio cue). use pic_logger, only: logger => global_logger use pic_strings, only: to_string type(decomp_t), intent(in) :: d integer, intent(in) :: nprocs !! Total compute ranks (px*py) character(len=16) :: shape_note if (d%px == 1) then shape_note = " (x-strips)" else if (d%py == 1) then shape_note = " (y-strips)" else shape_note = " (2-D tiles)" end if call logger%info("Domain decomposition: "//to_string(nprocs)// & " ranks as "//to_string(d%px)//" x "//to_string(d%py)// & " (px x py)"//trim(shape_note)//" over "// & to_string(d%nx_global)//" x "//to_string(d%ny_global)//" cells") call logger%info(" rank-0 subdomain: "//to_string(d%nx_local)//" x "// & to_string(d%ny_local)//" interior cells") end subroutine decomp_log_summary