20#ifndef REALM_TRANSFER_H
21#define REALM_TRANSFER_H
60 virtual bool done(
void) = 0;
105 size_t field_offset,
int ndims,
const int64_t lo[],
106 const int64_t hi[],
const int order[]) = 0;
112 bool tentative =
false) = 0;
114 bool tentative =
false) = 0;
128 template <
int N,
typename T>
140 bool tentative =
false);
142 bool tentative =
false);
175 template <
int N,
typename T>
181 const std::vector<FieldID> &_fields,
182 const std::vector<size_t> &_fld_offsets,
183 const std::vector<size_t> &_fld_sizes,
188 const std::vector<FieldID> &_fields,
189 const std::vector<size_t> &_fld_offsets,
190 const std::vector<size_t> &_fld_sizes,
194 template <
typename S>
207 template <
typename S>
229 template <
int N,
typename T>
239 template <
typename S>
251 template <
typename S>
258 bool tentative =
false)
override;
260 bool tentative =
false)
override;
268 size_t &fsize)
override;
286 template <
int N,
typename T>
292 const std::vector<FieldID> &_fields,
293 const std::vector<size_t> &_fld_offsets,
294 const std::vector<size_t> &_fld_sizes);
296 template <
typename S>
312 template <
typename S>
337 template <
typename S>
340 template <
int N,
typename T>
353 const std::vector<CopySrcDstField> &srcs,
354 const std::vector<CopySrcDstField> &dsts,
355 const std::vector<IndirectionInfo *> &indirects,
356 bool force_fortran_order,
size_t max_stride)
const = 0;
359 const std::vector<FieldID> &fields,
360 const std::vector<size_t> &fld_sizes,
361 std::vector<size_t> &fragments)
const = 0;
364 const std::vector<int> &dim_order,
365 const std::vector<FieldID> &fields,
366 const std::vector<size_t> &fld_offsets,
367 const std::vector<size_t> &fld_sizes,
368 bool idindexed_fields =
false)
const = 0;
372 const std::vector<FieldID> &fields,
373 const std::vector<size_t> &fld_offsets,
374 const std::vector<size_t> &fld_sizes)
const = 0;
376 virtual void print(std::ostream &os)
const = 0;
428 unsigned _fld_start,
unsigned _fld_count);
430 static IO mk_fill(
unsigned _fill_start,
unsigned _fill_size,
size_t _fill_total);
450 template <
int N,
typename T>
453 const std::vector<CopySrcDstField> &_dsts,
458 template <
int N,
typename T>
461 std::vector<CopySrcDstField> &&_dsts,
466 template <
int N,
typename T,
typename SrcVec,
typename DstVec>
540 unsigned src_fld_start,
unsigned src_fld_count,
542 std::vector<TransferGraph::XDTemplate> &xd_nodes,
543 std::vector<TransferGraph::IBInfo> &ib_edges,
544 std::vector<TransferDesc::FieldInfo> &src_fields) = 0;
548 unsigned dst_fld_start,
unsigned dst_fld_count,
size_t bytes_per_element,
549 CustomSerdezID serdez_id, std::vector<TransferGraph::XDTemplate> &xd_nodes,
550 std::vector<TransferGraph::IBInfo> &ib_edges,
551 std::vector<TransferDesc::FieldInfo> &src_fields) = 0;
563 const std::vector<size_t> &fld_offsets,
const std::vector<size_t> &fld_sizes,
564 Channel *channel =
nullptr)
const = 0;
566 virtual void print(std::ostream &os)
const = 0;
574 bool _is_ranges,
bool _oor_possible,
bool _aliasing_possible,
575 size_t _subfield_offset,
const std::vector<RegionInstance> _insts,
584 unsigned indirect_idx,
unsigned src_fld_start,
585 unsigned src_fld_count,
size_t bytes_per_element,
587 std::vector<TransferGraph::XDTemplate> &xd_nodes,
588 std::vector<TransferGraph::IBInfo> &ib_edges,
589 std::vector<TransferDesc::FieldInfo> &src_fields);
593 unsigned indirect_idx,
unsigned dst_fld_start,
594 unsigned dst_fld_count,
size_t bytes_per_element,
596 std::vector<TransferGraph::XDTemplate> &xd_nodes,
597 std::vector<TransferGraph::IBInfo> &ib_edges,
598 std::vector<TransferDesc::FieldInfo> &src_fields);
624 template <
int N,
typename T,
int N2,
typename T2>
644 const std::vector<size_t> &fld_offsets,
const std::vector<size_t> &fld_sizes,
645 Channel *channel =
nullptr)
const;
647 virtual void print(std::ostream &os)
const;
677 virtual void print(std::ostream &os)
const;
696 virtual void print(std::ostream &os)
const;
709 virtual void print(std::ostream &os)
const;
735 template <
int N,
typename T>
738 const std::vector<CopySrcDstField> &,
739 const std::vector<const typename CopyIndirection<N, T>::Base *> &,
742 template <
int N,
typename T>
749#include "realm/transfer/transfer.inl"
Definition address_list.h:56
Definition transfer.h:515
void analyze_copy(TransferOperation *op)
virtual bool do_work(TimeLimit work_until) override
std::deque< TransferOperation * > pending_copies
Definition transfer.h:529
void requeue_front(TransferOperation *op)
Mutex mutex
Definition transfer.h:528
Definition indexspace.h:252
Definition indexspace.h:250
unsigned gen_t
Definition event_impl.h:87
Definition event_impl.h:49
Definition event_impl.h:198
Definition transfer.h:230
size_t rect_idx
Definition transfer.h:280
SparsityMapImpl< N, T > * sparsity_impl
Definition transfer.h:271
size_t step_custom(size_t max_bytes, TransferIterator::AddressInfoCustom &info, bool tentative=false) override
ReplicatedHeap * repl_heap
Definition transfer.h:282
static Serialization::PolymorphicSerdezSubclass< TransferIterator, IDIndexedFieldsIterator< N, T > > serdez_subclass
Definition transfer.h:249
std::vector< FieldID > fields
Definition transfer.h:274
bool iter_init_deferred
Definition transfer.h:273
IndexSpaceIterator< N, T > iter
Definition transfer.h:272
bool serialize(S &serializer) const
FieldBlock * field_block
Definition transfer.h:283
IndexSpace< N, T > is
Definition transfer.h:270
IDIndexedFieldsIterator(void)
bool get_addresses(AddressList &addrlist, const InstanceLayoutPieceBase *&nonaffine) override
void confirm_step(void) override
const InstanceLayout< N, T > * inst_layout
Definition transfer.h:277
size_t field_size
Definition transfer.h:279
static TransferIterator * deserialize_new(S &deserializer)
virtual ~IDIndexedFieldsIterator(void)
bool get_next_rect(Rect< N, T > &r, FieldID &fid, size_t &offset, size_t &fsize) override
void reset_internal(void)
size_t step(size_t max_bytes, TransferIterator::AddressInfo &info, unsigned flags, bool tentative=false) override
Event request_metadata(void) override
void cancel_step(void) override
IDIndexedFieldsIterator(const int _dim_order[N], const std::vector< FieldID > &_fields, size_t _field_size, RegionInstanceImpl *_inst_impl, const IndexSpace< N, T > &_is, ReplicatedHeap *_repl_heap)
void reset(void) override
Definition transfer.h:571
bool structured
Definition transfer.h:608
virtual XferDesFactory * create_addrsplit_factory(size_t bytes_per_element) const =0
virtual void generate_scatter_paths(Memory src_mem, TransferGraph::XDTemplate::IO src_edge, unsigned indirect_idx, unsigned dst_fld_start, unsigned dst_fld_count, size_t bytes_per_element, CustomSerdezID serdez_id, std::vector< TransferGraph::XDTemplate > &xd_nodes, std::vector< TransferGraph::IBInfo > &ib_edges, std::vector< TransferDesc::FieldInfo > &src_fields)
virtual void generate_gather_paths(const Node *nodes_info, Memory dst_mem, TransferGraph::XDTemplate::IO dst_edge, unsigned indirect_idx, unsigned src_fld_start, unsigned src_fld_count, size_t bytes_per_element, CustomSerdezID serdez_id, std::vector< TransferGraph::XDTemplate > &xd_nodes, std::vector< TransferGraph::IBInfo > &ib_edges, std::vector< TransferDesc::FieldInfo > &src_fields)
std::vector< RegionInstance > insts
Definition transfer.h:615
size_t subfield_offset
Definition transfer.h:614
FieldID field_id
Definition transfer.h:609
IndirectionInfoBase(bool _structured, FieldID _field_id, RegionInstance _inst, bool _is_ranges, bool _oor_possible, bool _aliasing_possible, size_t _subfield_offset, const std::vector< RegionInstance > _insts, Channel *_addrsplit_channel)
RegionInstance inst
Definition transfer.h:610
bool oor_possible
Definition transfer.h:612
bool aliasing_possible
Definition transfer.h:613
Channel * addrsplit_channel
Definition transfer.h:616
virtual size_t num_spaces() const =0
bool is_ranges
Definition transfer.h:611
virtual size_t address_size() const =0
virtual void populate_copy_info(ChannelCopyInfo &info) const =0
virtual size_t domain_size() const =0
Definition transfer.h:625
virtual RegionInstance get_pointer_instance(void) const
virtual void populate_copy_info(ChannelCopyInfo &info) const
IndexSpace< N, T > domain
Definition transfer.h:657
virtual void print(std::ostream &os) const
IndirectionInfoTyped(const IndexSpace< N, T > &is, const typename CopyIndirection< N, T >::template Unstructured< N2, T2 > &ind, Channel *_addr_split_channel)
virtual const std::vector< RegionInstance > * get_instances(void) const
virtual size_t domain_size() const
virtual Event request_metadata(void)
virtual TransferIterator * create_indirect_iterator(Memory addrs_mem, RegionInstance inst, const std::vector< FieldID > &fields, const std::vector< size_t > &fld_offsets, const std::vector< size_t > &fld_sizes, Channel *channel=nullptr) const
Channel * addr_split_channel
Definition transfer.h:659
virtual TransferIterator * create_address_iterator(RegionInstance peer) const
virtual size_t address_size() const
virtual XferDesFactory * create_addrsplit_factory(size_t bytes_per_element) const
std::vector< IndexSpace< N2, T2 > > spaces
Definition transfer.h:658
virtual size_t num_spaces() const
virtual FieldID get_field(void) const
Definition transfer.h:532
virtual FieldID get_field(void) const =0
virtual void generate_gather_paths(const Node *node_info, Memory dst_mem, TransferGraph::XDTemplate::IO dst_edge, unsigned indirect_idx, unsigned src_fld_start, unsigned src_fld_count, size_t bytes_per_element, CustomSerdezID serdez_id, std::vector< TransferGraph::XDTemplate > &xd_nodes, std::vector< TransferGraph::IBInfo > &ib_edges, std::vector< TransferDesc::FieldInfo > &src_fields)=0
virtual void generate_scatter_paths(Memory src_mem, TransferGraph::XDTemplate::IO src_edge, unsigned indirect_idx, unsigned dst_fld_start, unsigned dst_fld_count, size_t bytes_per_element, CustomSerdezID serdez_id, std::vector< TransferGraph::XDTemplate > &xd_nodes, std::vector< TransferGraph::IBInfo > &ib_edges, std::vector< TransferDesc::FieldInfo > &src_fields)=0
virtual Event request_metadata(void)=0
virtual const std::vector< RegionInstance > * get_instances(void) const =0
virtual RegionInstance get_pointer_instance(void) const =0
virtual TransferIterator * create_indirect_iterator(Memory addrs_mem, RegionInstance inst, const std::vector< FieldID > &fields, const std::vector< size_t > &fld_offsets, const std::vector< size_t > &fld_sizes, Channel *channel=nullptr) const =0
virtual TransferIterator * create_address_iterator(RegionInstance peer) const =0
virtual void print(std::ostream &os) const =0
virtual ~IndirectionInfo(void)
Definition transfer.h:534
Definition inst_layout.h:267
Definition inst_layout.h:391
static const Memory NO_MEMORY
Definition memory.h:49
Definition operation.h:75
Definition operation.h:32
Definition profiling.h:363
Definition inst_impl.h:54
Definition repl_heap.h:30
Definition serialize.h:363
Definition sparsity_impl.h:105
Definition transfer.h:447
size_t analysis_fld_start
Definition transfer.h:508
TransferDomain * domain
Definition transfer.h:495
void check_analysis_preconditions(std::vector< Event > &preconditions) const
ProfilingMeasurements::OperationMemoryUsage prof_usage
Definition transfer.h:511
size_t fill_size
Definition transfer.h:505
std::vector< FieldInfo > src_fields
Definition transfer.h:503
size_t analysis_fill_ofs
Definition transfer.h:509
TransferGraph graph
Definition transfer.h:501
std::vector< IndirectionInfo * > indirects
Definition transfer.h:497
Mutex mutex
Definition transfer.h:500
std::vector< CopySrcDstField > dsts
Definition transfer.h:496
std::vector< CopySrcDstField > srcs
Definition transfer.h:496
ProfilingMeasurements::OperationCopyInfo prof_cpinfo
Definition transfer.h:512
bool analysis_init_done
Definition transfer.h:506
std::vector< int > dim_order
Definition transfer.h:502
std::vector< FieldInfo > dst_fields
Definition transfer.h:503
bool perform_analysis(TransferOperation *op, TimeLimit work_until)
std::vector< bool > analysis_field_done
Definition transfer.h:510
atomic< int > refcount
Definition transfer.h:488
void * fill_data
Definition transfer.h:504
TransferDesc(IndexSpace< N, T > _is, std::vector< CopySrcDstField > &&_srcs, std::vector< CopySrcDstField > &&_dsts, const std::vector< const typename CopyIndirection< N, T >::Base * > &_indirects, const ProfilingRequestSet &requests)
ProfilingRequestSet prs
Definition transfer.h:498
TransferDesc(IndexSpace< N, T > _is, const std::vector< CopySrcDstField > &_srcs, const std::vector< CopySrcDstField > &_dsts, const std::vector< const typename CopyIndirection< N, T >::Base * > &_indirects, const ProfilingRequestSet &requests)
size_t analysis_field_idx
Definition transfer.h:507
Definition transfer.h:332
virtual TransferIterator * create_iterator(RegionInstance inst, RegionInstance peer, const std::vector< FieldID > &fields, const std::vector< size_t > &fld_offsets, const std::vector< size_t > &fld_sizes) const =0
virtual ~TransferDomain(void)
virtual size_t volume(void) const =0
virtual TransferDomain * clone(void) const =0
virtual Event request_metadata(void)=0
virtual void choose_dim_order(std::vector< int > &dim_order, const std::vector< CopySrcDstField > &srcs, const std::vector< CopySrcDstField > &dsts, const std::vector< IndirectionInfo * > &indirects, bool force_fortran_order, size_t max_stride) const =0
virtual TransferIterator * create_iterator(RegionInstance inst, const std::vector< int > &dim_order, const std::vector< FieldID > &fields, const std::vector< size_t > &fld_offsets, const std::vector< size_t > &fld_sizes, bool idindexed_fields=false) const =0
virtual void count_fragments(RegionInstance inst, const std::vector< int > &dim_order, const std::vector< FieldID > &fields, const std::vector< size_t > &fld_sizes, std::vector< size_t > &fragments) const =0
virtual bool empty(void) const =0
static TransferDomain * deserialize_new(S &deserializer)
static TransferDomain * construct(const IndexSpace< N, T > &is)
virtual void print(std::ostream &os) const =0
Definition transfer.h:129
Rect< N, T > cur_rect
Definition transfer.h:157
virtual Event request_metadata(void)
size_t cur_field_offset
Definition transfer.h:159
TransferIteratorBase(void)
bool have_rect
Definition transfer.h:156
virtual void cancel_step(void)
Point< N, T > cur_point
Definition transfer.h:160
virtual void confirm_step(void)
bool carry
Definition transfer.h:161
virtual size_t step(size_t max_bytes, AddressInfo &info, unsigned flags, bool tentative=false)
bool tentative_valid
Definition transfer.h:166
Point< N, T > next_point
Definition transfer.h:160
TransferIteratorBase(RegionInstanceImpl *_inst_impl, const int _dim_order[N])
FieldID cur_field_id
Definition transfer.h:158
virtual bool get_addresses(AddressList &addrlist, const InstanceLayoutPieceBase *&nonaffine)
bool is_done
Definition transfer.h:156
virtual size_t get_base_offset(void) const
size_t inst_offset
Definition transfer.h:165
size_t cur_field_size
Definition transfer.h:159
virtual size_t step_custom(size_t max_bytes, AddressInfoCustom &info, bool tentative=false)
int dim_order[N]
Definition transfer.h:167
virtual bool get_next_rect(Rect< N, T > &r, FieldID &fid, size_t &offset, size_t &fsize)=0
RegionInstanceImpl * inst_impl
Definition transfer.h:163
Definition transfer.h:176
virtual bool get_next_rect(Rect< N, T > &r, FieldID &fid, size_t &offset, size_t &fsize)
size_t field_idx
Definition transfer.h:221
IndexSpace< N, T > is
Definition transfer.h:215
TransferIteratorIndexSpace(const int _dim_order[N], const std::vector< FieldID > &_fields, const std::vector< size_t > &_fld_offsets, const std::vector< size_t > &_fld_sizes, RegionInstanceImpl *_inst_impl, const IndexSpace< N, T > &_is)
std::vector< FieldID > fields
Definition transfer.h:219
void reset_internal(void)
static Serialization::PolymorphicSerdezSubclass< TransferIterator, TransferIteratorIndexSpace< N, T > > serdez_subclass
Definition transfer.h:205
std::vector< size_t > fld_sizes
Definition transfer.h:220
static TransferIterator * deserialize_new(S &deserializer)
TransferIteratorIndexSpace(const int _dim_order[N], const std::vector< FieldID > &_fields, const std::vector< size_t > &_fld_offsets, const std::vector< size_t > &_fld_sizes, RegionInstanceImpl *_inst_impl, const Rect< N, T > &_bounds, SparsityMapImpl< N, T > *_sparsity_impl)
virtual ~TransferIteratorIndexSpace(void)
SparsityMapImpl< N, T > * sparsity_impl
Definition transfer.h:216
bool iter_init_deferred
Definition transfer.h:218
TransferIteratorIndexSpace(void)
std::vector< size_t > fld_offsets
Definition transfer.h:220
IndexSpaceIterator< N, T > iter
Definition transfer.h:217
bool serialize(S &serializer) const
virtual Event request_metadata(void)
Definition transfer.h:287
Memory addrs_mem
Definition transfer.h:320
int indirect_port_idx
Definition transfer.h:329
virtual bool get_next_rect(Rect< N, T > &r, FieldID &fid, size_t &offset, size_t &fsize)
bool can_merge
Definition transfer.h:322
std::vector< size_t > fld_offsets
Definition transfer.h:327
TransferIteratorIndirect(void)
intptr_t addrs_mem_base
Definition transfer.h:321
TransferIteratorIndirect(Memory _addrs_mem, RegionInstanceImpl *_inst_impl, const std::vector< FieldID > &_fields, const std::vector< size_t > &_fld_offsets, const std::vector< size_t > &_fld_sizes)
virtual void set_indirect_input_port(XferDes *xd, int port_idx, TransferIterator *inner_iter)
bool serialize(S &serializer) const
XferDes * indirect_xd
Definition transfer.h:328
static constexpr size_t MAX_POINTS
Definition transfer.h:323
std::vector< size_t > fld_sizes
Definition transfer.h:327
virtual Event request_metadata(void)
size_t num_points
Definition transfer.h:325
Point< N, T > points[MAX_POINTS]
Definition transfer.h:324
size_t point_pos
Definition transfer.h:325
virtual ~TransferIteratorIndirect(void)
TransferIterator * addrs_in
Definition transfer.h:319
static TransferIterator * deserialize_new(S &deserializer)
static Serialization::PolymorphicSerdezSubclass< TransferIterator, TransferIteratorIndirect< N, T > > serdez_subclass
Definition transfer.h:310
std::vector< FieldID > fields
Definition transfer.h:326
virtual ~AddressInfoCustom()
Definition transfer.h:95
virtual int set_rect(const RegionInstanceImpl *inst, const InstanceLayoutPieceBase *piece, size_t field_size, size_t field_offset, int ndims, const int64_t lo[], const int64_t hi[], const int order[])=0
virtual size_t get_address_size(void) const
virtual void reset(void)=0
virtual ~TransferIterator(void)
virtual bool done(void)=0
virtual size_t step_custom(size_t max_bytes, AddressInfoCustom &info, bool tentative=false)=0
virtual size_t get_base_offset(void) const
virtual size_t step(size_t max_bytes, AddressInfo &info, unsigned flags, bool tentative=false)=0
virtual Event request_metadata(void)
virtual bool get_addresses(AddressList &addrlist, const InstanceLayoutPieceBase *&nonaffine)=0
static TransferIterator * deserialize_new(S &deserializer)
virtual void cancel_step(void)=0
@ SRC_LINES_OK
Definition transfer.h:68
@ SRC_PARTIAL_OK
Definition transfer.h:67
@ SRC_PLANES_OK
Definition transfer.h:69
@ SRC_FLAGMASK
Definition transfer.h:70
@ PARTIAL_OK
Definition transfer.h:77
@ LINES_OK
Definition transfer.h:78
@ PLANES_OK
Definition transfer.h:79
@ DST_FLAGMASK
Definition transfer.h:75
@ DST_LINES_OK
Definition transfer.h:73
@ DST_PARTIAL_OK
Definition transfer.h:72
@ DST_PLANES_OK
Definition transfer.h:74
virtual void confirm_step(void)=0
virtual void set_indirect_input_port(XferDes *xd, int port_idx, TransferIterator *inner_iter)
Definition transfer.h:705
TransferOperation * op
Definition transfer.h:712
Event precondition
Definition transfer.h:713
virtual Event get_finish_event(void) const
virtual void event_triggered(bool poisoned, TimeLimit work_until)
virtual void print(std::ostream &os) const
DeferredStart(TransferOperation *_op)
Definition transfer.h:692
XDLifetimeTracker(TransferOperation *_op, XferDesID _xd_id)
XferDesID xd_id
Definition transfer.h:699
virtual void print(std::ostream &os) const
virtual void request_cancellation(void)
Definition transfer.h:663
std::vector< off_t > ib_offsets
Definition transfer.h:721
bool allocate_ibs_requests_sent
Definition transfer.h:727
Event precondition
Definition transfer.h:718
bool create_xds(TimeLimit work_until)
TransferOperation(TransferDesc &_desc, Event _precondition, GenEventImpl *_finish_event, EventImpl::gen_t _finish_gen, int priority)
atomic< unsigned > ib_responses_needed
Definition transfer.h:722
DeferredStart deferred_start
Definition transfer.h:715
TransferDesc & desc
Definition transfer.h:717
std::vector< XDLifetimeTracker * > xd_trackers
Definition transfer.h:720
int get_priority(void) const
Definition transfer.h:671
unsigned allocate_ibs_immed_count
Definition transfer.h:728
void notify_ib_allocation(unsigned ib_index, off_t ib_offset, TimeLimit work_until)
virtual bool mark_ready(void)
bool allocate_ibs_init_done
Definition transfer.h:726
bool create_xds_init_done
Definition transfer.h:729
std::vector< std::pair< XferDesID, int > > ib_pre_ids
Definition transfer.h:731
void notify_xd_completion(XferDesID xd_id)
bool allocate_ibs(TimeLimit work_until)
virtual void mark_completed(void)
bool analyze(TimeLimit work_until)
Definition transfer.h:672
virtual void print(std::ostream &os) const
virtual bool mark_started(void)
size_t create_xds_i
Definition transfer.h:730
void start_or_defer(void)
std::vector< std::pair< XferDesID, int > > ib_next_ids
Definition transfer.h:732
std::vector< XferDesID > xd_ids
Definition transfer.h:719
void notify_ib_allocations(unsigned count, unsigned first_index, const off_t *offsets, TimeLimit work_until)
int priority
Definition transfer.h:723
Definition activemsg.h:38
Event(*)(const IndexSpace< N, T > &, const std::vector< CopySrcDstField > &, const std::vector< CopySrcDstField > &, const std::vector< const typename CopyIndirection< N, T >::Base * > &, const Realm::ProfilingRequestSet &, Event, int) CopyImplFn
Definition transfer.h:740
realm_field_id_t FieldID
Definition instance.h:45
int NodeID
Definition nodeset.h:40
int CustomSerdezID
Definition custom_serdez.h:148
unsigned long long XferDesID
Definition channel.h:56
std::ostream & operator<<(std::ostream &os, const DenseRectangleList< N, T > &drl)
Definition transfer.h:743
static CopyImplFn< N, T > impl
Definition transfer.h:744
Definition address_list.h:33
Definition indexspace.h:1249
Definition indexspace.h:323
Definition runtime_impl.h:90
Definition profiling.h:188
Definition profiling.h:180
Definition transfer.h:481
size_t size
Definition transfer.h:483
size_t offset
Definition transfer.h:483
CustomSerdezID serdez_id
Definition transfer.h:484
FieldID id
Definition transfer.h:482
Definition transfer.h:438
size_t size
Definition transfer.h:440
Memory memory
Definition transfer.h:439
Definition transfer.h:403
unsigned fill_size
Definition transfer.h:421
RegionInstance inst
Definition transfer.h:407
unsigned fld_start
Definition transfer.h:408
unsigned port
Definition transfer.h:413
unsigned ind_idx
Definition transfer.h:412
unsigned fill_start
Definition transfer.h:420
IOType iotype
Definition transfer.h:404
unsigned fld_count
Definition transfer.h:409
struct Realm::TransferGraph::XDTemplate::IO::@37::@40 indirect
struct Realm::TransferGraph::XDTemplate::IO::@37::@41 fill
unsigned edge
Definition transfer.h:418
size_t fill_total
Definition transfer.h:422
Definition transfer.h:385
Channel * channel
Definition transfer.h:393
static IO mk_fill(unsigned _fill_start, unsigned _fill_size, size_t _fill_total)
void set_simple(Channel *channel, int in_edge, int out_edge)
bool idindexed_fields
Definition transfer.h:394
int scatter_control_input
Definition transfer.h:391
static IO mk_edge(unsigned _edge)
int gather_control_input
Definition transfer.h:390
XferDesRedopInfo redop
Definition transfer.h:392
XferDesFactory * factory
Definition transfer.h:389
static IO mk_inst(RegionInstance _inst, unsigned _fld_start, unsigned _fld_count)
std::vector< IO > inputs
Definition transfer.h:432
std::vector< IO > outputs
Definition transfer.h:433
static IO mk_indirect(unsigned _ind_idx, unsigned _port, RegionInstance _inst, unsigned _fld_start, unsigned _fld_count)
NodeID target_node
Definition transfer.h:387
IOType
Definition transfer.h:397
@ IO_INDIRECT_INST
Definition transfer.h:399
@ IO_FILL_DATA
Definition transfer.h:401
@ IO_EDGE
Definition transfer.h:400
@ IO_INST
Definition transfer.h:398
Definition transfer.h:384
std::vector< IBInfo > ib_edges
Definition transfer.h:443
std::vector< XDTemplate > xd_nodes
Definition transfer.h:442
std::vector< unsigned > ib_alloc_order
Definition transfer.h:444
size_t num_planes
Definition transfer.h:87
size_t line_stride
Definition transfer.h:86
size_t bytes_per_chunk
Definition transfer.h:84
size_t base_offset
Definition transfer.h:83
size_t num_lines
Definition transfer.h:85
size_t plane_stride
Definition transfer.h:88