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/transpose.f90

    r1217 r1257  
    2020! Current revisions:
    2121! -----------------
    22 !
     22! openacc loop and loop vector clauses removed
    2323!
    2424! Former revisions:
     
    9797    !$OMP  DO
    9898    !$acc kernels present( f_in, f_inv )
    99     !$acc loop
    10099     DO  i = 0, nx
    101100         DO  k = nzb_x, nzt_x
    102              !$acc loop vector( 32 )
    103101             DO  j = nys_x, nyn_x
    104102                 f_inv(j,k,i) = f_in(i,j,k)
     
    158156          ys = 0 + l * ( nyn_x - nys_x + 1 )
    159157          !$acc kernels present( f_out, work )
    160           !$acc loop
    161158          DO  i = nxl_y, nxr_y
    162159             DO  k = nzb_y, nzt_y
    163                 !$acc loop vector( 32 )
    164160                DO  j = ys, ys + nyn_x - nys_x
    165161                   f_out(j,i,k) = work(j-ys+1,k,i,l)
     
    180176!$OMP  DO
    181177       !$acc kernels present( f_inv, f_out )
    182        !$acc loop
    183178       DO  k = nzb_y, nzt_y
    184179          DO  i = nxl_y, nxr_y
    185              !$acc loop vector( 32 )
    186180             DO  j = 0, ny
    187181                f_out(j,i,k) = f_inv(j,k,i)
     
    225219    !$OMP  DO
    226220    !$acc kernels present( f_inv, f_out )
    227     !$acc loop
    228221     DO  k = 1, nz
    229222         DO  i = nxl, nxr
    230              !$acc loop vector( 32 )
    231223             DO  j = nys, nyn
    232224                 f_out(k,j,i) = f_inv(j,i,k)
     
    279271          xs = 0 + l * nnx
    280272          !$acc kernels present( f_in, work )
    281           !$acc loop
    282273          DO  k = nzb_x, nzt_x
    283274             DO  i = xs, xs + nnx - 1
    284                 !$acc loop vector( 32 )
    285275                DO  j = nys_x, nyn_x
    286276                   work(j,i-xs+1,k,l) = f_in(i,j,k)
     
    311301!$OMP  DO
    312302       !$acc kernels present( f_in, f_inv )
    313        !$acc loop
    314303       DO  i = nxl, nxr
    315304          DO  j = nys, nyn
    316              !$acc loop vector( 32 )
    317305             DO  k = 1, nz
    318306                f_inv(j,i,k) = f_in(i,j,k)
     
    354342    !$OMP  DO
    355343    !$acc kernels present( f_inv, f_out )
    356     !$acc loop
    357344     DO  i = 0, nx
    358345         DO  k = nzb_x, nzt_x
    359              !$acc loop vector( 32 )
    360346             DO  j = nys_x, nyn_x
    361347                 f_out(i,j,k) = f_inv(j,k,i)
     
    405391          ys = 0 + l * ( nyn_x - nys_x + 1 )
    406392          !$acc kernels present( f_in, work )
    407           !$acc loop
    408393          DO  i = nxl_y, nxr_y
    409394             DO  k = nzb_y, nzt_y
    410                 !$acc loop vector( 32 )
    411395                DO  j = ys, ys + nyn_x - nys_x
    412396                   work(j-ys+1,k,i,l) = f_in(j,i,k)
     
    437421!$OMP  DO
    438422       !$acc kernels present( f_in, f_inv )
    439        !$acc loop
    440423       DO  i = nxl_y, nxr_y
    441424          DO  k = nzb_y, nzt_y
    442              !$acc loop vector( 32 )
    443425             DO  j = 0, ny
    444426                f_inv(j,k,i) = f_in(j,i,k)
     
    548530    !$OMP  DO
    549531    !$acc kernels present( f_in, f_inv )
    550     !$acc loop
    551532     DO  j = 0, ny
    552533         DO  k = nzb_y, nzt_y
    553              !$acc loop vector( 32 )
    554534             DO  i = nxl_y, nxr_y
    555535                 f_inv(i,k,j) = f_in(j,i,k)
     
    596576!$OMP  DO
    597577       !$acc kernels present( f_inv, f_out )
    598        !$acc loop
    599578       DO  j = 0, ny
    600579          DO  k = nzb_y, nzt_y
    601              !$acc loop vector( 32 )
    602580             DO  i = nxl_y, nxr_y
    603581                f_out(i,j,k) = f_inv(i,k,j)
     
    629607          zs = 1 + l * ( nzt_y - nzb_y + 1 )
    630608          !$acc kernels present( f_out )
    631           !$acc loop
    632609          DO  j = nys_z, nyn_z
    633610             DO  k = zs, zs + nzt_y - nzb_y
    634                 !$acc loop vector( 32 )
    635611                DO  i = nxl_z, nxr_z
    636612                   f_out(i,j,k) = work(i,k-zs+1,j,l)
     
    675651    !$OMP  DO
    676652    !$acc kernels present( f_in, f_inv )
    677     !$acc loop
    678653     DO  k = 1,nz
    679654         DO  i = nxl, nxr
    680              !$acc loop vector( 32 )
    681655             DO  j = nys, nyn
    682656                 f_inv(j,i,k) = f_in(k,j,i)
     
    723697!$OMP  DO
    724698       !$acc kernels present( f_inv, f_out )
    725        !$acc loop
    726699       DO  k = 1, nz
    727700          DO  i = nxl, nxr
    728              !$acc loop vector( 32 )
    729701             DO  j = nys, nyn
    730702                f_out(i,j,k) = f_inv(j,i,k)
     
    756728          xs = 0 + l * nnx
    757729          !$acc kernels present( f_out )
    758           !$acc loop
    759730          DO  k = nzb_x, nzt_x
    760731             DO  i = xs, xs + nnx - 1
    761                 !$acc loop vector( 32 )
    762732                DO  j = nys_x, nyn_x
    763733                   f_out(i,j,k) = work(j,i-xs+1,k,l)
     
    802772    !$OMP  DO
    803773    !$acc kernels present( f_inv, f_out )
    804     !$acc loop
    805774     DO  k = nzb_y, nzt_y
    806775         DO  j = 0, ny
    807              !$acc loop vector( 32 )
    808776             DO  i = nxl_y, nxr_y
    809777                 f_out(j,i,k) = f_inv(i,k,j)
     
    856824          zs = 1 + l * ( nzt_y - nzb_y + 1 )
    857825          !$acc kernels present( f_in, work )
    858           !$acc loop
    859826          DO  j = nys_z, nyn_z
    860827             DO  k = zs, zs + nzt_y - nzb_y
    861                 !$acc loop vector( 32 )
    862828                DO  i = nxl_z, nxr_z
    863829                   work(i,k-zs+1,j,l) = f_in(i,j,k)
     
    887853!$OMP  DO
    888854       !$acc kernels present( f_in, f_inv )
    889        !$acc loop
    890855       DO  k = nzb_y, nzt_y
    891856          DO  j = 0, ny
    892              !$acc loop vector( 32 )
    893857             DO  i = nxl_y, nxr_y
    894858                f_inv(i,k,j) = f_in(i,j,k)
Note: See TracChangeset for help on using the changeset viewer.