mratsim/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 it solves

Arraymancer 是一个快速且易用的 n 维数组(张量)库,适用于 Nim 语言。它提供科学计算、机器学习和深度学习所需的数学基础,填补了 Nim 在高性能数值计算生态系统方面的空白,类似于 Python 的 NumPy 和 PyTorch。

How it works

该库实现了支持 CPU、CUDA 和 OpenCL 后端的张量系统。它利用 BLAS 和 LAPACK 库来优化线性代数运算。库中包含一个领域特定语言(DSL)用于定义神经网络,用户可以定义层(如 Linear、Conv2D、GRULayer)和前向传播。它还提供 autograd context 用于管理计算图并执行反向传播。

Who it’s for

它面向希望使用 Nim 进行数值计算或构建深度学习模型的研究人员和开发者,受益于快速的编译时间以及相较于基于 Python 的堆栈更少的依赖,便于分发项目。

Highlights

  • Multi-Backend Support: 支持 CPU、CUDA 和 OpenCL 进行张量操作。
  • Broadcasting: 使用特定运算符(例如 +.)提供显式广播支持。
  • Deep Learning Tools: 包含全连接、卷积和循环神经网络(RNN)等内置层。
  • Flexible Slicing: 支持范围和步长的高效切片。
  • Scientific Computing: 提供 PCA、K-means、特征值/特征向量分解以及最小二乘求解器。