Correctness has a reference.
CPU execution is a required part of the runtime. Accelerator operations are checked against it with explicit numerical tolerances.
INDEPENDENT · APACHE 2.0 · PRE-ALPHA
A compact tensor runtime for people who want to understand what runs underneath. Python up front. C++20 at the core. CPU, Metal, CUDA and an optional Vulkan backend behind one interface.
Experimental by design. Explicit about its limits.
import tensorcx as cx
device = cx.best_device()
x = cx.ones((1_000_000,), dtype=cx.float32, device=device)
y = cx.ones((1_000_000,), dtype=cx.float32, device=device)
z = x + y
print(z.cpu().numpy()[:5])
# [2. 2. 2. 2. 2.][2. 2. 2. 2. 2.]One million elements. One familiar API.01 / THE APPROACH
Explore tensor execution without losing sight of the runtime, the memory, or the hardware.
CPU execution is a required part of the runtime. Accelerator operations are checked against it with explicit numerical tolerances.
Device discovery, buffers, and operation dispatch share a contract. Platform-specific details stay inside each backend.
Custom kernels live under cx.experimental. Metal code generation and optional MLIR compilation have defined, narrow scopes.
02 / AVAILABLE TODAY
Slicing, concat/stack/split, boolean masks, broadcasting, batched matmul, reductions and selection with topk.
Linear layers, affine normalization, embedding and scaled dot-product attention. Explicit execution, without model training.
CUDA/Vulkan shared allocations on matching GPUs, host-staged placement, CPU/CUDA DLPack and an optional PyTorch linear custom op.
Experimental Metal MSL and guarded float32 CPU/CUDA/Vulkan MLIR kernels: arithmetic, sqrt/abs/exp/log/rsqrt/tanh/sigmoid/SiLU, minimum/maximum, comparisons and select. Persistent code caching.
Installation diagnostics, memory snapshots and Vulkan owned allocations. Host profiling, CUDA kernel events, Vulkan copy/compute timestamps and separate compilation measurements.
Opt-in CUDA/Vulkan buffer reuse, Vulkan staging and command reuse, and direct device empty allocation. Synchronous operations; empty contents remain unspecified.
Availability depends on backend, dtype and the validated environment. The feature overview keeps implemented capabilities and remaining work together.
03 / HARDWARE, HONESTLY
The required baseline. Tensor operations, matmul, reductions, and normalization.
MetalAPPLE SILICONStatic Metal kernels, an optional optimized matmul path, and experimental generated kernels.
CUDAOPT-INFloat32/int32/bool data paths, inference primitives and opt-in memory reuse. Real-device validation is limited to sm_52.
VulkanEXPERIMENTALOptional Linux SPIR-V tensor operations and inference, guarded MLIR kernels, explicit CUDA memory sharing, host/GPU timing and bounded reuse. One GTX 980 Ti validated; wider GPU coverage remains open.
Current scope: contiguous tensors, broadcasting, explicit devices and dtype conversion. Autograd and distributed training are outside the current runtime.
Execution experiments
NVIDIA OpenCL, PoCL CPU and Mesa lavapipe probes are validated separately from runtime backend support.
04 / OPEN THE WORKBENCH