invalidate_output_checkpoints Subroutine

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

Calls

proc~~invalidate_output_checkpoints~~CallsGraph proc~invalidate_output_checkpoints invalidate_output_checkpoints proc~invalidate_checkpoint_directory invalidate_checkpoint_directory proc~invalidate_output_checkpoints->proc~invalidate_checkpoint_directory proc~remove_file_if_exists remove_file_if_exists proc~invalidate_output_checkpoints->proc~remove_file_if_exists proc~invalidate_checkpoint_directory->proc~remove_file_if_exists

Called by

proc~~invalidate_output_checkpoints~~CalledByGraph proc~invalidate_output_checkpoints invalidate_output_checkpoints proc~open_run_outputs open_run_outputs proc~open_run_outputs->proc~invalidate_output_checkpoints program~main main program~main->proc~open_run_outputs

Source Code

  subroutine invalidate_output_checkpoints(base_dir)
    character(len=*), intent(in) :: base_dir

    integer(i32) :: slot
    integer :: status

    do slot = 0_i32, 1_i32
      call invalidate_checkpoint_directory(checkpoint_slot_dir(trim(base_dir), slot))
    end do
    call invalidate_checkpoint_directory(trim(base_dir))
    call remove_file_if_exists(trim(base_dir)//'/'//checkpoint_index_name, status)
    if (status /= filesystem_success) error stop 'Failed to remove the previous periodic checkpoint index.'
  end subroutine invalidate_output_checkpoints