win_accumulate_dp Subroutine

private subroutine win_accumulate_dp(this, target_rank, target_disp, count, buffer, op)

Type Bound

win_t

Arguments

Type IntentOptional Attributes Name
class(win_t), intent(in) :: this
integer(kind=int32), intent(in) :: target_rank
integer(kind=MPI_ADDRESS_KIND), intent(in) :: target_disp
integer(kind=int32), intent(in) :: count
real(kind=dp), intent(in) :: buffer(*)
type(MPI_Op), intent(in), optional :: op

Calls

proc~~win_accumulate_dp~~CallsGraph proc~win_accumulate_dp win_t%win_accumulate_dp mpi_accumulate mpi_accumulate proc~win_accumulate_dp->mpi_accumulate

Called by

proc~~win_accumulate_dp~~CalledByGraph proc~win_accumulate_dp win_t%win_accumulate_dp proc~darray_acc_dp darray_acc_dp proc~darray_acc_dp->proc~win_accumulate_dp interface~darray_acc darray_acc interface~darray_acc->proc~darray_acc_dp

Variables

Type Visibility Attributes Name Initial
integer(kind=int32), private :: ierr
type(MPI_Op), private :: mpi_op

Source Code

   subroutine win_accumulate_dp(this, target_rank, target_disp, count, buffer, op)
      class(win_t), intent(in) :: this
      integer(int32), intent(in) :: target_rank
      integer(MPI_ADDRESS_KIND), intent(in) :: target_disp
      integer(int32), intent(in) :: count
      real(dp), intent(in) :: buffer(*)
      type(MPI_Op), intent(in), optional :: op
      type(MPI_Op) :: mpi_op
      integer(int32) :: ierr

      if (present(op)) then
         mpi_op = op
      else
         mpi_op = MPI_SUM
      end if

      call MPI_Accumulate(buffer, count, MPI_DOUBLE_PRECISION, &
                          target_rank, target_disp, count, MPI_DOUBLE_PRECISION, &
                          mpi_op, this%m_win, ierr)
   end subroutine win_accumulate_dp