From c471cdad9b6a28f4770cbfa4511e21c23c84b407 Mon Sep 17 00:00:00 2001 From: "Henrique.Alves" Date: Mon, 10 Jun 2019 15:17:50 +0000 Subject: [PATCH 01/13] Updating to latest upstream (NOAA-EMC/WW3). --- model/bin/comp.Intel | 4 ++-- model/bin/make_makefile.sh | 40 +++++++++++++++++++------------------- model/bin/w3_automake | 2 +- model/bin/w3_make | 10 +++++----- 4 files changed, 28 insertions(+), 28 deletions(-) diff --git a/model/bin/comp.Intel b/model/bin/comp.Intel index 4a44a4f60..ebe8023b4 100755 --- a/model/bin/comp.Intel +++ b/model/bin/comp.Intel @@ -78,8 +78,8 @@ # Intel compiler on Linux ---------------------------------------------------- # 2.b.1 Build options and determine compiler name - opt="-c $list -O3 -assume byterecl -fPIC -module $path_m" -# opt="-c $list -O3 -assume byterecl -ip -module $path_m" +# opt="-c $list -O3 -assume byterecl -fPIC -module $path_m" + opt="-c $list -O3 -assume byterecl -ip -module $path_m" # opt="-c $list -O3 -assume byterecl -xSSE4.2 -ip -module $path_m" # opt="-c $list -O3 -assume byterecl -prec-div -prec-sqrt -xHost -align array128byte -ip -module $path_m" # opt="-c $list -O0 -assume byterecl -g -traceback -check all -fpe0 -ftrapuv -module $path_m" diff --git a/model/bin/make_makefile.sh b/model/bin/make_makefile.sh index 2038dcb97..4d5111777 100755 --- a/model/bin/make_makefile.sh +++ b/model/bin/make_makefile.sh @@ -851,7 +851,7 @@ ww3_ounp ww3_gspl ww3_gint ww3_bound ww3_bounc ww3_systrk $tideprog" progs="$progs ww3_multi_esmf ww3_uprstr" progs="$progs libww3" - progs="$progs libww3.so" +# progs="$progs libww3.so" for prog in $progs do @@ -1060,13 +1060,13 @@ source="w3triamd w3srcemd $dsx $flx $ln $st $nl $bt $ic $is $db $tr $bs $xx $refcode $igcode $uostmd" IO='w3iogrmd w3iogomd w3iopomd w3iotrmd w3iorsmd w3iobcmd w3iosfmd w3partmd' aux="constants w3servmd w3timemd $tidecode w3arrymd w3dispmd w3cspcmd w3gsrumd" ;; - libww3.so) IDstring='Object file archive' - core='w3fldsmd w3initmd w3wavemd w3wdasmd w3updtmd' - data='wmmdatmd w3gdatmd w3wdatmd w3adatmd w3idatmd w3odatmd' - prop="$pr" - source="w3triamd w3srcemd $dsx $flx $ln $st $nl $bt $ic $is $db $tr $bs $xx $refcode $igcode $uostmd" - IO='w3iogrmd w3iogomd w3iopomd w3iotrmd w3iorsmd w3iobcmd w3iosfmd w3partmd' - aux="constants w3servmd w3timemd $tidecode w3arrymd w3dispmd w3cspcmd w3gsrumd" ;; +# libww3.so) IDstring='Object file archive' +# core='w3fldsmd w3initmd w3wavemd w3wdasmd w3updtmd' +# data='wmmdatmd w3gdatmd w3wdatmd w3adatmd w3idatmd w3odatmd' +# prop="$pr" +# source="w3triamd w3srcemd $dsx $flx $ln $st $nl $bt $ic $is $db $tr $bs $xx $refcode $igcode $uostmd" +# IO='w3iogrmd w3iogomd w3iopomd w3iotrmd w3iorsmd w3iobcmd w3iosfmd w3partmd' +# aux="constants w3servmd w3timemd $tidecode w3arrymd w3dispmd w3cspcmd w3gsrumd" ;; ww3_uprstr) IDstring='Update Restart File' core= data='wmmdatmd w3triamd w3gdatmd w3wdatmd w3adatmd w3idatmd w3odatmd' @@ -1086,7 +1086,7 @@ filesl="$data $core $prop $source $IO $aux" # if program name is libww3, then # the target is compile and create archive - elif [ "$prog" = "libww3" ] || [ "$prog" = "libww3.so" ] + elif [ "$prog" = "libww3" ] # || [ "$prog" = "libww3.so" ] then d_string="$prog"' : $(aPo)/' files="$aux $core $data $prop $source $IO" @@ -1133,17 +1133,17 @@ echo ' ' >> makefile # if program name is libww3.so, then # the target is compile and create archive - elif [ "$prog" = "libww3.so" ] - then - lib=$prog - objs="" - for file in $filesl - do - objs="$objs $file.o" - done - echo " @cd \$(aPo); ld -o $lib -shared $objs" >> makefile - echo ' ' >> makefile - +# elif [ "$prog" = "libww3.so" ] +# then +# lib=$prog +# objs="" +# for file in $filesl +# do +# objs="$objs $file.o" +# done +# echo " @cd \$(aPo); ld -o $lib -shared $objs" >> makefile +# echo ' ' >> makefile +# else echo ' @$(aPb)/link '"$filesl" >> makefile echo ' ' >> makefile diff --git a/model/bin/w3_automake b/model/bin/w3_automake index b610d0f0c..f46c5fe3d 100755 --- a/model/bin/w3_automake +++ b/model/bin/w3_automake @@ -132,7 +132,7 @@ reg_programs="$reg_programs gx_outp" reg_programs="$reg_programs ww3_uprstr" reg_programs="$reg_programs libww3" - reg_programs="$reg_programs libww3.so" +# reg_programs="$reg_programs libww3.so" # PRNC OUNF OUNP BOUNC TRNC cdf_programs="ww3_prnc" diff --git a/model/bin/w3_make b/model/bin/w3_make index f707dccd5..99e446d19 100755 --- a/model/bin/w3_make +++ b/model/bin/w3_make @@ -174,7 +174,7 @@ cdf_programs="$cdf_programs ww3_multi" cdf_programs="$cdf_programs ww3_sbs1" cdf_programs="$cdf_programs libww3" - cdf_programs="$cdf_programs libww3.so" +# cdf_programs="$cdf_programs libww3.so" if [ $ESMFMKFILE ] then cdf_programs="$cdf_programs ww3_multi_esmf" @@ -183,7 +183,7 @@ reg_programs="$reg_programs ww3_multi" reg_programs="$reg_programs ww3_sbs1" reg_programs="$reg_programs libww3" - reg_programs="$reg_programs libww3.so" +# reg_programs="$reg_programs libww3.so" if [ $ESMFMKFILE ] then reg_programs="$reg_programs ww3_multi_esmf" @@ -666,9 +666,9 @@ EOF elif [ "$prog" = "libww3" ] then target="$prog" - elif [ "$prog" = "libww3.so" ] - then - target="$prog" +# elif [ "$prog" = "libww3.so" ] +# then +# target="$prog" else target="$aPe/$prog" fi From 5acd9d2d044a0f02b7340d89a8fc4b3998717fa5 Mon Sep 17 00:00:00 2001 From: "Henrique.Alves" Date: Mon, 10 Jun 2019 15:46:51 +0000 Subject: [PATCH 02/13] Revert "Updating to latest upstream (NOAA-EMC/WW3)." This reverts commit c471cdad9b6a28f4770cbfa4511e21c23c84b407. --- model/bin/comp.Intel | 4 ++-- model/bin/make_makefile.sh | 40 +++++++++++++++++++------------------- model/bin/w3_automake | 2 +- model/bin/w3_make | 10 +++++----- 4 files changed, 28 insertions(+), 28 deletions(-) diff --git a/model/bin/comp.Intel b/model/bin/comp.Intel index ebe8023b4..4a44a4f60 100755 --- a/model/bin/comp.Intel +++ b/model/bin/comp.Intel @@ -78,8 +78,8 @@ # Intel compiler on Linux ---------------------------------------------------- # 2.b.1 Build options and determine compiler name -# opt="-c $list -O3 -assume byterecl -fPIC -module $path_m" - opt="-c $list -O3 -assume byterecl -ip -module $path_m" + opt="-c $list -O3 -assume byterecl -fPIC -module $path_m" +# opt="-c $list -O3 -assume byterecl -ip -module $path_m" # opt="-c $list -O3 -assume byterecl -xSSE4.2 -ip -module $path_m" # opt="-c $list -O3 -assume byterecl -prec-div -prec-sqrt -xHost -align array128byte -ip -module $path_m" # opt="-c $list -O0 -assume byterecl -g -traceback -check all -fpe0 -ftrapuv -module $path_m" diff --git a/model/bin/make_makefile.sh b/model/bin/make_makefile.sh index 4d5111777..2038dcb97 100755 --- a/model/bin/make_makefile.sh +++ b/model/bin/make_makefile.sh @@ -851,7 +851,7 @@ ww3_ounp ww3_gspl ww3_gint ww3_bound ww3_bounc ww3_systrk $tideprog" progs="$progs ww3_multi_esmf ww3_uprstr" progs="$progs libww3" -# progs="$progs libww3.so" + progs="$progs libww3.so" for prog in $progs do @@ -1060,13 +1060,13 @@ source="w3triamd w3srcemd $dsx $flx $ln $st $nl $bt $ic $is $db $tr $bs $xx $refcode $igcode $uostmd" IO='w3iogrmd w3iogomd w3iopomd w3iotrmd w3iorsmd w3iobcmd w3iosfmd w3partmd' aux="constants w3servmd w3timemd $tidecode w3arrymd w3dispmd w3cspcmd w3gsrumd" ;; -# libww3.so) IDstring='Object file archive' -# core='w3fldsmd w3initmd w3wavemd w3wdasmd w3updtmd' -# data='wmmdatmd w3gdatmd w3wdatmd w3adatmd w3idatmd w3odatmd' -# prop="$pr" -# source="w3triamd w3srcemd $dsx $flx $ln $st $nl $bt $ic $is $db $tr $bs $xx $refcode $igcode $uostmd" -# IO='w3iogrmd w3iogomd w3iopomd w3iotrmd w3iorsmd w3iobcmd w3iosfmd w3partmd' -# aux="constants w3servmd w3timemd $tidecode w3arrymd w3dispmd w3cspcmd w3gsrumd" ;; + libww3.so) IDstring='Object file archive' + core='w3fldsmd w3initmd w3wavemd w3wdasmd w3updtmd' + data='wmmdatmd w3gdatmd w3wdatmd w3adatmd w3idatmd w3odatmd' + prop="$pr" + source="w3triamd w3srcemd $dsx $flx $ln $st $nl $bt $ic $is $db $tr $bs $xx $refcode $igcode $uostmd" + IO='w3iogrmd w3iogomd w3iopomd w3iotrmd w3iorsmd w3iobcmd w3iosfmd w3partmd' + aux="constants w3servmd w3timemd $tidecode w3arrymd w3dispmd w3cspcmd w3gsrumd" ;; ww3_uprstr) IDstring='Update Restart File' core= data='wmmdatmd w3triamd w3gdatmd w3wdatmd w3adatmd w3idatmd w3odatmd' @@ -1086,7 +1086,7 @@ filesl="$data $core $prop $source $IO $aux" # if program name is libww3, then # the target is compile and create archive - elif [ "$prog" = "libww3" ] # || [ "$prog" = "libww3.so" ] + elif [ "$prog" = "libww3" ] || [ "$prog" = "libww3.so" ] then d_string="$prog"' : $(aPo)/' files="$aux $core $data $prop $source $IO" @@ -1133,17 +1133,17 @@ echo ' ' >> makefile # if program name is libww3.so, then # the target is compile and create archive -# elif [ "$prog" = "libww3.so" ] -# then -# lib=$prog -# objs="" -# for file in $filesl -# do -# objs="$objs $file.o" -# done -# echo " @cd \$(aPo); ld -o $lib -shared $objs" >> makefile -# echo ' ' >> makefile -# + elif [ "$prog" = "libww3.so" ] + then + lib=$prog + objs="" + for file in $filesl + do + objs="$objs $file.o" + done + echo " @cd \$(aPo); ld -o $lib -shared $objs" >> makefile + echo ' ' >> makefile + else echo ' @$(aPb)/link '"$filesl" >> makefile echo ' ' >> makefile diff --git a/model/bin/w3_automake b/model/bin/w3_automake index f46c5fe3d..b610d0f0c 100755 --- a/model/bin/w3_automake +++ b/model/bin/w3_automake @@ -132,7 +132,7 @@ reg_programs="$reg_programs gx_outp" reg_programs="$reg_programs ww3_uprstr" reg_programs="$reg_programs libww3" -# reg_programs="$reg_programs libww3.so" + reg_programs="$reg_programs libww3.so" # PRNC OUNF OUNP BOUNC TRNC cdf_programs="ww3_prnc" diff --git a/model/bin/w3_make b/model/bin/w3_make index 99e446d19..f707dccd5 100755 --- a/model/bin/w3_make +++ b/model/bin/w3_make @@ -174,7 +174,7 @@ cdf_programs="$cdf_programs ww3_multi" cdf_programs="$cdf_programs ww3_sbs1" cdf_programs="$cdf_programs libww3" -# cdf_programs="$cdf_programs libww3.so" + cdf_programs="$cdf_programs libww3.so" if [ $ESMFMKFILE ] then cdf_programs="$cdf_programs ww3_multi_esmf" @@ -183,7 +183,7 @@ reg_programs="$reg_programs ww3_multi" reg_programs="$reg_programs ww3_sbs1" reg_programs="$reg_programs libww3" -# reg_programs="$reg_programs libww3.so" + reg_programs="$reg_programs libww3.so" if [ $ESMFMKFILE ] then reg_programs="$reg_programs ww3_multi_esmf" @@ -666,9 +666,9 @@ EOF elif [ "$prog" = "libww3" ] then target="$prog" -# elif [ "$prog" = "libww3.so" ] -# then -# target="$prog" + elif [ "$prog" = "libww3.so" ] + then + target="$prog" else target="$aPe/$prog" fi From 8d624d8ab4230156f8d6945527ca1fad5c0f3e0c Mon Sep 17 00:00:00 2001 From: "henrique.alves" Date: Sun, 26 Jan 2020 23:24:55 +0000 Subject: [PATCH 03/13] Including additional variables in PRIVATE OMP declaration in attempt to fix OMP b4b irreproducibility issue (Jim Abeles) --- model/ftn/w3wavemd.ftn | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/model/ftn/w3wavemd.ftn b/model/ftn/w3wavemd.ftn index 92783b73d..acb33232a 100644 --- a/model/ftn/w3wavemd.ftn +++ b/model/ftn/w3wavemd.ftn @@ -1490,7 +1490,7 @@ NKCFL=NK !/T NKCFL=1 ! -!/OMPG/!$OMP PARALLEL DO PRIVATE (JSEA,ISEA,IX,IY) SCHEDULE (DYNAMIC,1) +!/OMPG/!$OMP PARALLEL DO PRIVATE (JSEA,ISEA) SCHEDULE (DYNAMIC,1) ! DO JSEA=1, NSEAL CALL INIT_GET_ISEA(ISEA, JSEA) @@ -1585,7 +1585,7 @@ IF ( FLCTH .OR. FLCK ) THEN DO ITLOC=1, ITLOCH ! -!/OMPG/!$OMP PARALLEL PRIVATE (JSEA,ISEA,IX,IY,DEPTH) +!/OMPG/!$OMP PARALLEL PRIVATE (JSEA,ISEA,IX,IY,DEPTH,IXrel) !/OMPG/!$OMP DO SCHEDULE (DYNAMIC,1) ! !/DEBUGRUN WRITE(740+IAPROC,*) ' ITLOC=', ITLOC @@ -1873,7 +1873,7 @@ IF ( FLCTH .OR. FLCK ) THEN DO ITLOC=ITLOCH+1, NTLOC ! -!/OMPG/!$OMP PARALLEL PRIVATE (JSEA,ISEA,IX,IY,DEPTH) +!/OMPG/!$OMP PARALLEL PRIVATE (JSEA,ISEA,IX,IY,DEPTH,IXrel) !/OMPG/!$OMP DO SCHEDULE (DYNAMIC,1) ! !/DEBUGRUN WRITE(740+IAPROC,*) ' ITLOC=', ITLOC @@ -1964,7 +1964,7 @@ !/PDLIB!/DEBUGSRC END IF ! !/OMPG/!$OMP PARALLEL PRIVATE (JSEA,ISEA,IX,IY,DELA,DELX,DELY, & -!/OMPG/!$OMP& REFLEC,REFLED,D50,PSIC,TMP1,TMP2,TMP3) +!/OMPG/!$OMP& REFLEC,REFLED,D50,PSIC,TMP1,TMP2,TMP3,TMP4) !/OMPG/!$OMP DO SCHEDULE (DYNAMIC,1) ! DO JSEA=1, NSEAL From 01048f7c89d87ab63da028eb7878f16ec2497cc9 Mon Sep 17 00:00:00 2001 From: "henrique.alves" Date: Sun, 2 Feb 2020 19:26:58 +0000 Subject: [PATCH 04/13] Adding changes to several modules with OpenMP loops to declare properly PRIVATE variables and avoid suprious assignment of values that lead to b4b reproducibility issues. Expanded matrix_ncep to run hybrid MPI/OMP cases --- model/ftn/w3iogomd.ftn | 11 ++++++----- model/ftn/w3pro1md.ftn | 4 ++-- model/ftn/w3pro3md.ftn | 4 ++-- model/ftn/w3uno2md.ftn | 4 ++-- model/ftn/w3uqckmd.ftn | 3 ++- model/ftn/w3wavemd.ftn | 10 +++++----- regtests/bin/matrix_ncep | 2 +- 7 files changed, 20 insertions(+), 18 deletions(-) diff --git a/model/ftn/w3iogomd.ftn b/model/ftn/w3iogomd.ftn index 6e04ada22..a681a2ced 100644 --- a/model/ftn/w3iogomd.ftn +++ b/model/ftn/w3iogomd.ftn @@ -1462,7 +1462,7 @@ ! 2.c Finalize integration over band and update mean arrays ! ! -!/OMPG/!$OMP PARALLEL DO PRIVATE(JSEA,ISEA,FACTOR,FACTOR2,KD,FKD,USSCO,M1) +!/OMPG/!$OMP PARALLEL DO PRIVATE(JSEA,ISEA,FACTOR,FACTOR2,MA,MC,MB,KD,FKD,USSCO,M1) ! DO JSEA=1, NSEAL CALL INIT_GET_ISEA(ISEA, JSEA) @@ -1680,7 +1680,7 @@ ! END DO -!/OMPG/!$OMP PARALLEL DO PRIVATE(JSEA,ISEA) +!/OMPG/!$OMP PARALLEL DO PRIVATE(JSEA,ISEA,IX,IY,STEX,STEY,STED,ITL,IK) ! DO JSEA=1, NSEAL !/DIST ISEA = IAPROC + (JSEA-1)*NAPROC @@ -2239,7 +2239,7 @@ ! ! 6.b Loop over local sea points ! -!/OMPG/!$OMP PARALLEL DO PRIVATE(ISEA,JSEA,IX,IY,I) +!/OMPG/!$OMP PARALLEL DO PRIVATE(ISEA,JSEA,IX,IY,I,J) ! DO JSEA=1, NSEAL CALL INIT_GET_ISEA(ISEA, JSEA) @@ -3730,7 +3730,7 @@ ! DO ITH=1, NTH ! -!/OMPG/!$OMP PARALLEL DO PRIVATE(JSEA,ISEA,FACTOR) +!/OMPG/!$OMP PARALLEL DO PRIVATE(JSEA,ISEA) ! DO JSEA=1, NSEAL !/DIST ISEA = IAPROC + (JSEA-1)*NAPROC @@ -3747,7 +3747,7 @@ ! ! !/OMPG/!$OMP PARALLEL DO -!PRIVATE(JSEA,ISEA,FACTOR,FACTOR2,KD,FKD,USSCO,M1) +!PRIVATE(JSEA,ISEA,FACTOR,FACTOR2,KD,FKD,USSCO,M1,MINDIFF,IB) ! DO JSEA=1, NSEAL !/DIST ISEA = IAPROC + (JSEA-1)*NAPROC @@ -3791,6 +3791,7 @@ USSP(JSEA,NK+Spc2BND(IK)) = USSP(JSEA,NK+Spc2Bnd(IK)) + ABY(JSEA)*USSCO ENDIF END DO +!/OMPG/!$OMP END PARALLEL DO END DO ! RETURN diff --git a/model/ftn/w3pro1md.ftn b/model/ftn/w3pro1md.ftn index 26dd80525..0365be5f2 100644 --- a/model/ftn/w3pro1md.ftn +++ b/model/ftn/w3pro1md.ftn @@ -583,7 +583,7 @@ NYMAX=NY-1 IF ( ICLOSE.EQ.ICLOSE_TRPL ) NYMAX=NY ! -!/OMPH/!$OMP PARALLEL DO PRIVATE (IX, IY, IXY) +!/OMPH/!$OMP PARALLEL DO PRIVATE (IX, IY, IXY, VCB) ! DO IX=1, NX DO IY=1, NYMAX @@ -627,7 +627,7 @@ IF ( ICLOSE.EQ.ICLOSE_TRPL ) THEN IY=NY ! -!/OMPH/!$OMP PARALLEL DO PRIVATE (IXY, VCB, IX, IY) +!/OMPH/!$OMP PARALLEL DO PRIVATE (IXY, VCB, IX) ! DO IX=1, NX IXY = IY +(IX-1)*NY diff --git a/model/ftn/w3pro3md.ftn b/model/ftn/w3pro3md.ftn index cc46dc526..1295e94c1 100644 --- a/model/ftn/w3pro3md.ftn +++ b/model/ftn/w3pro3md.ftn @@ -960,7 +960,7 @@ IF ( FLCUR ) THEN !/T WRITE (NDST,9022) ! -!/OMPH/!$OMP PARALLEL DO PRIVATE (IXY) +!/OMPH/!$OMP PARALLEL DO PRIVATE (ISEA,IXY) ! DO ISEA=1, NSEA IXY = MAPSF(ISEA,3) @@ -974,7 +974,7 @@ ! END IF ! -!/OMPH/!$OMP PARALLEL DO PRIVATE (IX, IY, IXY, CP, CQ) +!/OMPH/!$OMP PARALLEL DO PRIVATE (ISEA,IX, IY, IXY, CP, CQ) ! DO ISEA=1, NSEA IX = MAPSF(ISEA,1) diff --git a/model/ftn/w3uno2md.ftn b/model/ftn/w3uno2md.ftn index 4462e8583..edb989ee9 100644 --- a/model/ftn/w3uno2md.ftn +++ b/model/ftn/w3uno2md.ftn @@ -815,7 +815,7 @@ !/T1 WRITE (NDST,9010) !/T1 WRITE (NDST,9011) NB0, 'CENTRAL' ! -!/OMPH/!$OMP PARALLEL DO PRIVATE (IP, IXY, CFL, IXYC, IXYD, QB) +!/OMPH/!$OMP PARALLEL DO PRIVATE (IP, IXY, CFL, IXYC, IXYD, QB, QBO, IY2, IX2, QN) ! DO IP=1, NB0 ! @@ -910,7 +910,7 @@ !/C90/!DIR$ IVDEP !/NEC/!CDIR NODEP ! -!/OMPH/!$OMP PARALLEL DO PRIVATE (IP, IXY, JN, JP ) +!/OMPH/!$OMP PARALLEL DO PRIVATE (IP, IXY, JN, JP, QOLD ) ! DO IP=1, NACT ! diff --git a/model/ftn/w3uqckmd.ftn b/model/ftn/w3uqckmd.ftn index a1a9c7770..c3285e6e8 100644 --- a/model/ftn/w3uqckmd.ftn +++ b/model/ftn/w3uqckmd.ftn @@ -1,3 +1,4 @@ + #include "w3macros.h" !/ ------------------------------------------------------------------- / MODULE W3UQCKMD @@ -877,7 +878,7 @@ !/T1 WRITE (NDST,9011) NB0, 'CENTRAL' ! !/OMPH/!$OMP PARALLEL DO PRIVATE (IP, IXY, CFL, IXYC, QB, IXYU, IXYD, & -!/OMPH/!$OMP& DQ, DQNZ, QCN, QBN, QBR, CFAC ) +!/OMPH/!$OMP& DQ, DQNZ, QCN, QBN, QBR, CFAC, IY, IX ) ! DO IP=1, NB0 ! diff --git a/model/ftn/w3wavemd.ftn b/model/ftn/w3wavemd.ftn index acb33232a..3c89ddacc 100644 --- a/model/ftn/w3wavemd.ftn +++ b/model/ftn/w3wavemd.ftn @@ -496,7 +496,7 @@ ! ! 0.a Set pointers to data structure ! -!/OMPX FLOMP = .TRUE. +!!/OMPX FLOMP = .TRUE. ! !/COU SCREEN = 333 ! @@ -1725,14 +1725,14 @@ !/MPI CALL MPI_STARTALL (NRQSG1, IRQSG1(1,2), IERR_MPI) !/MPI END IF ! -!/OMPX/!$OMP PARALLEL PRIVATE (ISPEC,FIELD) +!!/OMPX/!$OMP PARALLEL PRIVATE (ISPEC,FIELD) ! !/DEBUGRUN WRITE(740+IAPROC,*) 'W3WAVE, step 6.14' !/DEBUGRUN FLUSH(740+IAPROC) IF ( FLOMP ) ALLOCATE ( FIELD(1-NY:NY*(NX+2)) ) ! -!/OMPX/!$OMP DO SCHEDULE (DYNAMIC,1) +!!/OMPX/!$OMP DO SCHEDULE (DYNAMIC,1) ! DO ISPEC=1, NSPEC IF ( IAPPRO(ISPEC) .EQ. IAPROC ) THEN @@ -1781,11 +1781,11 @@ !/MEMCHECK call printMallInfo(IAPROC,mallInfos) -!/OMPX/!$OMP END DO +!!/OMPX/!$OMP END DO IF ( FLOMP ) DEALLOCATE ( FIELD ) -!/OMPX/!$OMP END PARALLEL +!!/OMPX/!$OMP END PARALLEL !Li Initialise IK IX IY in case ARC option is not used to avoid warnings. IK=1 diff --git a/regtests/bin/matrix_ncep b/regtests/bin/matrix_ncep index 60e0bfbd6..3c4f23b7e 100755 --- a/regtests/bin/matrix_ncep +++ b/regtests/bin/matrix_ncep @@ -121,7 +121,7 @@ fi export shrd='y' # Do shared architecture tests export dist='y' # Do distributed architecture (MPI) tests export omp='y' # Threaded (OpenMP) tests - export hybd='n' # Hybrid options + export hybd='y' # Hybrid options export prop1D='y' # 1-D propagation tests (ww3_tp1.X) export prop2D='y' # 2-D propagation tests (ww3_tp2.X) From fb2b47b0ccdca842776c0db2c4fdba33d39f46c1 Mon Sep 17 00:00:00 2001 From: Jose-Henrique Alves Date: Mon, 3 Feb 2020 08:21:42 -0500 Subject: [PATCH 05/13] Creating mutually-exclusive condition in make_makefile.sh for OMPH and T1 due to conflict in w3uqckmd OpenMP loop. Added note in manual switch.tex file. --- manual/impl/switch.tex | 2 +- model/bin/make_makefile.sh | 53 ++++++++++++-------------------------- 2 files changed, 18 insertions(+), 37 deletions(-) diff --git a/manual/impl/switch.tex b/manual/impl/switch.tex index d3702595b..0a05725d8 100644 --- a/manual/impl/switch.tex +++ b/manual/impl/switch.tex @@ -280,7 +280,7 @@ \subsubsection{~Optional switches} \label{sub:opt_switch} \sit{ompx}{Idem, but for directives used only for exclusive OpenMP parallelization.} \sit{omph}{Idem, but for directives used only for hybrid MPI-OpenMP - parallelization.} + parallelization. Note that when using OMPH the test switch T1 cannot be used.} \sit{pdlib}{Domain Decomposition for Explicit and Implicit Solver on triangular unstructured grids. ({\code ParMetis} is required for this option)} \end{slist} Note that these switches can only be used in certain combinations, as enforced diff --git a/model/bin/make_makefile.sh b/model/bin/make_makefile.sh index 4b8852196..132c7b1a7 100755 --- a/model/bin/make_makefile.sh +++ b/model/bin/make_makefile.sh @@ -97,9 +97,9 @@ shared mpp mpiexp thread GSE prop \ stress s_ln source stab s_nl snls s_bot s_db miche s_tr s_bs \ dstress s_ice s_is reflection s_xx \ - wind windx wcor rwind curr currx mgwind mgprop mggse \ + wind windx rwind curr currx mgwind mgprop mggse \ subsec tdyn dss0 pdif tide refrx ig rotag arctic nnt mprf \ - cou oasis agcm ogcm igcm trknc setup pdlib memck uost rstwind + cou oasis agcm ogcm igcm trknc setup pdlib memck uost dbtest do case $type in #sort:mach: @@ -163,6 +163,11 @@ ID='directive controlled threading' TS='OMP' OK='OMPG OMPX OMPH' ;; +#sort:dbtest: + dbtest ) TY='upto1' + ID='test for T1 conflict eith OMPH' + TS='T1' + OK='T1' ;; #sort:GSE: GSE ) TY='one' ID='GSE aleviation' @@ -247,23 +252,11 @@ windx ) TY='one' ID='wind interpolation in space' OK='WNX0 WNX1 WNX2' ;; -#sort:wcor: - wcor ) TY='upto1' - ID='wind speed correction' - TS='WCOR' - OK='WCOR' ;; #sort:rwind: rwind ) TY='upto1' ID='wind vs. current definition' TS='RWND' OK='RWND' ;; - -#sort:rstwind: - rstwind ) TY='upto1' - ID='wind in restart for wmesmf' - TS='WRST' - OK='WRST' ;; - #sort:curr: curr ) TY='one' ID='current interpolation in time' @@ -508,6 +501,7 @@ memck ) memck=$sw ;; setup ) setup=$sw ;; uost ) uost=$sw ;; + dbtest ) dbtest=$sw ;; * ) ;; esac done @@ -677,6 +671,14 @@ echo ' ' ; exit 11 fi + if [ "$dbtest" = 'T1' ] && [ "$thread2" = 'OMPH' ] + then + echo ' ' + echo " *** !/T1 cannot be used in combination with !/OMPH" + echo " Remove OMPH if desire is to test T1 GRINFO." + echo ' ' ; exit 11 + fi + case $s_nl in NL0) nl=$NULL nlx=$NULL ;; @@ -863,7 +865,6 @@ ww3_ounp ww3_gspl ww3_gint ww3_bound ww3_bounc ww3_systrk $tideprog" progs="$progs ww3_multi_esmf ww3_uprstr" progs="$progs libww3" - progs="$progs libww3.so" for prog in $progs do @@ -1072,13 +1073,6 @@ source="w3triamd w3srcemd $dsx $flx $ln $st $nl $bt $ic $is $db $tr $bs $xx $refcode $igcode $uostmd" IO='w3iogrmd w3iogomd w3iopomd w3iotrmd w3iorsmd w3iobcmd w3iosfmd w3partmd' aux="constants w3servmd w3timemd $tidecode w3arrymd w3dispmd w3cspcmd w3gsrumd" ;; - libww3.so) IDstring='Object file archive' - core='w3fldsmd w3initmd w3wavemd w3wdasmd w3updtmd' - data='wmmdatmd w3gdatmd w3wdatmd w3adatmd w3idatmd w3odatmd' - prop="$pr" - source="w3triamd w3srcemd $dsx $flx $ln $st $nl $bt $ic $is $db $tr $bs $xx $refcode $igcode $uostmd" - IO='w3iogrmd w3iogomd w3iopomd w3iotrmd w3iorsmd w3iobcmd w3iosfmd w3partmd' - aux="constants w3servmd w3timemd $tidecode w3arrymd w3dispmd w3cspcmd w3gsrumd" ;; ww3_uprstr) IDstring='Update Restart File' core= data='wmmdatmd w3triamd w3gdatmd w3wdatmd w3adatmd w3idatmd w3odatmd' @@ -1098,7 +1092,7 @@ filesl="$data $core $prop $source $IO $aux" # if program name is libww3, then # the target is compile and create archive - elif [ "$prog" = "libww3" ] || [ "$prog" = "libww3.so" ] + elif [ "$prog" = "libww3" ] then d_string="$prog"' : $(aPo)/' files="$aux $core $data $prop $source $IO" @@ -1143,19 +1137,6 @@ done echo " @cd \$(aPo); $ar_cmd $lib $objs" >> makefile echo ' ' >> makefile - # if program name is libww3.so, then - # the target is compile and create archive - elif [ "$prog" = "libww3.so" ] - then - lib=$prog - objs="" - for file in $filesl - do - objs="$objs $file.o" - done - echo " @cd \$(aPo); ld -o $lib -shared $objs" >> makefile - echo ' ' >> makefile - else echo ' @$(aPb)/link '"$filesl" >> makefile echo ' ' >> makefile From 6ac47b70c9a0073856ee7424094e7d96dc1294c9 Mon Sep 17 00:00:00 2001 From: Jose-Henrique Alves Date: Mon, 3 Feb 2020 08:24:43 -0500 Subject: [PATCH 06/13] Deleting deprecated NB=NK statement in w3iogomd. --- model/ftn/w3iogomd.ftn | 1 - 1 file changed, 1 deletion(-) diff --git a/model/ftn/w3iogomd.ftn b/model/ftn/w3iogomd.ftn index a681a2ced..d928a2a2c 100644 --- a/model/ftn/w3iogomd.ftn +++ b/model/ftn/w3iogomd.ftn @@ -3786,7 +3786,6 @@ ENDDO MINDIFF=1.e8 !Put spectral energey into whichever band central wavenumber fits in - NB=NK!allocated to size2*NK! STKBND_IN(NK) USSP(JSEA,Spc2Bnd(IK)) = USSP(JSEA,Spc2Bnd(IK)) + ABX(JSEA)*USSCO USSP(JSEA,NK+Spc2BND(IK)) = USSP(JSEA,NK+Spc2Bnd(IK)) + ABY(JSEA)*USSCO ENDIF From b377677aca98f47227a8cf6eb7f54d995a750a6d Mon Sep 17 00:00:00 2001 From: Jose-Henrique Alves Date: Mon, 3 Feb 2020 09:10:41 -0500 Subject: [PATCH 07/13] Reverting back commented line to activate proper FLOMP behavior in w3wavemd --- model/ftn/w3wavemd.ftn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model/ftn/w3wavemd.ftn b/model/ftn/w3wavemd.ftn index 3c89ddacc..f85ed5aa3 100644 --- a/model/ftn/w3wavemd.ftn +++ b/model/ftn/w3wavemd.ftn @@ -496,7 +496,7 @@ ! ! 0.a Set pointers to data structure ! -!!/OMPX FLOMP = .TRUE. +!/OMPX FLOMP = .TRUE. ! !/COU SCREEN = 333 ! From e8e0ac7edaf00a5cbe6d6995da962b80e4a66c70 Mon Sep 17 00:00:00 2001 From: "ukmo-chris.bunney" Date: Mon, 3 Feb 2020 16:31:53 +0000 Subject: [PATCH 08/13] Modified w3adc.f to enable processing of multiple switches on a single line --- model/aux/w3adc.f | 135 +++++++++++++++++++++++++++++++--------------- 1 file changed, 93 insertions(+), 42 deletions(-) diff --git a/model/aux/w3adc.f b/model/aux/w3adc.f index f83f6bc40..710b89344 100644 --- a/model/aux/w3adc.f +++ b/model/aux/w3adc.f @@ -3,9 +3,12 @@ PROGRAM W3ADC C/ +-----------------------------------+ C/ | H. L. Tolman | C/ | FORTRAN 77 | -C/ | Last update : 05-Jan-2001 | +C/ | Last update : 03-Feb-2020 | C/ +-----------------------------------+ C/ +C/ 03-Feb-2020 : Added ability to process multiple ( version 7.00 ) +C/ switches on a single line. Chris Bunney, UKMO +C/ C/ Version to preprocess FORTRAN 90 free format code. C/ C 1. Purpose : @@ -77,7 +80,11 @@ PROGRAM W3ADC C 7. Remarks : C C - Switches are case-sensitive -C - Switch in code has to be followed by space. +C - Switch in code has to be followed by space, forward slash (/) or +C exclamation mark (!) +C - Multiple switches can appear on a single line, seperated by +C a forward slash or exclamation mark. In this case all switches +C need to be present in switch file for the line to be included. C - Switches can be used in include files, since include files are C are pre-processed before the actual file is processed. Includes C in include files, however, are not accepted. @@ -253,30 +260,52 @@ PROGRAM W3ADC FLKEEP = .TRUE. FLSWTC = .FALSE. * - IF ( NEWLNE(1:2).EQ.'!/' ) THEN + ! Rewrite for multiple switches on single line + ! Chris Bunney, Feb 2020. + DO 140 + IF(NEWLNE(1:2) .EQ. '!/') THEN + ! Potential switch + FLSWTC = .FALSE. FLKEEP = .FALSE. +* + ! Check if just a comment IF ( NEWLNE(3:3) .EQ. ' ' ) THEN - FLSWTC = .TRUE. - GOTO 141 - ENDIF - DO 140, I=1, NSWTCH - SW0 = SWITCH(I) - J = LS(I) - IF ( NEWLNE( 3 :2+J) .EQ. SW0(1:J) ) THEN - IF ( NEWLNE(3+J:3+J) .EQ. ' ' ) THEN - NEWLNE(1:MMLOUT) = NEWLNE(3+J:MMLOUT+3+J-1) - FLSWTC = .TRUE. - GOTO 141 - ENDIF - IF ( NEWLNE(3+J:3+J) .EQ. '/' ) THEN - NEWLNE(1:MMLOUT) = NEWLNE(4+J:MMLOUT+4+J-1) - FLSWTC = .TRUE. - GOTO 141 - ENDIF + FLSWTC = .TRUE. + GOTO 142 ! Assumes no more switches + ENDIF +* + ! Check if is an activated switch: + DO 141, I=1, NSWTCH + SW0 = SWITCH(I) + J = LS(I) + IF(NEWLNE(3:2+J) .EQ. SW0(1:J)) THEN +* + IF(NEWLNE(3+J:3+J) .EQ. ' ' .OR. + & NEWLNE(3+J:3+J) .EQ. '!') THEN + NEWLNE(1:MMLOUT) = NEWLNE(3+J:MMLOUT+3+J-1) + FLSWTC = .TRUE. + GOTO 140 ENDIF - 140 CONTINUE - 141 CONTINUE +* + IF(NEWLNE(3+J:3+J) .EQ. '/' ) THEN + NEWLNE(1:MMLOUT) = NEWLNE(4+J:MMLOUT+4+J-1) + FLSWTC = .TRUE. + GOTO 140 + ENDIF +* + ENDIF + 141 CONTINUE ! ENDDO +* + ! No match found for switch - don't include line + FLSWTC = .FALSE. + GOTO 142 + ELSE + ! No more switches, break out of do loop + GOTO 142 ENDIF +* + 140 CONTINUE ! ENDDO + 142 CONTINUE ! ESCAPE * * keep line ... * @@ -368,30 +397,52 @@ PROGRAM W3ADC FLKEEP = .TRUE. FLSWTC = .FALSE. * - IF ( NEWLNE(1:2).EQ.'!/' ) THEN + ! Rewrite for multiple switches on single line + ! Chris Bunney, Feb 2020. + DO 310 + IF(NEWLNE(1:2) .EQ. '!/') THEN + ! Potential switch + FLSWTC = .FALSE. FLKEEP = .FALSE. +* + ! Check if just a comment IF ( NEWLNE(3:3) .EQ. ' ' ) THEN - FLSWTC = .TRUE. - GOTO 311 - ENDIF - DO 310, I=1, NSWTCH - SW0 = SWITCH(I) - J = LS(I) - IF ( NEWLNE( 3 :2+J) .EQ. SW0(1:J) ) THEN - IF ( NEWLNE(3+J:3+J) .EQ. ' ' ) THEN - NEWLNE(1:MMLOUT) = NEWLNE(3+J:MMLOUT+3+J-1) - FLSWTC = .TRUE. - GOTO 311 - ENDIF - IF ( NEWLNE(3+J:3+J) .EQ. '/' ) THEN - NEWLNE(1:MMLOUT) = NEWLNE(4+J:MMLOUT+4+J-1) - FLSWTC = .TRUE. - GOTO 311 - ENDIF + FLSWTC = .TRUE. + GOTO 312 ! Assumes no more switches + ENDIF +* + ! Check if is an activated switch: + DO 311, I=1, NSWTCH + SW0 = SWITCH(I) + J = LS(I) + IF(NEWLNE(3:2+J) .EQ. SW0(1:J)) THEN +* + IF(NEWLNE(3+J:3+J) .EQ. ' ' .OR. + & NEWLNE(3+J:3+J) .EQ. '!') THEN + NEWLNE(1:MMLOUT) = NEWLNE(3+J:MMLOUT+3+J-1) + FLSWTC = .TRUE. + GOTO 310 + ENDIF +* + IF(NEWLNE(3+J:3+J) .EQ. '/' ) THEN + NEWLNE(1:MMLOUT) = NEWLNE(4+J:MMLOUT+4+J-1) + FLSWTC = .TRUE. + GOTO 310 ENDIF - 310 CONTINUE - 311 CONTINUE +* + ENDIF + 311 CONTINUE ! ENDDO +* + ! No match found for switch - don't include line + FLSWTC = .FALSE. + GOTO 312 + ELSE + ! No more switches, break out of do loop + GOTO 312 ENDIF +* + 310 CONTINUE ! ENDDO + 312 CONTINUE ! ESCAPE * * include ??? * From 456edd6d9bfb01528053cf5f11c2e1c7b9c72057 Mon Sep 17 00:00:00 2001 From: Jose-Henrique Alves <47567389+ajhenrique@users.noreply.github.com> Date: Mon, 3 Feb 2020 12:17:32 -0500 Subject: [PATCH 09/13] Revert "Creating mutually-exclusive condition in make_makefile.sh for OMPH and T1 due to conflict in w3uqckmd OpenMP loop. Added note in manual switch.tex file." This reverts commit fb2b47b0ccdca842776c0db2c4fdba33d39f46c1. --- manual/impl/switch.tex | 2 +- model/bin/make_makefile.sh | 53 ++++++++++++++++++++++++++------------ 2 files changed, 37 insertions(+), 18 deletions(-) diff --git a/manual/impl/switch.tex b/manual/impl/switch.tex index 0a05725d8..d3702595b 100644 --- a/manual/impl/switch.tex +++ b/manual/impl/switch.tex @@ -280,7 +280,7 @@ \subsubsection{~Optional switches} \label{sub:opt_switch} \sit{ompx}{Idem, but for directives used only for exclusive OpenMP parallelization.} \sit{omph}{Idem, but for directives used only for hybrid MPI-OpenMP - parallelization. Note that when using OMPH the test switch T1 cannot be used.} + parallelization.} \sit{pdlib}{Domain Decomposition for Explicit and Implicit Solver on triangular unstructured grids. ({\code ParMetis} is required for this option)} \end{slist} Note that these switches can only be used in certain combinations, as enforced diff --git a/model/bin/make_makefile.sh b/model/bin/make_makefile.sh index 132c7b1a7..4b8852196 100755 --- a/model/bin/make_makefile.sh +++ b/model/bin/make_makefile.sh @@ -97,9 +97,9 @@ shared mpp mpiexp thread GSE prop \ stress s_ln source stab s_nl snls s_bot s_db miche s_tr s_bs \ dstress s_ice s_is reflection s_xx \ - wind windx rwind curr currx mgwind mgprop mggse \ + wind windx wcor rwind curr currx mgwind mgprop mggse \ subsec tdyn dss0 pdif tide refrx ig rotag arctic nnt mprf \ - cou oasis agcm ogcm igcm trknc setup pdlib memck uost dbtest + cou oasis agcm ogcm igcm trknc setup pdlib memck uost rstwind do case $type in #sort:mach: @@ -163,11 +163,6 @@ ID='directive controlled threading' TS='OMP' OK='OMPG OMPX OMPH' ;; -#sort:dbtest: - dbtest ) TY='upto1' - ID='test for T1 conflict eith OMPH' - TS='T1' - OK='T1' ;; #sort:GSE: GSE ) TY='one' ID='GSE aleviation' @@ -252,11 +247,23 @@ windx ) TY='one' ID='wind interpolation in space' OK='WNX0 WNX1 WNX2' ;; +#sort:wcor: + wcor ) TY='upto1' + ID='wind speed correction' + TS='WCOR' + OK='WCOR' ;; #sort:rwind: rwind ) TY='upto1' ID='wind vs. current definition' TS='RWND' OK='RWND' ;; + +#sort:rstwind: + rstwind ) TY='upto1' + ID='wind in restart for wmesmf' + TS='WRST' + OK='WRST' ;; + #sort:curr: curr ) TY='one' ID='current interpolation in time' @@ -501,7 +508,6 @@ memck ) memck=$sw ;; setup ) setup=$sw ;; uost ) uost=$sw ;; - dbtest ) dbtest=$sw ;; * ) ;; esac done @@ -671,14 +677,6 @@ echo ' ' ; exit 11 fi - if [ "$dbtest" = 'T1' ] && [ "$thread2" = 'OMPH' ] - then - echo ' ' - echo " *** !/T1 cannot be used in combination with !/OMPH" - echo " Remove OMPH if desire is to test T1 GRINFO." - echo ' ' ; exit 11 - fi - case $s_nl in NL0) nl=$NULL nlx=$NULL ;; @@ -865,6 +863,7 @@ ww3_ounp ww3_gspl ww3_gint ww3_bound ww3_bounc ww3_systrk $tideprog" progs="$progs ww3_multi_esmf ww3_uprstr" progs="$progs libww3" + progs="$progs libww3.so" for prog in $progs do @@ -1073,6 +1072,13 @@ source="w3triamd w3srcemd $dsx $flx $ln $st $nl $bt $ic $is $db $tr $bs $xx $refcode $igcode $uostmd" IO='w3iogrmd w3iogomd w3iopomd w3iotrmd w3iorsmd w3iobcmd w3iosfmd w3partmd' aux="constants w3servmd w3timemd $tidecode w3arrymd w3dispmd w3cspcmd w3gsrumd" ;; + libww3.so) IDstring='Object file archive' + core='w3fldsmd w3initmd w3wavemd w3wdasmd w3updtmd' + data='wmmdatmd w3gdatmd w3wdatmd w3adatmd w3idatmd w3odatmd' + prop="$pr" + source="w3triamd w3srcemd $dsx $flx $ln $st $nl $bt $ic $is $db $tr $bs $xx $refcode $igcode $uostmd" + IO='w3iogrmd w3iogomd w3iopomd w3iotrmd w3iorsmd w3iobcmd w3iosfmd w3partmd' + aux="constants w3servmd w3timemd $tidecode w3arrymd w3dispmd w3cspcmd w3gsrumd" ;; ww3_uprstr) IDstring='Update Restart File' core= data='wmmdatmd w3triamd w3gdatmd w3wdatmd w3adatmd w3idatmd w3odatmd' @@ -1092,7 +1098,7 @@ filesl="$data $core $prop $source $IO $aux" # if program name is libww3, then # the target is compile and create archive - elif [ "$prog" = "libww3" ] + elif [ "$prog" = "libww3" ] || [ "$prog" = "libww3.so" ] then d_string="$prog"' : $(aPo)/' files="$aux $core $data $prop $source $IO" @@ -1137,6 +1143,19 @@ done echo " @cd \$(aPo); $ar_cmd $lib $objs" >> makefile echo ' ' >> makefile + # if program name is libww3.so, then + # the target is compile and create archive + elif [ "$prog" = "libww3.so" ] + then + lib=$prog + objs="" + for file in $filesl + do + objs="$objs $file.o" + done + echo " @cd \$(aPo); ld -o $lib -shared $objs" >> makefile + echo ' ' >> makefile + else echo ' @$(aPb)/link '"$filesl" >> makefile echo ' ' >> makefile From d9647432760d4b9f6657fa742db8d5ce4f5a2b35 Mon Sep 17 00:00:00 2001 From: Jose-Henrique Alves <47567389+ajhenrique@users.noreply.github.com> Date: Tue, 4 Feb 2020 09:00:45 -0500 Subject: [PATCH 10/13] Update w3iogomd.ftn Deleting NB and STKBND_INDEX --- model/ftn/w3iogomd.ftn | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/model/ftn/w3iogomd.ftn b/model/ftn/w3iogomd.ftn index d928a2a2c..06352d075 100644 --- a/model/ftn/w3iogomd.ftn +++ b/model/ftn/w3iogomd.ftn @@ -3679,8 +3679,7 @@ !/ Local parameters !/ INTEGER :: IK, ITH, ISEA, JSEA - INTEGER :: IKST, IKFI, IB, NB - INTEGER :: STKBND_INDEX + INTEGER :: IKST, IKFI, IB !/S INTEGER, SAVE :: IENT = 0 REAL :: FACTOR, FKD,KD REAL :: ABX(NSEAL), ABY(NSEAL), USSCO From 47493104309428142889ca7b892c019ff1c5c0a7 Mon Sep 17 00:00:00 2001 From: Jose-Henrique Alves <47567389+ajhenrique@users.noreply.github.com> Date: Tue, 4 Feb 2020 09:08:11 -0500 Subject: [PATCH 11/13] Update w3iogomd.ftn Removing parameters not used in specific OMP loops from PRIVATE declarations. --- model/ftn/w3iogomd.ftn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/model/ftn/w3iogomd.ftn b/model/ftn/w3iogomd.ftn index 06352d075..5bf86cb44 100644 --- a/model/ftn/w3iogomd.ftn +++ b/model/ftn/w3iogomd.ftn @@ -1462,7 +1462,7 @@ ! 2.c Finalize integration over band and update mean arrays ! ! -!/OMPG/!$OMP PARALLEL DO PRIVATE(JSEA,ISEA,FACTOR,FACTOR2,MA,MC,MB,KD,FKD,USSCO,M1) +!/OMPG/!$OMP PARALLEL DO PRIVATE(JSEA,ISEA,FACTOR,FACTOR2,MA,MC,MB,KD,FKD,USSCO,M1,M2) ! DO JSEA=1, NSEAL CALL INIT_GET_ISEA(ISEA, JSEA) @@ -3746,7 +3746,7 @@ ! ! !/OMPG/!$OMP PARALLEL DO -!PRIVATE(JSEA,ISEA,FACTOR,FACTOR2,KD,FKD,USSCO,M1,MINDIFF,IB) +!PRIVATE(JSEA,ISEA,FACTOR,KD,FKD,USSCO,MINDIFF,IB) ! DO JSEA=1, NSEAL !/DIST ISEA = IAPROC + (JSEA-1)*NAPROC From 74b458543686f0414e857be2ff15339cad25a149 Mon Sep 17 00:00:00 2001 From: "henrique.alves" Date: Mon, 10 Feb 2020 18:36:39 +0000 Subject: [PATCH 12/13] Final changes to attend reviewer requirements. --- model/aux/w3adc.f | 2 +- model/ftn/w3iogomd.ftn | 3 +-- model/ftn/w3uno2md.ftn | 4 +++- model/ftn/w3uqckmd.ftn | 3 ++- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/model/aux/w3adc.f b/model/aux/w3adc.f index 710b89344..aa312b656 100644 --- a/model/aux/w3adc.f +++ b/model/aux/w3adc.f @@ -141,7 +141,7 @@ PROGRAM W3ADC CHARACTER*20 TEST0, TSTSTR CHARACTER*500 FNAMEI, FNAMEO, FNAMER CHARACTER*72 INSTR - CHARACTER*143 NEWLNE, OLDLNE + CHARACTER*176 NEWLNE, OLDLNE CHARACTER*200 SWTCHS CHARACTER*33 NOLINE CHARACTER SWITCH*8, SW0*8 diff --git a/model/ftn/w3iogomd.ftn b/model/ftn/w3iogomd.ftn index 5bf86cb44..5fccb8c03 100644 --- a/model/ftn/w3iogomd.ftn +++ b/model/ftn/w3iogomd.ftn @@ -3745,8 +3745,7 @@ ! 2.c Finalize integration over band and update mean arrays ! ! -!/OMPG/!$OMP PARALLEL DO -!PRIVATE(JSEA,ISEA,FACTOR,KD,FKD,USSCO,MINDIFF,IB) +!/OMPG/!$OMP PARALLEL DO PRIVATE(JSEA,ISEA,FACTOR,KD,FKD,USSCO,MINDIFF,IB) ! DO JSEA=1, NSEAL !/DIST ISEA = IAPROC + (JSEA-1)*NAPROC diff --git a/model/ftn/w3uno2md.ftn b/model/ftn/w3uno2md.ftn index edb989ee9..ce2f1944f 100644 --- a/model/ftn/w3uno2md.ftn +++ b/model/ftn/w3uno2md.ftn @@ -815,7 +815,9 @@ !/T1 WRITE (NDST,9010) !/T1 WRITE (NDST,9011) NB0, 'CENTRAL' ! -!/OMPH/!$OMP PARALLEL DO PRIVATE (IP, IXY, CFL, IXYC, IXYD, QB, QBO, IY2, IX2, QN) +!/OMPH/!$OMP PARALLEL DO PRIVATE (IP, IXY, CFL, & +!/OMPH/!/T1!$OMP QBO, IX, IY, IY2, IX2, QN & +!/OMPH/!$OMP IXYC, IXYD, QB) ! DO IP=1, NB0 ! diff --git a/model/ftn/w3uqckmd.ftn b/model/ftn/w3uqckmd.ftn index c3285e6e8..3e042eff6 100644 --- a/model/ftn/w3uqckmd.ftn +++ b/model/ftn/w3uqckmd.ftn @@ -878,7 +878,8 @@ !/T1 WRITE (NDST,9011) NB0, 'CENTRAL' ! !/OMPH/!$OMP PARALLEL DO PRIVATE (IP, IXY, CFL, IXYC, QB, IXYU, IXYD, & -!/OMPH/!$OMP& DQ, DQNZ, QCN, QBN, QBR, CFAC, IY, IX ) +!/OMPH/!/T1!$OMP QBO, QN, IX2, IY2, & +!/OMPH/!$OMP& DQ, DQNZ, QCN, QBN, QBR, CFAC ) ! DO IP=1, NB0 ! From ec810ad5d87f4715b2807d122e8d7f7121e5a3d7 Mon Sep 17 00:00:00 2001 From: Jose-Henrique Alves <47567389+ajhenrique@users.noreply.github.com> Date: Mon, 10 Feb 2020 13:40:22 -0500 Subject: [PATCH 13/13] Update w3uqckmd.ftn --- model/ftn/w3uqckmd.ftn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model/ftn/w3uqckmd.ftn b/model/ftn/w3uqckmd.ftn index 3e042eff6..2512e3ba9 100644 --- a/model/ftn/w3uqckmd.ftn +++ b/model/ftn/w3uqckmd.ftn @@ -878,7 +878,7 @@ !/T1 WRITE (NDST,9011) NB0, 'CENTRAL' ! !/OMPH/!$OMP PARALLEL DO PRIVATE (IP, IXY, CFL, IXYC, QB, IXYU, IXYD, & -!/OMPH/!/T1!$OMP QBO, QN, IX2, IY2, & +!/OMPH/!/T1!$OMP QBO, QN, IX, IY, IX2, IY2, & !/OMPH/!$OMP& DQ, DQNZ, QCN, QBN, QBR, CFAC ) ! DO IP=1, NB0