redist_type Derived Type

type, public :: redist_type

FIXME : Add documentation


Contents

Source Code


Components

Type Visibility Attributes Name Initial
integer, private, dimension (6) :: to_low
integer, private, dimension (6) :: from_low
integer, private, dimension (6) :: to_high
integer, private, dimension (6) :: from_high
type(index_map), private, dimension (:), allocatable :: to
type(index_map), private, dimension (:), allocatable :: from
complex, private, dimension (:), allocatable :: complex_buff
real, private, dimension (:), allocatable :: real_buff
integer, private, dimension (:), allocatable :: integer_buff
logical, private, dimension (:), allocatable :: logical_buff
integer, private :: nsend
integer, private :: nrecv
type(redist_buffer), private, dimension(:), allocatable :: buff_send
type(redist_buffer), private, dimension(:), allocatable :: buff_recv
integer, private, dimension(:), allocatable :: send_hand
integer, private, dimension(:), allocatable :: recv_hand
integer, private, dimension(:), allocatable :: send_inv_hand
integer, private, dimension(:), allocatable :: recv_inv_hand
integer, private, dimension(:), allocatable :: recv_ip
integer, private, dimension(:), allocatable :: recv_inv_ip
integer, private :: optimised_choice = 0
integer, private :: optimised_choice_inv = 0
character(len=3), private :: redistname = ""
character(len=1), private :: char = 'X'

Source Code

  type :: redist_type
     private
     integer, dimension (6) :: to_low, from_low, to_high, from_high
     type (index_map), dimension (:), allocatable :: to
     type (index_map), dimension (:), allocatable :: from
     complex, dimension (:), allocatable :: complex_buff
     real,    dimension (:), allocatable :: real_buff
     integer, dimension (:), allocatable :: integer_buff
     logical, dimension (:), allocatable :: logical_buff
     integer :: nsend, nrecv !Note these swap meaning when doing inverse communication
     type(redist_buffer), dimension(:), allocatable :: buff_send, buff_recv
     integer, dimension(:), allocatable :: send_hand, recv_hand, send_inv_hand, recv_inv_hand
     integer, dimension(:), allocatable :: recv_ip, recv_inv_ip
     ! optimised choice and optimised_choice_inv set the algorithm used for
     ! gather/scatters. With default zero, different algorithms are timed
     ! during initialization. Putting these inside the redist object allows
     ! this behaviour to be overridden. This is useful, for example, when using
     ! "split domains" layouts, where one of the optimized algorithms cannot be
     ! used as it makes assumptions about the form of layouts.
     integer :: optimised_choice = 0
     integer :: optimised_choice_inv = 0
     character (len=3) :: redistname = ""
     character (len=1) :: char = 'X'
  end type redist_type