ソフテック・トップページへ
ホーム 製品 セキュリティ・サービス HPCサービス ダウンロード 企業情報

PGI compiler TIPS
BLAS、LAPACK、ScaLapack
技術情報・TIPS > AMD ACML ライブラリ>線形ライブラリLAPACK

 

線形方程式ライブラリ LAPACK の生い立ちと特性

以下の図表は、少々古い pentium による性能を例示していますが、基本的なライブラリ、性能に関する考え方は新たなプロセッサ上においても同じです。PGI コンパイラにバンドルされている AMD 社のACML ライブラリの中の性能最適化された LAPACK は、無償で利用することができます。このような最適化された線形ライブラリを活用することが、劇的にプログラムの性能を向上させる、一つの方法です。

● LINPACK、LAPACK そして ScaLapackへ発展

1980年代に米国エネルギー省の研究機関で開発され、広く公開された線形方程式ライブラリ LINPACKを発展させた、LAPACK は キャッシュベースの マイクロプロセッサに最適化した形でリニューアルされたものです。LINPACK、LAPACK も基本的な線形演算は BLAS を使用しており、BLAS の使用レベルがそれぞれ異なります。

  • LINPACK : 基本的に Level1 の BLAS を使用、ユーザのコーディングスタイルに近いため、CPU キャッシュ外のメモリアクセスを多用し、性能が劣化する
  • LAPACK : 基本的に Level3 の BLAS を多用する。キャッシュ活用のためのブロッキング・アルゴリズムを採用し、キャッシュ利用の確率が増えるため性能が向上した。しかし、これでもキャッシュ利用のの限界は存在する。90 年代には、BLAS 自体を CPU のキャッシュサイズに添った形で最適化できる ATLAS BLAS が利用できるようになり、BLAS 自体の性能が向上しました。
  • ScaLapack は、分散メモリ型(クラスタ)のアーキテクチャで使用できるように、並列の線形ライブラリです。並列計算をおこなうために、BLAS も PBLAS と言う並列対応のライブラリとして提供されています。
  • 2000年代に入り、x86 系のプロセッサは SSE/SSE2 等のストリーム型のベクトル処理が可能となり、プロセッサ・ベンダーは BLAS 等への SSE 対応を図っております。これにより、さらにライブラリの性能向上が見られました。現在、インテル社の MKL ライブラリ(有償)と AMD 社のACMLライブラリ(無償)の中にバンドルされ、SSE 機能並びにアセンブラレベルでの最適化を施されております。
  • 現在、AMD社のACML ライブラリは、無償で利用できると言う利点があるため、多くのユーザに活用されております。さらにこのライブラリは、SMP 並列対応(OpenMP)されており、この並列ライブラリを活用することにより、ユーザコードのリニア・ソルバーは LAPACK にポーティングすることで、容易に並列性能を享受できるようになりました。特に、ACML ライブラリは、PGI コンパイラで validation(検証) されており、PGI コンパイラを利用すると、即座に本ライブラリを活用することができます。


● BLAS のレベル(1,2,3)毎の演算単位
BLASの演算タイプは、レベル1〜3まであります。線形演算単位がベクトルか配列かにより、そのレベルが異なります。そのレベル毎の模式図を以下に示しました。ベクトルの演算(レベル1)では、そのソースコードの最適化レベルは、非常に制約されるため、キャッシュ活用が少なくなり性能はすぐに飽和します。演算タイプと性能との関係を以下に項で説明します。

● BLAS レベルの性能差は、どのようにして生まれるのか?
キャッシュベースのプロセッサでは、メモリアクセスが性能の隘路となっています。従って、演算数に対するメモリアクセスの量(比率)が小さければ、相対的に性能は向上します。以下の BLAS の1〜3の違いを見れば、自ずと、線形計算では Level 3の BLAS が性能向上に大きく寄与することが分かります。





実効性能的にどの程度の差として現れるか?




性能最適化されたBLAS、例えば ATLAS BLAS を使用すると性能はどう変わるか?



<< 戻る


 ソフテックは、PGI 製品の公認正規代理店です

サイトマップ お問合せ
Copyright 2004 SofTek Systems Inc. All Rights Reserved.