- Timestamp:
- Apr 20, 2022, 6:35:42 PM (3 years ago)
- Location:
- LMDZ6/branches/Portage_acc
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Portage_acc/bld.cfg
r4087 r4132 100 100 bld::excl_dep use::ifile_attr 101 101 bld::excl_dep use::ixml_tree 102 bld::excl_dep use::openacc 102 103 103 104 # Don't generate interface files -
LMDZ6/branches/Portage_acc/libf/dynphy_lonlat/phylmd/iniphysiq_mod.F90
r4127 r4132 48 48 USE ioipsl_getin_p_mod, ONLY: getin_p 49 49 USE slab_heat_transp_mod, ONLY: ini_slab_transp_geom 50 IMPLICIT NONE 50 #ifdef _OPENACC 51 USE openacc 52 #endif 53 IMPLICIT NONE 51 54 52 55 ! ======================================================================= … … 97 100 #endif 98 101 102 #ifdef _OPENACC 103 INTEGER :: numdev 104 105 !$acc init 106 107 ! get the number of NVIDIA devices on this node 108 numdev = acc_get_num_devices(ACC_DEVICE_NVIDIA) 109 PRINT *, 'init_physics : number of available GPU devices', numdev 110 IF (numdev < 1) STOP "Error: there are no devices available on this host. ABORTING" 111 CALL acc_init(ACC_DEVICE_NVIDIA) 112 numdev = acc_get_device_num(ACC_DEVICE_NVIDIA) 113 PRINT *, 'init_physics : GPU device id = ', numdev 114 #endif 115 116 117 118 119 99 120 ! --> initialize physics distribution, global fields and geometry 100 121 ! (i.e. things in phy_common or dynphy_lonlat) -
LMDZ6/branches/Portage_acc/libf/phylmd/ajsec.F90
r2346 r4132 1 1 2 ! $ Header$2 ! $Id$ 3 3 4 4 SUBROUTINE ajsec(paprs, pplay, t, q, limbas, d_t, d_q) … … 34 34 INTEGER i, k, k1, k2 35 35 36 !$acc data create (zh, zho, zq,zpk,zpkdp,modif) & 37 !$acc & copyin (paprs, pplay, t , q, limbas) & 38 !$acc & copyout (d_t, d_q) & 39 !$acc & 40 36 41 ! Initialisation: 37 42 … … 39 44 limhau = klev 40 45 46 !$acc kernels default(none) async 41 47 DO k = 1, klev 42 48 DO i = 1, klon … … 71 77 END DO 72 78 END DO 79 !$acc end kernels 73 80 ! ------------------------------------- correction des profils instables 81 !$acc kernels default(none) async 74 82 DO i = 1, klon 75 83 IF (modif(i)) THEN … … 114 122 END IF 115 123 END DO 116 124 !$acc end kernels 125 126 !$acc kernels default(none) async 117 127 DO k = 1, limhau 118 128 DO i = 1, klon … … 121 131 END DO 122 132 END DO 133 !$acc end kernels 123 134 124 135 ! FH : les d_q et d_t sont maintenant calcules de facon a valoir … … 144 155 145 156 IF (.NOT. mixq) THEN 157 !$acc kernels default(none) async 146 158 DO k = 1, klev 147 159 DO i = 1, klon … … 149 161 END DO 150 162 END DO 163 !$acc end kernels 151 164 END IF 165 !$acc end data 152 166 153 167 RETURN 168 154 169 END SUBROUTINE ajsec 155 170 … … 187 202 INTEGER i, k, k1, k2 188 203 204 !$acc data create (zh, zq, zpk, zpkdp, modif) & 205 !$acc & copyin (paprs, pplay, t , q) & 206 !$acc & copyout (d_t, d_q) 207 189 208 ! Initialisation: 190 209 … … 193 212 limhau = klev 194 213 214 !$acc kernels default(none) async 195 215 DO k = 1, klev 196 216 DO i = 1, klon … … 199 219 END DO 200 220 END DO 221 !$acc end kernels 222 201 223 ! ------------------------------------- detection des profils a modifier 224 !$acc kernels default(none) async 202 225 DO k = limbas, limhau 203 226 DO i = 1, klon … … 224 247 END DO 225 248 END DO 249 !$acc end kernels 226 250 ! ------------------------------------- correction des profils instables 251 !$acc kernels default(none) async 227 252 DO i = 1, klon 228 253 IF (modif(i)) THEN … … 267 292 END IF 268 293 END DO 269 294 !$acc end kernels 295 296 !$acc kernels default(none) async 270 297 DO k = limbas, limhau 271 298 DO i = 1, klon … … 274 301 END DO 275 302 END DO 303 !$acc end kernels 276 304 277 305 IF (limbas>1) THEN 306 !$acc kernels default(none) async 278 307 DO k = 1, limbas - 1 279 308 DO i = 1, klon … … 282 311 END DO 283 312 END DO 313 !$acc end kernels 284 314 END IF 285 315 286 316 IF (limhau<klev) THEN 317 !$acc kernels default(none) async 287 318 DO k = limhau + 1, klev 288 319 DO i = 1, klon … … 291 322 END DO 292 323 END DO 324 !$acc end kernels 293 325 END IF 294 326 295 327 IF (.NOT. mixq) THEN 328 !$acc kernels default(none) async 296 329 DO k = 1, klev 297 330 DO i = 1, klon … … 299 332 END DO 300 333 END DO 334 !$acc end kernels 301 335 END IF 302 336 337 !$acc end data 338 303 339 RETURN 340 341 304 342 END SUBROUTINE ajsec_convv2 305 343 SUBROUTINE ajsec_old(paprs, pplay, t, d_t) … … 324 362 LOGICAL modif(klon), down 325 363 INTEGER i, l, l1, l2 364 365 !$acc data create (local_h, modif) & 366 !$acc & copyin (paprs, pplay, t) & 367 !$acc & copyout (d_t) 368 326 369 ! ------------------------------------- detection des profils a modifier 370 !$acc kernels default(none) async 327 371 DO i = 1, klon 328 372 modif(i) = .FALSE. … … 344 388 END DO 345 389 END DO 390 !$acc end kernels 346 391 ! ------------------------------------- correction des profils instables 392 !$acc kernels default(none) async 347 393 DO i = 1, klon 348 394 IF (modif(i)) THEN … … 387 433 END IF 388 434 END DO 389 435 !$acc end kernels 436 437 !$acc kernels default(none) async 390 438 DO l = 1, klev 391 439 DO i = 1, klon … … 393 441 END DO 394 442 END DO 443 !$acc end kernels 444 !$acc end data 395 445 396 446 RETURN 447 448 397 449 END SUBROUTINE ajsec_old -
LMDZ6/branches/Portage_acc/libf/phylmd/thermcell_main.F90
r4094 r4132 136 136 ! --------------- 137 137 ! 138 print*,'NEW THERMCELL cool'139 140 138 141 139 fm=0. ; entr=0. ; detr=0.
Note: See TracChangeset
for help on using the changeset viewer.