|
int | unique_tag () const |
|
| Mutex (int junk=0) |
| Make and initialize a mutex ... initial state is unlocked. More...
|
|
virtual | ~Mutex () |
|
void | lock () const |
| Acquire the mutex waiting if necessary. More...
|
|
pthread_mutex_t * | ptr () const |
| Return a pointer to the pthread mutex for use by a condition variable. More...
|
|
bool | try_lock () const |
| Try to acquire the mutex ... return true on success, false on failure. More...
|
|
void | unlock () const |
| Free a mutex owned by this thread. More...
|
|
◆ RmiTask()
References madness::RMI::ALIGNMENT, madness::cstr_to_memory_size(), madness::RMI::DEFAULT_MAX_MSG_LEN, madness::RMI::DEFAULT_NRECV, ind, MADNESS_ASSERT, MADNESS_EXCEPTION, max_msg_len_, maxq_, nproc, nrecv_, nssend_, posix_memalign(), post_recv_buf(), madness::print_error(), q, recv_buf, recv_counters, recv_req, send_counters, and status.
◆ ~RmiTask()
madness::RMI::RmiTask::~RmiTask |
( |
| ) |
|
|
virtual |
◆ exit()
void madness::RMI::RmiTask::exit |
( |
| ) |
|
|
inline |
◆ huge_msg_handler()
void madness::RMI::RmiTask::huge_msg_handler |
( |
void * |
buf, |
|
|
size_t |
nbytein |
|
) |
| |
|
static |
◆ is_ordered()
static bool madness::RMI::RmiTask::is_ordered |
( |
attrT |
attr | ) |
|
|
inlinestatic |
◆ isend()
◆ post_pending_huge_msg()
void madness::RMI::RmiTask::post_pending_huge_msg |
( |
| ) |
|
◆ post_recv_buf()
void madness::RMI::RmiTask::post_recv_buf |
( |
int |
i | ) |
|
◆ process_some()
void madness::RMI::RmiTask::process_some |
( |
| ) |
|
References madness::RMI::clear_send_req(), madness::RMI::debugging, madness::ThreadPool::flush_prebuf(), madness::func(), h(), ind, madness::ThreadPool::instance(), is_ordered(), m, MADNESS_EXCEPTION, maxq_, MPI_BYTE, madness::myusleep(), n_in_q, madness::RMIStats::nbyte_recv, madness::RMIStats::nmsg_recv, post_pending_huge_msg(), post_recv_buf(), madness::print_error(), q, rank, recv_buf, recv_counters, recv_req, madness::MutexWaiter::reset(), madness::RMI::stats, status, SafeMPI::Request::Testsome(), and madness::RMI::testsome_backoff_us.
Referenced by run().
◆ run()
void madness::RMI::RmiTask::run |
( |
| ) |
|
|
inline |
◆ set_rmi_task_is_running()
void madness::RMI::RmiTask::set_rmi_task_is_running |
( |
bool |
flag = true | ) |
|
|
static |
◆ unique_tag()
int madness::RMI::RmiTask::unique_tag |
( |
| ) |
const |
|
private |
thread-safely round-robins through tags in [first_tag, first_tag+period) range
- Returns
- new tag to be used in messaging
should be able to do this with atomics
◆ unique_tag_period()
static constexpr int madness::RMI::RmiTask::unique_tag_period |
( |
| ) |
|
|
inlinestaticconstexprprivate |
◆ comm
◆ finished
std::atomic<bool> madness::RMI::RmiTask::finished |
◆ hugeq
std::list< std::tuple<int,size_t,int> > madness::RMI::RmiTask::hugeq |
q of huge messages, each msg = {source,nbytes,tag}
◆ ind
std::unique_ptr<int[]> madness::RMI::RmiTask::ind |
◆ max_msg_len_
std::size_t madness::RMI::RmiTask::max_msg_len_ |
◆ maxq_
std::size_t madness::RMI::RmiTask::maxq_ |
◆ n_in_q
int madness::RMI::RmiTask::n_in_q |
◆ nproc
const int madness::RMI::RmiTask::nproc |
◆ nrecv_
std::size_t madness::RMI::RmiTask::nrecv_ |
◆ nssend_
long madness::RMI::RmiTask::nssend_ |
std::unique_ptr<qmsg[]> madness::RMI::RmiTask::q |
◆ rank
◆ recv_buf
std::unique_ptr<void*[]> madness::RMI::RmiTask::recv_buf |
◆ recv_counters
std::unique_ptr<counterT[]> madness::RMI::RmiTask::recv_counters |
◆ recv_req
◆ send_counters
std::unique_ptr<counterT[]> madness::RMI::RmiTask::send_counters |
◆ status
The documentation for this class was generated from the following files: