Ignore:
Timestamp:
Nov 8, 2013 3:18:40 PM (8 years ago)
Author:
raasch
Message:

New:
---

openACC porting of timestep calculation
(modules, timestep, time_integration)

Changed:


openACC loop directives and vector clauses removed (because they do not give any performance improvement with PGI
compiler versions > 13.6)
(advec_ws, buoyancy, coriolis, diffusion_e, diffusion_s, diffusion_u, diffusion_v, diffusion_w, diffusivities, exchange_horiz, fft_xy, pres, production_e, transpose, tridia_solver, wall_fluxes)

openACC loop independent clauses added
(boundary_conds, prandtl_fluxes, pres)

openACC declare create statements moved after FORTRAN declaration statement
(diffusion_u, diffusion_v, diffusion_w, fft_xy, poisfft, production_e, tridia_solver)

openACC end parallel replaced by end parallel loop
(flow_statistics, pres)

openACC "kernels do" replaced by "kernels loop"
(prandtl_fluxes)

output format for theta* changed to avoid output of *
(run_control)

Errors:


bugfix for calculation of advective timestep (old version may cause wrong timesteps in case of
vertixcally stretched grids)
Attention: standard run-control output has changed!
(timestep)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/tridia_solver.f90

    r1222 r1257  
    2020! Current revisions:
    2121! ------------------
    22 !
     22! openacc loop and loop vector clauses removed, declare create moved after
     23! the FORTRAN declaration statement
    2324!
    2425! Former revisions:
     
    114115          INTEGER ::  i, j, k, nnxh, nnyh
    115116
     117          REAL    ::  ll(nxl_z:nxr_z,nys_z:nyn_z)
    116118          !$acc declare create( ll )
    117           REAL    ::  ll(nxl_z:nxr_z,nys_z:nyn_z)
    118119
    119120
     
    130131
    131132          !$acc kernels present( tric )
    132           !$acc loop vector( 32 )
    133133          DO  j = nys_z, nyn_z
    134134             DO  i = nxl_z, nxr_z
     
    161161          ENDDO
    162162
    163           !$acc loop
    164163          DO  k = 0, nz-1
    165164             DO  j = nys_z, nyn_z
    166                 !$acc loop vector( 32 )
    167165                DO  i = nxl_z, nxr_z
    168166                   tric(i,j,k) = ddzuw(k,3) - ll(i,j)
     
    174172          IF ( ibc_p_b == 1 )  THEN
    175173             !$acc kernels present( tric )
    176              !$acc loop
    177174             DO  j = nys_z, nyn_z
    178175                DO  i = nxl_z, nxr_z
     
    184181          IF ( ibc_p_t == 1 )  THEN
    185182             !$acc kernels present( tric )
    186              !$acc loop
    187183             DO  j = nys_z, nyn_z
    188184                DO  i = nxl_z, nxr_z
     
    211207          REAL    ::  ar(nxl_z:nxr_z,nys_z:nyn_z,1:nz)
    212208
     209          REAL, DIMENSION(nxl_z:nxr_z,nys_z:nyn_z,0:nz-1)   ::  ar1
    213210          !$acc declare create( ar1 )
    214           REAL, DIMENSION(nxl_z:nxr_z,nys_z:nyn_z,0:nz-1)   ::  ar1
    215211
    216212!
     
    218214          DO  k = 0, nz - 1
    219215             !$acc kernels present( ar, tri )
    220              !$acc loop
    221216             DO  j = nys_z, nyn_z
    222217                DO  i = nxl_z, nxr_z
     
    240235          DO  k = nz-1, 0, -1
    241236             !$acc kernels present( ar, tri )
    242              !$acc loop
    243237             DO  j = nys_z, nyn_z
    244238                DO  i = nxl_z, nxr_z
     
    265259                   ar(nxl_z,nys_z,k) = 0.0
    266260                ENDDO
     261                !$acc end kernels loop
    267262             ENDIF
    268263          ENDIF
Note: See TracChangeset for help on using the changeset viewer.