Class clockset
In: ../src/setup/clockset.f90

CPU 時間の計測を行うためのモジュール

CPU 時間の計測を行うためのサブルーチンを束ねたモジュール

Procedures List

ClocksetInit :初期化ルーチン
ClocksetClose :CPU 時間計測の終了処理
ClocksetPredict :プログラムが終了までの予測 CPU 時間・日時を表示
ClockSetPreStart :CPU 時間計測開始 (初期化ルーチン)
ClockSetPreStop :CPU 時間計測終了 (初期化ルーチン)
ClockSetLoopStart :CPU 時間計測開始 (時間ループ)
ClocksetLoopStop :CPU 時間計測終了 (時間ループ)

Methods

Included Modules

dc_message dc_clock mpi_wrapper timeset

Public Instance methods

Subroutine :

CPU 時間計測の終了処理

計測を終了し, CPU 時間を表示する.

[Source]

  subroutine ClocksetClose
    !
    != CPU 時間計測の終了処理
    !
    ! 計測を終了し, CPU 時間を表示する.
    !
    implicit none

    if (myrank == 0) then     
      call DCClockResult( clks = (/clock_init, clock_loop/), total_auto = .true. )                ! (in)
    end if
    call DCClockClose( clk = clock_init )      ! (inout) ! Finalize (後処理)
    call DCClockClose( clk = clock_loop )      ! (inout) ! Finalize (後処理)
    
  end subroutine ClocksetClose
Subroutine :

CPU 時間計測 初期化ルーチン

[Source]

  subroutine ClocksetInit
    ! 
    != CPU 時間計測 初期化ルーチン
    !
    implicit none
    
    ! 初期化ルーチン用の時刻計測初期化
    !
    call DCClockCreate( clk = clock_init, name = 'initialization' )   ! (in)

    ! 時間発展ループ用の時刻計測初期化
    !
    call DCClockCreate( clk = clock_loop, name = 'time-integration' ) ! (in)

  end subroutine ClocksetInit
Subroutine :

CPU 時間計測開始 (時間ループ)

[Source]

  subroutine ClocksetLoopStart
    !
    != CPU 時間計測開始 (時間ループ)
    !
    implicit none

    call DCClockStart(clk = clock_loop) ! (inout)   ! Start CPU time counting 

  end subroutine ClocksetLoopStart
Subroutine :

CPU 時間計測終了 (時間ループ)

[Source]

  subroutine ClocksetLoopStop
    !
    != CPU 時間計測終了 (時間ループ)
    !
    implicit none

    call DCClockStop(clk = clock_loop) ! (inout)    ! Stop CPU time counting 
                                                    ! (CPU 時間計測終了)    

  end subroutine ClocksetLoopStop
Subroutine :

CPU 時間計測開始 (初期化ルーチン)

[Source]

  subroutine ClocksetPreStart
    !
    != CPU 時間計測開始 (初期化ルーチン)
    !
    implicit none
    
    call DCClockStart(clk = clock_init) ! (inout)   ! Start CPU time counting 
    
  end subroutine ClocksetPreStart
Subroutine :

CPU 時間計測修了 (初期化ルーチン)

[Source]

  subroutine ClocksetPreStop
    !
    != CPU 時間計測修了 (初期化ルーチン)
    !
    implicit none
    
    call DCClockStop(clk = clock_init) ! (inout)    ! Stop CPU time counting 
                                                    ! (CPU 時間計測終了)    
  end subroutine ClocksetPreStop
Subroutine :

プログラムが終了するまでの予測 CPU 時間, および日時を表示

一旦計測を止めてから, 予想値を表示し, 計測を再開する.

[Source]

  subroutine ClocksetPredict
    !
    != プログラムが終了するまでの予測 CPU 時間, および日時を表示
    !
    ! 一旦計測を止めてから, 予想値を表示し, 計測を再開する. 
    !
    implicit none

    real(4) :: progress 

    ! 計算の進行の割合を計算
    progress = real((TimeA - RestartTime) / IntegPeriod, 4)

    ! CPU time measurement stops, temporarily.
    call ClocksetLoopStop

    if (myrank == 0) then 
      call MessageNotify( "M", "ClockSet", "Time = %f", d=(/TimeA/) )

      call DCClockPredict( clk = clock_init + clock_loop, progress = progress )
    end if

    ! CPU time measurement starts again.
    call ClocksetLoopStart

  end subroutine ClocksetPredict