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 は Nim 言語向けの高速で使いやすい n 次元配列(テンソル)ライブラリです。科学計算、機械学習、深層学習に必要な数学的基盤を提供し、Python の NumPy や PyTorch が提供するような高性能数値計算エコシステムが Nim に不足している問題を埋めます。

How it works

このライブラリは CPU、CUDA、OpenCL バックエンドをサポートするテンソルシステムを実装しています。BLAS と LAPACK ライブラリを活用して線形代数演算を最適化します。ライブラリにはニューラルネットワークを定義するためのドメイン固有言語(DSL)が含まれ、Linear、Conv2D、GRULayer などのレイヤーやフォワードパスを定義できます。また、計算グラフを管理し逆伝播を実行する autograd コンテキストも備えています。

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、固有値・固有ベクトル分解、最小二乗ソルバーを提供。