Changeset 1153


Ignore:
Timestamp:
May 10, 2013 2:33:08 PM (11 years ago)
Author:
raasch
Message:

code adjustment of accelerator version for PGI 12.3 / CUDA 5.0

Location:
palm/trunk/SOURCE
Files:
5 edited

Legend:

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

    r1132 r1153  
    2020! Currrent revisions:
    2121! -----------------
    22 !
     22! code adjustment of accelerator version for PGI 12.3 / CUDA 5.0
    2323!
    2424! Former revisions:
     
    238238             DO  i = i_left, i_right
    239239                DO  j = j_south, j_north
    240                    !$acc loop vector(32)
    241                    DO  k = 1, nzt-1
    242                       IF ( k > nzb_s_inner(j,i) )  THEN
    243                          tend(k,j,i) = tend(k,j,i) + atmos_ocean_sign * g * 0.5 * &
    244                                                                (                  &
    245                              ( var(k,j,i)   - hom(k,1,pr,0)   ) / hom(k,1,pr,0) + &
    246                              ( var(k+1,j,i) - hom(k+1,1,pr,0) ) / hom(k+1,1,pr,0) &
    247                                                                )
    248                       ENDIF
     240                   !$acc loop independent vector(32)
     241                   DO  k = nzb_s_inner(j,i)+1, nzt-1
     242                      tend(k,j,i) = tend(k,j,i) + atmos_ocean_sign * g * 0.5 * &
     243                                                            (                  &
     244                          ( var(k,j,i)   - hom(k,1,pr,0)   ) / hom(k,1,pr,0) + &
     245                          ( var(k+1,j,i) - hom(k+1,1,pr,0) ) / hom(k+1,1,pr,0) &
     246                                                            )
    249247                   ENDDO
    250248                ENDDO
  • palm/trunk/SOURCE/cuda_fft_interfaces.f90

    r1112 r1153  
    2020! Current revisions:
    2121! -----------------
    22 !
     22! code adjustment of data types for CUDA fft required by PGI 12.3 / CUDA 5.0
    2323!
    2424! Former revisions:
     
    8787
    8888          USE ISO_C_BINDING
    89           USE precision_kind
    9089
    91           INTEGER(C_INT), value ::  plan
    92           COMPLEX(dpk), device ::  idata(:,:,:)
    93           REAL(dpk), device     ::  odata(:,:,:)
     90          INTEGER(C_INT)            ::  plan
     91          COMPLEX(C_DOUBLE_COMPLEX) ::  idata(:,:,:)
     92          REAL(C_DOUBLE)            ::  odata(:,:,:)
    9493
    9594       END SUBROUTINE CUFFTEXECZ2D
     
    103102
    104103          USE ISO_C_BINDING
    105           USE precision_kind
    106104
    107           INTEGER(C_INT), value ::  plan
    108           REAL(dpk), device     ::  idata(:,:,:)
    109           COMPLEX(dpk), device ::  odata(:,:,:)
     105          INTEGER(C_INT)            ::  plan
     106          REAL(C_DOUBLE)            ::  idata(:,:,:)
     107          COMPLEX(C_DOUBLE_COMPLEX) ::  odata(:,:,:)
    110108
    111109       END SUBROUTINE CUFFTEXECD2Z
  • palm/trunk/SOURCE/fft_xy.f90

    r1112 r1153  
    2020! Current revisions:
    2121! -----------------
    22 !
     22! code adjustment of data types for CUDA fft required by PGI 12.3 / CUDA 5.0
    2323!
    2424! Former revisions:
     
    7474    USE control_parameters
    7575    USE indices
     76#if defined( __cuda_fft )
     77    USE ISO_C_BINDING
     78#endif
    7679    USE precision_kind
    7780    USE singleton
     
    102105                                              trig_yf
    103106#elif defined( __cuda_fft )
    104     INTEGER, SAVE ::  plan_xf, plan_xi, plan_yf, plan_yi, total_points_x_transpo, &
    105                       total_points_y_transpo
     107    INTEGER(C_INT), SAVE ::  plan_xf, plan_xi, plan_yf, plan_yi
     108    INTEGER, SAVE        ::  total_points_x_transpo, total_points_y_transpo
    106109#endif
    107110
     
    262265
    263266       USE cuda_fft_interfaces
     267#if defined( __cuda_fft )
     268       USE ISO_C_BINDING
     269#endif
    264270
    265271       IMPLICIT NONE
     
    279285#elif defined( __cuda_fft )
    280286       !$acc declare create( ar_tmp )
    281        COMPLEX(dpk), DIMENSION(0:(nx+1)/2,nys_x:nyn_x,nzb_x:nzt_x) ::  ar_tmp
     287       COMPLEX(C_DOUBLE_COMPLEX), DIMENSION(0:(nx+1)/2,nys_x:nyn_x,nzb_x:nzt_x) ::  ar_tmp
    282288#endif
    283289       REAL, DIMENSION(0:nx,nys_x:nyn_x,nzb_x:nzt_x) ::  ar
     
    770776
    771777       USE cuda_fft_interfaces
     778#if defined( __cuda_fft )
     779       USE ISO_C_BINDING
     780#endif
    772781
    773782       IMPLICIT NONE
     
    787796#elif defined( __cuda_fft )
    788797       !$acc declare create( ar_tmp )
    789        COMPLEX(dpk), DIMENSION(0:(ny+1)/2,nxl_y:nxr_y,nzb_y:nzt_y) ::  ar_tmp
     798       COMPLEX(C_DOUBLE_COMPLEX), DIMENSION(0:(ny+1)/2,nxl_y:nxr_y,nzb_y:nzt_y) ::  ar_tmp
    790799#endif
    791800       REAL, DIMENSION(0:ny,nxl_y:nxr_y,nzb_y:nzt_y) ::  ar
  • palm/trunk/SOURCE/init_3d_model.f90

    r1116 r1153  
    2323! Current revisions:
    2424! ------------------
    25 !
     25! diss array is allocated with dummy elements even if it is not needed
     26! (required by PGI 12.3 / CUDA 5.0)
    2627!
    2728! Former revisions:
     
    501502!-- particle velocities
    502503    IF ( use_sgs_for_particles  .OR.  wang_kernel  .OR.  turbulence )  THEN
    503        ALLOCATE ( diss(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     504       ALLOCATE( diss(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     505    ELSE
     506       ALLOCATE( diss(2,2,2) )
    504507    ENDIF
    505508
  • palm/trunk/SOURCE/wall_fluxes.f90

    r1132 r1153  
    2020! Current revisions:
    2121! -----------------
    22 !
     22! code adjustment of accelerator version for PGI 12.3 / CUDA 5.0
    2323!
    2424! Former revisions:
     
    259259       !$acc kernels present( hom, nzb_uvw_inner, nzb_uvw_outer, pt, rif_wall ) &
    260260       !$acc         present( u, v, w, wall, wall_flux, z0 )
    261        !$acc loop
     261       !$acc loop independent
    262262       DO  i = i_left, i_right
    263263          DO  j = j_south, j_north
    264              !$acc loop vector( 32 )
    265              DO  k = min_inner, max_outer
     264
     265             IF ( wall(j,i) /= 0.0 )  THEN
    266266!
    267267!--             All subsequent variables are computed for the respective
    268268!--             location where the respective flux is defined.
    269                 IF ( k >= nzb_uvw_inner(j,i)+1  .AND. &
    270                      k <= nzb_uvw_outer(j,i)    .AND.  wall(j,i) /= 0.0 )  THEN
     269                !$acc loop independent vector( 32 )
     270                DO  k = nzb_uvw_inner(j,i)+1, nzb_uvw_outer(j,i)
     271
    271272!
    272273!--                (1) Compute rifs, u_i, v_i, ws, pt' and w'pt'
     
    365366                   rif_wall(k,j,i,wall_index) = rifs
    366367
    367                 ENDIF
    368 
    369              ENDDO
     368!                ENDIF
     369
     370                ENDDO
     371
     372             ENDIF
     373
    370374          ENDDO
    371375       ENDDO
Note: See TracChangeset for help on using the changeset viewer.