For the complete documentation index, see llms.txt. Markdown versions of all pages are available by appending .md to any URL (e.g. /get-started.md).
Types
#include "max/c/types.h"Typedefs:
M_Status
typedef struct M_Status M_Status
Contains the success or failure of an API call.
In general, any API that may fail accepts a M_Status argument that is filled in with a meaningful error message on failure.
You can create this with M_newStatus(). When you’re done, call M_freeStatus().
M_RuntimeConfig
typedef struct M_RuntimeConfig M_RuntimeConfig
Specifies the MAX Engine configuration.
Configuration properties include the number of threads, artifact path, etc.
You can create this with M_newRuntimeConfig(). When you’re done, call M_freeRuntimeConfig().
M_RuntimeContext
typedef struct M_RuntimeContext M_RuntimeContext
Contains information that needs to be shared between APIs.
You can create this with M_newRuntimeContext(). When you’re done, call M_freeRuntimeContext().
M_CompileConfig
typedef struct M_CompileConfig M_CompileConfig
Specifies the configuration required for model compilation.
You can create this with M_newCompileConfig(). When you’re done, call M_freeCompileConfig().
M_AsyncCompiledModel
typedef struct M_AsyncCompiledModel M_AsyncCompiledModel
Contains an async value to a compiled model.
M_AsyncCompiledModel can be passed to other APIs that accept compiled models as a function parameter. This async value will eventually resolve to a compiled model or an error in the case of compilation failure.
You can create this with M_compileModel(). When you’re done, call M_freeCompiledModel().
M_AsyncModel
typedef struct M_AsyncModel M_AsyncModel
Contains a future used for inference.
The future will resolve to a model that’s ready for inference.
You can create this with M_initModel(). When you’re done, call M_freeModel().
M_AsyncTensor
typedef struct M_AsyncTensor M_AsyncTensor
Contains an async value to a tensor for inference.
You can get this from M_getTensorByNameFrom(). When you’re done, call M_freeTensor().
M_TensorNameArray
typedef struct M_TensorNameArray M_TensorNameArray
Contains an array of tensor names of model inputs or outputs.
You can get this from M_getInputNames() and M_getOutputNames(). When you’re done, call M_freeTensorNameArray().
M_TensorSpec
typedef struct M_TensorSpec M_TensorSpec
Contains the representation of a shape and an element type.
You can create this with M_newTensorSpec(). When you’re done, call M_freeTensorSpec().
M_AsyncTensorMap
typedef struct M_AsyncTensorMap M_AsyncTensorMap
Contains a collection of tensors.
The collection of tensors is used to represent inputs and outputs when executing a model.
You can create this with M_newAsyncTensorMap(). When you’re done, call M_freeAsyncTensorMap().
M_WeightsRegistry
typedef struct M_WeightsRegistry M_WeightsRegistry
Maps unique weight names to their backing data.
You can create this with M_newWeightsRegistry(). When you’re done, call M_freeWeightsRegistry().
M_Safetensors
typedef struct M_Safetensors M_Safetensors
Holds the tensors parsed from one or more safetensors files.
The tensor data is borrowed from the loaded files and stays valid for the lifetime of this object. You can enumerate tensors, read their data and metadata, or build a M_WeightsRegistry from all of them with M_newWeightsRegistryFromSafetensors().
You can create this with M_loadSafetensors(). When you’re done, call M_freeSafetensors().
M_Device
typedef struct M_Device M_Device
Contains a device handle.
A device represents a computational unit (CPU or GPU) that can execute operations and hold tensors.
You can create this with M_newDevice(). When you’re done, call M_freeDevice().
Enums:
M_Dtype
enum M_Dtype
Represents all data types supported by the framework.
Values:
M_UNKNOWN
enumerator M_UNKNOWN
mIsInteger
enumerator mIsInteger
mIsFloat
enumerator mIsFloat
mIsComplex
enumerator mIsComplex
mIsSigned
enumerator mIsSigned
Bit 0 encodes “isSigned”.
kIntWidthShift
enumerator kIntWidthShift
M_INT1
enumerator M_INT1
M_UINT1
enumerator M_UINT1
M_INT2
enumerator M_INT2
M_UINT2
enumerator M_UINT2
M_INT4
enumerator M_INT4
M_UINT4
enumerator M_UINT4
M_INT8
enumerator M_INT8
M_UINT8
enumerator M_UINT8
M_INT16
enumerator M_INT16
M_UINT16
enumerator M_UINT16
M_INT32
enumerator M_INT32
M_UINT32
enumerator M_UINT32
M_INT64
enumerator M_INT64
M_UINT64
enumerator M_UINT64
M_INT128
enumerator M_INT128
M_UINT128
enumerator M_UINT128
M_FLOAT4_E2M1FN
enumerator M_FLOAT4_E2M1FN
Bits 0 through 3 indicate the kind of FP value.
M_FLOAT8_E8M0FNU
enumerator M_FLOAT8_E8M0FNU
Some slots are left blank here to enable us to support more lower precision types in the future.
M_FLOAT8_E3M4
enumerator M_FLOAT8_E3M4
M_FLOAT8_E4M3FN
enumerator M_FLOAT8_E4M3FN
M_FLOAT8_E4M3FNUZ
enumerator M_FLOAT8_E4M3FNUZ
M_FLOAT8_E5M2
enumerator M_FLOAT8_E5M2
M_FLOAT8_E5M2FNUZ
enumerator M_FLOAT8_E5M2FNUZ
M_FLOAT16
enumerator M_FLOAT16
M_BFLOAT16
enumerator M_BFLOAT16
M_FLOAT32
enumerator M_FLOAT32
M_FLOAT64
enumerator M_FLOAT64
M_BOOL
enumerator M_BOOL
M_AllocatorType
enum M_AllocatorType
Contains an AllocatorType. You can choose between kCaching and kSystem kCaching trades off higher memory usage for better performance. kSystem uses the default system allocator.
Values:
kSystem
enumerator kSystem
kCaching
enumerator kCaching
M_ValueType
enum M_ValueType
Represents the type of a value.
Values:
M_STRING_VALUE
enumerator M_STRING_VALUE
M_DOUBLE_VALUE
enumerator M_DOUBLE_VALUE
M_LONG_VALUE
enumerator M_LONG_VALUE
M_BOOL_VALUE
enumerator M_BOOL_VALUE
M_TENSOR_VALUE
enumerator M_TENSOR_VALUE
M_LIST_VALUE
enumerator M_LIST_VALUE
M_TUPLE_VALUE
enumerator M_TUPLE_VALUE
M_DICT_VALUE
enumerator M_DICT_VALUE
M_NONE_VALUE
enumerator M_NONE_VALUE
M_UNKNOWN_VALUE
enumerator M_UNKNOWN_VALUE
M_MOJO_VALUE
enumerator M_MOJO_VALUE
M_PYTHON_MOJO_VALUE
enumerator M_PYTHON_MOJO_VALUE
M_DeviceType
enum M_DeviceType
Represents the type of device. M_HOST is the CPU; M_ACCELERATOR is any non-CPU compute device (GPU or NPU). The closed set of valid device labels is enforced by EngineContext::create — see Support/DeviceSpecs.h for the label constants and max/internal/lib/API/c/EngineContext.cpp for the validating guard.
Values:
M_HOST
enumerator M_HOST
M_ACCELERATOR
enumerator M_ACCELERATOR
M_ResultOutputStyle
enum M_ResultOutputStyle
Represents the result output style for debug printing.
Values:
M_COMPACT
enumerator M_COMPACT
M_FULL
enumerator M_FULL
M_BINARY
enumerator M_BINARY
M_BINARY_MAX_CHECKPOINT
enumerator M_BINARY_MAX_CHECKPOINT
M_NONE
enumerator M_NONE