bem_mpi Module

MPIの初期化・集約を抽象化し、非MPIビルドでは単一ランク動作へフォールバックする。


Uses

  • module~~bem_mpi~~UsesGraph module~bem_mpi bem_mpi module~bem_kinds bem_kinds module~bem_mpi->module~bem_kinds iso_fortran_env iso_fortran_env module~bem_kinds->iso_fortran_env

Used by

  • module~~bem_mpi~~UsedByGraph module~bem_mpi bem_mpi module~bem_app_config_runtime bem_app_config_runtime module~bem_app_config_runtime->module~bem_mpi module~bem_performance_profile bem_performance_profile module~bem_performance_profile->module~bem_mpi module~bem_restart bem_restart module~bem_restart->module~bem_mpi module~bem_simulator bem_simulator module~bem_simulator->module~bem_mpi module~bem_app_config bem_app_config module~bem_simulator->module~bem_app_config program~main main program~main->module~bem_mpi program~main->module~bem_performance_profile program~main->module~bem_restart program~main->module~bem_simulator program~main->module~bem_app_config module~bem_app_config->module~bem_app_config_runtime module~bem_simulator_io bem_simulator_io module~bem_simulator_io->module~bem_simulator module~bem_simulator_loop bem_simulator_loop module~bem_simulator_loop->module~bem_performance_profile module~bem_simulator_loop->module~bem_simulator module~bem_simulator_stats bem_simulator_stats module~bem_simulator_stats->module~bem_simulator

Derived Types

type, public ::  mpi_context

Components

Type Visibility Attributes Name Initial
integer(kind=i32), public :: rank = 0_i32
integer(kind=i32), public :: size = 1_i32
logical, public :: enabled = .false.

Functions

public function mpi_is_root(ctx)

root rank (rank=0) かどうかを返す。

Arguments

Type IntentOptional Attributes Name
type(mpi_context), intent(in) :: ctx

Return Value logical

public function mpi_world_size(ctx)

MPI world size を返す(size<=0 は 1 へ補正)。

Arguments

Type IntentOptional Attributes Name
type(mpi_context), intent(in), optional :: ctx

Return Value integer(kind=i32)

public function mpi_split_count(total_count, rank, size) result(local_count)

総数 total_count をrankへ均等分割したときの局所個数を返す。

Arguments

Type IntentOptional Attributes Name
integer(kind=i32), intent(in) :: total_count
integer(kind=i32), intent(in) :: rank
integer(kind=i32), intent(in) :: size

Return Value integer(kind=i32)


Subroutines

public subroutine mpi_initialize(ctx)

MPIを初期化して rank / size を取得する。非MPIビルドでは単一ランクを返す。

Arguments

Type IntentOptional Attributes Name
type(mpi_context), intent(out) :: ctx

public subroutine mpi_shutdown(ctx)

mpi_initialize が実際に初期化した場合のみ MPI_Finalize を呼ぶ。

Arguments

Type IntentOptional Attributes Name
type(mpi_context), intent(inout) :: ctx

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

public subroutine mpi_allreduce_sum_real_dp_array(ctx, values)

倍精度配列の総和Allreduceをin-placeで実行する。

Arguments

Type IntentOptional Attributes Name
type(mpi_context), intent(in) :: ctx
real(kind=dp), intent(inout) :: values(:)

public subroutine mpi_allreduce_sum_real_dp_scalar(ctx, value)

倍精度スカラの総和Allreduceをin-placeで実行する。

Arguments

Type IntentOptional Attributes Name
type(mpi_context), intent(in) :: ctx
real(kind=dp), intent(inout) :: value

public subroutine mpi_allreduce_min_real_dp_array(ctx, values)

倍精度配列の最小値Allreduceをin-placeで実行する。

Arguments

Type IntentOptional Attributes Name
type(mpi_context), intent(in) :: ctx
real(kind=dp), intent(inout) :: values(:)

public subroutine mpi_allreduce_max_real_dp_array(ctx, values)

倍精度配列の最大値Allreduceをin-placeで実行する。

Arguments

Type IntentOptional Attributes Name
type(mpi_context), intent(in) :: ctx
real(kind=dp), intent(inout) :: values(:)

public subroutine mpi_allreduce_sum_i32_array(ctx, values)

32bit整数配列の総和Allreduceをin-placeで実行する。

Arguments

Type IntentOptional Attributes Name
type(mpi_context), intent(in) :: ctx
integer(kind=i32), intent(inout) :: values(:)

public subroutine mpi_allreduce_sum_i32_scalar(ctx, value)

32bit整数スカラの総和Allreduceをin-placeで実行する。

Arguments

Type IntentOptional Attributes Name
type(mpi_context), intent(in) :: ctx
integer(kind=i32), intent(inout) :: value

public subroutine mpi_world_barrier(ctx)

全rankの同期ポイント。

Arguments

Type IntentOptional Attributes Name
type(mpi_context), intent(in) :: ctx