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

    r1222 r1257  
    2020! Current revisions:
    2121! ------------------
    22 !
     22! openacc loop and loop vector clauses removed, independent clauses added,
     23! end parallel replaced by end parallel loop
    2324!
    2425! Former revisions:
     
    321322       !$OMP PARALLEL DO SCHEDULE( STATIC )
    322323       !$acc kernels present( d )
    323        !$acc loop
    324324       DO  i = nxl, nxr
    325325          DO  j = nys, nyn
    326              !$acc loop vector(32)
    327326             DO  k = nzb+1, nzt
    328327                d(k,j,i) = 0.0
     
    391390       ENDDO
    392391    ENDDO
    393     !$acc end parallel
     392    !$acc end parallel loop
    394393    localsum = localsum + threadsum * dt_3d * &
    395394                          weight_pres(intermediate_timestep_count)
     
    421420       !$OMP PARALLEL DO
    422421       !$acc kernels present( d, tend )
    423        !$acc loop
    424422       DO  i = nxl, nxr
    425423          DO  j = nys, nyn
    426              !$acc loop vector( 32 )
    427424             DO  k = nzb+1, nzt
    428425                tend(k,j,i) = d(k,j,i)
     
    558555       !$OMP DO
    559556       !$acc kernels present( p, tend, weight_substep )
    560        !$acc loop
     557       !$acc loop independent
    561558       DO  i = nxl-1, nxr+1
     559          !$acc loop independent
    562560          DO  j = nys-1, nyn+1
    563              !$acc loop vector( 32 )
     561             !$acc loop independent
    564562             DO  k = nzb, nzt+1
    565563                p(k,j,i) = tend(k,j,i) * &
     
    575573       !$OMP DO
    576574       !$acc kernels present( p, tend, weight_substep )
    577        !$acc loop
     575       !$acc loop independent
    578576       DO  i = nxl-1, nxr+1
     577          !$acc loop independent
    579578          DO  j = nys-1, nyn+1
    580              !$acc loop vector( 32 )
     579             !$acc loop independent
    581580             DO  k = nzb, nzt+1
    582581                p(k,j,i) = p(k,j,i) + tend(k,j,i) * &
     
    605604    !$OMP DO
    606605    !$acc kernels present( ddzu, nzb_u_inner, nzb_v_inner, nzb_w_inner, tend, u, v, w, weight_pres )
    607     !$acc loop
     606    !$acc loop independent
    608607    DO  i = nxl, nxr   
    609        DO  j = nys, nyn
    610           !$acc loop vector( 32 )
     608       !$acc loop independent
     609       DO  j = nys, nyn
     610          !$acc loop independent
    611611          DO  k = 1, nzt
    612612             IF ( k > nzb_w_inner(j,i) )  THEN
     
    616616             ENDIF
    617617          ENDDO
    618           !$acc loop vector( 32 )
     618          !$acc loop independent
    619619          DO  k = 1, nzt
    620620             IF ( k > nzb_u_inner(j,i) )  THEN
     
    624624             ENDIF
    625625          ENDDO
    626           !$acc loop vector( 32 )
     626          !$acc loop independent
    627627          DO  k = 1, nzt
    628628             IF ( k > nzb_v_inner(j,i) )  THEN
     
    773773       ENDDO
    774774    ENDDO
    775     !$acc end parallel
     775    !$acc end parallel loop
    776776#endif
    777777
Note: See TracChangeset for help on using the changeset viewer.