Skip to content
Snippets Groups Projects
Commit 709ba804 authored by WAUTELET Philippe's avatar WAUTELET Philippe
Browse files

Philippe 22/03/2019: use MNHREAL64 and MNHREAL64_MPI in mode_mnh_timing + typo corrections

parent 6175af5e
No related branches found
No related tags found
No related merge requests found
......@@ -2,13 +2,15 @@
!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
!MNH_LIC for details. version 1.
!------------------------------------------------------------------------
MODULE MODE_MNH_TIMING
!
! Modification :
! J.ESCOBAR 13/11/2008 : change (2) in (:) for bug in IBM-SP6 compiler
! J.Escobar 1/09/2011 : reduce 'timing' format
! J.Escobar 12/02/2013 : tribulle to slow on large BG partition , inhib it by a early return in the code
! Philippe Wautelet: 10/01/2019: use NEWUNIT argument of OPEN
! Modifications:
! J. escobar 13/11/2008: change (2) in (:) for bug in IBM-SP6 compiler
! J. Escobar 01/09/2011: reduce 'timing' format
! J. Escobar 12/02/2013: triabulle too slow on large BG partition, inhib it by a early return in the code
! P. Wautelet 10/01/2019: use NEWUNIT argument of OPEN
! P. Wautelet 22/03/2019: use MNHREAL64 and MNHREAL64_MPI + typo corrections
!
INTEGER :: NLUOUT_TIMING
......@@ -53,7 +55,7 @@ END SUBROUTINE SECOND_MNH2
SUBROUTINE TIMING_LEGEND()
CALL TIMING_SEPARATOR('-')
WRITE(NLUOUT_TIMING,FMT="( '| CPUTIM/ELAPSE |&
WRITE(NLUOUT_TIMING,FMT="( '| CPUTIME/ELAPSED |&
&| SUM(PROC) |MEAN(PROC)| MIN(PROC | MAX(PROC)| PERCENT %|')" )
CALL TIMING_SEPARATOR('-')
END SUBROUTINE TIMING_LEGEND
......@@ -84,33 +86,30 @@ END SUBROUTINE SECOND_MNH2
!* 0. DECLARATIONS
!
USE MODD_MPIF
USE MODD_VAR_ll, ONLY : MPI_PRECISION, NPROC, IP
!JUANZ
USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD
!JUANZ
use modd_precision, only: MNHREAL64, MNHREAL64_MPI
USE MODD_VAR_ll, ONLY: IP, NMNH_COMM_WORLD, NPROC
!
IMPLICIT NONE
!
!* 0.1 Declarations of dummy arguments :
!
REAL*8,DIMENSION(:), INTENT(IN) :: PRES ! (1)=CPU & (2)=ELAPSE Proccessors Timing
!
REAL*8,DIMENSION(:), INTENT(INOUT) :: PSUM ! (1)=SUM(CPU) & (2)=SUM(ELAPSE) Timing
!
CHARACTER(len=*), INTENT(IN),OPTIONAL :: HPRINT
CHARACTER , INTENT(IN),OPTIONAL :: HSEP
CHARACTER(len=*), INTENT(IN),OPTIONAL :: HFULL
REAL(kind=MNHREAL64), DIMENSION(:), INTENT(IN) :: PRES ! (1)=CPU & (2)=ELAPSED Processes Timing
REAL(kind=MNHREAL64), DIMENSION(:), INTENT(INOUT) :: PSUM ! (1)=SUM(CPU) & (2)=SUM(ELAPSED) Timing
CHARACTER(len=*), OPTIONAL, INTENT(IN) :: HPRINT
CHARACTER , OPTIONAL, INTENT(IN) :: HSEP
CHARACTER(len=*), OPTIONAL, INTENT(IN) :: HFULL
!
!* 0.2 Declarations of local variables :
!
INTEGER,PARAMETER :: NSTAT=5
REAL*8,DIMENSION(2,NSTAT) :: ZSTAT ! (1)=Sum(proc),(2)=Sum/Nproc,(3)=Min(proc),(4)=Max(proc),(5)=Purcent(1)
INTEGER :: INFO,IROOT,JP
CHARACTER(len=30) :: VIDE = ""
CHARACTER(len=30) :: FILE = ""
CHARACTER(len=30) :: FILE = ""
INTEGER :: IC
REAL*8,DIMENSION(2,NPROC) :: ZSTAT_ALL
REAL(kind=MNHREAL64), DIMENSION(2,NSTAT) :: ZSTAT ! (1)=Sum(proc),(2)=Sum/Nproc,(3)=Min(proc),(4)=Max(proc),(5)=Percent(1)
REAL(kind=MNHREAL64), DIMENSION(2,NPROC) :: ZSTAT_ALL
INTEGER, DIMENSION(NPROC) :: IND
INTEGER :: ILU
!
......@@ -120,15 +119,15 @@ END SUBROUTINE SECOND_MNH2
! ------------------------------
INFO = -1
! 1.1 Sum(Proc)
CALL MPI_ALLREDUCE(PRES, ZSTAT(:,1), 2, MPI_REAL8, &
CALL MPI_ALLREDUCE(PRES, ZSTAT(:,1), 2, MNHREAL64_MPI, &
MPI_SUM, NMNH_COMM_WORLD, INFO)
! 1.2 Sum/Proc
ZSTAT(:,2) = ZSTAT(:,1 ) / NPROC
! 1.3 Min(Proc)
CALL MPI_ALLREDUCE(PRES, ZSTAT(:,3), 2, MPI_REAL8, &
CALL MPI_ALLREDUCE(PRES, ZSTAT(:,3), 2, MNHREAL64_MPI, &
MPI_MIN, NMNH_COMM_WORLD, INFO)
! 1.4 Max(Proc)
CALL MPI_ALLREDUCE(PRES, ZSTAT(:,4), 2, MPI_REAL8, &
CALL MPI_ALLREDUCE(PRES, ZSTAT(:,4), 2, MNHREAL64_MPI, &
MPI_MAX, NMNH_COMM_WORLD, INFO)
......@@ -138,8 +137,8 @@ INFO = -1
!
ELSEIF ( ZSTAT(1,1) > 0.0 ) THEN
! use Psum , for print stat & pourcent
! Purcent
! use Psum , for print stat & percent
! Percent
WHERE ( PSUM /= 0.0 )
ZSTAT(:,5) = 100.0 * ZSTAT(:,1) / PSUM(:)
ELSEWHERE
......@@ -148,14 +147,14 @@ INFO = -1
! print stat
!
IF (PRESENT(HSEP)) CALL TIMING_SEPARATOR(HSEP)
WRITE(NLUOUT_TIMING,FMT= "('|',A30,'| CPUTIM ||',F15.3,'|',4(F10.3,'|'),F7.3,'|')" ) HPRINT//VIDE,ZSTAT(1,:)
WRITE(NLUOUT_TIMING,FMT= "('|',A30,'| ELAPSE ||',F15.3,'|',4(F10.3,'|'),F7.3,'|')" ) HPRINT//VIDE,ZSTAT(2,:)
WRITE(NLUOUT_TIMING,FMT= "('|',A29,'| CPUTIME ||',F15.3,'|',4(F10.3,'|'),F7.3,'|')" ) HPRINT//VIDE,ZSTAT(1,:)
WRITE(NLUOUT_TIMING,FMT= "('|',A29,'| ELAPSED ||',F15.3,'|',4(F10.3,'|'),F7.3,'|')" ) HPRINT//VIDE,ZSTAT(2,:)
IF (PRESENT(HFULL)) THEN
! gather all data
!CALL TIMING_SEPARATOR(HSEP)
IROOT = 0
CALL MPI_GATHER(PRES(:),2,MPI_REAL8,ZSTAT_ALL(:,1),2,MPI_REAL8,&
CALL MPI_GATHER(PRES(:),2,MNHREAL64_MPI,ZSTAT_ALL(:,1),2,MNHREAL64_MPI,&
IROOT,NMNH_COMM_WORLD, INFO)
IF (IP.EQ.1) THEN
FILE = trim(adjustl(HPRINT))
......@@ -188,17 +187,17 @@ INFO = -1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
subroutine triabulle(vec,ind)
implicit none
real*8 , intent(inout) :: vec(:)
integer, intent(out) :: ind(:)
use modd_precision, only: MNHREAL64
implicit none
integer :: n
real(kind=MNHREAL64), dimension(:), intent(inout) :: vec
integer, dimension(:), intent(out) :: ind
logical :: a
integer :: i
integer :: mem
integer :: n
n = size(vec)
a = .true.
......@@ -207,7 +206,7 @@ do i=1,n
enddo
return
!JUAN TO SLOW ON BG !!!
!JUAN TOO SLOW ON BG !!!
do while (a)
a=.false.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment