Logo ROOT  
Reference Guide
RooFit::MultiProcess Namespace Reference

Classes

class  Config
 Configuration for MultiProcess infrastructure. More...
 
class  FIFOQueue
 A Queue with simple FIFO behavior. More...
 
class  Job
 interface class for defining the actual work that must be done More...
 
class  JobManager
 Main point of access for all MultiProcess infrastructure. More...
 
struct  JobTask
 combined job_object, state and task identifier type More...
 
class  Messenger
 Manages ZeroMQ sockets and wraps send and receive calls. More...
 
struct  OrderedJobTask
 
class  PriorityQueue
 Queue that orders tasks according to specified task priorities. More...
 
class  ProcessManager
 Fork processes for queue and workers. More...
 
class  Queue
 Keeps a queue of tasks for workers and manages the queue process through its event loop. More...
 

Typedefs

using State = std::size_t
 
using Task = std::size_t
 

Enumerations

enum class  M2Q : int { enqueue = 10 }
 
enum class  Q2W : int { dequeue_rejected = 40 , dequeue_accepted = 41 }
 
enum class  W2Q : int { dequeue = 30 }
 
enum class  X2X : int { ping = -1 , pong = -2 , initial_value = 0 }
 
enum class  zmq_ppoll_error_response { abort , unknown_eintr , retry }
 

Functions

std::tuple< std::vector< std::pair< size_t, zmq::event_flags > >, boolcareful_ppoll (ZeroMQPoller &poller, const sigset_t &ppoll_sigmask, std::size_t max_tries=2)
 
int chill_wait ()
 
pid_t fork_and_handle_errors ()
 
zmq_ppoll_error_response handle_zmq_ppoll_error (ZMQ::ppoll_error_t &e)
 
bool is_worker_loop_running ()
 
std::ostream & operator<< (std::ostream &out, const M2Q value)
 
std::ostream & operator<< (std::ostream &out, const Q2W value)
 
std::ostream & operator<< (std::ostream &out, const W2Q value)
 
std::ostream & operator<< (std::ostream &out, const X2X value)
 
void set_socket_immediate (ZmqLingeringSocketPtr<> &socket)
 
int wait_for_child (pid_t child_pid, bool may_throw, int retries_before_killing)
 
void worker_loop ()
 The worker processes' event loop. More...
 

Variables

static bool worker_loop_running = false
 

Typedef Documentation

◆ State

using RooFit::MultiProcess::State = typedef std::size_t

Definition at line 23 of file types.h.

◆ Task

using RooFit::MultiProcess::Task = typedef std::size_t

Definition at line 22 of file types.h.

Enumeration Type Documentation

◆ M2Q

enum class RooFit::MultiProcess::M2Q : int
strong
Enumerator
enqueue 

Definition at line 151 of file Messenger_decl.h.

◆ Q2W

enum class RooFit::MultiProcess::Q2W : int
strong
Enumerator
dequeue_rejected 
dequeue_accepted 

Definition at line 159 of file Messenger_decl.h.

◆ W2Q

enum class RooFit::MultiProcess::W2Q : int
strong
Enumerator
dequeue 

Definition at line 156 of file Messenger_decl.h.

◆ X2X

enum class RooFit::MultiProcess::X2X : int
strong
Enumerator
ping 
pong 
initial_value 

Definition at line 31 of file Messenger_decl.h.

◆ zmq_ppoll_error_response

Enumerator
abort 
unknown_eintr 
retry 

Definition at line 27 of file util.h.

Function Documentation

◆ careful_ppoll()

std::tuple< std::vector< std::pair< size_t, zmq::event_flags > >, bool > RooFit::MultiProcess::careful_ppoll ( ZeroMQPoller poller,
const sigset_t &  ppoll_sigmask,
std::size_t  max_tries = 2 
)

Definition at line 95 of file util.cxx.

◆ chill_wait()

int RooFit::MultiProcess::chill_wait ( )

Definition at line 220 of file ProcessManager.cxx.

◆ fork_and_handle_errors()

pid_t RooFit::MultiProcess::fork_and_handle_errors ( )

Definition at line 87 of file ProcessManager.cxx.

◆ handle_zmq_ppoll_error()

zmq_ppoll_error_response RooFit::MultiProcess::handle_zmq_ppoll_error ( ZMQ::ppoll_error_t e)

Definition at line 64 of file util.cxx.

◆ is_worker_loop_running()

bool RooFit::MultiProcess::is_worker_loop_running ( )

Definition at line 31 of file worker.cxx.

◆ operator<<() [1/4]

std::ostream & RooFit::MultiProcess::operator<< ( std::ostream &  out,
const M2Q  value 
)

Definition at line 474 of file Messenger.cxx.

◆ operator<<() [2/4]

std::ostream & RooFit::MultiProcess::operator<< ( std::ostream &  out,
const Q2W  value 
)

Definition at line 494 of file Messenger.cxx.

◆ operator<<() [3/4]

std::ostream & RooFit::MultiProcess::operator<< ( std::ostream &  out,
const W2Q  value 
)

Definition at line 484 of file Messenger.cxx.

◆ operator<<() [4/4]

std::ostream & RooFit::MultiProcess::operator<< ( std::ostream &  out,
const X2X  value 
)

Definition at line 505 of file Messenger.cxx.

◆ set_socket_immediate()

void RooFit::MultiProcess::set_socket_immediate ( ZmqLingeringSocketPtr<> &  socket)

Definition at line 24 of file Messenger.cxx.

◆ wait_for_child()

int RooFit::MultiProcess::wait_for_child ( pid_t  child_pid,
bool  may_throw,
int  retries_before_killing 
)

Definition at line 26 of file util.cxx.

◆ worker_loop()

void RooFit::MultiProcess::worker_loop ( )

The worker processes' event loop.

Asks the queue process for tasks, polls for incoming messages from other processes and handles them.

Definition at line 40 of file worker.cxx.

Variable Documentation

◆ worker_loop_running

bool RooFit::MultiProcess::worker_loop_running = false
static

Definition at line 29 of file worker.cxx.