use cubecl_core as cubecl;
use cubecl_core::prelude::barrier::Barrier;
use cubecl_core::prelude::*;
#[cube]
pub trait CopyMechanism: CubeType + Sync + Send + 'static {
fn memcpy_async<ES: Numeric>(
this: &Self,
source: &Slice<Line<ES>>,
destination: &mut SliceMut<Line<ES>>,
);
}
#[cube]
impl CopyMechanism for Barrier {
fn memcpy_async<ES: Numeric>(
this: &Self,
source: &Slice<Line<ES>>,
destination: &mut SliceMut<Line<ES>>,
) {
this.memcpy_async(source, destination)
}
}