自動調整線形代数ソフトウェア

コンテンツへジャンプ
フリー百科事典『ウィキペディア』より
自動調整線形代数ソフトウェア
安定版リリース
3.10.3 / 2016年7月28日; 9年前 (2016-07-28)
リポジトリ
書かれたCFORTRAN 77
タイプソフトウェアライブラリ
ライセンスBSDライセンス
Webサイト数学アトラス.sourceforge .net ウィキデータで編集する

Automatically Tuned Linear Algebra Software ( ATLAS ) は、線形代数用のソフトウェアライブラリです。CおよびFORTRAN 77向けBLAS API成熟したオープンソース実装を提供します

ATLASは、最適化されたBLASライブラリを自動生成する方法として、しばしば推奨されます。そのパフォーマンスは、特定のハードウェアプラットフォーム向けに作成された専用ライブラリに劣ることが多いものの、新しいシステムで利用できる最初の、あるいは唯一の最適化されたBLAS実装であることが多く、Netlibで利用可能な汎用BLASよりも大幅に優れています。そのため、ATLASは他の製品とのパフォーマンス比較の基準として使用されることがあります。

ATLAS は、ほとんどのUnix系オペレーティングシステムとMicrosoft WindowsCygwinを使用)で動作します。広告条項のないBSD スタイルのライセンスの下でリリースされており、 MATLABMathematicaScilabSageMath、そして一部のGNU Octaveビルドなど、多くの著名な数学アプリケーションで使用できます。

機能性

[編集]

ATLASは、BLAS APIの完全な実装に加え、BLAS上に構築された高水準ライブラリ であるLAPACKの追加関数も提供します。BLASでは、機能はレベル1、2、3と呼ばれる3つのグループに分かれています。

  • レベル1には、次のような形式のベクトル演算が含まれる。
スカラー内積ベクトルノルムなども含まれています。
  • レベル2には、次のような形式の行列ベクトル演算が含まれる。
また、三角形であることなどを解くこともできます。
  • レベル3には、広く使用されている一般行列乗算(GEMM)演算などの行列間演算が含まれます。
また、三角行列を解くこともできます。

最適化アプローチ

[編集]

最適アプローチはソフトウェアの自動経験的最適化(AEOS)と呼ばれ、コンピュータ支援最適化に対する4つの基本的なアプローチを特定しており、ATLASはそのうち3つを採用しています。[ 1 ]

  1. パラメータ化- ブロッキング係数、キャッシュ エッジなどに使用される関数のパラメータ空間を検索します。
  2. 複数の実装 - 同じ関数を実装するためのさまざまなアプローチを検索します。たとえば、組み込み関数によって C コードで SSE サポートが利用できるようになる前に、 SSEサポートを検索します。
  3. コード生成- システムにとって最良のパフォーマンスを生み出すための知識を組み込んだプログラムを作成するプログラム
  • レベル1 BLASの最適化では、パラメータ化と多重実装が使用される。
ATLASレベル1 BLAS関数はすべて独自のカーネルを持っています。ATLASでは数千ものケースを管理することが困難なため、レベル1 BLASにはアーキテクチャ固有の最適化はほとんど行われていません。代わりに、コンパイラによる最適化によってシステムに最適な実装を実現するために、多重実装を採用しています。
  • レベル2 BLASの最適化では、パラメータ化と多重実装が使用されます。
データと操作を実行する関数は通常、メモリの帯域幅によって制限されるため、最適化の機会はあまりありません
ATLAS レベル 2 BLAS のすべてのルーチンは、2 つのレベル 2 BLAS カーネルから構築されます。
  • GEMV—行列とベクトルの乗算更新:
  • GER—外積からの一般的なランク1の更新:
  • レベル3 BLASの最適化にはコード生成と他の2つの技術が使用される。
データのみを扱うオペレーションなので、最適化の余地はたくさんある

レベル3 BLAS

[編集]

レベル 3 BLAS の大部分はGEMMから派生しているため、これが最適化の主な焦点となります。

操作とデータ

演算がデータアクセスよりも優先されるという直感は、ほぼ正方行列の場合にのみ当てはまります。真の尺度は、表面積と体積の関係でなければなりません。この差は、正方行列から大きく外れた行列では重要になります。

コピーする余裕はありますか?

[編集]

入力をコピーすると、カーネル関数に最適なアクセスを提供する方法でデータを配置できますが、一時的なスペースの割り当てと、入力の追加の読み取りと書き込みが必要になります。

そこで GEMM が直面する最初の疑問は、入力をコピーできるかどうかです。

もしそうなら、

  • ブロック体で配置して配置する
  • ユーザーが貢献したカーネルとクリーンアップを活用する
  • コピーで転置ケースを処理します。すべてを TN にします (転置 - 転置なし)
  • コピー内のαを扱う

そうでなければ、

  • コピー禁止バージョンを使用する
  • メモリ内の行列ABのストライドについて仮定を置かない
  • すべての転置ケースを明示的に処理する
  • データの配置に関する保証はありません
  • α固有のコードのサポート
  • TLBの問題、不正なストライドなどが発生するリスクがあります。

実際の決定は、「スキニーケース」をチェックする 単純なヒューリスティックを通じて行われます。

キャッシュエッジ

[編集]

2次キャッシュブロッキングでは、単一のキャッシュエッジパラメータが使用されます。上位レベルでは、ブロックを走査する順序がijk、jik、ikj、jki、kij、kjiのいずれかで選択されます。積はブロック内で実行されるため、これらの順序は必ずしも同じである必要はありません。

一般的に選択される順序はijkまたはjikです。jik の場合、理想的な状況はABのNBワイドパネルをコピーすることです。ijk の場合、AB役割を入れ替えます

外側のループにMNの大きい方を選択すると、コピーのフットプリントが削減されます。しかし、Kが大きい場合、ATLASはそれほど大きなメモリを割り当てません。代わりに、L2キャッシュを最大限に活用するためのパラメータKpを定義します。パネルの長さはKpに制限されています。最初に( jikの場合)を割り当てようとします。それが失敗した場合、次にを試みます。(それが失敗した場合、GEMMのコピーなしバージョンが使用されますが、キャッシュエッジの適切な選択では、このケースは起こりにくいです。) KpはキャッシュエッジとNBの関数です

ラパック

[編集]

ATLAS BLASとLAPACKを統合する際には、LAPACKのブロック係数の選択が重要な考慮事項となります。ATLASのブロック係数が十分に小さい場合、LAPACKのブロック係数をATLASのブロック係数に合わせて設定できます。

再帰分解を利用するために、ATLAS は一部の LAPACK ルーチンの代替ルーチンを提供しています。これらのルーチンは、Netlibの対応する LAPACK ルーチンを単純に上書きします。

インストールの必要性

[編集]

特定のプラットフォームに ATLAS をインストールするのは難しいプロセスですが、通常はシステム ベンダーまたはローカルの専門家によって実行され、より幅広いユーザーが利用できるようになります。

多くのシステムでは、アーキテクチャのデフォルトパラメータが利用可能です。これらは基本的に、保存された検索条件と手動チューニングの結果を組み合わせたものです。アーキテクチャのデフォルトパラメータがうまく機能すれば、インストール時の検索条件よりも10~15%高いパフォーマンスが得られる可能性があります。このようなシステムでは、インストールプロセスが大幅に簡素化されます。

参考文献

[編集]
  1. ^ R. Clint Whaley、Antoine Petitet、Jack J. Dongarra (2001). 「ソフトウェアの自動経験的最適化とATLASプロジェクト」 (PDF) . Parallel Computing . 27 ( 1–2 ): 3– 35. CiteSeerX  10.1.1.35.2297 . doi : 10.1016/S0167-8191(00)00087-9 . 2006年10月6日閲覧.
[編集]
    自動調整線形代数ソフトウェア
    安定版リリース
    3.10.3 / 2016年7月28日; 9年前 (2016-07-28)
    リポジトリ
    • github.com/math-atlas/math-atlas
    書かれたCFORTRAN 77
    タイプソフトウェアライブラリ
    ライセンスBSDライセンス
    Webサイト数学アトラス 

    Automatically Tuned Linear Algebra Software ( ATLAS ) は、線形代数用のソフトウェアライブラリです。CおよびFORTRAN 77向けBLAS API成熟したオープンソース実装を提供します

    ATLASは、最適化されたBLASライブラリを自動生成する方法として、しばしば推奨されます。そのパフォーマンスは、特定のハードウェアプラットフォーム向けに作成された専用ライブラリに劣ることが多いものの、新しいシステムで利用できる最初の、あるいは唯一の最適化されたBLAS実装であることが多く、Netlibで利用可能な汎用BLASよりも大幅に優れています。そのため、ATLASは他の製品とのパフォーマンス比較の基準として使用されることがあります。

    ATLAS は、ほとんどのUnix系オペレーティングシステムとMicrosoft WindowsCygwinを使用)で動作します。広告条項のないBSD スタイルのライセンスの下でリリースされており、 MATLABMathematicaScilabSageMath、そして一部のGNU Octaveビルドなど、多くの著名な数学アプリケーションで使用できます。

    機能性

    ATLASは、BLAS APIの完全な実装に加え、BLAS上に構築された高水準ライブラリ であるLAPACKの追加関数も提供します。BLASでは、機能はレベル1、2、3と呼ばれる3つのグループに分かれています。

    • レベル1には、次のような形式のベクトル演算が含まれる。
    スカラー内積ベクトルノルムなども含まれています。
    • レベル2には、次のような形式の行列ベクトル演算が含まれる。
    また、三角形であることなどを解くこともできます。
    • レベル3には、広く使用されている一般行列乗算(GEMM)演算などの行列間演算が含まれます。
    また、三角行列を解くこともできます。

    最適化アプローチ

    最適アプローチはソフトウェアの自動経験的最適化(AEOS)と呼ばれ、コンピュータ支援最適化の4つの基本的なアプローチを特定しており、ATLASはそのうち3つを採用しています。[1]

    1. パラメータ化- ブロッキング係数、キャッシュ エッジなどに使用される関数のパラメータ空間を検索します。
    2. 複数の実装 - 同じ関数を実装するためのさまざまなアプローチを検索します。たとえば、組み込み関数によって C コードで SSE サポートが利用できるようになる前に、 SSEサポートを検索します。
    3. コード生成- システムにとって最良のパフォーマンスを生み出すための知識を組み込んだプログラムを作成するプログラム
    • レベル1 BLASの最適化では、パラメータ化と多重実装が使用される。
    ATLASレベル1 BLAS関数はすべて独自のカーネルを持っています。ATLASでは数千ものケースを管理することが困難なため、レベル1 BLASにはアーキテクチャ固有の最適化はほとんど行われていません。代わりに、コンパイラによる最適化によってシステムに最適な実装を実現するために、多重実装を採用しています。
    • レベル2 BLASの最適化では、パラメータ化と多重実装が使用されます。
    データと操作を実行する関数は通常、メモリの帯域幅によって制限されるため、最適化の機会はあまりありません
    ATLAS レベル 2 BLAS のすべてのルーチンは、2 つのレベル 2 BLAS カーネルから構築されます。
    • GEMV—行列とベクトルの乗算更新:
    • GER—外積からの一般的なランク1の更新:
    • レベル3 BLASの最適化にはコード生成と他の2つの技術が使用される。
    データのみを扱うオペレーションなので、最適化の余地はたくさんある

    レベル3 BLAS

    レベル 3 BLAS の大部分はGEMMから派生しているため、これが最適化の主な焦点となります。

    操作とデータ

    演算がデータアクセスよりも優先されるという直感は、ほぼ正方行列の場合にのみ当てはまります。真の尺度は、表面積と体積の関係でなければなりません。この差は、正方行列から大きく外れた行列では重要になります。

    コピーする余裕はありますか?

    入力をコピーすると、カーネル関数に最適なアクセスを提供する方法でデータを配置できますが、一時的なスペースの割り当てと、入力の追加の読み取りと書き込みが必要になります。

    そこで GEMM が直面する最初の疑問は、入力をコピーできるかどうかです。

    もしそうなら、

    • ブロック体で配置して配置する
    • ユーザーが貢献したカーネルとクリーンアップを活用する
    • コピーで転置ケースを処理します。すべてを TN にします (転置 - 転置なし)
    • コピー内のαを扱う

    そうでなければ、

    • コピー禁止バージョンを使用する
    • メモリ内の行列ABのストライドについて仮定を置かない
    • すべての転置ケースを明示的に処理する
    • データの配置に関する保証はありません
    • α固有のコードのサポート
    • TLBの問題、不正なストライドなどが発生するリスクがあります。

    実際の決定は、「スキニーケース」をチェックする 単純なヒューリスティックを通じて行われます。

    キャッシュエッジ

    2次キャッシュブロッキングでは、単一のキャッシュエッジパラメータが使用されます。上位レベルでは、ブロックを走査する順序がijk、jik、ikj、jki、kij、kjiのいずれかで選択されます。積はブロック内で実行されるため、これらの順序は必ずしも同じである必要はありません。

    一般的に選択される順序はijkまたはjikです。jik の場合、理想的な状況はABのNBワイドパネルをコピーすることです。ijk の場合、AB役割を入れ替えます

    外側のループにMNの大きい方を選択すると、コピーのフットプリントが削減されます。しかし、Kが大きい場合、ATLASはそれほど大きなメモリを割り当てません。代わりに、L2キャッシュを最大限に活用するためのパラメータKpを定義します。パネルの長さはKpに制限されています。最初に( jikの場合)を割り当てようとします。それが失敗した場合、次にを試みます。(それが失敗した場合、GEMMのコピーなしバージョンが使用されますが、キャッシュエッジの適切な選択では、このケースは起こりにくいです。) KpはキャッシュエッジとNBの関数です

    ラパック

    ATLAS BLASとLAPACKを統合する際には、LAPACKのブロック係数の選択が重要な考慮事項となります。ATLASのブロック係数が十分に小さい場合、LAPACKのブロック係数をATLASのブロック係数に合わせて設定できます。

    再帰分解を利用するために、ATLAS は一部の LAPACK ルーチンの代替ルーチンを提供しています。これらのルーチンは、Netlibの対応する LAPACK ルーチンを単純に上書きします。

    インストールの必要性

    特定のプラットフォームに ATLAS をインストールするのは難しいプロセスですが、通常はシステム ベンダーまたはローカルの専門家によって実行され、より幅広いユーザーが利用できるようになります。

    多くのシステムでは、アーキテクチャのデフォルトパラメータが利用可能です。これらは基本的に、保存された検索条件と手動チューニングの結果を組み合わせたものです。アーキテクチャのデフォルトパラメータがうまく機能すれば、インストール時の検索条件よりも10~15%高いパフォーマンスが得られる可能性があります。このようなシステムでは、インストールプロセスが大幅に簡素化されます。

    参考文献

    1. ^ R. Clint Whaley、Antoine Petitet、Jack J. Dongarra (2001). 「ソフトウェアの自動経験的最適化とATLASプロジェクト」(PDF) . Parallel Computing . 27 ( 1–2 ): 3– 35. CiteSeerX  10.1.1.35.2297 . doi :10.1016/S0167-8191(00)00087-9 . 2006年10月6日閲覧.
    • SourceForgeの自動調整線形代数ソフトウェア
    • ATLASへのユーザー貢献
    • ATLAS開発のための共同ガイド
    • FAQには、BLASのクイックリファレンスガイドとATLAS LAPACK APIリファレンスのクイックリファレンスへのリンクがあります。
    • Microsoft Visual C++ Howto アーカイブ 2007-09-28 at the Wayback Machine for ATLAS
    Retrieved from "https://en.wikipedia.org/w/index.php?title=Automatically_Tuned_Linear_Algebra_Software&oldid=1321851759"
    Original text
    Rate this translation
    Your feedback will be used to help improve Google Translate