マトリックステンプレートライブラリ(MTL)は、C++プログラム用の線形代数ライブラリです。
MTLはテンプレートプログラミングを使用しているため、コードの長さが大幅に短縮されます。すべての行列とベクトルは、すべての古典的な数値形式(float、、または)で使用できますdouble。complex<float>complex<double>
さらに、汎用プログラミングでは、必要な演算を提供する限り、任意の型を使用できます。たとえば、任意の整数フォーマット(例:)、 Boost C++ライブラリunsigned shortの区間演算用型(例:boost::interval)、四元数(例:boost::quaternion)、高精度型(例:GNU Multi-Precision Library)、および適切なユーザー定義型を使用できます。
MTLは、密行列と疎行列のいくつかの実装をサポートしています。MTL2は、Jeremy SiekとAndrew Lumsdaineによって開発されました。[ 1 ]
最新バージョンの MTL4 は、Peter Gottschling と Andrew Lumsdaine によって開発されました。MTL2 の機能のほとんどが含まれており、メタチューニングなどの新しい最適化手法が追加されています。たとえば、動的にサイズ変更されるコンテナのループ展開を関数呼び出しで指定できます。再帰的なデータ構造とアルゴリズムにより、プラットフォームに依存しないパフォーマンスのスケーラビリティが実現されています。[ 2 ]
汎用アプリケーションは、例えば、自然な表記法で記述できますv += A*q - w;が、ライブラリは適切なアルゴリズム(行列ベクトル積、行列積、ベクトルスカラー積など)にディスパッチします。目標は、パフォーマンスの問題をライブラリ内にカプセル化し、科学者に直感的なインターフェースを提供することです。MTL4 は、FEniCS プロジェクトなどのさまざまな有限要素法および有限体積法パッケージで使用されています。[ 3 ]