linear-algebra

Luna-Flow/linear-algebra は Luna Flow の線形代数層です。値指向(immut)とインプレース(mutable)の 2 つの実行モデルによる密な行列とベクトル、浮動小数点行列向けの数値ルーチン、整数行列向けの厳密なアルゴリズム、そして汎用アルゴリズムをそれらを実装する任意の行列型・ベクトル型の上で実行できるようにする小さな能力層(algebra、container)を提供します。このマニュアルはリリース 0.5.0 について説明します。

パッケージ

パッケージ目的ページ
immut不変な Matrix、Vector、遅延 MatrixFn。厳密な行列式とべき乗API · チュートリアル · 設計
mutableインプレースの Matrix、Vector、ビュー。LU、Cholesky、固有値、統計量API · チュートリアル · 設計
errorすべての検査付き API の LinearAlgebraErrorAPI · チュートリアル · 設計
arithmeticスカラー演算の trait と再エクスポートAPI · チュートリアル · 設計
algebraベクトルと行列全体の構造 trait(実験的)API · チュートリアル · 設計
backends/defaultalgebra の trait を実装する密なラッパーAPI · チュートリアル · 設計
containerストレージに依存しない操作辞書と汎用変換(実験的)API · チュートリアル · 設計
container/adaptersこのリポジトリのすべての型に対する辞書API · チュートリアル · 設計
internal共有の形状ガード(このモジュール内でのみインポート可能)API · チュートリアル · 設計
consistencyパッケージ間の一致テスト(公開項目なし)API · チュートリアル · 設計
perf_supportベンチマークケース、フィクスチャ、実行API · チュートリアル · 設計
perfmoon bench のエントリーパッケージAPI · チュートリアル · 設計
perf_runner単一ケースのベンチマーク実行ファイルAPI · チュートリアル · 設計

パッケージ src/doc_en_us は個別には説明しません。これは、例がテストとしてコンパイル・実行されるよう、このマニュアルの全ページを .mbt.md ファイルとしてリンクしているものです。パッケージ同士の依存関係は アーキテクチャガイド で示しています。外部ライブラリが algebra 層と container 層に参加する方法は 統合の章 で説明しています。

読み進め方

アプリケーション開発者。 Double 行列での数値計算なら mutable のチュートリアル から、値の意味論と厳密な整数の結果が必要なら immut のチュートリアル から始めてください。失敗しうる操作はすべて LinearAlgebraError を返すので、次に error のチュートリアル を読んでください。

ライブラリやアルゴリズムの作者。 汎用コードを書くには algebra のチュートリアル と backends/default のチュートリアル を、表現の間でデータを移すには container のチュートリアル を読み、自分の型の実装を公開する前に統合ガイドを読んでください。

コントリビューター。 アーキテクチャガイド、規約、変更するパッケージの設計ページ、そして internal と consistency のチュートリアルを読んでください。ベンチマークは perf のページで扱っています。

インストール

moon add Luna-Flow/linear-algebra@0.5.0

使用するパッケージを moon.pkg でインポートします。

///|
import {
  "Luna-Flow/linear-algebra/immut",
  "Luna-Flow/linear-algebra/mutable",
  "Luna-Flow/linear-algebra/error" @la_error,
}

スカラー型に対する汎用コードには、上流のパッケージ Luna-Flow/luna-generic(0.3.3)と Luna-Flow/arithmetic(0.2.2)も必要です。

ツールチェーン

このモジュールには moonc 0.10 以降の MoonBit が必要で、moon check --target all で警告なしにビルドできます。すべてのパッケージが wasm-gc、js、wasm、native ターゲットをサポートし、mutable はターゲットごとに調整されたカーネルファイルを持ちます。ベンチマークパッケージは native で実行します。

0.5.0 での状況

  • algebra、backends/default の trait 層、container は実験的であり、シグネチャが変わる可能性があります。
  • ネイティブ OpenBLAS バックエンドは、上流のバインディングが MoonBit 0.10 でコンパイルできないため、本リリースで取り下げられました。そのソースはマニュアルの外の contrib/openblas_backend に保存されています。必要なユーザーは 0.4.7 にとどまることができます。
  • リリース履歴は 変更履歴 にあります。