Arraymancer
A fast, ergonomic and portable tensor library in Nim with a deep learning focus for CPU, GPU and embedded devices via OpenMP, Cuda and OpenCL backends
What is Arraymancer?
A fast, ergonomic and portable tensor library in Nim with a deep learning focus for CPU, GPU and embedded devices via OpenMP, Cuda and OpenCL backends
Overview of Arraymancer
What it is
Arraymancer is a tensor (N-dimensional array) library written in Nim. It focuses on providing a fast and ergonomic ndarray library for CPU, Cuda, and OpenCL backends, intended to support a scientific computing ecosystem. The project is inspired by Numpy and PyTorch.
Key features
- Supports tensor creation, slicing, reshaping, concatenation, and broadcasting operations.
- Includes machine learning algorithms such as least squares solvers, PCA, classifiers, regressors, clustering, and cross-validation.
- Provides deep learning capabilities with autograd, layers (Linear, ReLU, etc.), and optimizers (SGD).
- Backends: CPU (with OpenMP), Cuda, and OpenCL.
- Integrates with BLAS and LAPACK libraries; supports custom BLAS selection via compilation flags.
- Compilation flags for release mode, danger mode, AVX512, Cuda, and CuDNN.
- Compiles in about 5 seconds on a dual-core MacBook.
Use cases
- Numerical computing with N-dimensional arrays.
- Machine learning tasks (classification, regression, clustering, dimensionality reduction).
- Deep learning model training and inference (e.g., fully-connected networks, convolutional networks, recurrent neural networks).
Getting started
See the repository README for installation instructions and compilation flags.
License and pricing
Licensed under Apache-2.0. Open source.
Based on the project's public README and repository metadata.