bem_periodic_checkpoint Module

accepted batch 境界で二重化した定期チェックポイントを保存・解決する。


Uses

  • module~~bem_periodic_checkpoint~~UsesGraph module~bem_periodic_checkpoint bem_periodic_checkpoint module~bem_app_config_types bem_app_config_types module~bem_periodic_checkpoint->module~bem_app_config_types module~bem_charge_ledger bem_charge_ledger module~bem_periodic_checkpoint->module~bem_charge_ledger module~bem_checkpoint_contract bem_checkpoint_contract module~bem_periodic_checkpoint->module~bem_checkpoint_contract module~bem_filesystem bem_filesystem module~bem_periodic_checkpoint->module~bem_filesystem module~bem_kinds bem_kinds module~bem_periodic_checkpoint->module~bem_kinds module~bem_mpi bem_mpi module~bem_periodic_checkpoint->module~bem_mpi module~bem_output_writer bem_output_writer module~bem_periodic_checkpoint->module~bem_output_writer module~bem_restart bem_restart module~bem_periodic_checkpoint->module~bem_restart module~bem_types bem_types module~bem_periodic_checkpoint->module~bem_types module~bem_app_config_types->module~bem_filesystem module~bem_app_config_types->module~bem_kinds module~bem_app_config_types->module~bem_types module~bem_external_boundary_contract bem_external_boundary_contract module~bem_app_config_types->module~bem_external_boundary_contract module~bem_physics_config_types bem_physics_config_types module~bem_app_config_types->module~bem_physics_config_types module~bem_charge_ledger->module~bem_kinds ieee_arithmetic ieee_arithmetic module~bem_charge_ledger->ieee_arithmetic module~bem_checkpoint_contract->module~bem_filesystem module~bem_checkpoint_contract->module~bem_kinds iso_c_binding iso_c_binding module~bem_filesystem->iso_c_binding iso_fortran_env iso_fortran_env module~bem_kinds->iso_fortran_env module~bem_mpi->module~bem_kinds module~bem_output_writer->module~bem_app_config_types module~bem_output_writer->module~bem_charge_ledger module~bem_output_writer->module~bem_checkpoint_contract module~bem_output_writer->module~bem_filesystem module~bem_output_writer->module~bem_kinds module~bem_output_writer->module~bem_types module~bem_electrostatic_snapshot bem_electrostatic_snapshot module~bem_output_writer->module~bem_electrostatic_snapshot module~bem_surface_current_model bem_surface_current_model module~bem_output_writer->module~bem_surface_current_model module~bem_restart->module~bem_app_config_types module~bem_restart->module~bem_charge_ledger module~bem_restart->module~bem_checkpoint_contract module~bem_restart->module~bem_kinds module~bem_restart->module~bem_mpi module~bem_restart->module~bem_types module~bem_restart->ieee_arithmetic module~bem_restart->iso_fortran_env module~bem_string_utils bem_string_utils module~bem_restart->module~bem_string_utils module~bem_types->module~bem_kinds module~bem_outflow_spectrum bem_outflow_spectrum module~bem_types->module~bem_outflow_spectrum module~bem_electrostatic_snapshot->module~bem_kinds module~bem_electrostatic_snapshot->module~bem_mpi module~bem_electrostatic_snapshot->module~bem_types module~bem_electrostatic_snapshot->ieee_arithmetic module~bem_electrostatic_snapshot->module~bem_physics_config_types module~bem_electrostatic_snapshot->module~bem_string_utils module~bem_constants bem_constants module~bem_electrostatic_snapshot->module~bem_constants module~bem_coulomb_fmm_periodic_nonzero_reference bem_coulomb_fmm_periodic_nonzero_reference module~bem_electrostatic_snapshot->module~bem_coulomb_fmm_periodic_nonzero_reference module~bem_coulomb_fmm_periodic_nonzero_upper_vacuum bem_coulomb_fmm_periodic_nonzero_upper_vacuum module~bem_electrostatic_snapshot->module~bem_coulomb_fmm_periodic_nonzero_upper_vacuum module~bem_field_solver bem_field_solver module~bem_electrostatic_snapshot->module~bem_field_solver module~bem_panel_geometry bem_panel_geometry module~bem_electrostatic_snapshot->module~bem_panel_geometry module~bem_panel_kernel bem_panel_kernel module~bem_electrostatic_snapshot->module~bem_panel_kernel module~bem_periodic_zero_mode_eval bem_periodic_zero_mode_eval module~bem_electrostatic_snapshot->module~bem_periodic_zero_mode_eval module~bem_periodic_zero_mode_plan bem_periodic_zero_mode_plan module~bem_electrostatic_snapshot->module~bem_periodic_zero_mode_plan module~bem_runtime_modes bem_runtime_modes module~bem_electrostatic_snapshot->module~bem_runtime_modes module~bem_external_boundary_contract->module~bem_kinds module~bem_external_boundary_contract->module~bem_string_utils module~bem_outflow_spectrum->module~bem_kinds sheath_model sheath_model module~bem_outflow_spectrum->sheath_model module~bem_physics_config_types->module~bem_kinds module~bem_physics_config_types->module~bem_types module~bem_physics_config_types->ieee_arithmetic module~bem_physics_config_types->module~bem_string_utils module~bem_surface_current_model->module~bem_app_config_types module~bem_surface_current_model->module~bem_kinds module~bem_surface_current_model->ieee_arithmetic module~bem_surface_current_model->module~bem_outflow_spectrum module~bem_surface_current_model->module~bem_string_utils module~bem_config_helpers bem_config_helpers module~bem_surface_current_model->module~bem_config_helpers module~bem_surface_current_model->module~bem_constants module~bem_irradiation_cell_contract bem_irradiation_cell_contract module~bem_surface_current_model->module~bem_irradiation_cell_contract module~bem_surface_closure_contract bem_surface_closure_contract module~bem_surface_current_model->module~bem_surface_closure_contract module~bem_surface_current_model->sheath_model module~bem_config_helpers->module~bem_app_config_types module~bem_config_helpers->module~bem_kinds module~bem_config_helpers->module~bem_types module~bem_config_helpers->module~bem_string_utils module~bem_constants->module~bem_kinds module~bem_coulomb_fmm_periodic_nonzero_reference->module~bem_kinds module~bem_coulomb_fmm_periodic_nonzero_reference->module~bem_types module~bem_coulomb_fmm_periodic_nonzero_reference->ieee_arithmetic module~bem_coulomb_fmm_periodic_nonzero_reference->module~bem_constants module~bem_coulomb_fmm_periodic_nonzero_reference->module~bem_panel_geometry module~bem_triangle_quadrature bem_triangle_quadrature module~bem_coulomb_fmm_periodic_nonzero_reference->module~bem_triangle_quadrature module~bem_coulomb_fmm_periodic_nonzero_upper_vacuum->module~bem_kinds module~bem_coulomb_fmm_periodic_nonzero_upper_vacuum->module~bem_types module~bem_coulomb_fmm_periodic_nonzero_upper_vacuum->ieee_arithmetic module~bem_coulomb_fmm_periodic_nonzero_upper_vacuum->module~bem_constants module~bem_field_solver->module~bem_kinds module~bem_field_solver->module~bem_mpi module~bem_field_solver->module~bem_types module~bem_field_solver->ieee_arithmetic module~bem_field_solver->module~bem_physics_config_types module~bem_field_solver->module~bem_string_utils module~bem_field_solver->module~bem_constants module~bem_field_solver->module~bem_runtime_modes module~bem_coulomb_fmm_core bem_coulomb_fmm_core module~bem_field_solver->module~bem_coulomb_fmm_core module~bem_irradiation_cell_contract->module~bem_app_config_types module~bem_irradiation_cell_contract->module~bem_kinds module~bem_irradiation_cell_contract->module~bem_types module~bem_irradiation_cell_contract->module~bem_string_utils module~bem_panel_geometry->module~bem_kinds module~bem_panel_geometry->ieee_arithmetic module~bem_panel_kernel->module~bem_kinds module~bem_panel_kernel->module~bem_constants module~bem_panel_kernel->module~bem_panel_geometry module~bem_panel_self_terms bem_panel_self_terms module~bem_panel_kernel->module~bem_panel_self_terms module~bem_periodic_zero_mode_eval->module~bem_kinds module~bem_periodic_zero_mode_eval->module~bem_constants module~bem_periodic_zero_mode_eval->module~bem_periodic_zero_mode_plan module~bem_periodic_zero_mode_plan->module~bem_kinds module~bem_periodic_zero_mode_plan->module~bem_types module~bem_periodic_zero_mode_plan->ieee_arithmetic module~bem_periodic_zero_mode_plan->module~bem_constants module~bem_sorting bem_sorting module~bem_periodic_zero_mode_plan->module~bem_sorting module~bem_runtime_modes->module~bem_kinds module~bem_runtime_modes->module~bem_string_utils module~bem_surface_closure_contract->module~bem_kinds module~bem_surface_closure_contract->module~bem_runtime_modes module~bem_coulomb_fmm_core->module~bem_kinds module~bem_coulomb_fmm_core->module~bem_mpi module~bem_coulomb_fmm_types bem_coulomb_fmm_types module~bem_coulomb_fmm_core->module~bem_coulomb_fmm_types module~bem_panel_self_terms->module~bem_kinds module~bem_panel_self_terms->module~bem_panel_geometry module~bem_sorting->module~bem_kinds module~bem_triangle_quadrature->module~bem_kinds module~bem_triangle_quadrature->module~bem_constants module~bem_triangle_quadrature->module~bem_panel_geometry module~bem_coulomb_fmm_types->module~bem_kinds module~bem_coulomb_fmm_types->module~bem_mpi module~bem_coulomb_fmm_types->module~bem_panel_geometry module~bem_coulomb_fmm_types->module~bem_periodic_zero_mode_plan module~bem_periodic_shell_mean bem_periodic_shell_mean module~bem_coulomb_fmm_types->module~bem_periodic_shell_mean module~bem_periodic_shell_mean->module~bem_kinds

Used by

  • module~~bem_periodic_checkpoint~~UsedByGraph module~bem_periodic_checkpoint bem_periodic_checkpoint module~bem_run_outputs bem_run_outputs module~bem_run_outputs->module~bem_periodic_checkpoint module~bem_simulator_loop bem_simulator_loop module~bem_simulator_loop->module~bem_periodic_checkpoint module~bem_simulator_loop->module~bem_run_outputs module~bem_simulator bem_simulator module~bem_simulator_loop->module~bem_simulator program~main main program~main->module~bem_periodic_checkpoint program~main->module~bem_run_outputs program~main->module~bem_simulator module~bem_simulator->module~bem_run_outputs module~bem_simulator_charge bem_simulator_charge module~bem_simulator_charge->module~bem_simulator module~bem_simulator_io bem_simulator_io module~bem_simulator_io->module~bem_simulator module~bem_simulator_particles bem_simulator_particles module~bem_simulator_particles->module~bem_simulator module~bem_simulator_stats bem_simulator_stats module~bem_simulator_stats->module~bem_simulator

Functions

public function periodic_checkpoint_due(app, batches) result(due)

accepted batch batches の commit 後に定期チェックポイントを書くかを返す。

Arguments

Type IntentOptional Attributes Name
type(app_config), intent(in) :: app
integer(kind=i32), intent(in) :: batches

Return Value logical


Subroutines

public subroutine maybe_write_periodic_checkpoint(app, mesh, stats, state, mpi, charge_ledger, identity)

設定した stride の accepted batch で、非active slotへ完全な再開状態を書いてからindexを切り替える。

Arguments

Type IntentOptional Attributes Name
type(app_config), intent(in) :: app
type(mesh_type), intent(in) :: mesh
type(sim_stats), intent(in) :: stats
type(injection_state), intent(in), optional :: state
type(mpi_context), intent(in) :: mpi
type(charge_ledger_type), intent(in), optional :: charge_ledger
type(summary_identity_type), intent(in), optional :: identity

run 開始時に作った summary の不変量。省略時は書くたびに計算する。

public subroutine invalidate_output_checkpoints(base_dir)

fresh run が出力先を再利用する前に、前の run の最終出力と両 slot を再開候補から外し、index を消す。 各 directory は個別に原子的に無効化される。途中で止まっても残るのは前の run の完全な checkpoint だけで、 この時点では新しい run はまだ何も書いていないので、新旧の混ざった再開状態はできない。

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: base_dir

public subroutine resolve_latest_checkpoint_dir(base_dir, checkpoint_dir)

base directory直下の最終出力と両定期slotを比較し、batch数が新しい完全checkpointを返す。 indexは同batchのslotを選ぶtie-breakにだけ使う。欠落、破損、古いindexは complete manifestを持つload可能なslotの回収を妨げない。

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: base_dir
character(len=*), intent(out) :: checkpoint_dir