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、特徵值/特徵向量分解與最小平方法求解器。