cubecl-core 0.10.0-pre.3

CubeCL core create
Documentation
// Re-export for testgen macros.
pub use test_log;

pub mod all_reduce;
pub mod assign;
pub mod atomic;
pub mod barrier;
pub mod binary;
pub mod branch;
pub mod cluster;
pub mod cmma;
pub mod comparison;
pub mod const_match;
pub mod constants;
pub mod debug;
pub mod different_rank;
pub mod enums;
pub mod file;
pub mod index;
pub mod launch;
pub mod metadata;
pub mod minifloat;
pub mod numeric;
pub mod plane;
pub mod properties;
pub mod saturating;
pub mod sequence;
pub mod slice;
pub mod stream;
pub mod synchronization;
pub mod tensor;
pub mod tensormap;
pub mod to_client;
pub mod topology;
pub mod traits;
pub mod unary;
pub mod unroll;
pub mod vector;

#[allow(missing_docs)]
#[macro_export]
macro_rules! testgen_all {
    () => {
        use $crate::Runtime;

        type FloatType = f32;
        type IntType = i32;
        type UintType = u32;

        $crate::testgen_float!();
        $crate::testgen_int!();
        $crate::testgen_uint!();
        $crate::testgen_untyped!();
    };
    ($f_def:ident: [$($float:ident),*], $i_def:ident: [$($int:ident),*], $u_def:ident: [$($uint:ident),*]) => {
        use $crate::Runtime;

        ::paste::paste! {
            $(mod [<$float _ty>] {
                use super::*;

                type FloatType = $float;
                type IntType = $i_def;
                type UintType = $u_def;

                $crate::testgen_float!();
            })*
            $(mod [<$int _ty>] {
                use super::*;

                type FloatType = $f_def;
                type IntType = $int;
                type UintType = $u_def;

                $crate::testgen_int!();
            })*
            $(mod [<$uint _ty>] {
                use super::*;

                type FloatType = $f_def;
                type IntType = $i_def;
                type UintType = $uint;

                $crate::testgen_uint!();
            })*
        }
        $crate::testgen_untyped!();
    };
}

#[allow(missing_docs)]
#[macro_export]
macro_rules! testgen_float {
    () => {
        cubecl_core::testgen_assign!();
        cubecl_core::testgen_barrier!();
        cubecl_core::testgen_binary!();
        cubecl_core::testgen_branch!();
        cubecl_core::testgen_different_rank!();
        cubecl_core::testgen_index!();
        cubecl_core::testgen_launch!();
        cubecl_core::testgen_vector!();
        cubecl_core::testgen_plane!();
        cubecl_core::testgen_sequence!();
        cubecl_core::testgen_slice!();
        cubecl_core::testgen_stream!();
        cubecl_core::testgen_unary!();
        cubecl_core::testgen_atomic_float!();
        cubecl_core::testgen_tensormap!();
        cubecl_core::testgen_minifloat!();
        cubecl_core::testgen_unroll!();
    };
}

#[allow(missing_docs)]
#[macro_export]
macro_rules! testgen_int {
    () => {
        cubecl_core::testgen_unary_int!();
        cubecl_core::testgen_atomic_int!();
        cubecl_core::testgen_saturating_int!();
    };
}

#[allow(missing_docs)]
#[macro_export]
macro_rules! testgen_uint {
    () => {
        cubecl_core::testgen_const_match!();
        cubecl_core::testgen_saturating_uint!();
    };
}

#[allow(missing_docs)]
#[macro_export]
macro_rules! testgen_untyped {
    () => {
        cubecl_core::testgen_launch_untyped!();

        cubecl_core::testgen_cmma!();
        cubecl_core::testgen_numeric!();
        cubecl_core::testgen_file!();
        cubecl_core::testgen_metadata!();
        cubecl_core::testgen_topology!();
        cubecl_core::testgen_properties!();

        cubecl_core::testgen_constants!();
        cubecl_core::testgen_sync_plane!();
        cubecl_core::testgen_atomic_untyped!();
        cubecl_core::testgen_tensor_indexing!();
        cubecl_core::testgen_debug!();
        cubecl_core::testgen_binary_untyped!();
        cubecl_core::testgen_cluster!();

        cubecl_core::testgen_enums!();
        cubecl_core::testgen_comparison!();

        cubecl_core::testgen_to_client!();
        cubecl_core::testgen_all_reduce!();
    };
}

#[allow(missing_docs)]
#[macro_export]
macro_rules! as_bytes {
    ($ty:ident: $($elem:expr),*) => {
        $ty::as_bytes(&[$($ty::new($elem),)*])
    };
}

#[allow(missing_docs)]
#[macro_export]
macro_rules! as_type {
    ($ty:ident: $($elem:expr),*) => {
        &[$($ty::new($elem),)*]
    };
}