pub struct Cuda;Trait Implementations§
impl Copy for Cuda
Source§impl LowerOp<Cuda> for SaturatingSAddOp
impl LowerOp<Cuda> for SaturatingSAddOp
Source§impl LowerOp<Cuda> for SaturatingSSubOp
impl LowerOp<Cuda> for SaturatingSSubOp
Source§impl LowerOp<Cuda> for CastOp
special cast function for recursive conversion in the case of minifloat to minifloat conversion
impl LowerOp<Cuda> for CastOp
special cast function for recursive conversion in the case of minifloat to minifloat conversion
Needs to jump through a lot of hoops to deal with CUDA nonsense. The overview of available conversions is as follows:
| From | To | Extra args |
|---|---|---|
| f16/bf16/f32/f64 | e4m3/e5m2 | Interpretation, saturation |
| f16/bf16/f32/f64 | e3m2/e2m3/e2m1 | Interpretation, rounding |
| bf16/f32/f64 | e8m0 | saturation, rounding |
| e4m3/e5m2/e3m2/e2m3/e2m1 | f16 | Interpretation, |
| e8m0 | bf16 |
When the input and output don’t match these options, we need to do a two-step conversion.
When the input is a minifloat we always need to cast out to f16/bf16, and then convert to
the actual out type if it differs. Trying to cast ints also requires an extra conversion, and
so does f16 to e8m0 (though it’s not recommended to do that anyways, you should be using
e5m2 for that since you don’t have 8 bits of exponent in f16).
See also: https://docs.nvidia.com/cuda/cuda-math-api/cuda_math_api/group__CUDA__MATH__FP8__MISC.html https://docs.nvidia.com/cuda/cuda-math-api/cuda_math_api/group__CUDA__MATH__FP6__MISC.html https://docs.nvidia.com/cuda/cuda-math-api/cuda_math_api/group__CUDA__MATH__FP4__MISC.html
Source§impl LowerOp<Cuda> for RowIndexOp
impl LowerOp<Cuda> for RowIndexOp
Source§impl LowerOp<Cuda> for ColIndexOp
impl LowerOp<Cuda> for ColIndexOp
Source§impl LowerOp<Cuda> for InlineAsmOp
impl LowerOp<Cuda> for InlineAsmOp
Source§impl LowerOp<Cuda> for MmaManualOp
impl LowerOp<Cuda> for MmaManualOp
Source§impl LowerOp<Cuda> for MmaManualScaledOp
impl LowerOp<Cuda> for MmaManualScaledOp
Source§impl LowerOp<Cuda> for LdMatrixOp
impl LowerOp<Cuda> for LdMatrixOp
Source§impl LowerOp<Cuda> for StMatrixOp
impl LowerOp<Cuda> for StMatrixOp
Source§impl LowerOp<Cuda> for CopyAsyncOp
impl LowerOp<Cuda> for CopyAsyncOp
Source§impl LowerOp<Cuda> for CommitCopyAsyncOp
impl LowerOp<Cuda> for CommitCopyAsyncOp
Source§impl LowerOp<Cuda> for TmaLoadIm2colOp
impl LowerOp<Cuda> for TmaLoadIm2colOp
Source§impl LowerOpAfterUnroll<Cuda> for AtomicIAddOp
impl LowerOpAfterUnroll<Cuda> for AtomicIAddOp
Source§impl LowerOpAfterUnroll<Cuda> for AtomicFAddOp
impl LowerOpAfterUnroll<Cuda> for AtomicFAddOp
Source§impl LowerOpAfterUnroll<Cuda> for AtomicSMinOp
impl LowerOpAfterUnroll<Cuda> for AtomicSMinOp
Source§impl LowerOpAfterUnroll<Cuda> for AtomicUMinOp
impl LowerOpAfterUnroll<Cuda> for AtomicUMinOp
Source§impl LowerOpAfterUnroll<Cuda> for AtomicFMinOp
impl LowerOpAfterUnroll<Cuda> for AtomicFMinOp
Source§impl LowerOpAfterUnroll<Cuda> for AtomicSMaxOp
impl LowerOpAfterUnroll<Cuda> for AtomicSMaxOp
Source§impl LowerOpAfterUnroll<Cuda> for AtomicUMaxOp
impl LowerOpAfterUnroll<Cuda> for AtomicUMaxOp
Source§impl LowerOpAfterUnroll<Cuda> for AtomicFMaxOp
impl LowerOpAfterUnroll<Cuda> for AtomicFMaxOp
Source§impl OpToCPP<Cuda> for MemCopyAsyncOp
impl OpToCPP<Cuda> for MemCopyAsyncOp
Source§impl OpToCPP<Cuda> for MemCopyAsyncTxOp
impl OpToCPP<Cuda> for MemCopyAsyncTxOp
Source§impl OpToCPP<Cuda> for ArriveAndExpectTxOp
impl OpToCPP<Cuda> for ArriveAndExpectTxOp
Source§impl OpToCPP<Cuda> for ExpectTxOp
impl OpToCPP<Cuda> for ExpectTxOp
Source§impl OpToCPP<Cuda> for WaitParityOp
impl OpToCPP<Cuda> for WaitParityOp
Source§impl OpToCPP<Cuda> for ArriveAndWaitOp
impl OpToCPP<Cuda> for ArriveAndWaitOp
Source§impl OpToCPP<Cuda> for ReadBuiltinOp
impl OpToCPP<Cuda> for ReadBuiltinOp
Source§impl OpToCPP<Cuda> for SyncAsyncProxyOp
impl OpToCPP<Cuda> for SyncAsyncProxyOp
Source§impl OpToCPP<Cuda> for DeclareMatrixOp
impl OpToCPP<Cuda> for DeclareMatrixOp
Source§impl OpToCPP<Cuda> for MultiplyAccumulateOp
impl OpToCPP<Cuda> for MultiplyAccumulateOp
Source§impl OpToCPP<Cuda> for BroadcastOp
impl OpToCPP<Cuda> for BroadcastOp
Source§impl OpToCPP<Cuda> for ShuffleXorOp
impl OpToCPP<Cuda> for ShuffleXorOp
Source§impl OpToCPP<Cuda> for ShuffleUpOp
impl OpToCPP<Cuda> for ShuffleUpOp
Source§impl OpToCPP<Cuda> for ShuffleDownOp
impl OpToCPP<Cuda> for ShuffleDownOp
Source§impl OpToCPP<Cuda> for InlinePtxOp
impl OpToCPP<Cuda> for InlinePtxOp
Source§impl OpToCPP<Cuda> for BarrierNativeHandleOp
impl OpToCPP<Cuda> for BarrierNativeHandleOp
Source§impl OpToCPP<Cuda> for TensorMapAddrOp
impl OpToCPP<Cuda> for TensorMapAddrOp
Source§impl OpToCPP<Cuda> for TmaStoreOp
impl OpToCPP<Cuda> for TmaStoreOp
Source§impl OpToCPP<Cuda> for CommitGroupOp
impl OpToCPP<Cuda> for CommitGroupOp
Source§impl OpToCPP<Cuda> for WaitGroupOp
impl OpToCPP<Cuda> for WaitGroupOp
Source§impl OpToCPP<Cuda> for WaitGroupReadOp
impl OpToCPP<Cuda> for WaitGroupReadOp
Source§impl RequiresIncludesOp<Cuda> for ReadBuiltinOp
impl RequiresIncludesOp<Cuda> for ReadBuiltinOp
Source§impl RequiresIncludesOp<Cuda> for SyncAsyncProxyOp
impl RequiresIncludesOp<Cuda> for SyncAsyncProxyOp
Source§impl RequiresIncludesOp<Cuda> for TmaStoreOp
impl RequiresIncludesOp<Cuda> for TmaStoreOp
Source§impl RequiresIncludesOp<Cuda> for CommitGroupOp
impl RequiresIncludesOp<Cuda> for CommitGroupOp
Source§impl RequiresIncludesOp<Cuda> for WaitGroupOp
impl RequiresIncludesOp<Cuda> for WaitGroupOp
Source§impl RequiresIncludesOp<Cuda> for WaitGroupReadOp
impl RequiresIncludesOp<Cuda> for WaitGroupReadOp
Source§impl RequiresIncludesType<Cuda> for PointerType
impl RequiresIncludesType<Cuda> for PointerType
Source§impl RequiresIncludesType<Cuda> for ArrayType
impl RequiresIncludesType<Cuda> for ArrayType
Source§impl RequiresIncludesType<Cuda> for RuntimeArrayType
impl RequiresIncludesType<Cuda> for RuntimeArrayType
Source§impl RequiresIncludesType<Cuda> for VectorType
impl RequiresIncludesType<Cuda> for VectorType
Source§impl RequiresIncludesType<Cuda> for BarrierType
impl RequiresIncludesType<Cuda> for BarrierType
Source§impl RequiresIncludesType<Cuda> for Complex32Type
impl RequiresIncludesType<Cuda> for Complex32Type
Source§impl RequiresIncludesType<Cuda> for Complex64Type
impl RequiresIncludesType<Cuda> for Complex64Type
Source§impl RequiresIncludesType<Cuda> for MatrixType
impl RequiresIncludesType<Cuda> for MatrixType
Source§impl RequiresIncludesType<Cuda> for TFloat32Type
impl RequiresIncludesType<Cuda> for TFloat32Type
Source§impl RequiresIncludesType<Cuda> for Float16Type
impl RequiresIncludesType<Cuda> for Float16Type
Source§impl RequiresIncludesType<Cuda> for Float16x2Type
impl RequiresIncludesType<Cuda> for Float16x2Type
Source§impl RequiresIncludesType<Cuda> for BFloat16Type
impl RequiresIncludesType<Cuda> for BFloat16Type
Source§impl RequiresIncludesType<Cuda> for BFloat16x2Type
impl RequiresIncludesType<Cuda> for BFloat16x2Type
Source§impl RequiresIncludesType<Cuda> for Float8E4M3Type
impl RequiresIncludesType<Cuda> for Float8E4M3Type
Source§impl RequiresIncludesType<Cuda> for Float8E5M2Type
impl RequiresIncludesType<Cuda> for Float8E5M2Type
Source§impl RequiresIncludesType<Cuda> for Float8E8M0Type
impl RequiresIncludesType<Cuda> for Float8E8M0Type
Source§impl RequiresIncludesType<Cuda> for Float8E4M3x2Type
impl RequiresIncludesType<Cuda> for Float8E4M3x2Type
Source§impl RequiresIncludesType<Cuda> for Float8E5M2x2Type
impl RequiresIncludesType<Cuda> for Float8E5M2x2Type
Source§impl RequiresIncludesType<Cuda> for Float8E8M0x2Type
impl RequiresIncludesType<Cuda> for Float8E8M0x2Type
Source§impl RequiresIncludesType<Cuda> for Float6E3M2Type
impl RequiresIncludesType<Cuda> for Float6E3M2Type
Source§impl RequiresIncludesType<Cuda> for Float6E2M3Type
impl RequiresIncludesType<Cuda> for Float6E2M3Type
Source§impl RequiresIncludesType<Cuda> for Float6E3M2x2Type
impl RequiresIncludesType<Cuda> for Float6E3M2x2Type
Source§impl RequiresIncludesType<Cuda> for Float6E2M3x2Type
impl RequiresIncludesType<Cuda> for Float6E2M3x2Type
Source§impl RequiresIncludesType<Cuda> for Float4E2M1Type
impl RequiresIncludesType<Cuda> for Float4E2M1Type
Source§impl RequiresIncludesType<Cuda> for Float4E2M1x2Type
impl RequiresIncludesType<Cuda> for Float4E2M1x2Type
Source§impl TypeToCPP<Cuda> for MatrixType
impl TypeToCPP<Cuda> for MatrixType
Source§impl TypeToCPP<Cuda> for TensorMapType
impl TypeToCPP<Cuda> for TensorMapType
Source§impl TypeToCPP<Cuda> for BarrierType
impl TypeToCPP<Cuda> for BarrierType
Source§impl TypeToCPP<Cuda> for BarrierTokenType
impl TypeToCPP<Cuda> for BarrierTokenType
Source§impl TypeToCPP<Cuda> for PointerType
impl TypeToCPP<Cuda> for PointerType
Source§impl TypeToCPP<Cuda> for UniformPointerType
impl TypeToCPP<Cuda> for UniformPointerType
Source§impl TypeToCPP<Cuda> for Complex32Type
impl TypeToCPP<Cuda> for Complex32Type
Source§impl TypeToCPP<Cuda> for Complex64Type
impl TypeToCPP<Cuda> for Complex64Type
Source§impl TypeToCPP<Cuda> for TFloat32Type
impl TypeToCPP<Cuda> for TFloat32Type
Source§impl TypeToCPP<Cuda> for Float16x2Type
impl TypeToCPP<Cuda> for Float16x2Type
Source§impl TypeToCPP<Cuda> for BFloat16x2Type
impl TypeToCPP<Cuda> for BFloat16x2Type
Source§impl TypeToCPP<Cuda> for Float8E4M3x2Type
impl TypeToCPP<Cuda> for Float8E4M3x2Type
Source§impl TypeToCPP<Cuda> for Float8E5M2x2Type
impl TypeToCPP<Cuda> for Float8E5M2x2Type
Source§impl TypeToCPP<Cuda> for Float8E8M0x2Type
impl TypeToCPP<Cuda> for Float8E8M0x2Type
Source§impl TypeToCPP<Cuda> for Float6E3M2x2Type
impl TypeToCPP<Cuda> for Float6E3M2x2Type
Source§impl TypeToCPP<Cuda> for Float6E2M3x2Type
impl TypeToCPP<Cuda> for Float6E2M3x2Type
Source§impl TypeToCPP<Cuda> for Float4E2M1x2Type
impl TypeToCPP<Cuda> for Float4E2M1x2Type
Source§impl TypeToCPP<Cuda> for Float16Type
impl TypeToCPP<Cuda> for Float16Type
Source§impl TypeToCPP<Cuda> for BFloat16Type
impl TypeToCPP<Cuda> for BFloat16Type
Source§impl TypeToCPP<Cuda> for Float8E4M3Type
impl TypeToCPP<Cuda> for Float8E4M3Type
Source§impl TypeToCPP<Cuda> for Float8E5M2Type
impl TypeToCPP<Cuda> for Float8E5M2Type
Source§impl TypeToCPP<Cuda> for Float8E8M0Type
impl TypeToCPP<Cuda> for Float8E8M0Type
Source§impl TypeToCPP<Cuda> for Float6E3M2Type
impl TypeToCPP<Cuda> for Float6E3M2Type
Source§impl TypeToCPP<Cuda> for Float6E2M3Type
impl TypeToCPP<Cuda> for Float6E2M3Type
Auto Trait Implementations§
impl Freeze for Cuda
impl RefUnwindSafe for Cuda
impl Send for Cuda
impl Sync for Cuda
impl Unpin for Cuda
impl UnsafeUnpin for Cuda
impl UnwindSafe for Cuda
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneExpand for Twhere
T: Clone,
impl<T> CloneExpand for Twhere
T: Clone,
fn __expand_clone_method(&self, _: &Scope) -> T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more