Ignore:
Timestamp:
Jan 17, 2017 4:38:49 PM (7 years ago)
Author:
raasch
Message:

all OpenACC directives and related parts removed from the code

File:
1 edited

Legend:

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

    r2101 r2118  
    2020! Current revisions:
    2121! -----------------
    22 !
     22! OpenACC directives and CUDA-fft related code removed
    2323!
    2424! Former revisions:
     
    3131! 1850 2016-04-08 13:29:27Z maronga
    3232! Module renamed
    33 !
    3433!
    3534! 1815 2016-04-06 13:49:59Z raasch
     
    139138        ONLY:  nx, ny, nz
    140139       
    141 #if defined( __cuda_fft )
    142     USE ISO_C_BINDING
    143 #elif defined( __fftw )
     140#if defined( __fftw )
    144141    USE, INTRINSIC ::  ISO_C_BINDING
    145142#endif
     
    192189    REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE ::  trig_yf  !<
    193190   
    194 #elif defined( __cuda_fft )
    195     INTEGER(C_INT), SAVE ::  plan_xf  !<
    196     INTEGER(C_INT), SAVE ::  plan_xi  !<
    197     INTEGER(C_INT), SAVE ::  plan_yf  !<
    198     INTEGER(C_INT), SAVE ::  plan_yi  !<
    199    
    200     INTEGER(iwp), SAVE   ::  total_points_x_transpo  !<
    201     INTEGER(iwp), SAVE   ::  total_points_y_transpo  !<
    202191#endif
    203192
     
    261250    SUBROUTINE fft_init
    262251
    263        USE cuda_fft_interfaces
    264 
    265252       IMPLICIT NONE
    266253
     
    338325          CALL ZDFFTM( 0, ny+1, nz1, sqr_dny, work_y, ny+4, work_y, ny+4,      &
    339326                       trig_yb, worky, 0 )
    340 #elif defined( __cuda_fft )
    341           total_points_x_transpo = (nx+1) * (nyn_x-nys_x+1) * (nzt_x-nzb_x+1)
    342           total_points_y_transpo = (ny+1) * (nxr_y-nxl_y+1) * (nzt_y-nzb_y+1)
    343           CALL CUFFTPLAN1D( plan_xf, nx+1, CUFFT_D2Z, (nyn_x-nys_x+1) * (nzt_x-nzb_x+1) )
    344           CALL CUFFTPLAN1D( plan_xi, nx+1, CUFFT_Z2D, (nyn_x-nys_x+1) * (nzt_x-nzb_x+1) )
    345           CALL CUFFTPLAN1D( plan_yf, ny+1, CUFFT_D2Z, (nxr_y-nxl_y+1) * (nzt_y-nzb_y+1) )
    346           CALL CUFFTPLAN1D( plan_yi, ny+1, CUFFT_Z2D, (nxr_y-nxl_y+1) * (nzt_y-nzb_y+1) )
    347327#else
    348328          message_string = 'no system-specific fft-call available'
     
    403383
    404384
    405        USE cuda_fft_interfaces
    406 #if defined( __cuda_fft )
    407        USE ISO_C_BINDING
    408 #endif
    409 
    410385       IMPLICIT NONE
    411386
     
    429404#elif defined( __nec )
    430405       REAL(wp), DIMENSION(6*(nx+1)) ::  work2  !<
    431 #elif defined( __cuda_fft )
    432        COMPLEX(dp), DIMENSION(0:(nx+1)/2,nys_x:nyn_x,nzb_x:nzt_x) ::           &
    433           ar_tmp  !<
    434        ! following does not work for PGI 14.1 -> to be removed later
    435        ! !$acc declare create( ar_tmp )
    436406#endif
    437407
     
    737707
    738708          ENDIF
    739 
    740 #elif defined( __cuda_fft )
    741 
    742           !$acc data create( ar_tmp )
    743           IF ( forward_fft )  THEN
    744 
    745              !$acc data present( ar )
    746              CALL CUFFTEXECD2Z( plan_xf, ar, ar_tmp )
    747 
    748              !$acc kernels
    749              DO  k = nzb_x, nzt_x
    750                 DO  j = nys_x, nyn_x
    751 
    752                    DO  i = 0, (nx+1)/2
    753                       ar(i,j,k)      = REAL( ar_tmp(i,j,k), KIND=wp )  * dnx
    754                    ENDDO
    755 
    756                    DO  i = 1, (nx+1)/2 - 1
    757                       ar(nx+1-i,j,k) = AIMAG( ar_tmp(i,j,k) ) * dnx
    758                    ENDDO
    759 
    760                 ENDDO
    761              ENDDO
    762              !$acc end kernels
    763              !$acc end data
    764 
    765           ELSE
    766 
    767              !$acc data present( ar )
    768              !$acc kernels
    769              DO  k = nzb_x, nzt_x
    770                 DO  j = nys_x, nyn_x
    771 
    772                    ar_tmp(0,j,k) = CMPLX( ar(0,j,k), 0.0_wp, KIND=wp )
    773 
    774                    DO  i = 1, (nx+1)/2 - 1
    775                       ar_tmp(i,j,k) = CMPLX( ar(i,j,k), ar(nx+1-i,j,k),        &
    776                                              KIND=wp )
    777                    ENDDO
    778                    ar_tmp((nx+1)/2,j,k) = CMPLX( ar((nx+1)/2,j,k), 0.0_wp,     &
    779                                                  KIND=wp )
    780 
    781                 ENDDO
    782              ENDDO
    783              !$acc end kernels
    784 
    785              CALL CUFFTEXECZ2D( plan_xi, ar_tmp, ar )
    786              !$acc end data
    787 
    788           ENDIF
    789           !$acc end data
    790709
    791710#else
     
    1052971
    1053972
    1054        USE cuda_fft_interfaces
    1055 #if defined( __cuda_fft )
    1056        USE ISO_C_BINDING
    1057 #endif
    1058 
    1059973       IMPLICIT NONE
    1060974
     
    1082996#elif defined( __nec )
    1083997       REAL(wp), DIMENSION(6*(ny+1)) ::  work2  !<
    1084 #elif defined( __cuda_fft )
    1085        COMPLEX(dp), DIMENSION(0:(ny+1)/2,nxl_y:nxr_y,nzb_y:nzt_y) ::           &
    1086           ar_tmp  !<
    1087        ! following does not work for PGI 14.1 -> to be removed later
    1088        ! !$acc declare create( ar_tmp )
    1089998#endif
    1090999
     
    13641273
    13651274          ENDIF
    1366 #elif defined( __cuda_fft )
    1367 
    1368           !$acc data create( ar_tmp )
    1369           IF ( forward_fft )  THEN
    1370 
    1371              !$acc data present( ar )
    1372              CALL CUFFTEXECD2Z( plan_yf, ar, ar_tmp )
    1373 
    1374              !$acc kernels
    1375              DO  k = nzb_y, nzt_y
    1376                 DO  i = nxl_y, nxr_y
    1377 
    1378                    DO  j = 0, (ny+1)/2
    1379                       ar(j,i,k)      = REAL( ar_tmp(j,i,k), KIND=wp )  * dny
    1380                    ENDDO
    1381 
    1382                    DO  j = 1, (ny+1)/2 - 1
    1383                       ar(ny+1-j,i,k) = AIMAG( ar_tmp(j,i,k) ) * dny
    1384                    ENDDO
    1385 
    1386                 ENDDO
    1387              ENDDO
    1388              !$acc end kernels
    1389              !$acc end data
    1390 
    1391           ELSE
    1392 
    1393              !$acc data present( ar )
    1394              !$acc kernels
    1395              DO  k = nzb_y, nzt_y
    1396                 DO  i = nxl_y, nxr_y
    1397 
    1398                    ar_tmp(0,i,k) = CMPLX( ar(0,i,k), 0.0_wp, KIND=wp )
    1399 
    1400                    DO  j = 1, (ny+1)/2 - 1
    1401                       ar_tmp(j,i,k) = CMPLX( ar(j,i,k), ar(ny+1-j,i,k),        &
    1402                                              KIND=wp )
    1403                    ENDDO
    1404                    ar_tmp((ny+1)/2,i,k) = CMPLX( ar((ny+1)/2,i,k), 0.0_wp,     &
    1405                                                  KIND=wp )
    1406 
    1407                 ENDDO
    1408              ENDDO
    1409              !$acc end kernels
    1410 
    1411              CALL CUFFTEXECZ2D( plan_yi, ar_tmp, ar )
    1412              !$acc end data
    1413 
    1414           ENDIF
    1415           !$acc end data
    1416 
    14171275#else
    14181276          message_string = 'no system-specific fft-call available'
Note: See TracChangeset for help on using the changeset viewer.