#[derive(Debug, Clone, PartialEq)]
pub struct CpuAffinity {
pub cores: Vec<usize>,
}
#[derive(Debug, Clone, PartialEq)]
pub enum ExecutionContext {
Cpu {
affinity: Option<CpuAffinity>,
numa_node: Option<usize>,
},
Gpu { device_id: u32, stream: Option<u32> },
Heterogeneous { contexts: Vec<ExecutionContext> },
}
impl Default for ExecutionContext {
fn default() -> Self {
ExecutionContext::Cpu {
affinity: None,
numa_node: None,
}
}
}
impl ExecutionContext {
pub fn cpu() -> Self {
ExecutionContext::Cpu {
affinity: None,
numa_node: None,
}
}
pub fn gpu(device_id: u32) -> Self {
ExecutionContext::Gpu {
device_id,
stream: None,
}
}
}