![]() |
Realm
A distributed, event-based tasking library
|
#include <channel.h>
Classes | |
| struct | ControlPortState |
| class | DeferredXDEnqueue |
| class | SequenceCache |
| struct | UnalignedStorage |
| struct | XferPort |
Public Types | |
| enum | { XFERDES_NO_GUID = 0 } |
| typedef IntrusivePriorityList< XferDes, int, REALM_PMTA_USE(XferDes, xd_link), REALM_PMTA_USE(XferDes, priority), DummyLock > | XferDesList |
| typedef SequenceCache<&XferDes::update_bytes_read > | ReadSequenceCache |
| typedef SequenceCache<&XferDes::update_bytes_write > | WriteSequenceCache |
Public Member Functions | |
| REALM_ALIGNED_TYPE_CONST (AlignedStorage, UnalignedStorage, 16) | |
| REALM_PMTA_DEFN (XferDes, IntrusivePriorityListLink< XferDes >, xd_link) | |
| REALM_PMTA_DEFN (XferDes, int, priority) | |
| XferDes (uintptr_t _dma_op, Channel *_channel, NodeID _launch_node, XferDesID _guid, const std::vector< XferDesPortInfo > &inputs_info, const std::vector< XferDesPortInfo > &outputs_info, int _priority, const void *_fill_data, size_t fill_size) | |
| void | add_reference (void) |
| void | remove_reference (void) |
| void | add_update_pre_bytes_total_received (void) |
| virtual Event | request_metadata () |
| virtual long | get_requests (Request **requests, long nr)=0 |
| virtual void | notify_request_read_done (Request *req) |
| virtual void | notify_request_write_done (Request *req) |
| virtual void | flush () |
| long | default_get_requests (Request **requests, long nr, unsigned flags=0) |
| void | default_notify_request_read_done (Request *req) |
| void | default_notify_request_write_done (Request *req) |
| virtual void | update_bytes_read (int port_idx, size_t offset, size_t size) |
| virtual void | update_bytes_write (int port_idx, size_t offset, size_t size) |
| void | update_pre_bytes_write (int port_idx, size_t offset, size_t size) |
| void | update_pre_bytes_total (int port_idx, size_t pre_bytes_total) |
| void | update_next_bytes_read (int port_idx, size_t offset, size_t size) |
| void | begin_completion () |
| void | mark_completed () |
| unsigned | current_progress (void) |
| bool | check_for_progress (unsigned last_counter) |
| void | update_progress (void) |
| virtual bool | request_available () |
| virtual Request * | dequeue_request () |
| virtual void | enqueue_request (Request *req) |
| size_t | update_control_info (ReadSequenceCache *rseqcache) |
| size_t | get_addresses (size_t min_xfer_size, ReadSequenceCache *rseqcache) |
| size_t | get_addresses (size_t min_xfer_size, ReadSequenceCache *rseqcache, const InstanceLayoutPieceBase *&in_nonaffine, const InstanceLayoutPieceBase *&out_nonaffine) |
| bool | record_address_consumption (size_t total_read_bytes, size_t total_write_bytes) |
| void | replicate_fill_data (size_t new_size) |
Public Attributes | |
| uintptr_t | dma_op |
| XferDesQueue * | xferDes_queue |
| NodeID | launch_node |
| atomic< bool > | iteration_completed |
| atomic< int64_t > | bytes_write_pending |
| atomic< bool > | transfer_completed |
| uint64_t | current_in_port_mask |
| uint64_t | current_out_port_mask |
| uint64_t | current_in_port_remain |
| uint64_t | current_out_port_remain |
| std::vector< XferPort > | input_ports |
| std::vector< XferPort > | output_ports |
| ControlPortState | input_control |
| ControlPortState | output_control |
| uint64_t | max_req_size |
| int | priority |
| XferDesID | guid |
| XferDesKind | kind |
| Channel * | channel |
| void * | fill_data |
| size_t | fill_size |
| size_t | orig_fill_size |
| AlignedStorage | inline_fill_storage |
| Mutex | xd_lock |
| Mutex | update_read_lock |
| Mutex | update_write_lock |
| atomic< unsigned > | progress_counter |
| atomic< unsigned > | reference_count |
| unsigned | nb_update_pre_bytes_total_calls_expected |
| atomic< unsigned > | nb_update_pre_bytes_total_calls_received |
| IntrusivePriorityListLink< XferDes > | xd_link |
| DeferredXDEnqueue | deferred_enqueue |
Static Public Attributes | |
| static const size_t | ALIGNED_FILL_STORAGE_SIZE = 32 |
Protected Member Functions | |
| virtual | ~XferDes () |
Protected Attributes | |
| Mutex | available_req_mutex |
| std::queue< Request * > | available_reqs |
| typedef IntrusivePriorityList<XferDes, int, REALM_PMTA_USE(XferDes, xd_link), REALM_PMTA_USE(XferDes, priority), DummyLock> Realm::XferDes::XferDesList |
| Realm::XferDes::XferDes | ( | uintptr_t | _dma_op, |
| Channel * | _channel, | ||
| NodeID | _launch_node, | ||
| XferDesID | _guid, | ||
| const std::vector< XferDesPortInfo > & | inputs_info, | ||
| const std::vector< XferDesPortInfo > & | outputs_info, | ||
| int | _priority, | ||
| const void * | _fill_data, | ||
| size_t | fill_size | ||
| ) |
|
protectedvirtual |
| void Realm::XferDes::add_reference | ( | void | ) |
| void Realm::XferDes::add_update_pre_bytes_total_received | ( | void | ) |
| void Realm::XferDes::begin_completion | ( | ) |
| bool Realm::XferDes::check_for_progress | ( | unsigned | last_counter | ) |
| unsigned Realm::XferDes::current_progress | ( | void | ) |
| long Realm::XferDes::default_get_requests | ( | Request ** | requests, |
| long | nr, | ||
| unsigned | flags = 0 |
||
| ) |
| void Realm::XferDes::default_notify_request_read_done | ( | Request * | req | ) |
| void Realm::XferDes::default_notify_request_write_done | ( | Request * | req | ) |
|
inlinevirtual |
Reimplemented in Realm::HDF5::HDF5XferDes, Realm::MemfillXferDes, and Realm::MemcpyXferDes.
|
inlinevirtual |
Reimplemented in Realm::HDF5::HDF5XferDes, Realm::MemfillXferDes, and Realm::MemcpyXferDes.
|
virtual |
| size_t Realm::XferDes::get_addresses | ( | size_t | min_xfer_size, |
| ReadSequenceCache * | rseqcache | ||
| ) |
| size_t Realm::XferDes::get_addresses | ( | size_t | min_xfer_size, |
| ReadSequenceCache * | rseqcache, | ||
| const InstanceLayoutPieceBase *& | in_nonaffine, | ||
| const InstanceLayoutPieceBase *& | out_nonaffine | ||
| ) |
|
pure virtual |
Implemented in Realm::Cuda::GPUXferDes, Realm::Cuda::GPUIndirectXferDes, Realm::Cuda::GPUfillXferDes, Realm::Cuda::GPUreduceXferDes, Realm::HDF5::HDF5XferDes, Realm::Hip::GPUXferDes, Realm::Hip::GPUfillXferDes, Realm::Hip::GPUreduceXferDes, Realm::AddressSplitXferDesBase, Realm::MemfillXferDes, Realm::MemreduceXferDes, Realm::GASNetXferDes, Realm::RemoteWriteXferDes, Realm::FileXferDes, Realm::DiskXferDes, and Realm::MemcpyXferDes.
| void Realm::XferDes::mark_completed | ( | ) |
|
virtual |
|
virtual |
| Realm::XferDes::REALM_ALIGNED_TYPE_CONST | ( | AlignedStorage | , |
| UnalignedStorage | , | ||
| 16 | |||
| ) |
| Realm::XferDes::REALM_PMTA_DEFN | ( | XferDes | , |
| IntrusivePriorityListLink< XferDes > | , | ||
| xd_link | |||
| ) |
| bool Realm::XferDes::record_address_consumption | ( | size_t | total_read_bytes, |
| size_t | total_write_bytes | ||
| ) |
| void Realm::XferDes::remove_reference | ( | void | ) |
| void Realm::XferDes::replicate_fill_data | ( | size_t | new_size | ) |
|
inlinevirtual |
Reimplemented in Realm::HDF5::HDF5XferDes, Realm::MemfillXferDes, and Realm::MemcpyXferDes.
|
virtual |
Reimplemented in Realm::AddressSplitXferDes< N, T >.
|
virtual |
|
virtual |
Reimplemented in Realm::RemoteWriteXferDes.
| size_t Realm::XferDes::update_control_info | ( | ReadSequenceCache * | rseqcache | ) |
| void Realm::XferDes::update_next_bytes_read | ( | int | port_idx, |
| size_t | offset, | ||
| size_t | size | ||
| ) |
| void Realm::XferDes::update_pre_bytes_total | ( | int | port_idx, |
| size_t | pre_bytes_total | ||
| ) |
| void Realm::XferDes::update_pre_bytes_write | ( | int | port_idx, |
| size_t | offset, | ||
| size_t | size | ||
| ) |
| void Realm::XferDes::update_progress | ( | void | ) |
|
static |
|
protected |
|
protected |
| atomic<int64_t> Realm::XferDes::bytes_write_pending |
| Channel* Realm::XferDes::channel |
| uint64_t Realm::XferDes::current_in_port_mask |
| uint64_t Realm::XferDes::current_in_port_remain |
| uint64_t Realm::XferDes::current_out_port_mask |
| uint64_t Realm::XferDes::current_out_port_remain |
| DeferredXDEnqueue Realm::XferDes::deferred_enqueue |
| uintptr_t Realm::XferDes::dma_op |
| void* Realm::XferDes::fill_data |
| size_t Realm::XferDes::fill_size |
| XferDesID Realm::XferDes::guid |
| AlignedStorage Realm::XferDes::inline_fill_storage |
| ControlPortState Realm::XferDes::input_control |
| std::vector<XferPort> Realm::XferDes::input_ports |
| atomic<bool> Realm::XferDes::iteration_completed |
| XferDesKind Realm::XferDes::kind |
| NodeID Realm::XferDes::launch_node |
| uint64_t Realm::XferDes::max_req_size |
| unsigned Realm::XferDes::nb_update_pre_bytes_total_calls_expected |
| atomic<unsigned> Realm::XferDes::nb_update_pre_bytes_total_calls_received |
| size_t Realm::XferDes::orig_fill_size |
| ControlPortState Realm::XferDes::output_control |
| std::vector<XferPort> Realm::XferDes::output_ports |
| int Realm::XferDes::priority |
| atomic<unsigned> Realm::XferDes::progress_counter |
| atomic<unsigned> Realm::XferDes::reference_count |
| atomic<bool> Realm::XferDes::transfer_completed |
| Mutex Realm::XferDes::update_read_lock |
| Mutex Realm::XferDes::update_write_lock |
| IntrusivePriorityListLink<XferDes> Realm::XferDes::xd_link |
| Mutex Realm::XferDes::xd_lock |
| XferDesQueue* Realm::XferDes::xferDes_queue |