#[non_exhaustive]
#[derive(Debug, Clone)]
pub struct ParallelConfig {
pub n_workers: usize,
pub use_shared_memory: bool,
pub chunk_size: usize,
}
impl Default for ParallelConfig {
fn default() -> Self {
Self {
n_workers: 4,
use_shared_memory: false,
chunk_size: 1024,
}
}
}
#[non_exhaustive]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum SyncPrimitive {
Mutex,
Semaphore,
Barrier,
}
#[derive(Debug, Clone)]
pub struct WorkerMessage {
pub worker_id: usize,
pub data: Vec<f64>,
pub operation: WorkerOp,
}
#[non_exhaustive]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum WorkerOp {
MatMul,
Reduce,
Map,
Sort,
}