• 検索結果がありません。

POWER7/VSX機構向けアラインメント最適化

N/A
N/A
Protected

Academic year: 2021

シェア "POWER7/VSX機構向けアラインメント最適化"

Copied!
2
0
0

読み込み中.... (全文を見る)

全文

(1)情報処理学会第 74 回全国大会. 4A-2. POWER7/VSX 機構向けアラインメント最適化 Alignment Optimization for POWER7/VSX 吉田 美里† Misato Yoshida. 橋本 博幸† 本川 敬子† Hiroyuki Hashimoto Keiko Motokawa. †(株)日立製作所 横浜研究所 † Hitachi, Ltd., Yokohama Research Laboratory 1. はじめに 演算装置において1回の命令実行で複数のデータに対 す る 演 算 を 行 う 方 式 を SIMD(Single Instruction Multiple Data)と呼ぶ.近年マルチメディア処理の重要性の高まり に伴い,多量のデータに対して同じ演算を行うのに適し た SIMD 命令セットをサポートしたプロセッサが増加して いる.POWER7 プロセッサ[1]は SIMD 命令セットをサポー トした VSX(Vector-Scalar Extension)機構 [2] を搭載しており, SIMD 命令の利用により1命令で 16 バイトデータの演算 を行うことができる. 本 稿 で は ま ず , 連 続 的 な 配 列 参 照 を 含 む ループへの SIMD 命令適用で生成する 16 バイトデータのロード・ス トア命令に対して,対象データのアラインメントの違い による実行性能調査結果を示す.調査の結果,アライン メントの違いによって性能劣化する場合があることがわ かった.本研究では,アラインメントの違いによる性能 劣化を防ぐため,ループ変換の一方式であるピーリング によるアラインメント最適化方式を提案する.. 2 .VSX におけるロード・ストア命令の性能 VSX の SIMD ロード・ストア命令では 16 バイトデータ を扱うため,対象データの先頭アドレスが 16 バイト境界 に合っている場合をアライン,そうでない場合をアンア ラインと定義しており,アライン時に最も性能を発揮す る[2].アライン時とアンアライン時の性能差を調べるため に,POWER7 のキャッシュラインサイズ 128 バイト中の 16 バイト境界を跨ぐ各データ(図1(1)-(8))に対して SIMD ロード・ストア命令の性能を調査した.測定には, 3.0GHz の POWER7 を搭載する日立 EP8000 を使用した. キャッシュライン 128B. 16B境界 0 8B. 1. 2. 3. 4 (2). (1). 5. 6 (3). 7. 8 (4). 9. 10 (5). 11. 12 (6). 13. 14. 15 16. (7). (8). SIMDロード 16B. 図1. SIMD ロード・ストア命令性能測定箇所. 図2の横軸は,キャッシュライン先頭からのオフセッ トを表し,横軸の数字は図1各データの先頭アドレスの オフセットを示す.縦軸は,アライン(オフセットが 0)時 を1とした時の SIMD ロード・ストア実行時間比を表す. 図2より,SIMD ロードは先頭アドレスのオフセットが 120 (図1(8))の時,つまり,128 バイト境界を跨ぐ時に †(株)日立製作所 横浜研究所 〒244-0817 神奈川県横浜市戸塚区吉田町 292 番地. 性能劣化し,SIMD ストアは先頭アドレスのオフセットが 24, 56, 88, 120 (図1(2)(4)(6)(8)) の時,つまり,32 バイト 境界を跨ぐ時に性能劣化することがわかる. また,アラ イン時に比べ,ロードは約 1.7 倍劣化し,ストアは約 2 倍 劣化することがわかる. 2 load. 実 1.5 行 時 1 間 比 0.5. store. 0 0 8 24 40 56 72 88 104 120 キャッシュライン先頭からのオフセット (byte). 図2. SIMD ロード・ストア命令基本性能. 3. アラインメント最適化 本研究では,連続的な配列参照を含むループに対して アンアライン配列参照が増加した時,アラインな配列参 照を増やすためのアラインメント最適化として,ループ 変換の一方式であるピーリングを行う.本研究のピーリ ングでは,配列初回参照が 16 バイト境界を満たすように, 境界からのオフセット分だけ先頭イタレーションを非 SIMD 演算し,残りのイタレーションを SIMD 演算する. 図3において,配列 a-c は倍精度浮動小数データ(8 バイ ト)が格納してあり,先頭アドレスはすべて 16 バイト境界 に合っているとする.また,配列添字は 0 から始まるとす る.図3(a)を SIMD 化した際の配列 b アクセス状況を図4 (a)に示す.配列 b の初回参照は b[1]であり,16 バイトず つ(2 要素ずつ)ロードを行うと毎回アンアライン参照とな る.この場合,2章の測定結果によれば, 8 回に1回 128 バイト境界を跨ぐ時に性能劣化する.そこで,配列 a-c の 参照がアラインになるようにループイタレーション1回 分だけ非 SIMD 演算を行い,残りのイタレーションを SIMD 演算することで配列 a-c がアライン参照となる(図3 (b)).ここで,図3(b)の a[i:i+1]は 2 要素の一括参照を表し, +は SIMD 加算を表す.ピーリング適用後の配列 b アクセ ス状況を図4(b)に示す. for (i=1; i<n; i++) { a[i] = b[i]+c[i]; }. (a) 変換前. 図3. 1-41. a[1] = b[1]+c[1]; // ピーリング for (i=2; i<n-1; i+=2) { a[i:i+1] = b[i:i+1] + c[i:i+1]; } // SIMD 化 // 余りループ(省略). (b) 変換後 ピーリングの例. Copyright 2012 Information Processing Society of Japan. All Rights Reserved..

(2) 情報処理学会第 74 回全国大会. 性能劣化 キャッシュライン 128B. 0. 1. 2. 3. 4. 5. 6. 7. 8. ・・・. SIMDロード SIMDロード 16B. ・・・. 12. ・・・. 13. 14 15. 16. SIMDロード SIMDロード. (a) ピーリング適用なし. 劣化なし. アンアライン参照が過半数以下の時にはピーリングを 行わないため,SIMD 化のみを適用した場合と比較して性 能の差はない.アンアライン参照が過半数を超えた時に は,ピーリングによりアンアライン参照をアライン参照 に変更するため,SIMD 化のみを適用した場合と比較して 実行時間が大きく削減できている.. キャッシュライン 128B 0. 1. 2. 3. 4. 5. 6. SIMDロード SIMDロード. 非SIMDロード. 図4. 7 ・・・. 8. ・・・ ・・・. 12. 13. 14. 15. 16. SIMDロード SIMDロード. 実 行 時 間 比. (b) ピーリング適用あり ピーリング適用前後の配列 b アクセス状況. 配列の先頭アドレスや制御変数の下限値が静的に不明 な場合は,配列の初回参照アドレスが静的に求められな いため,動的判定コードを挿入する必要がある.動的判 定コードを含めたピーリングコードを図5に示す.初回 参照が 16 バイト境界に合っていない場合には,ループイ タレーション1回分だけ非 SIMD 演算を行った後 SIMD 演 算を行い,初回参照が 16 バイト境界に合っている場合は SIMD 演算のみを行う. for (i=1; i<n; i++) { a[i] = b[i]+c[i]; }. (a) 変換前. 図5. i=1; if (&b[1]%16 != 0) { // 動的判定 a[1] = b[1]+c[1]; // ピーリング i=i+1; } for (; i<n-1; i+=2) { a[i:i+1] = b[i:i+1] + c[i:i+1]; } // SIMD 化 // 余りループ(省略). 1.8 1.7 1.6 1.5 1.4 1.3 1.2 1.1 1 0.9. SIMD ピーリング + SIMD 0. 図7. 1 2 3 4 5 アンライン配列参照個数. アンアライン参照の増加とピーリングの効果. 配列の初回参照アドレスが静的に不明な場合の動的ア ドレス判定付きピーリングの効果を図8に示す.アンア ライン参照が過半数以下の時には,判定コード分だけロ スが生じるが,アンアライン参照数が過半数以上の時に は,SIMD ロード・ストアの性能劣化が大きいため,動的 アドレス判定オーバーヘッドを含んでもピーリングを適 用した方が有利である.. 実 行 時 間 比. (b) 変換後 動的判定付きピーリングコードの例. ピーリング適用基準は次の通りとする.(1)すべての初 回参照アドレスが静的に求まり,アンアライン参照の配 列が過半数以上の場合,ピーリングを実施する.(2) 動的 判定が必要な場合,同アラインメントの数が最大のもの から1つを選択し判定対象とする.. 1.8 1.7 1.6 1.5 1.4 1.3 1.2 1.1 1 0.9. SIMD ピーリング + SIMD 0. 1 2 3 4 5 アンライン配列参照個数. 図8. 動的判定付きピーリングの効果. 5. おわりに. 4. 性能評価 図6のループに対してピーリングの評価を行った.配 列 a-e は倍精度浮動小数データで,前提は3章と同様とす る.b の配列参照形式を b[i+1]に変更した場合,初回参照 は b[1]であり, SIMD ロードで 16 バイトずつ処理を行う と,常に 16 バイト境界を跨ぎアンアライン参照となる(図 1, 図4(a)参照). b,c,d,e,a の配列参照形式を上記のように 変更し,アンアラインな参照を増やした時の実行時間増 加の様子とピーリングの効果を図7に示す.図7は,す べての参照がアライン(図6の状態)で SIMD 化を行った時 の実行時間を 1 とした時の実行時間比を示す.実行は1プ ロセッサ上で行い,データ領域は L2 キャッシュ(256KB) を対象とした. for (i=0; i<n; i++) { a[i] = b[i]+c[i] +d[i] +e[i]; }. 図6. POWER7 プロセッサは SIMD 演算が行える VSX 機構を 搭載しており 16 バイトずつデータの処理が行えるが,ア ンアラインな配列参照が増えると性能が劣化する. アンアラインな SIMD ロード・ストア実行を削減するた めに,ループの初回参照がアンアラインな配列参照に対 して,先頭イタレーションをピーリングしアラインを調 整した後 SIMD 化を行う方式を適用し,性能劣化が防げる ことを確認した.. 参考文献 [1]. [2]. IBM Corporation:Press releases(08 Feb 2010),ht tp://www-03.ibm.com/press/us/en/pressrelease/29 315.wss,(2010). IBM Corporation,“Power ISA Version 2.06 Revis ion B”, (July 23, 2010).. 測定対象ループ. 1-42. Copyright 2012 Information Processing Society of Japan. All Rights Reserved..

(3)

参照

関連したドキュメント

最後 に,本 研究 に関 して適切 なご助言 を頂 きま した.. 溝加 工の後,こ れ に引

I Samuel Fiorini, Serge Massar, Sebastian Pokutta, Hans Raj Tiwary, Ronald de Wolf: Exponential Lower Bounds for Polytopes in Combinatorial Optimization. Gerards: Compact systems for

0.1uF のポリプロピレン・コンデンサと 10uF を並列に配置した 100M

画像の参照時に ACDSee Pro によってファイルがカタログ化され、ファイル プロパティと メタデータが自動的に ACDSee

[r]

注1) 本は再版にあたって新たに写本を参照してはいないが、

サンプル 入力列 A、B、C、D のいずれかに指定した値「東京」が含まれている場合、「含む判定」フラグに True を

購読層を 50以上に依存するようになった。「演説会参加」は,参加層自体 を 30.3%から