darray_create_i64 Subroutine

private subroutine darray_create_i64(nrows, ncols, handle, init_val)

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: nrows
integer(kind=int32), intent(in) :: ncols
integer(kind=int32), intent(out) :: handle
integer(kind=int64), intent(in) :: init_val

Calls

proc~~darray_create_i64~~CallsGraph proc~darray_create_i64 darray_create_i64 interface~win_allocate win_allocate proc~darray_create_i64->interface~win_allocate proc~calculate_distribution calculate_distribution proc~darray_create_i64->proc~calculate_distribution proc~comm_barrier comm_t%comm_barrier proc~darray_create_i64->proc~comm_barrier proc~find_free_slot find_free_slot proc~darray_create_i64->proc~find_free_slot proc~create_win_allocate_dp_1d create_win_allocate_dp_1d interface~win_allocate->proc~create_win_allocate_dp_1d proc~create_win_allocate_dp_2d create_win_allocate_dp_2d interface~win_allocate->proc~create_win_allocate_dp_2d proc~create_win_allocate_i32_1d create_win_allocate_i32_1d interface~win_allocate->proc~create_win_allocate_i32_1d proc~create_win_allocate_i64_1d create_win_allocate_i64_1d interface~win_allocate->proc~create_win_allocate_i64_1d proc~create_win_allocate_sp_1d create_win_allocate_sp_1d interface~win_allocate->proc~create_win_allocate_sp_1d mpi_barrier mpi_barrier proc~comm_barrier->mpi_barrier mpi_win_allocate mpi_win_allocate proc~create_win_allocate_dp_1d->mpi_win_allocate proc~comm_get comm_t%comm_get proc~create_win_allocate_dp_1d->proc~comm_get proc~create_win_allocate_dp_2d->mpi_win_allocate proc~create_win_allocate_dp_2d->proc~comm_get proc~create_win_allocate_i32_1d->mpi_win_allocate proc~create_win_allocate_i32_1d->proc~comm_get proc~create_win_allocate_i64_1d->mpi_win_allocate proc~create_win_allocate_i64_1d->proc~comm_get proc~create_win_allocate_sp_1d->mpi_win_allocate proc~create_win_allocate_sp_1d->proc~comm_get

Called by

proc~~darray_create_i64~~CalledByGraph proc~darray_create_i64 darray_create_i64 interface~darray_create darray_create interface~darray_create->proc~darray_create_i64

Variables

Type Visibility Attributes Name Initial
type(darray_t), private, pointer :: arr
integer(kind=int32), private :: length
integer(kind=int32), private :: slot

Source Code

   subroutine darray_create_i64(nrows, ncols, handle, init_val)
      integer(int32), intent(in) :: nrows, ncols
      integer(int32), intent(out) :: handle
      integer(int64), intent(in) :: init_val
      type(darray_t), pointer :: arr
      integer(int32) :: slot, length

      slot = find_free_slot()
      arr => registry(slot)
      arr%handle = slot
      arr%dtype = DTYPE_I64
      arr%nrows = nrows
      arr%ncols = ncols

      call calculate_distribution(ncols, global_comm%size(), global_comm%rank(), &
                                  arr%my_first_col, arr%my_ncols)

      arr%local_size = int(nrows, int64)*int(arr%my_ncols, int64)
      length = int(arr%local_size, int32)
      if (length > 0) then
         call win_allocate(global_comm, length, arr%data_i64, arr%win)
      else
         call win_allocate(global_comm, 1_int32, arr%data_i64, arr%win)
      end if

      arr%data_i64 = init_val

      arr%active = .true.
      handle = slot
      call global_comm%barrier()
   end subroutine darray_create_i64