MPITOOLS: Rewrite MPI support using Fortran 2008 interface.

Use procedure interfaces, remove unused variables, etc.

Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
This commit is contained in:
Grzegorz Kowal 2020-08-14 19:40:10 -03:00
parent 701bb6618b
commit c15378bddd
7 changed files with 330 additions and 1072 deletions

View File

@ -565,7 +565,7 @@ module boundaries
use equations , only : nf
#ifdef MPI
use mpitools , only : nproc, npairs, pairs
use mpitools , only : exchange_real_arrays
use mpitools , only : exchange_arrays
#endif /* MPI */
! local variables are not implicit by default
@ -595,7 +595,7 @@ module boundaries
#ifdef MPI
integer :: sproc = 0, rproc = 0
integer :: scount, rcount
integer :: l, p, iret
integer :: l, p
! local arrays
!
@ -962,8 +962,7 @@ module boundaries
!!
! exchange data
!
call exchange_real_arrays(rproc, p, size(sbuf), sbuf &
, size(rbuf), rbuf, iret)
call exchange_arrays(rproc, p, sbuf, rbuf)
!! PROCESS RECEIVED BLOCKS
!!
@ -1363,7 +1362,7 @@ module boundaries
use equations , only : nv
#ifdef MPI
use mpitools , only : nproc, npairs, pairs
use mpitools , only : exchange_real_arrays
use mpitools , only : exchange_arrays
#endif /* MPI */
! local variables are not implicit by default
@ -1392,7 +1391,7 @@ module boundaries
#ifdef MPI
integer :: sproc = 0, rproc = 0
integer :: scount, rcount
integer :: l, p, iret
integer :: l, p
! local arrays
!
@ -1617,8 +1616,7 @@ module boundaries
!!
! exchange data
!
call exchange_real_arrays(rproc, p, size(sbuf), sbuf &
, size(rbuf), rbuf, iret)
call exchange_arrays(rproc, p, sbuf, rbuf)
!! PROCESS RECEIVED BLOCKS
!!
@ -1726,7 +1724,7 @@ module boundaries
use equations , only : nv
#ifdef MPI
use mpitools , only : nproc, npairs, pairs
use mpitools , only : exchange_real_arrays
use mpitools , only : exchange_arrays
#endif /* MPI */
! local variables are not implicit by default
@ -1753,7 +1751,7 @@ module boundaries
#ifdef MPI
integer :: sproc = 0, rproc = 0
integer :: scount, rcount
integer :: l, p, iret
integer :: l, p
! local arrays
!
@ -1966,8 +1964,7 @@ module boundaries
!!
! exchange data
!
call exchange_real_arrays(rproc, p, size(sbuf), sbuf &
, size(rbuf), rbuf, iret)
call exchange_arrays(rproc, p, sbuf, rbuf)
!! PROCESS RECEIVED BLOCKS
!!
@ -2078,7 +2075,7 @@ module boundaries
use equations , only : nv
#ifdef MPI
use mpitools , only : nproc, npairs, pairs
use mpitools , only : exchange_real_arrays
use mpitools , only : exchange_arrays
#endif /* MPI */
! local variables are not implicit by default
@ -2107,7 +2104,7 @@ module boundaries
#ifdef MPI
integer :: sproc = 0, rproc = 0
integer :: scount, rcount
integer :: l, p, iret
integer :: l, p
! local arrays
!
@ -2359,8 +2356,7 @@ module boundaries
!!
! exchange data
!
call exchange_real_arrays(rproc, p, size(sbuf), sbuf &
, size(rbuf), rbuf, iret)
call exchange_arrays(rproc, p, sbuf, rbuf)
!! PROCESS RECEIVED BLOCKS
!!
@ -2502,7 +2498,7 @@ module boundaries
use equations , only : nv
#ifdef MPI
use mpitools , only : nproc, npairs, pairs
use mpitools , only : exchange_real_arrays
use mpitools , only : exchange_arrays
#endif /* MPI */
! local variables are not implicit by default
@ -2532,7 +2528,7 @@ module boundaries
#ifdef MPI
integer :: sproc = 0, rproc = 0
integer :: scount, rcount
integer :: l, p, iret
integer :: l, p
! local arrays
!
@ -2818,8 +2814,7 @@ module boundaries
!!
! exchange data
!
call exchange_real_arrays(rproc, p, size(sbuf), sbuf &
, size(rbuf), rbuf, iret)
call exchange_arrays(rproc, p, sbuf, rbuf)
!! PROCESS RECEIVED BLOCKS
!!
@ -2949,7 +2944,7 @@ module boundaries
use equations , only : nv
#ifdef MPI
use mpitools , only : nproc, npairs, pairs
use mpitools , only : exchange_real_arrays
use mpitools , only : exchange_arrays
#endif /* MPI */
! local variables are not implicit by default
@ -2979,7 +2974,7 @@ module boundaries
#ifdef MPI
integer :: sproc = 0, rproc = 0
integer :: scount, rcount
integer :: l, p, iret
integer :: l, p
! local arrays
!
@ -3243,8 +3238,7 @@ module boundaries
!!
! exchange data
!
call exchange_real_arrays(rproc, p, size(sbuf), sbuf &
, size(rbuf), rbuf, iret)
call exchange_arrays(rproc, p, sbuf, rbuf)
!! PROCESS RECEIVED BLOCKS
!!
@ -3379,7 +3373,7 @@ module boundaries
use equations , only : nv
#ifdef MPI
use mpitools , only : nproc, npairs, pairs
use mpitools , only : exchange_real_arrays
use mpitools , only : exchange_arrays
#endif /* MPI */
! local variables are not implicit by default
@ -3409,7 +3403,7 @@ module boundaries
#ifdef MPI
integer :: sproc = 0, rproc = 0
integer :: scount, rcount
integer :: l, p, iret
integer :: l, p
! local arrays
!
@ -3722,8 +3716,7 @@ module boundaries
!!
! exchange data
!
call exchange_real_arrays(rproc, p, size(sbuf), sbuf &
, size(rbuf), rbuf, iret)
call exchange_arrays(rproc, p, sbuf, rbuf)
!! PROCESS RECEIVED BLOCKS
!!
@ -3888,7 +3881,7 @@ module boundaries
use equations , only : nv
#ifdef MPI
use mpitools , only : nproc, npairs, pairs
use mpitools , only : exchange_real_arrays
use mpitools , only : exchange_arrays
#endif /* MPI */
! local variables are not implicit by default
@ -3914,7 +3907,7 @@ module boundaries
#ifdef MPI
integer :: sproc = 0, rproc = 0
integer :: scount, rcount
integer :: l, p, iret
integer :: l, p
! local arrays
!
@ -4167,8 +4160,7 @@ module boundaries
!!
! exchange data
!
call exchange_real_arrays(rproc, p, size(sbuf), sbuf &
, size(rbuf), rbuf, iret)
call exchange_arrays(rproc, p, sbuf, rbuf)
!! PROCESS RECEIVED BLOCKS
!!
@ -4281,7 +4273,7 @@ module boundaries
use equations , only : nv
#ifdef MPI
use mpitools , only : nproc, npairs, pairs
use mpitools , only : exchange_real_arrays
use mpitools , only : exchange_arrays
#endif /* MPI */
! local variables are not implicit by default
@ -4307,7 +4299,7 @@ module boundaries
#ifdef MPI
integer :: sproc = 0, rproc = 0
integer :: scount, rcount
integer :: l, p, iret
integer :: l, p
! local arrays
!
@ -4537,8 +4529,7 @@ module boundaries
!!
! exchange data
!
call exchange_real_arrays(rproc, p, size(sbuf), sbuf &
, size(rbuf), rbuf, iret)
call exchange_arrays(rproc, p, sbuf, rbuf)
!! PROCESS RECEIVED BLOCKS
!!
@ -4651,7 +4642,7 @@ module boundaries
use equations , only : nv
#ifdef MPI
use mpitools , only : nproc, npairs, pairs
use mpitools , only : exchange_real_arrays
use mpitools , only : exchange_arrays
#endif /* MPI */
! local variables are not implicit by default
@ -4677,7 +4668,7 @@ module boundaries
#ifdef MPI
integer :: sproc = 0, rproc = 0
integer :: scount, rcount
integer :: l, p, iret
integer :: l, p
! local arrays
!
@ -4907,8 +4898,7 @@ module boundaries
!!
! exchange data
!
call exchange_real_arrays(rproc, p, size(sbuf), sbuf &
, size(rbuf), rbuf, iret)
call exchange_arrays(rproc, p, sbuf, rbuf)
!! PROCESS RECEIVED BLOCKS
!!

View File

@ -67,7 +67,7 @@ program amun
use mesh , only : generate_mesh, store_mesh_stats
use mpitools , only : initialize_mpitools, finalize_mpitools
#ifdef MPI
use mpitools , only : bcast_integer_variable, reduce_sum_real_array
use mpitools , only : reduce_sum
#endif /* MPI */
use mpitools , only : master, nprocs, nproc, check_status
use operators , only : initialize_operators, finalize_operators
@ -898,7 +898,7 @@ program amun
#ifdef MPI
! sum up timers from all processes
!
call reduce_sum_real_array(ntimers, tm(:), status)
call reduce_sum(tm(1:ntimers))
#endif /* MPI */
! print timings only on master processor

View File

@ -509,7 +509,7 @@ module evolution
!
use equations , only : maxspeed, cmax, cmax2
#ifdef MPI
use mpitools , only : reduce_maximum_real, reduce_maximum_integer
use mpitools , only : reduce_maximum
#endif /* MPI */
! include external variables
@ -535,7 +535,7 @@ module evolution
! local variables
!
integer :: iret, mlev
integer :: mlev
real(kind=8) :: cm, dx_min
! local parameters
@ -585,8 +585,8 @@ module evolution
#ifdef MPI
! reduce maximum speed and level over all processors
!
call reduce_maximum_real (cmax, iret)
call reduce_maximum_integer(mlev, iret)
call reduce_maximum(cmax)
call reduce_maximum(mlev)
#endif /* MPI */
! calculate the squared cmax

View File

@ -1654,17 +1654,13 @@ module forcing
!
use blocks , only : block_data, list_data
#ifdef MPI
use mpitools, only : reduce_sum_complex_array
use mpitools, only : reduce_sum
#endif /* MPI */
! local variables are not implicit by default
!
implicit none
! local variables
!
integer :: status
! local pointers
!
type(block_data), pointer :: pdata
@ -1696,7 +1692,7 @@ module forcing
#ifdef MPI
! reduce velocity coefficients over all processes
!
call reduce_sum_complex_array(size(vcoefs), vcoefs, status)
call reduce_sum(vcoefs)
#endif /* MPI */
!-------------------------------------------------------------------------------

View File

@ -327,9 +327,7 @@ module integrals
use evolution , only : step, time, dtn
use forcing , only : einj, rinj, arms
#ifdef MPI
use mpitools , only : reduce_sum_real_array
use mpitools , only : reduce_minimum_real_array
use mpitools , only : reduce_maximum_real_array
use mpitools , only : reduce_minimum, reduce_maximum, reduce_sum
#endif /* MPI */
! local variables are not implicit by default
@ -338,7 +336,6 @@ module integrals
! local variables
!
integer :: iret
real(kind=8) :: dvol, dvolh
! local pointers
@ -567,13 +564,13 @@ module integrals
#ifdef MPI
! sum the integral array from all processes
!
call reduce_sum_real_array(narr, inarr(:), iret)
call reduce_sum(inarr(1:narr))
! reduce average, minimum and maximum values
!
call reduce_sum_real_array(narr, avarr(:), iret)
call reduce_minimum_real_array(narr, mnarr(:), iret)
call reduce_maximum_real_array(narr, mxarr(:), iret)
call reduce_sum(avarr(1:narr))
call reduce_minimum(mnarr(1:narr))
call reduce_maximum(mxarr(1:narr))
#endif /* MPI */
! calculate the internal energy

View File

@ -903,7 +903,7 @@ module mesh
use coordinates , only : nn => bcells
use equations , only : nv
use mpitools , only : nprocs, npmax, nproc
use mpitools , only : send_real_array, receive_real_array
use mpitools , only : send_array, receive_array
#endif /* MPI */
! local variables are not implicit by default
@ -914,7 +914,6 @@ module mesh
! local variables
!
integer :: status
integer :: iret
integer(kind=4) :: np, nl
! local pointers
@ -995,7 +994,7 @@ module mesh
! send data
!
call send_real_array(size(rbuf), np, itag, rbuf, iret)
call send_array(np, itag, rbuf)
! remove data block from the current process
!
@ -1016,7 +1015,7 @@ module mesh
! receive the data
!
call receive_real_array(size(rbuf), pmeta%process, itag, rbuf, iret)
call receive_array(pmeta%process, itag, rbuf)
! coppy the buffer to data block
!
@ -1535,7 +1534,7 @@ module mesh
#ifdef DEBUG
use mpitools , only : nproc
#endif /* DEBUG */
use mpitools , only : reduce_sum_integer_array
use mpitools , only : reduce_sum
#endif /* MPI */
use refinement , only : check_refinement_criterion
@ -1556,7 +1555,6 @@ module mesh
! local variables
!
integer(kind=4) :: nl, l
integer :: iret
! array for storing the refinement flags
!
@ -1677,7 +1675,7 @@ module mesh
! update refinement flags across all processes
!
call reduce_sum_integer_array(nl, ibuf(1:nl), iret)
call reduce_sum(ibuf(1:nl))
! reset the leaf block counter
!
@ -1844,7 +1842,7 @@ module mesh
use iso_fortran_env, only : error_unit
#ifdef MPI
use mpitools , only : nprocs, nproc
use mpitools , only : send_real_array, receive_real_array
use mpitools , only : send_array, receive_array
#endif /* MPI */
! local variables are not implicit by default
@ -1871,7 +1869,6 @@ module mesh
! tag for the MPI data exchange
!
integer(kind=4) :: itag
integer :: iret
! local buffer for data block exchange
!
@ -2070,8 +2067,7 @@ module mesh
! send data
!
call send_real_array(size(rbuf), pmeta%process &
, itag, rbuf(:,:,:,:), iret)
call send_array(pmeta%process, itag, rbuf)
! deallocate the associated data block (it has to be pchild%data, and not pdata,
! otherwise, pchild%data won't be nullified)
@ -2093,8 +2089,7 @@ module mesh
! receive the data
!
call receive_real_array(size(rbuf) &
, pchild%process, itag, rbuf(:,:,:,:), iret)
call receive_array(pchild%process, itag, rbuf(:,:,:,:))
! allocate data block for the current child
!

File diff suppressed because it is too large Load Diff