| Platform |
Minimum |
Architecture |
| iOS / iPadOS |
iOS 18 |
arm64 |
| macOS |
macOS 15 |
arm64 (Apple silicon) |
| Android |
API 31 |
arm64-v8a |
Backends
| Backend |
iOS / macOS |
Android |
| CPU |
Accelerate + Slab kernels |
ARM64 NEON |
| GPU |
Metal (MPSGraph) |
Vulkan 1.1 |
| NPU |
Apple Neural Engine |
Qualcomm Hexagon (QNN) |
A model can set its preferred backend (per platform) and its precision per
backend. With AUTO, Slab uses the model's preference when the device can run
it; otherwise it picks the first backend, in the order NPU → GPU → CPU, that
the device has and that supports every operation and the requested precision.
Precision
| Backend |
f32 |
f16 |
f16:fast |
int8 |
int8:static |
int8:f16 |
| CPU, Android |
✓ |
|
|
✓ |
✓ |
|
| CPU, Apple |
✓ |
|
|
|
|
|
| GPU, Vulkan |
✓ |
✓ |
✓ |
✓ |
|
✓ |
| GPU, Metal |
✓ |
|
✓ |
|
|
|
| NPU, Hexagon |
|
✓ |
✓ |
|
✓ |
✓ |
| NPU, Apple Neural Engine |
|
✓ |
|
|
|
|
f16: 16-bit storage, 32-bit math. f16:fast: 16-bit storage and math.
int8: int8 weights, dynamic activations. int8:static: calibrated activations. int8:f16: int8 weights, 16-bit activations.
- Weights can also be stored as int8 in any model file (2.4–3.7× smaller).
Supported operations
A model runs on a backend when all of its operations are supported there.
| Operator |
CPU |
Metal / Neural Engine |
Vulkan |
Hexagon |
| Abs |
✓ |
✓ |
✓ |
✓ |
| Add |
✓ |
✓ |
✓ |
✓ |
| And |
✓ |
|
✓ |
|
| ArgMax |
✓ |
✓ |
✓ |
✓ |
| AveragePool |
✓ |
✓ |
✓ |
✓ |
| BatchNormalization |
✓ |
✓ |
✓ |
✓ |
| Cast |
✓ |
✓ |
✓ |
|
| Ceil |
✓ |
✓ |
✓ |
✓ |
| Clip |
✓ |
✓ |
✓ |
✓ |
| Concat |
✓ |
✓ |
✓ |
✓ |
| Conv |
✓ |
✓ |
✓ |
✓ |
| ConvTranspose |
✓ |
✓ |
✓ |
✓ |
| Cos |
✓ |
✓ |
✓ |
✓ |
| CumSum |
✓ |
|
✓ |
|
| DepthToSpace |
✓ |
✓ |
✓ |
|
| Div |
✓ |
✓ |
✓ |
✓ |
| Elu |
✓ |
|
✓ |
|
| Equal |
✓ |
✓ |
✓ |
|
| Erf |
✓ |
✓ |
✓ |
✓ |
| Exp |
✓ |
✓ |
✓ |
✓ |
| Expand / Tile |
✓ |
✓ |
✓ |
|
| Flatten |
✓ |
✓ |
✓ |
✓ |
| Floor |
✓ |
✓ |
✓ |
✓ |
| Gather |
✓ |
✓ |
✓ |
|
| GatherND |
✓ |
|
|
|
| Gelu |
✓ |
✓ |
✓ |
✓ |
| Gemm |
✓ |
✓ |
✓ |
✓ |
| GlobalAveragePool |
✓ |
✓ |
✓ |
✓ |
| Greater / GreaterOrEqual |
✓ |
|
✓ |
|
| GridSample |
✓ |
✓ |
|
|
| HardSigmoid |
✓ |
✓ |
✓ |
✓ |
| HardSwish |
✓ |
✓ |
✓ |
✓ |
| Identity / Dropout |
✓ |
✓ |
✓ |
✓ |
| InstanceNormalization |
✓ |
✓ |
✓ |
✓ |
| LayerNormalization |
✓ |
✓ |
✓ |
✓ |
| LeakyRelu |
✓ |
✓ |
✓ |
✓ |
| Less / LessOrEqual |
✓ |
|
✓ |
|
| Log |
✓ |
✓ |
✓ |
✓ |
| MatMul |
✓ |
✓ |
✓ |
✓ |
| Max |
✓ |
✓ |
✓ |
✓ |
| MaxPool |
✓ |
✓ |
✓ |
✓ |
| Min |
✓ |
✓ |
✓ |
✓ |
| Mod |
✓ |
✓ |
✓ |
|
| Mul |
✓ |
✓ |
✓ |
✓ |
| Neg |
✓ |
✓ |
✓ |
✓ |
| NonMaxSuppression |
✓ |
|
|
|
| Not |
✓ |
✓ |
✓ |
|
| Or |
✓ |
|
✓ |
|
| Pad |
✓ |
✓ |
✓ |
|
| PRelu |
✓ |
✓ |
✓ |
✓ |
| Reciprocal |
✓ |
✓ |
✓ |
|
| ReduceMax |
✓ |
✓ |
✓ |
✓ |
| ReduceMean |
✓ |
✓ |
✓ |
✓ |
| ReduceMin |
✓ |
✓ |
✓ |
✓ |
| ReduceProd |
✓ |
✓ |
✓ |
|
| ReduceSum |
✓ |
✓ |
✓ |
✓ |
| Relu |
✓ |
✓ |
✓ |
✓ |
| Resize |
✓ |
✓ |
✓ |
✓ |
| Round |
✓ |
✓ |
✓ |
✓ |
| ScatterND / ScatterElements |
✓ |
✓ |
|
|
| Selu |
✓ |
|
✓ |
|
| Sigmoid |
✓ |
✓ |
✓ |
✓ |
| Sin |
✓ |
✓ |
✓ |
✓ |
| Slice |
✓ |
✓ |
✓ |
✓ |
| Softmax |
✓ |
✓ |
✓ |
✓ |
| SpaceToDepth |
✓ |
✓ |
✓ |
|
| Split |
✓ |
✓ |
✓ |
✓ |
| Sqrt / Pow |
✓ |
✓ |
✓ |
✓ |
| Sub |
✓ |
✓ |
✓ |
✓ |
| Tanh |
✓ |
✓ |
✓ |
✓ |
| TopK |
✓ |
|
✓ |
|
| Transpose |
✓ |
✓ |
✓ |
✓ |
| Where |
✓ |
✓ |
✓ |
|
Shape, Reshape, Squeeze, Unsqueeze, Constant, ConstantOfShape, Range and
OneHot are supported on every backend.
Generative models (LLM / VLM)
|
Metal |
Vulkan |
| Text and image + text generation (f16 or int8 weights) |
✓ |
✓ |