73 std::vector<size_t> src_frags;
74 std::vector<size_t> dst_frags;
78 const size_t total_bytes,
const std::vector<size_t> *src_frags,
79 const std::vector<size_t> *dst_frags);
96 std::vector<std::pair<LRUKey, MemPathInfo>> item_list;
115 MemPathInfo &info,
bool skip_final_memcpy =
false);
122 size_t total_bytes,
const std::vector<size_t> *src_frags,
123 const std::vector<size_t> *dst_frags, uint64_t &best_cost,
Channel *&best_channel,
129 const std::vector<size_t> *src_frags,
130 const std::vector<size_t> *dst_frags,
MemPathInfo &info,
131 bool skip_final_memcpy =
false);
166#ifdef REALM_USE_KERNEL_AIO
167 aio_context_t aio_ctx;
175 template <
typename S>
184 bool tentative =
false);
186 bool tentative =
false);
197 template <
typename S>
Definition address_list.h:55
Definition lowlevel_dma.h:151
virtual bool check_completion(void)=0
virtual void launch(void)=0
virtual ~AIOOperation(void)
Definition lowlevel_dma.h:153
bool completed
Definition lowlevel_dma.h:156
void * req
Definition lowlevel_dma.h:157
Definition lowlevel_dma.h:133
void enqueue_read(int fd, size_t offset, size_t bytes, void *buffer, Request *req=NULL)
void enqueue_fence(Operation *req)
std::deque< AIOOperation * > pending_operations
Definition lowlevel_dma.h:164
int max_depth
Definition lowlevel_dma.h:163
~AsyncFileIOContext(void)
static AsyncFileIOContext * get_singleton(void)
std::deque< AIOOperation * > launched_operations
Definition lowlevel_dma.h:164
AsyncFileIOContext(int _max_depth)
Mutex mutex
Definition lowlevel_dma.h:165
void enqueue_write(int fd, size_t offset, size_t bytes, const void *buffer, Request *req=NULL)
virtual bool do_work(TimeLimit work_until)
Definition inst_layout.h:266
Definition operation.h:32
Definition lowlevel_dma.h:64
bool operator==(const LRUKey &rhs) const
atomic< unsigned long > timestamp
Definition lowlevel_dma.h:67
LRUKey(const CustomSerdezID serdez_id, const ReductionOpID redop_id, const size_t total_bytes, const std::vector< size_t > *src_frags, const std::vector< size_t > *dst_frags)
friend std::ostream & operator<<(std::ostream &out, const LRUKey &lru_key)
Definition lowlevel_dma.h:60
void miss(LRUKey &key, const MemPathInfo &path)
PathLRUIterator end(void)
PathLRUIterator find(const LRUKey &key)
void hit(PathLRUIterator it)
RWLock rwlock
Definition lowlevel_dma.h:89
size_t max_size
Definition lowlevel_dma.h:90
std::vector< std::pair< LRUKey, MemPathInfo > >::iterator PathLRUIterator
Definition lowlevel_dma.h:86
Definition serialize.h:363
Definition lowlevel_dma.h:171
bool serialize(S &serializer) const
size_t offset
Definition lowlevel_dma.h:201
virtual size_t step(size_t max_bytes, AddressInfo &info, unsigned flags, bool tentative=false)
virtual void confirm_step(void)
size_t base
Definition lowlevel_dma.h:201
static Serialization::PolymorphicSerdezSubclass< TransferIterator, WrappingFIFOIterator > serdez_subclass
Definition lowlevel_dma.h:195
bool tentative_valid
Definition lowlevel_dma.h:202
virtual bool get_addresses(AddressList &addrlist, const InstanceLayoutPieceBase *&nonaffine)
WrappingFIFOIterator(size_t _base, size_t _size)
virtual void cancel_step(void)
virtual size_t step_custom(size_t max_bytes, AddressInfoCustom &info, bool tentative=false)
static TransferIterator * deserialize_new(S &deserializer)
size_t size
Definition lowlevel_dma.h:201
virtual size_t get_base_offset(void) const
size_t prev_offset
Definition lowlevel_dma.h:201
size_t path_cache_lru_size
Definition activemsg.h:38
void finalize_path_cache(void)
std::map< std::pair< realm_id_t, realm_id_t >, PathLRU * > PathCache
Definition lowlevel_dma.h:111
void init_dma_handler(void)
void stop_dma_system(void)
void start_dma_system(BackgroundWorkManager *bgwork)
void init_path_cache(void)
XferDesKind
Definition channel.h:85
int CustomSerdezID
Definition custom_serdez.h:148
bool find_best_channel_for_memories(const Node *nodes_info, ChannelCopyInfo channel_copy_info, CustomSerdezID src_serdez_id, CustomSerdezID dst_serdez_id, ReductionOpID redop_id, size_t total_bytes, const std::vector< size_t > *src_frags, const std::vector< size_t > *dst_frags, uint64_t &best_cost, Channel *&best_channel, XferDesKind &best_kind)
bool find_shortest_path(const Node *nodes_info, Memory src_mem, Memory dst_mem, CustomSerdezID serdez_id, ReductionOpID redop_id, MemPathInfo &info, bool skip_final_memcpy=false)
bool find_fastest_path(const Node *nodes_info, PathCache &path_cache, ChannelCopyInfo channel_copy_info, CustomSerdezID serdez_id, ReductionOpID redop_id, size_t total_bytes, const std::vector< size_t > *src_frags, const std::vector< size_t > *dst_frags, MemPathInfo &info, bool skip_final_memcpy=false)
::realm_reduction_op_id_t ReductionOpID
Definition event.h:38
Definition lowlevel_dma.h:49
std::vector< Channel * > xd_channels
Definition lowlevel_dma.h:51
std::vector< Memory > path
Definition lowlevel_dma.h:50
friend std::ostream & operator<<(std::ostream &out, const MemPathInfo &info)
Definition runtime_impl.h:88