Skip to content

Commit 3e6ba09

Browse files
authored
Merge pull request #88 from ecmwf-ifs/nabr-master-omp-nvhpc-compile
Fix NVHPC compilation for master-omp
2 parents 07f3f2a + 5c13747 commit 3e6ba09

34 files changed

Lines changed: 145 additions & 3 deletions

‎ifsrrtm/CMakeLists.txt‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,16 @@ ecbuild_add_library(
236236
PRIVATE_DEFINITIONS ${GPU_OFFLOAD}GPU
237237
)
238238

239+
# To ensure device code is generated and all link time dependencies are
240+
# available with OpenMP target offloading, force the `-mp=gpu` flag for NVHPC
241+
if( HAVE_GPU AND HAVE_OMP AND GPU_OFFLOAD STREQUAL "OMP" )
242+
target_link_libraries( ifsrrtm.${PREC} PUBLIC OpenMP::OpenMP_Fortran )
243+
if( CMAKE_Fortran_COMPILER_ID MATCHES "NVHPC" )
244+
target_compile_options( ifsrrtm.${PREC} PRIVATE "-mp=gpu" )
245+
target_link_options( ifsrrtm.${PREC} PRIVATE "-mp=gpu" )
246+
endif()
247+
endif()
248+
239249
install(
240250
FILES
241251
${ifsrrtm_HEADERS}

‎ifsrrtm/rrtm_gas_optical_depth.F90‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,9 @@ SUBROUTINE RRTM_GAS_OPTICAL_DEPTH(KIDIA,KFDIA,KLEV,POD,PAVEL, PCOLDRY,PCOLBRD,PW
118118

119119
ASSOCIATE(NFLEVG=>KLEV)
120120
!$OMP TARGET ENTER DATA MAP(ALLOC: ZTAU)
121+
#ifndef __NVCOMPILER
121122
!$OMP TARGET DATA MAP(PRESENT, ALLOC: POD)
123+
#endif
122124
!$ACC DATA CREATE(ZTAU) PRESENT(POD)
123125

124126
CALL COMPUTE_LAYTROP_MIN_MAX(KIDIA, KFDIA, KLAYTROP, laytrop_min, laytrop_max)
@@ -250,7 +252,9 @@ SUBROUTINE RRTM_GAS_OPTICAL_DEPTH(KIDIA,KFDIA,KLEV,POD,PAVEL, PCOLDRY,PCOLBRD,PW
250252
!$ACC WAIT
251253
!$ACC END DATA
252254
!$OMP TARGET EXIT DATA MAP(DELETE: ZTAU)
255+
#ifndef __NVCOMPILER
253256
!$OMP END TARGET DATA
257+
#endif
254258

255259
END ASSOCIATE
256260

‎ifsrrtm/rrtm_prepare_gases.F90‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,11 +133,13 @@ SUBROUTINE RRTM_PREPARE_GASES &
133133
!$ACC PQ, PCO2, PCH4, PN2O, PNO2, PC11, PC12, PC22, PCL4, POZN, &
134134
!$ACC PCOLDRY, PWBRODL, PWKL, PWX , &
135135
!$ACC PAVEL, PTAVEL, PZ, PTZ , KREFLECT)
136+
#ifndef __NVCOMPILER
136137
!$OMP TARGET DATA MAP(PRESENT, ALLOC: PAPH, PAP, &
137138
!$OMP PTH, PT, &
138139
!$OMP PQ, PCO2, PCH4, PN2O, PNO2, PC11, PC12, PC22, PCL4, POZN, &
139140
!$OMP PCOLDRY, PWBRODL, PWKL, PWX , &
140141
!$OMP PAVEL, PTAVEL, PZ, PTZ , KREFLECT)
142+
#endif
141143

142144
ZGRAVIT=(RG/RPLRG)*1.E2_JPRB
143145

@@ -306,7 +308,9 @@ SUBROUTINE RRTM_PREPARE_GASES &
306308
ENDDO
307309
ENDDO
308310
!$OMP END TARGET TEAMS DISTRIBUTE PARALLEL DO
311+
#ifndef __NVCOMPILER
309312
!$OMP END TARGET DATA
313+
#endif
310314

311315
#else
312316

‎ifsrrtm/rrtm_taumol1.F90‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,10 +201,12 @@ SUBROUTINE RRTM_TAUMOL1 (KIDIA,KFDIA,KLEV,taug,PAVEL,&
201201
!$ACC FORFAC, FORFRAC, JP, JT, jt1, COLH2O, LAYTROP, SELFFAC, &
202202
!$ACC SELFFRAC, MINORFRAC, INDSELF, fracs, &
203203
!$ACC INDFOR, INDMINOR, SCALEMINORN2, COLBRD)
204+
#ifndef __NVCOMPILER
204205
!$OMP TARGET DATA MAP(PRESENT, ALLOC: PAVEL, taug, P_TAUAERL, FAC00, FAC01, FAC10, FAC11, &
205206
!$OMP FORFAC, FORFRAC, JP, JT, jt1, COLH2O, LAYTROP, SELFFAC, &
206207
!$OMP SELFFRAC, MINORFRAC, INDSELF, fracs, &
207208
!$OMP INDFOR, INDMINOR, SCALEMINORN2, COLBRD)
209+
#endif
208210

209211
#if !defined(_OPENACC) && !defined(OMPGPU)
210212
ixlow = 0
@@ -409,6 +411,8 @@ SUBROUTINE RRTM_TAUMOL1 (KIDIA,KFDIA,KLEV,taug,PAVEL,&
409411
ENDIF
410412

411413
!$ACC END DATA
414+
#ifndef __NVCOMPILER
412415
!$OMP END TARGET DATA
416+
#endif
413417

414418
END SUBROUTINE RRTM_TAUMOL1

‎ifsrrtm/rrtm_taumol10.F90‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,11 @@ SUBROUTINE RRTM_TAUMOL10 (KIDIA,KFDIA,KLEV,taug,&
7373
!$ACC DATA PRESENT(taug, P_TAUAERL, fac00, fac01, fac10, fac11, jp, jt, jt1, &
7474
!$ACC colh2o, laytrop, fracs, selffac, selffrac, indself, &
7575
!$ACC indfor, forfrac, forfac)
76+
#ifndef __NVCOMPILER
7677
!$OMP TARGET DATA MAP(PRESENT, ALLOC: taug, P_TAUAERL, fac00, fac01, fac10, fac11, jp, jt, jt1, &
7778
!$OMP colh2o, laytrop, fracs, selffac, selffrac, indself, &
7879
!$OMP indfor, forfrac, forfac)
80+
#endif
7981

8082
#if !defined(_OPENACC) && !defined(OMPGPU)
8183
ixlow = 0
@@ -240,6 +242,8 @@ SUBROUTINE RRTM_TAUMOL10 (KIDIA,KFDIA,KLEV,taug,&
240242
ENDIF
241243

242244
!$ACC END DATA
245+
#ifndef __NVCOMPILER
243246
!$OMP END TARGET DATA
247+
#endif
244248

245249
END SUBROUTINE RRTM_TAUMOL10

‎ifsrrtm/rrtm_taumol11.F90‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,11 @@ SUBROUTINE RRTM_TAUMOL11 (KIDIA,KFDIA,KLEV,taug,&
8181
!$ACC DATA PRESENT(taug, P_TAUAERL, fac00, fac01, fac10, fac11, jp, jt, jt1, &
8282
!$ACC colh2o, colo2, laytrop, selffac, selffrac, indself, fracs, &
8383
!$ACC indfor, forfac, forfrac, minorfrac, indminor, scaleminor)
84+
#ifndef __NVCOMPILER
8485
!$OMP TARGET DATA MAP(PRESENT, ALLOC: taug, P_TAUAERL, fac00, fac01, fac10, fac11, jp, jt, jt1, &
8586
!$OMP colh2o, colo2, laytrop, selffac, selffrac, indself, fracs, &
8687
!$OMP indfor, forfac, forfrac, minorfrac, indminor, scaleminor)
88+
#endif
8789

8890
#if !defined(_OPENACC) && !defined(OMPGPU)
8991
ixlow = 0
@@ -273,6 +275,8 @@ SUBROUTINE RRTM_TAUMOL11 (KIDIA,KFDIA,KLEV,taug,&
273275
ENDIF
274276

275277
!$ACC END DATA
278+
#ifndef __NVCOMPILER
276279
!$OMP END TARGET DATA
280+
#endif
277281

278282
END SUBROUTINE RRTM_TAUMOL11

‎ifsrrtm/rrtm_taumol12.F90‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
!----------------------------------------------------------------------------
22
SUBROUTINE RRTM_TAUMOL12 (KIDIA,KFDIA,KLEV,taug,&
33
& P_TAUAERL,fac00,fac01,fac10,fac11,forfac,forfrac,indfor,jp,jt,jt1,oneminus,&
4-
& colh2o,colco2,laytrop,selffac,selffrac,indself,fracs, &
4+
& colh2o,colco2,laytrop,selffac,selffrac,indself,fracs, &
55
& rat_h2oco2, rat_h2oco2_1,laytrop_min,laytrop_max)
66

77
! BAND 12: 1800-2080 cm-1 (low - H2O,CO2; high - nothing)
@@ -97,9 +97,11 @@ SUBROUTINE RRTM_TAUMOL12 (KIDIA,KFDIA,KLEV,taug,&
9797
!$ACC DATA PRESENT(taug, P_TAUAERL, fac00, fac01, fac10, fac11, jp, jt, jt1, &
9898
!$ACC colh2o, colco2, laytrop, selffac, selffrac, indself, fracs, &
9999
!$ACC rat_h2oco2, rat_h2oco2_1, indfor, forfrac, forfac)
100+
#ifndef __NVCOMPILER
100101
!$OMP TARGET DATA MAP(PRESENT, ALLOC: taug, P_TAUAERL, fac00, fac01, fac10, fac11, jp, jt, jt1, &
101102
!$OMP colh2o, colco2, laytrop, selffac, selffrac, indself, fracs, &
102103
!$OMP rat_h2oco2, rat_h2oco2_1, indfor, forfrac, forfac)
104+
#endif
103105

104106
#if !defined(_OPENACC) && !defined(OMPGPU)
105107
ixlow = 0
@@ -673,6 +675,8 @@ SUBROUTINE RRTM_TAUMOL12 (KIDIA,KFDIA,KLEV,taug,&
673675
ENDIF
674676

675677
!$ACC END DATA
678+
#ifndef __NVCOMPILER
676679
!$OMP END TARGET DATA
680+
#endif
677681

678682
END SUBROUTINE RRTM_TAUMOL12

‎ifsrrtm/rrtm_taumol13.F90‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,12 @@ SUBROUTINE RRTM_TAUMOL13 (KIDIA,KFDIA,KLEV,taug,&
110110
!$ACC selffrac, indself, fracs, rat_h2on2o, rat_h2on2o_1, &
111111
!$ACC indfor, forfac, forfrac, minorfrac, indminor) &
112112
!$ACC CREATE(colco)
113+
#ifndef __NVCOMPILER
113114
!$OMP TARGET DATA MAP(PRESENT, ALLOC: taug, P_TAUAERL, fac00, fac01, fac10, fac11, jp, jt, jt1, &
114115
!$OMP colh2o, coln2o, colco2, colo3, coldry, laytrop, selffac, &
115116
!$OMP selffrac, indself, fracs, rat_h2on2o, rat_h2on2o_1, &
116117
!$OMP indfor, forfac, forfrac, minorfrac, indminor)
118+
#endif
117119
!$OMP TARGET ENTER DATA MAP(ALLOC: colco)
118120

119121
!$OMP TARGET TEAMS DISTRIBUTE PARALLEL DO COLLAPSE(2)
@@ -797,6 +799,8 @@ SUBROUTINE RRTM_TAUMOL13 (KIDIA,KFDIA,KLEV,taug,&
797799
!$ACC WAIT
798800
!$ACC END DATA
799801
!$OMP TARGET EXIT DATA MAP(DELETE:colco)
802+
#ifndef __NVCOMPILER
800803
!$OMP END TARGET DATA
804+
#endif
801805

802806
END SUBROUTINE RRTM_TAUMOL13

‎ifsrrtm/rrtm_taumol14.F90‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,11 @@ SUBROUTINE RRTM_TAUMOL14 (KIDIA,KFDIA,KLEV,taug,&
7070
!$ACC DATA PRESENT(taug, P_TAUAERL, fac00, fac01, fac10, fac11, jp, jt, jt1, &
7171
!$ACC colco2, laytrop, selffac, selffrac, indself, fracs, &
7272
!$ACC indfor, forfac, forfrac)
73+
#ifndef __NVCOMPILER
7374
!$OMP TARGET DATA MAP(PRESENT, ALLOC:taug, P_TAUAERL, fac00, fac01, fac10, fac11, jp, jt, jt1, &
7475
!$OMP colco2, laytrop, selffac, selffrac, indself, fracs, &
7576
!$OMP indfor, forfac, forfrac)
77+
#endif
7678

7779
#if !defined(_OPENACC) && !defined(OMPGPU)
7880
ixlow = 0
@@ -231,6 +233,8 @@ SUBROUTINE RRTM_TAUMOL14 (KIDIA,KFDIA,KLEV,taug,&
231233
ENDIF
232234

233235
!$ACC END DATA
236+
#ifndef __NVCOMPILER
234237
!$OMP END TARGET DATA
238+
#endif
235239

236240
END SUBROUTINE RRTM_TAUMOL14

‎ifsrrtm/rrtm_taumol15.F90‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,12 @@ SUBROUTINE RRTM_TAUMOL15 (KIDIA,KFDIA,KLEV,taug,&
9797
!$ACC colh2o, colco2, coln2o, laytrop, selffac, selffrac, &
9898
!$ACC indself, fracs, rat_n2oco2, rat_n2oco2_1, indfor, forfac, &
9999
!$ACC forfrac, minorfrac, indminor, scaleminor, colbrd)
100+
#ifndef __NVCOMPILER
100101
!$OMP TARGET DATA MAP(PRESENT, ALLOC: taug, P_TAUAERL, fac00, fac01, fac10, fac11, jp, jt, jt1, &
101102
!$OMP colh2o, colco2, coln2o, laytrop, selffac, selffrac, &
102103
!$OMP indself, fracs, rat_n2oco2, rat_n2oco2_1, indfor, forfac, &
103104
!$OMP forfrac, minorfrac, indminor, scaleminor, colbrd)
105+
#endif
104106

105107
#if !defined(_OPENACC) && !defined(OMPGPU)
106108
ixlow = 0
@@ -730,6 +732,8 @@ SUBROUTINE RRTM_TAUMOL15 (KIDIA,KFDIA,KLEV,taug,&
730732
ENDIF
731733

732734
!$ACC END DATA
735+
#ifndef __NVCOMPILER
733736
!$OMP END TARGET DATA
737+
#endif
734738

735739
END SUBROUTINE RRTM_TAUMOL15

0 commit comments

Comments
 (0)