silvic_core/
collective.rs1use crate::error::Result;
9
10pub trait Collective: Send {
11 fn rank(&self) -> usize;
12
13 fn world_size(&self) -> usize;
14
15 fn allreduce_sum_f64(&mut self, data: &mut [f64]) -> Result<()>;
17
18 fn allreduce_sum_i64(&mut self, data: &mut [i64]) -> Result<()>;
19
20 fn allreduce_max_f64(&mut self, data: &mut [f64]) -> Result<()>;
22
23 fn allgather_bytes(&mut self, local: &[u8]) -> Result<Vec<Vec<u8>>>;
25}
26
27#[derive(Debug, Default, Clone, Copy)]
29pub struct LocalCollective;
30
31impl Collective for LocalCollective {
32 fn rank(&self) -> usize {
33 0
34 }
35
36 fn world_size(&self) -> usize {
37 1
38 }
39
40 fn allreduce_sum_f64(&mut self, _data: &mut [f64]) -> Result<()> {
41 Ok(())
42 }
43
44 fn allreduce_sum_i64(&mut self, _data: &mut [i64]) -> Result<()> {
45 Ok(())
46 }
47
48 fn allreduce_max_f64(&mut self, _data: &mut [f64]) -> Result<()> {
49 Ok(())
50 }
51
52 fn allgather_bytes(&mut self, local: &[u8]) -> Result<Vec<Vec<u8>>> {
53 Ok(vec![local.to_vec()])
54 }
55}