実行フェーズごとの壁時計計測と MPI 集約出力を担う軽量プロファイラ。
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer(kind=i32), | public, | parameter | :: | perf_region_program_total | = | 1_i32 | |
| integer(kind=i32), | public, | parameter | :: | perf_region_load_or_init | = | 2_i32 | |
| integer(kind=i32), | public, | parameter | :: | perf_region_history_open | = | 3_i32 | |
| integer(kind=i32), | public, | parameter | :: | perf_region_simulation_total | = | 4_i32 | |
| integer(kind=i32), | public, | parameter | :: | perf_region_field_solver_init | = | 5_i32 | |
| integer(kind=i32), | public, | parameter | :: | perf_region_batch_total | = | 6_i32 | |
| integer(kind=i32), | public, | parameter | :: | perf_region_prepare_batch | = | 7_i32 | |
| integer(kind=i32), | public, | parameter | :: | perf_region_field_refresh | = | 8_i32 | |
| integer(kind=i32), | public, | parameter | :: | perf_region_particle_batch | = | 9_i32 | |
| integer(kind=i32), | public, | parameter | :: | perf_region_commit_charge | = | 10_i32 | |
| integer(kind=i32), | public, | parameter | :: | perf_region_count_outcomes | = | 11_i32 | |
| integer(kind=i32), | public, | parameter | :: | perf_region_mpi_reduce | = | 12_i32 | |
| integer(kind=i32), | public, | parameter | :: | perf_region_stats_update | = | 13_i32 | |
| integer(kind=i32), | public, | parameter | :: | perf_region_history_write | = | 14_i32 | |
| integer(kind=i32), | public, | parameter | :: | perf_region_write_results | = | 15_i32 | |
| integer(kind=i32), | public, | parameter | :: | perf_region_write_checkpoint | = | 16_i32 | |
| integer(kind=i32), | public, | parameter | :: | perf_region_count | = | 16_i32 |
粗粒度プロファイルが有効かを返す。
OpenMP有効時は omp_get_wtime、それ以外は system_clock を使う壁時計。
プロファイラ状態を既定値へ戻す。
明示フラグで計測状態を設定する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| logical, | intent(in) | :: | enabled |
環境変数 BEACH_PROFILE から計測状態を初期化する。
出力先ディレクトリとファイル書き出し可否を登録する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | output_dir | |||
| logical, | intent(in) | :: | write_files |
フェーズ開始時刻を取得する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=i32), | intent(in) | :: | region_id | |||
| real(kind=dp), | intent(out) | :: | t0 |
フェーズ終了時刻との差分を累積する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=i32), | intent(in) | :: | region_id | |||
| real(kind=dp), | intent(in) | :: | t0 |
経過時間と呼び出し回数を累積する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=i32), | intent(in) | :: | region_id | |||
| real(kind=dp), | intent(in) | :: | elapsed_s | |||
| integer(kind=i32), | intent(in), | optional | :: | call_count |
集計済みプロファイルを標準出力および CSV へ書き出す。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mpi_context), | intent(in) | :: | mpi |