pub trait CudaTypeName {
const NAME: &'static str;
}
macro_rules! cuda_type {
($RustTy:ty, $CudaTy:expr) => {
impl CudaTypeName for $RustTy {
const NAME: &'static str = $CudaTy;
}
};
}
cuda_type!(bool, "bool");
cuda_type!(i8, "char");
cuda_type!(i16, "short");
cuda_type!(i32, "int");
cuda_type!(i64, "long");
cuda_type!(isize, "intptr_t");
cuda_type!(u8, "unsigned char");
cuda_type!(u16, "unsigned short");
cuda_type!(u32, "unsigned int");
cuda_type!(u64, "unsigned long");
cuda_type!(usize, "size_t");
cuda_type!(f32, "float");
cuda_type!(f64, "double");
#[cfg(feature = "f16")]
cuda_type!(half::f16, "__half");
#[cfg(feature = "f16")]
cuda_type!(half::bf16, "__nv_bfloat16");