| Class | clockset |
| In: |
../src/setup/clockset.f90
|
CPU 時間の計測を行うためのサブルーチンを束ねたモジュール
| ClocksetInit : | 初期化ルーチン |
| ClocksetClose : | CPU 時間計測の終了処理 |
| ClocksetPredict : | プログラムが終了までの予測 CPU 時間・日時を表示 |
| ClockSetPreStart : | CPU 時間計測開始 (初期化ルーチン) |
| ClockSetPreStop : | CPU 時間計測終了 (初期化ルーチン) |
| ClockSetLoopStart : | CPU 時間計測開始 (時間ループ) |
| ClocksetLoopStop : | CPU 時間計測終了 (時間ループ) |
| Subroutine : |
計測を終了し, CPU 時間を表示する.
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 : |
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 : |
subroutine ClocksetLoopStart
!
!= CPU 時間計測開始 (時間ループ)
!
implicit none
call DCClockStart(clk = clock_loop) ! (inout) ! Start CPU time counting
end subroutine ClocksetLoopStart
| Subroutine : |
subroutine ClocksetLoopStop
!
!= CPU 時間計測終了 (時間ループ)
!
implicit none
call DCClockStop(clk = clock_loop) ! (inout) ! Stop CPU time counting
! (CPU 時間計測終了)
end subroutine ClocksetLoopStop
| Subroutine : |
subroutine ClocksetPreStart
!
!= CPU 時間計測開始 (初期化ルーチン)
!
implicit none
call DCClockStart(clk = clock_init) ! (inout) ! Start CPU time counting
end subroutine ClocksetPreStart
| Subroutine : |
subroutine ClocksetPreStop
!
!= CPU 時間計測修了 (初期化ルーチン)
!
implicit none
call DCClockStop(clk = clock_init) ! (inout) ! Stop CPU time counting
! (CPU 時間計測終了)
end subroutine ClocksetPreStop
| Subroutine : |
一旦計測を止めてから, 予想値を表示し, 計測を再開する.
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