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~load_restart_checkpoint load_restart_checkpoint proc~load_restart_checkpoint->proc~mpi_get_rank_size proc~restart_macro_residual_path restart_macro_residual_path proc~load_restart_checkpoint->proc~restart_macro_residual_path proc~restart_rng_state_path restart_rng_state_path proc~load_restart_checkpoint->proc~restart_rng_state_path proc~perf_write_outputs perf_write_outputs proc~perf_write_outputs->proc~mpi_get_rank_size proc~resolve_parallel_rank_size resolve_parallel_rank_size proc~resolve_parallel_rank_size->proc~mpi_get_rank_size proc~restart_macro_residual_path->proc~mpi_get_rank_size proc~restart_rng_state_path->proc~mpi_get_rank_size proc~write_macro_residuals_file write_macro_residuals_file proc~write_macro_residuals_file->proc~mpi_get_rank_size proc~write_macro_residuals_file->proc~restart_macro_residual_path proc~write_rng_state_file write_rng_state_file proc~write_rng_state_file->proc~mpi_get_rank_size proc~write_rng_state_file->proc~restart_rng_state_path proc~init_particle_batch_from_config init_particle_batch_from_config proc~init_particle_batch_from_config->proc~resolve_parallel_rank_size proc~load_or_init_run_state load_or_init_run_state proc~load_or_init_run_state->proc~load_restart_checkpoint proc~seed_particles_from_config seed_particles_from_config proc~load_or_init_run_state->proc~seed_particles_from_config proc~seed_particles_from_config->proc~resolve_parallel_rank_size program~main main program~main->proc~perf_write_outputs program~main->proc~write_macro_residuals_file program~main->proc~write_rng_state_file program~main->proc~load_or_init_run_state

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