Ignore:
Timestamp:
Jun 29, 2017 1:31:14 PM (4 years ago)
Author:
raasch
Message:

NEC related code partly removed, host variable partly removed, host specific code completely removed, default values for host, loop_optimization and termination time_needed changed

File:
1 edited

Legend:

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

    r2119 r2300  
    2525! -----------------
    2626! $Id$
     27! settings depending on host variable removed or replaced by loop_optimization
     28!
     29! 2119 2017-01-17 16:51:50Z raasch
    2730!
    2831! 2118 2017-01-17 16:38:49Z raasch
     
    715718    SUBROUTINE ffty_tr_yx( f_in, f_out )
    716719
    717 
    718720       USE control_parameters,                                                 &
    719            ONLY:  host
     721           ONLY:  loop_optimization
    720722
    721723       USE cpulog,                                                             &
     
    737739       INTEGER(iwp), PARAMETER ::  stridex = 4  !<
    738740
    739        REAL(wp), DIMENSION(0:ny,stridex)        ::  work_ffty      !<
    740 #if defined( __nec )
    741        REAL(wp), DIMENSION(0:ny+1,1:nz,nxl:nxr) ::  work_ffty_vec  !<
    742 #endif
    743741       REAL(wp), DIMENSION(1:nz,0:ny,nxl:nxr)             ::  f_in   !<
    744742       REAL(wp), DIMENSION(nnx,1:nz,nys_x:nyn_x,pdims(1)) ::  f_out  !<
    745743       REAL(wp), DIMENSION(nxl:nxr,1:nz,0:ny)             ::  work   !<
     744
     745       REAL(wp), DIMENSION(:,:), ALLOCATABLE   ::  work_ffty      !<
     746       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  work_ffty_vec  !<
    746747
    747748!
     
    751752       CALL cpu_log( log_point_s(7), 'fft_y_1d', 'start' )
    752753
    753        IF ( host(1:3) == 'nec' )  THEN
    754 #if defined( __nec )
     754       IF ( loop_optimization == 'vector' )  THEN
     755
     756          ALLOCATE( work_ffty_vec(0:ny+1,1:nz,nxl:nxr) )
    755757!
    756758!--       Code optimized for vector processors
    757 !$OMP    PARALLEL PRIVATE ( i, j, k )
    758 !$OMP    DO
     759          !$OMP PARALLEL PRIVATE ( i, j, k )
     760          !$OMP DO
    759761          DO  i = nxl, nxr
    760762
     
    769771          ENDDO
    770772
    771 !$OMP    DO
     773          !$OMP DO
    772774          DO  k = 1, nz
    773775             DO  j = 0, ny
     
    777779             ENDDO
    778780          ENDDO
    779 !$OMP     END PARALLEL
    780 #endif
     781          !$OMP END PARALLEL
     782
     783          DEALLOCATE( work_ffty_vec )
    781784
    782785       ELSE
    783 
    784786!
    785787!--       Cache optimized code.
     788          ALLOCATE( work_ffty(0:ny,stridex) )
     789!
    786790!--       The i-(x-)direction is split into a strided outer loop and an inner
    787791!--       loop for better cache performance
    788 !$OMP    PARALLEL PRIVATE (i,iend,iouter,ir,j,k,work_ffty)
    789 !$OMP    DO
     792          !$OMP PARALLEL PRIVATE (i,iend,iouter,ir,j,k,work_ffty)
     793          !$OMP DO
    790794          DO  iouter = nxl, nxr, stridex
    791795
     
    817821
    818822          ENDDO
    819 !$OMP     END PARALLEL
     823          !$OMP END PARALLEL
     824
     825          DEALLOCATE( work_ffty )
    820826
    821827       ENDIF
     828
    822829       CALL cpu_log( log_point_s(7), 'fft_y_1d', 'pause' )
    823830
     
    844851    SUBROUTINE tr_xy_ffty( f_in, f_out )
    845852
    846 
    847853       USE control_parameters,                                                 &
    848            ONLY:  host
     854           ONLY:  loop_optimization
    849855
    850856       USE cpulog,                                                             &
     
    866872       INTEGER(iwp), PARAMETER ::  stridex = 4  !<
    867873
    868        REAL(wp), DIMENSION(0:ny,stridex)        ::  work_ffty      !<
    869 #if defined( __nec )
    870        REAL(wp), DIMENSION(0:ny+1,1:nz,nxl:nxr) ::  work_ffty_vec  !<
    871 #endif
    872874       REAL(wp), DIMENSION(nnx,1:nz,nys_x:nyn_x,pdims(1)) ::  f_in   !<
    873875       REAL(wp), DIMENSION(1:nz,0:ny,nxl:nxr)             ::  f_out  !<
    874876       REAL(wp), DIMENSION(nxl:nxr,1:nz,0:ny)             ::  work   !<
     877
     878       REAL(wp), DIMENSION(:,:), ALLOCATABLE   ::  work_ffty         !<
     879       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  work_ffty_vec     !<
    875880
    876881!
     
    890895       CALL cpu_log( log_point_s(7), 'fft_y_1d', 'continue' )
    891896
    892        IF ( host(1:3) == 'nec' )  THEN
    893 #if defined( __nec )
     897       IF ( loop_optimization == 'vector' )  THEN
     898
     899          ALLOCATE( work_ffty_vec(0:ny+1,1:nz,nxl:nxr) )
    894900!
    895901!--       Code optimized for vector processors
    896 !$OMP    PARALLEL PRIVATE ( i, j, k )
    897 !$OMP    DO
     902          !$OMP PARALLEL PRIVATE ( i, j, k )
     903          !$OMP DO
    898904          DO  k = 1, nz
    899905             DO  j = 0, ny
     
    904910          ENDDO
    905911
    906 !$OMP    DO
     912          !$OMP DO
    907913          DO  i = nxl, nxr
    908914
     
    916922
    917923          ENDDO
    918 !$OMP     END PARALLEL
    919 #endif
     924          !$OMP END PARALLEL
     925
     926          DEALLOCATE( work_ffty_vec )
    920927
    921928       ELSE
    922 
    923929!
    924930!--       Cache optimized code.
     931          ALLOCATE( work_ffty(0:ny,stridex) )
     932!
    925933!--       The i-(x-)direction is split into a strided outer loop and an inner
    926934!--       loop for better cache performance
    927 !$OMP    PARALLEL PRIVATE ( i, iend, iouter, ir, j, k, work_ffty )
    928 !$OMP    DO
     935          !$OMP PARALLEL PRIVATE ( i, iend, iouter, ir, j, k, work_ffty )
     936          !$OMP DO
    929937          DO  iouter = nxl, nxr, stridex
    930938
     
    955963
    956964          ENDDO
    957 !$OMP     END PARALLEL
     965          !$OMP END PARALLEL
     966
     967          DEALLOCATE( work_ffty )
    958968
    959969       ENDIF
     
    976986    SUBROUTINE fftx_tri_fftx( ar )
    977987
    978 
    979988       USE control_parameters,                                                 &
    980            ONLY:  host
     989           ONLY:  loop_optimization
    981990
    982991       USE cpulog,                                                             &
     
    10161025!$        tn = omp_get_thread_num()
    10171026
    1018           IF ( host(1:3) == 'nec' )  THEN
     1027          IF ( loop_optimization == 'vector' )  THEN
    10191028!
    10201029!--          Code optimized for vector processors
     
    10601069          CALL tridia_1dd( ddx2, ddy2, nx, ny, j, work_trix, tri(:,:,:,tn) )
    10611070
    1062           IF ( host(1:3) == 'nec' )  THEN
     1071          IF ( loop_optimization == 'vector' )  THEN
    10631072!
    10641073!--          Code optimized for vector processors
     
    11231132
    11241133       USE control_parameters,                                                 &
    1125            ONLY:  host
     1134           ONLY:  loop_optimization
    11261135
    11271136       USE cpulog,                                                             &
     
    11491158       CALL cpu_log( log_point_s(4), 'fft_x_1d', 'start' )
    11501159
    1151        IF ( host(1:3) == 'nec' )  THEN
     1160       IF ( loop_optimization == 'vector' )  THEN
    11521161!
    11531162!--       Code for vector processors
     
    12361245
    12371246       USE control_parameters,                                                 &
    1238            ONLY:  host
     1247           ONLY:  loop_optimization
    12391248
    12401249       USE cpulog,                                                             &
     
    12731282       CALL cpu_log( log_point_s(4), 'fft_x_1d', 'continue' )
    12741283
    1275        IF ( host(1:3) == 'nec' )  THEN
     1284       IF ( loop_optimization == 'vector' )  THEN
    12761285!
    12771286!--       Code optimized for vector processors
     
    13491358
    13501359       USE control_parameters,                                                 &
    1351            ONLY:  host
     1360           ONLY:  loop_optimization
    13521361
    13531362       USE cpulog,                                                             &
     
    13871396!$        tn = omp_get_thread_num()
    13881397
    1389           IF ( host(1:3) == 'nec' )  THEN
     1398          IF ( loop_optimization == 'vector' )  THEN
    13901399!
    13911400!--          Code optimized for vector processors
     
    14311440          CALL tridia_1dd( ddy2, ddx2, ny, nx, i, work_triy, tri(:,:,:,tn) )
    14321441
    1433           IF ( host(1:3) == 'nec' )  THEN
     1442          IF ( loop_optimization == 'vector' )  THEN
    14341443!
    14351444!--          Code optimized for vector processors
Note: See TracChangeset for help on using the changeset viewer.