[目次] [1ページ目に戻る] [次ページ] [質疑応答] |
2.LAPACK移植の方針について
2.1システムの特徴今回、移植の対象としたFujitsu VPP500/15およびFujitsu VX/2は、分散メモリ型のベクトル並列計算機で、表1に示すような特徴を持つ。
表1.移植システムの特徴
システム PE数 メモリサイズ 最大ベクトル演算性能 VPP500/15 15 256MB 1.6GFLOPS VX/2 2 512MB 2.2GFLOPS 各PE(Processor Element)は、メモリおよびスカラユニット(SU)、ベクトルユニット(VU)から構成され、ベクトル計算機としての機能を持つ。VUは、加算、乗算などの演算パイプおよびロード、ストアパイプとベクトルレジスタで構成される。一連のベクトル処理(例えば、ロード、加算、乗算)は、いくつかの並列処理可能なステージに分けられ、パイプライン制御により一括して処理される。また、ベクトルレジスタは、128Kバイト容量を持ち64要素(256個)から2の巾乗単位に2048要素(8個)まで分割構成できる(1要素は8バイト)。なお、VX/2はVPP500/15と同じアーキテクチャでCMOS化された後継機種である。移植の作業及び評価は、会話型サービスを行っており効率的に進められるVX/2で行った。
2.2 LAPACKの構成と移植
LAPACKのルーチンは、核となる演算を基本線形代数副プログラムBLAS(Basic Linear Algebra Subroutine)への呼出しで処理する構造になっているので、BLASのチューニングを行えば充分な性能が発揮できるように設計されている[2][3]。
BLASルーチンは、それぞれが行う演算形式によって、表2のようにレベル分けされる。
表2.演算形式とレベル
上記の式では行列、はベクトル、はスカラを示す。
レベル 式 説明 ルーチン数 レベル1 ベクトルの演算を行う 15 レベル2 行列とベクトルの演算を行う 25 レベル3 行列同士の演算を行う 9 したがって、今回のLAPACKの移植作業は、BLASルーチンのベクトルチューニングを中心に行った。
2.3コンパイラと最適化機能
使用したコンパイラはUXP/V Frtran90/VP V10L10 + PTF97121である。このコンパイラは最適化のレベルをオプションにより選択することができる。表3に選択できる最適化レベルのオプションを示す。ただし、最適化を抑止するレベルやインライン展開を行うレベルは除いてある。
表3.選択できる最適化レベル
オプション 機能 -Ob 演算結果に影響を与えない範囲での最適化およびDOループに
対してアンローリング処理が行われる。-Oe -Obの最適化に加えて不変式の移動、計算式の評価順序の変更
など、演算結果に影響を与える可能性のある最適化を行う。-Oeが省略値の最適化レベルである。今回はライブラリの移植なので、演算結果に影響を与えない最適化レベル-Obを用いることが望ましい。しかし、-Obでは充分な性能が得られない場合には、最適化レベル-Oeを用いることも考えた。
そこで、まずBLASに含まれる行列とベクトルの乗算を行うルーチンDGEMVについて最適化レベル-Obと-Oeでコンパイルし、それぞれ演算速度を測定し、性能比較を行った。表4に、N × Nの行列と大きさNのベクトルの乗算をNが2000の場合について測定した結果を示す。
表4.最適化レベルの違いによる演算速度の差
最適化レベル -Ob -Oe CPU時間(μsec) 8715 4429 表4から、最適化レベル-Oeは-Obに比べて約2倍もの性能が得られていることがわかる。したがって、最適化レベルに-Oeを用い、それぞれ最適化の影響を調べ、最適化制御行などをプログラムに挿入し、抑止するという方針をとった。
[目次] [1ページ目に戻る] [次ページ] [質疑応答] |