Changeset 1749 for palm/trunk


Ignore:
Timestamp:
Feb 9, 2016 12:19:56 PM (9 years ago)
Author:
raasch
Message:

further OpenACC adjustments and one bugfix

Location:
palm/trunk/SOURCE
Files:
2 edited

Legend:

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

    r1683 r1749  
    1919! Current revisions:
    2020! -----------------
    21 !
     21! small OpenACC bugfix
    2222!
    2323! Former revisions:
     
    10721072          ar_tmp  !<
    10731073       ! following does not work for PGI 14.1 -> to be removed later
    1074        !$acc declare create( ar_tmp )
     1074       ! !$acc declare create( ar_tmp )
    10751075#endif
    10761076
  • palm/trunk/SOURCE/surface_layer_fluxes.f90

    r1748 r1749  
    1919! Current revisions:
    2020! ------------------
    21 !
     21! further OpenACC adjustments
    2222!
    2323! Former revisions:
     
    512512
    513513          !$OMP PARALLEL DO PRIVATE( k, z_mo )
    514           !# WARNING: does not work on GPU so far
     514          !# WARNING: does not work on GPU so far because of DO-loop with
     515          !#          undetermined iterations
    515516          !!!!!!$acc kernels loop
    516517          DO  i = nxl, nxr
     
    632633
    633634          !$OMP PARALLEL DO PRIVATE( k, z_mo )
    634           !# WARNING: does not work on GPU so far
     635          !# WARNING: does not work on GPU so far because of DO WHILE construct
    635636          !!!!!!$acc kernels loop
    636637          DO  i = nxl, nxr
     
    726727
    727728       !$OMP PARALLEL DO PRIVATE( k, z_mo )
    728        ! ### WARNING: does not work on GPU because of function calls
    729        !!!!!$acc kernels loop
    730        !$acc update host( ol, uv_total )
     729       !$acc kernels loop present( nzb_s_inner, ol, us, uv_total, zu, zw, z0 ) private( j, k, z_mo )
    731730       DO  i = nxlg, nxrg
    732731          DO  j = nysg, nyng
     
    742741          ENDDO
    743742       ENDDO
    744        !$acc update device( us )
    745743
    746744    END SUBROUTINE calc_us
     
    808806
    809807          !$OMP PARALLEL DO PRIVATE( k, z_mo )
    810           ! ### WARNING: leads to severe compile error
    811           !!!!$acc kernels loop
     808          !$acc kernels loop present( nzb_s_inner, ol, pt, pt1, ts, zu, zw, z0h ) private( j, k, z_mo )
    812809          DO  i = nxlg, nxrg
    813810             DO  j = nysg, nyng
     
    862859
    863860             !$OMP PARALLEL DO PRIVATE( e_s, k, z_mo )
    864              ! ### WARNING: leads to severe compile error
    865              !!!!$acc kernels loop independent
     861             !$acc kernels loop independent present( nzb_s_inner, ol, pt, q, qs, qv1, zu, zw, z0h ) private( e_s, j, k, z_mo )
    866862             DO  i = nxlg, nxrg
    867                 !!!!$acc loop independent
     863                !$acc loop independent
    868864                DO  j = nysg, nyng
    869865
     
    905901
    906902          !$OMP PARALLEL DO PRIVATE( k, z_mo )
    907           ! ### WARNING: leads to severe compile error
    908           !!!!!$acc kernels loop independent
     903          !$acc kernels loop independent present( nr, nrs, nzb_s_inner, ol, qr, qrs, zu, zw, z0h ) private( j, k, z_mo )
    909904          DO  i = nxlg, nxrg
    910              !!!!$acc loop independent
     905             !$acc loop independent
    911906             DO  j = nysg, nyng
    912907
     
    914909                z_mo = zu(k+1) - zw(k)
    915910
    916                    qrs(j,i) = kappa * ( qr(k+1,j,i) - qr(k,j,i) )              &
    917                                      / ( LOG( z_mo / z0h(j,i) )                &
    918                                          - psi_h( z_mo / ol(j,i) )             &
    919                                          + psi_h( z0h(j,i) / ol(j,i) ) )
    920 
    921                    nrs(j,i) = kappa * ( nr(k+1,j,i) - nr(k,j,i) )              &
    922                                      / ( LOG( z_mo / z0h(j,i) )                &
    923                                          - psi_h( z_mo / ol(j,i) )             &
    924                                          + psi_h( z0h(j,i) / ol(j,i) ) )
     911                qrs(j,i) = kappa * ( qr(k+1,j,i) - qr(k,j,i) )              &
     912                                 / ( LOG( z_mo / z0h(j,i) )                 &
     913                                     - psi_h( z_mo / ol(j,i) )              &
     914                                     + psi_h( z0h(j,i) / ol(j,i) ) )
     915
     916                nrs(j,i) = kappa * ( nr(k+1,j,i) - nr(k,j,i) )              &
     917                                 / ( LOG( z_mo / z0h(j,i) )                 &
     918                                     - psi_h( z_mo / ol(j,i) )              &
     919                                     + psi_h( z0h(j,i) / ol(j,i) ) )
    925920             ENDDO
    926921          ENDDO
     
    945940!--    First compute the corresponding component of u* and square it.
    946941       !$OMP PARALLEL DO PRIVATE( k, ol_mid, z_mo )
    947        ! ### WARNING: leads to severe compile error
    948        !!!!!$acc kernels loop
    949        !$acc update host( ol, u, us, v )
     942       !$acc kernels loop present( nzb_u_inner, ol, u, us, usws, zu, zw, z0 ) private( j, k, z_mo )
    950943       DO  i = nxl, nxr
    951944          DO  j = nys, nyn
     
    974967!--    First compute the corresponding component of u* and square it.
    975968       !$OMP PARALLEL DO PRIVATE( k, ol_mid, z_mo )
    976        ! ### WARNING: leads to severe compile error
    977        !!!!!!$acc kernels loop
     969       !$acc kernels loop present( nzb_v_inner, ol, v, us, vsws, zu, zw, z0 ) private( j, k, ol_mid, z_mo )
    978970       DO  i = nxl, nxr
    979971          DO  j = nys, nyn
     
    1001993!
    1002994!--    Exchange the boundaries for the momentum fluxes (is this still required?)
    1003        !!!!!!!!$acc update host( usws, vsws )
     995       !$acc update host( usws, vsws )
    1004996       CALL exchange_horiz_2d( usws )
    1005997       CALL exchange_horiz_2d( vsws )
Note: See TracChangeset for help on using the changeset viewer.