1 | ! Parallel tools : Barrier and Finalize. |
---|
2 | |
---|
3 | !- |
---|
4 | !< $HeadURL$ |
---|
5 | !< $Date$ |
---|
6 | !< $Author$ |
---|
7 | !< $Revision$ |
---|
8 | !- |
---|
9 | |
---|
10 | MODULE tools_para |
---|
11 | !- |
---|
12 | USE ioipsl |
---|
13 | USE defprec |
---|
14 | USE timer |
---|
15 | USE data_para |
---|
16 | !- |
---|
17 | #include "src_parallel.h" |
---|
18 | !- |
---|
19 | CONTAINS |
---|
20 | SUBROUTINE stop_mpi() |
---|
21 | #ifdef CPP_PARA |
---|
22 | CALL MPI_COMM_FREE(MPI_COMM_ORCH,ierr) |
---|
23 | CALL MPI_FINALIZE(ierr) |
---|
24 | #endif |
---|
25 | CALL ipslerr(3,'STOP_MPI','MPI has been stopped in ORCHIDEE.',& |
---|
26 | & "Don't know the reason","Please verify output.") |
---|
27 | ENd subroutine stop_mpi |
---|
28 | |
---|
29 | SUBROUTINE barrier_para() |
---|
30 | #ifdef CPP_PARA |
---|
31 | CALL MPI_BARRIER(MPI_COMM_ORCH,ierr) |
---|
32 | #endif |
---|
33 | END SUBROUTINE barrier_para |
---|
34 | |
---|
35 | SUBROUTINE finalize_para(timer_global,timer_mpi) |
---|
36 | INTEGER, INTENT(IN) :: timer_global, timer_mpi |
---|
37 | DOUBLE PRECISION :: cpu_time_mpi |
---|
38 | |
---|
39 | cpu_time_mpi = Get_cpu_time(timer_mpi) |
---|
40 | WRITE(numout,*) '*********************************************************' |
---|
41 | WRITE(numout,*) ' TEMPS GLOBAL ---> REAL TIME :',Get_real_time(timer_global) |
---|
42 | WRITE(numout,*) ' TEMPS GLOBAL ---> CPU TIME :',Get_cpu_time(timer_global) |
---|
43 | WRITE(numout,*) ' TEMPS HORS MPI ---> REAL TIME :',Get_real_time(timer_mpi) |
---|
44 | WRITE(numout,*) ' TEMPS HORS MPI ---> CPU TIME :',cpu_time_mpi |
---|
45 | WRITE(numout,*) '*********************************************************' |
---|
46 | WRITE(numout,*) 'END OF RUN.' |
---|
47 | |
---|
48 | CALL Write_Load_Balance(REAL(cpu_time_mpi, r_std)) |
---|
49 | #ifdef CPP_PARA |
---|
50 | ! CALL MPI_COMM_FREE(MPI_COMM_ORCH,ierr) |
---|
51 | CALL MPI_FINALIZE(ierr) |
---|
52 | #endif |
---|
53 | END SUBROUTINE finalize_para |
---|
54 | |
---|
55 | END MODULE tools_para |
---|