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 の LinearAlgebraError | API · チュートリアル · 設計 |
arithmetic | スカラー演算の trait と再エクスポート | API · チュートリアル · 設計 |
algebra | ベクトルと行列全体の構造 trait(実験的) | API · チュートリアル · 設計 |
backends/default | algebra の trait を実装する密なラッパー | API · チュートリアル · 設計 |
container | ストレージに依存しない操作辞書と汎用変換(実験的) | API · チュートリアル · 設計 |
container/adapters | このリポジトリのすべての型に対する辞書 | API · チュートリアル · 設計 |
internal | 共有の形状ガード(このモジュール内でのみインポート可能) | API · チュートリアル · 設計 |
consistency | パッケージ間の一致テスト(公開項目なし) | API · チュートリアル · 設計 |
perf_support | ベンチマークケース、フィクスチャ、実行 | API · チュートリアル · 設計 |
perf | moon 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にとどまることができます。 - リリース履歴は 変更履歴 にあります。