darray_destroy Subroutine

public subroutine darray_destroy(handle)

Destroy a distributed array

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: handle

Calls

proc~~darray_destroy~~CallsGraph proc~darray_destroy darray_destroy proc~comm_barrier comm_t%comm_barrier proc~darray_destroy->proc~comm_barrier proc~win_finalize win_t%win_finalize proc~darray_destroy->proc~win_finalize mpi_barrier mpi_barrier proc~comm_barrier->mpi_barrier mpi_win_free mpi_win_free proc~win_finalize->mpi_win_free

Called by

proc~~darray_destroy~~CalledByGraph proc~darray_destroy darray_destroy proc~darrays_finalize darrays_finalize proc~darrays_finalize->proc~darray_destroy

Variables

Type Visibility Attributes Name Initial
type(darray_t), private, pointer :: arr

Source Code

   subroutine darray_destroy(handle)
      integer(int32), intent(in) :: handle
      type(darray_t), pointer :: arr

      if (handle < 1 .or. handle > MAX_ARRAYS) return
      arr => registry(handle)
      if (.not. arr%active) return

      call global_comm%barrier()
      call arr%win%finalize()

      ! Nullify the appropriate data pointer based on dtype
      select case (arr%dtype)
      case (DTYPE_DP)
         nullify (arr%data_dp)
      case (DTYPE_SP)
         nullify (arr%data_sp)
      case (DTYPE_I32)
         nullify (arr%data_i32)
      case (DTYPE_I64)
         nullify (arr%data_i64)
      end select

      arr%active = .false.
      arr%handle = -1
      arr%dtype = 0
   end subroutine darray_destroy