Ignore:
Timestamp:
Apr 20, 2022, 6:35:42 PM (2 years ago)
Author:
Laurent Fairhead
Message:

Modifications to code to start using openacc directives
LF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/Portage_acc/libf/phylmd/ajsec.F90

    r2346 r4132  
    11
    2 ! $Header$
     2! $Id$
    33
    44SUBROUTINE ajsec(paprs, pplay, t, q, limbas, d_t, d_q)
     
    3434  INTEGER i, k, k1, k2
    3535
     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 
    3641  ! Initialisation:
    3742
     
    3944  limhau = klev
    4045
     46  !$acc kernels default(none) async
    4147  DO k = 1, klev
    4248    DO i = 1, klon
     
    7177    END DO
    7278  END DO
     79  !$acc end kernels
    7380  ! ------------------------------------- correction des profils instables
     81  !$acc kernels default(none) async
    7482  DO i = 1, klon
    7583    IF (modif(i)) THEN
     
    114122    END IF
    115123  END DO
    116 
     124  !$acc end kernels
     125
     126  !$acc kernels default(none) async
    117127  DO k = 1, limhau
    118128    DO i = 1, klon
     
    121131    END DO
    122132  END DO
     133  !$acc end kernels
    123134
    124135  ! FH : les d_q et d_t sont maintenant calcules de facon a valoir
     
    144155
    145156  IF (.NOT. mixq) THEN
     157    !$acc kernels default(none) async
    146158    DO k = 1, klev
    147159      DO i = 1, klon
     
    149161      END DO
    150162    END DO
     163    !$acc end kernels
    151164  END IF
     165  !$acc end data
    152166
    153167  RETURN
     168
    154169END SUBROUTINE ajsec
    155170
     
    187202  INTEGER i, k, k1, k2
    188203
     204  !$acc data create (zh, zq, zpk, zpkdp, modif) &
     205  !$acc & copyin (paprs, pplay, t , q) &
     206  !$acc & copyout (d_t, d_q)
     207
    189208  ! Initialisation:
    190209
     
    193212  limhau = klev
    194213
     214  !$acc kernels default(none) async
    195215  DO k = 1, klev
    196216    DO i = 1, klon
     
    199219    END DO
    200220  END DO
     221  !$acc end kernels
     222
    201223  ! ------------------------------------- detection des profils a modifier
     224  !$acc kernels default(none) async
    202225  DO k = limbas, limhau
    203226    DO i = 1, klon
     
    224247    END DO
    225248  END DO
     249  !$acc end kernels
    226250  ! ------------------------------------- correction des profils instables
     251  !$acc kernels default(none) async
    227252  DO i = 1, klon
    228253    IF (modif(i)) THEN
     
    267292    END IF
    268293  END DO
    269 
     294  !$acc end kernels
     295
     296  !$acc kernels default(none) async
    270297  DO k = limbas, limhau
    271298    DO i = 1, klon
     
    274301    END DO
    275302  END DO
     303  !$acc end kernels
    276304
    277305  IF (limbas>1) THEN
     306  !$acc kernels default(none) async
    278307    DO k = 1, limbas - 1
    279308      DO i = 1, klon
     
    282311      END DO
    283312    END DO
     313  !$acc end kernels
    284314  END IF
    285315
    286316  IF (limhau<klev) THEN
     317  !$acc kernels default(none) async
    287318    DO k = limhau + 1, klev
    288319      DO i = 1, klon
     
    291322      END DO
    292323    END DO
     324  !$acc end kernels
    293325  END IF
    294326
    295327  IF (.NOT. mixq) THEN
     328  !$acc kernels default(none) async
    296329    DO k = 1, klev
    297330      DO i = 1, klon
     
    299332      END DO
    300333    END DO
     334  !$acc end kernels
    301335  END IF
    302336
     337  !$acc end data
     338
    303339  RETURN
     340
     341
    304342END SUBROUTINE ajsec_convv2
    305343SUBROUTINE ajsec_old(paprs, pplay, t, d_t)
     
    324362  LOGICAL modif(klon), down
    325363  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
    326369  ! ------------------------------------- detection des profils a modifier
     370  !$acc kernels default(none) async
    327371  DO i = 1, klon
    328372    modif(i) = .FALSE.
     
    344388    END DO
    345389  END DO
     390  !$acc end kernels
    346391  ! ------------------------------------- correction des profils instables
     392  !$acc kernels default(none) async
    347393  DO i = 1, klon
    348394    IF (modif(i)) THEN
     
    387433    END IF
    388434  END DO
    389 
     435  !$acc end kernels
     436
     437  !$acc kernels default(none) async
    390438  DO l = 1, klev
    391439    DO i = 1, klon
     
    393441    END DO
    394442  END DO
     443  !$acc end kernels
     444  !$acc end data
    395445
    396446  RETURN
     447
     448
    397449END SUBROUTINE ajsec_old
Note: See TracChangeset for help on using the changeset viewer.