Table of Contents

Enum DataTypeSupport

Namespace
DotCompute.Abstractions.Models.Device
Assembly
DotCompute.Abstractions.dll

Defines flags representing the data types supported by a compute device. These flags can be combined using bitwise operations to represent multiple data types.

[Flags]
public enum DataTypeSupport

Fields

BFloat16 = 128

16-bit Brain Floating Point format support (bfloat16).

Specialized floating-point format optimized for machine learning workloads. Provides the same exponent range as Float32 but with reduced mantissa precision. Particularly useful for neural network training and inference where gradient flow is more important than precision.

Float16 = 16

16-bit IEEE 754 half-precision floating-point support.

Compact floating-point format providing significant memory and bandwidth savings for machine learning, graphics, and applications where reduced precision is acceptable. Range: approximately ±65,504 with ~3 decimal digits.

Float32 = 32

32-bit IEEE 754 single-precision floating-point support.

Standard floating-point type for most scientific and engineering applications. Provides good balance of range, precision, and performance. Range: approximately ±3.4×10³⁸ with ~7 decimal digits of precision.

Float64 = 64

64-bit IEEE 754 double-precision floating-point support.

High-precision floating-point for scientific computing, financial calculations, and applications requiring extended precision. Range: approximately ±1.8×10³⁰⁸ with ~15 decimal digits of precision. May be emulated on some devices.

Int16 = 2

16-bit signed integer support (-32,768 to 32,767).

Provides a balance between range and memory efficiency for medium-range integer values. Commonly used for audio processing, intermediate calculations, and applications requiring more range than 8-bit integers.

Int32 = 4

32-bit signed integer support (-2,147,483,648 to 2,147,483,647).

Standard integer type for most applications, providing sufficient range for array indices, counters, and general-purpose integer arithmetic. Widely supported across all device types and programming languages.

Int64 = 8

64-bit signed integer support (-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807).

Extended-range integers for large datasets, high-precision counters, and applications requiring very large numeric ranges. May have performance implications on some devices due to register pressure.

Int8 = 1

8-bit signed integer support (-128 to 127).

Enables compact integer storage for small numeric ranges, character data, and applications where memory efficiency is critical. Often used in image processing, neural networks, and embedded applications.

Remarks

Data type support determines which numeric formats can be used in kernels and affects memory layout, performance characteristics, and precision. The framework uses these flags to validate kernel parameters, optimize memory transfers, and enable appropriate compiler optimizations.