mpi_get_rank_size Subroutine

public subroutine mpi_get_rank_size(rank, size, ctx)

mpi_context から rank/size を取得する。未指定時は単一rank(0/1)。

Arguments

Type IntentOptional Attributes Name
integer(kind=i32), intent(out) :: rank
integer(kind=i32), intent(out) :: size
type(mpi_context), intent(in), optional :: ctx

Called by

proc~~mpi_get_rank_size~~CalledByGraph proc~mpi_get_rank_size mpi_get_rank_size proc~mpi_select_lowest_rank_i32_values mpi_select_lowest_rank_i32_values proc~mpi_select_lowest_rank_i32_values->proc~mpi_get_rank_size proc~perf_write_outputs perf_write_outputs proc~perf_write_outputs->proc~mpi_get_rank_size proc~precompute_periodic_root_operator precompute_periodic_root_operator proc~precompute_periodic_root_operator->proc~mpi_get_rank_size proc~resolve_parallel_rank_size~2 resolve_parallel_rank_size proc~resolve_parallel_rank_size~2->proc~mpi_get_rank_size proc~build_particle_source_plan build_particle_source_plan proc~build_particle_source_plan->proc~resolve_parallel_rank_size~2 proc~core_build_panel_plan_impl core_build_panel_plan_impl proc~core_build_panel_plan_impl->proc~precompute_periodic_root_operator proc~core_build_plan_impl core_build_plan_impl proc~core_build_plan_impl->proc~precompute_periodic_root_operator proc~seed_particles_from_config seed_particles_from_config proc~seed_particles_from_config->proc~resolve_parallel_rank_size~2 program~main main program~main->proc~perf_write_outputs proc~load_or_init_run_state load_or_init_run_state program~main->proc~load_or_init_run_state proc~load_or_init_run_state->proc~seed_particles_from_config

Source Code

  subroutine mpi_get_rank_size(rank, size, ctx)
    integer(i32), intent(out) :: rank, size
    type(mpi_context), intent(in), optional :: ctx

    rank = 0_i32
    size = 1_i32
    if (present(ctx)) then
      rank = ctx%rank
      size = max(1_i32, ctx%size)
    end if
    if (rank < 0_i32 .or. rank >= size) then
      error stop 'mpi_get_rank_size detected an invalid rank/size pair.'
    end if
  end subroutine mpi_get_rank_size