Multi-backend computing
Keep the application model stable while hardware choices change.
ArrayFire separates high-level array code from the backend that executes it. Teams can develop against one API, select the backend that matches a deployment, and retain escape hatches for custom kernels and device-level integration.
Choose the execution path deliberately
The active backend determines which device runtime, vendor libraries, and generated kernels execute the ArrayFire API calls.
| Backend | Hardware focus | What stays consistent | What remains backend-specific |
|---|---|---|---|
| CUDA | NVIDIA GPUs | Array operations and application flow | CUDA runtime, libraries, and device behavior |
| OpenCL | Cross-vendor devices | Array operations and application flow | OpenCL platform, drivers, and device capabilities |
| oneAPI | Intel heterogeneous systems | Array operations and application flow | oneAPI toolchain and target capabilities |
| CPU | Multicore processors | Array operations and application flow | Host libraries, threading, and memory bandwidth |
What portability means in practice
ArrayFire reduces the code that must change between platforms. It does not hide the fact that hardware, drivers, precision, memory capacity, and workload shape still affect performance.
Stable algorithm code
Core array expressions, indexing, transforms, reductions, and linear algebra remain recognizable across backends.
Explicit backend choice
Select and validate the execution backend for each deployment rather than maintaining separate application implementations.
Performance where it matters
Profile on target hardware, then use ArrayFire primitives, backend configuration, or custom kernels for the limiting paths.
Built for change over time
ArrayFire has evolved through multiple GPU generations and vendor toolchains. That history is useful to teams that need a compute layer to outlast any single hardware purchase.
Test ArrayFire on your hardware.
Install a platform build or try the API in a browser before choosing a deployment backend.