ruda-driver-cpu 0.1.104

CPU driver backend for Ruda
use ruda_kernel::dsl::server::ExecutionMode;

use crate::memory::arguments::MlirData;
use crate::execution::jit::MlirEngine;
use std::sync::mpsc;

pub use super::barrier::sync_ruda;

pub enum Message {
    ComputeTask(ComputeTask),
    EndTask(mpsc::Sender<()>),
}

pub struct ComputeTask {
    pub mlir_engine: MlirEngine,
    pub mlir_data: MlirData,
    pub unit_pos: [u32; 3],
    pub kind: ExecutionMode,
}

impl ComputeTask {
    pub fn compute(mut self) {
        self.mlir_data.push_builtin();
        self.mlir_data.builtin.set_unit_pos(self.unit_pos);
        unsafe {
            self.mlir_engine.run_kernel(&mut self.mlir_data);
        }
    }
}