FIXME : Add documentation
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex, | intent(inout), | dimension (:,:,:) | :: | z | ||
integer, | intent(in) | :: | dest | |||
integer, | intent(out) | :: | request |
subroutine nb_sum_reduce_complex_3array (z, dest, request)
implicit none
complex, dimension (:,:,:), intent (in out) :: z
integer, intent (in) :: dest
integer, intent (out) :: request
# ifdef MPI3
integer :: ierror
!$OMP MASTER
call time_message(.false., time_mp_collectives, ' MPI Collectives')
!$OMP END MASTER
if(iproc.eq.dest) then
call mpi_ireduce &
(MPI_IN_PLACE, z, size(z), mpicmplx, MPI_SUM, dest, mp_comm, request, ierror)
else
call mpi_ireduce &
(z, z, size(z), mpicmplx, MPI_SUM, dest, mp_comm, request, ierror)
endif
!$OMP MASTER
call time_message(.false., time_mp_collectives, ' MPI Collectives')
!$OMP END MASTER
# else
call sum_reduce_complex_3array(z, dest)
request = mp_request_null
# endif
end subroutine nb_sum_reduce_complex_3array