tenferro
tenferro-rs is a dense tensor computation workspace in Rust, inspired by PyTorch and JAX. It provides:
- Eager execution —
Tensor,TypedTensor,EagerTensor, andEagerContextwithCpuBackendfor immediate computation and scalar-loss reverse-mode viabackward() - Lazy traced execution —
TracedTensorwith graph optimization and transform-oriented automatic differentiation (grad,vjp,jvp, HVP) - Einsum — with automatic contraction-tree planning
- Linear algebra — SVD, QR, Cholesky, eigh, solve
CPU execution is fully supported; GPU support is planned.
PyTorch, JAX, and tenferro
| Topic | PyTorch | JAX | tenferro |
|---|---|---|---|
| Eager tensor | torch.tensor(data) |
jnp.array(data) |
Tensor::from_vec(shape, data) |
| Traced tensor | — | staged via jit |
TracedTensor::from_vec(shape, data) |
| Execution | Eager by default | Eager; jit stages when asked |
Eager (Tensor / EagerTensor) or lazy traced (TracedTensor + .eval()) |
| Eager gradients | loss.backward() |
— | EagerTensor::backward() with accumulation |
| Transform AD | torch.autograd.grad(...) |
jax.grad, jax.vjp, jax.jvp, hvp via composition |
loss.grad(&x), .vjp(), .jvp() |
| Einsum | torch.einsum(...) |
jnp.einsum(...) |
einsum(...) / eager_einsum(...) |
| Device | Device on tensors | jax.device_put(...) |
Backend owned by Engine or CpuBackend |