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

ベクトルプロセッサの有効な使用法(2) : プログラ ムの高速化について

N/A
N/A
Protected

Academic year: 2022

シェア "ベクトルプロセッサの有効な使用法(2) : プログラ ムの高速化について"

Copied!
22
0
0

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

全文

(1)九州大学学術情報リポジトリ Kyushu University Institutional Repository. ベクトルプロセッサの有効な使用法(2) : プログラ ムの高速化について 武富, 敬 九州大学大型計算機センター研究開発部. 桜井, 尚子 富士通九州支店. 平野, 広幸 九州大学大型計算機センター業務掛. 景川, 耕宇 九州大学大型計算機センター研究開発部. https://doi.org/10.15017/1468133 出版情報:九州大学大型計算機センター広報. 18 (6), pp.580-600, 1985-11-25. 九州大学大型計算機セ ンター バージョン: 権利関係:.

(2) 解. 説. ベクトルプロセッサの有効な使用法( 2 ) ‑プログラムの高速化について一 *. **. ***. *. 武富 敬,桜井 尚子,平野 広幸,景川 耕宇 1. はじめに. 前稿[ 1 ]では,プログラム高速化のためのチューニングツールの使用法について述べた.そこで 述べたツールの出力情報に従ってチューニング作業を行っても望む効果が得られ7Iiい場合,出ヵ情報 の意味が分ら7Ilい場合,さらに高度なチューニングを行いたい場合7Iiどには,本稿が参考になる. 本編では,プログラム高速化のた馴こは何を考慮すればよいか, F。rtran77/VPコンパイラは何 を対象としてどの程度の自動ベクトル化機能を持っか, Fortran77/VPコンパイラが解折でき7まい 情報をコンパイラに指示するにはどうすればよいか,高速化にはどのよう7Ii手法があるか7Ilどについ て述べる.これらについては,文献[ 2 ]が実例も豊富で参考に7よるので一読されるようお奨めする. '/VP利用者グループ* [ 3 ]で収集したテストプログラムのベクトルプロセッサ(以下VP )試用 結果では,現機種M3 8 2に対する性能比で約1倍から1 2.2倍までの範囲にわたっていたー(付録1 参照).すべての場合にあてはまるとは限ら7Ilいが,これらのプログラムのうちあまり高速化され7ま いものは,主として,ベクトル長が短い,データに回帰的参照関係がある(後述)#どの問題点を含 んでいることが分かった. VPで高速に実行して研究を進展させるには,これらの問題点を見つけ出 し,それらを克服していか7IZければ7Ilら7Iiいので,前稿および本稿7Ilどを参考にしてチューニング作 業を行われるよう望む.少しの手直しで大幅fIl性能改善が望める時もある. 2.プログラム高速化の概要 一. VPのスカラに対する相対処理速度(VPで何倍速く7:1るかの目安を表す,いわば加速率) Pは, 次の式で与えられる. 1. 1‑V+V/α. ここで, Ⅴ :ベクトル化率‑‑ベクトル命令で処理できる部分の割合([1]の図1.4参照) α :ベクトル/スカラ速度比一一ベクトルユニットのスカラユニットに対する計算 速度の比 す7:lわも, Ⅴは,プログラムのどれだけがベクトル命令で高速処理できるかを示し, α トル化された部分がどの程度高速に実行できるかを示す. このPをaをパラメータとしてⅤに対してプロットすると,図1のように7Ilる. これから,プログラム高速化のために古事,. * **. 九州大学大型計算機センター 研究開発部 富士通 九州支店. *** 九州大学大型計算機センター 業務掛 九州大学大型計算機センター広報 Vol. 18 No.6 1985. ‑580‑. は,そのベク.

(3) ベクトルプロセッサの有効な使用法(2) ‑プログラムの高速化について‑. α‑15.0. α‑5.0. α‑1.0. 図1. ベクトル化率とVP相対処理速度比(スカラ比)の関係. ・まず, Ⅴ(ベクトル化率)をできるだけ上げること(80‑90%以上) ・同時に,α も大きくする必要があること が分かる. a. は,ハードウェアの性能に依存することはもちろんだが,次のよう7:1プログラムの持つ. 性質にも依存する ・ベクトル長‑‑. DOループの実行回数のことで,できるだけ長い万がよい. aのベクトル長に対する依存性は,図2のように7:1る ・データ引用方法‑‑‑連続,等間隔,間接(リストベクトル)の3つのインデックスによるデー タ引用が可能である.この中では,連続引用が一番効率がよい ・演算子数‑‑‑DOループ中の演算子数ができるだけ多い方がよい 以上をまとめて考察すると,プログラム高速化のポイントとして基本的に次の3つが挙げられる. 1)プログラムの分析 i)数値解法の基本からの分析 ii)チューニングツールによる分析 ここで, i)は,その数値解法が並列処理に向いたものかどうかfIiどの検討のことをさす.これにつ いてはここでは触れ7:1い.文献[2]を参照されたい. ii)は,前稿[1]で述べたことで,それによりⅤ の値やαの決定要因であるベクトル長などに関する情報が得られる. 2)ベクトル化の促進 ‑581‑. 九州大学大m計算機センター広報 Vol.18 No.6 1985.

(4) 解. 説. Ⅴの値を大きくするための処置のことである.これについては,以下の4で述べる. 3)ベクトル性能の向上 αの値を大きくするための処置のことである.これについては,以下の5で述べる. 要するに,以上の高速化のポイントを考慮して,以下のことを行えばよい. i)最適化制御行(後述)の適用 ii)プログラムの書き替え iii)科学技術計算用ライブラリS SL∬/VPの適用 これらについて述べる前に. Fortran 77/VPコンパイラの自動ベクトル化などについて触れ. ておこう.. ベクトル長 図2. ベクトル長とベクトル/スカラ速度比の関係. 3. Fortran77/VPコンパイラ 5.1. 自動ベクトル化. Fortran. 7 7/VPコンパイラが自動ベクトル化する基本条件を表1に示す.これから,この条. 件を清さ7Ilい以下のような要素を含むプログラムは,考え直す必要がある. 1)繰り返し回数が特定でき7:1いためにDOループでなくIF/GOTO;!/‑プを多用したもの 2)メモリ節約7Ilどのために, LOGI CAL*!, INTEGER*2#どで宣言した変数,配 列をDOループ中に含むもの.これらは, LOG工CALM, INTEGERMなどと宣言 し直せばよい. 3) DOループ中に利用者定義のサブルーチン,外部関数の引用があるもの.これらについては, .後述するようにDOループ中にそれらを内部展開(インライン展開)するコンパイラオプション を指定すればよい. 4)回帰的なデータの定義・引用 以下に例でもって示す.. 九州大学大型計算機センター広報 Vol. 18 No.6 1985. ‑582‑.

(5) ベクトルプロセッサの有効な使用法(2) ‑プログラムの高速化について‑. 表1 ベクトル化の基本条件 ベクトル化非対象項目. ベクトル化対象項目 対象範囲. * * O. a. サ. X. c. ごり. O. ォ. *tt. 3. JXI^E3屈岬. ". !. ̲. t‑4C¥J COQi. l. t. j. IOJ‑JCUOi. a. t. ̲. JKeoXH <U'‑hWO OO*J<. ". J. ). OH<S< OZWOE L,‑ctjoo. 蝣. 蠎. t. **. c. <﹂rJ^ooWW OO##JhJ. ‑. ohォss. ozwwoo L,<KォUU. データの型. DO WHI LEループ DO UNTI Lループ I F/GOTOループ. DOループ. 2. ー ・. X. u. 外部関数の引用. 枝文鋒. PAUSE文. 錆錆蓄N文. 文 E. 文文文II文FTI. 代IIツMWQO2. データの定 義・引用. 棚 入FFクWCd‑OH. 術理術理ロLLN 昇給算論プEEE. 文. CALL文 入出力文 計算形GOTO文 割当て形GOTO文 文番号代入文. ベクトル化できる膿序 (回帰演舞でないこと). 門戸なデ‑タの定義'. 例1. DO I0. 1‑1, 100. A(I)‑A(1‑1)+B(I) 10. C ONTI NU E 式の左辺に変数が現れる時,その変数の定義があると言い,右辺に現れる時は,その変数の 引用があると言う.この定義に従えば,この例は図3に示すように,引用した値により新た に次の要素の値を定義し,その変更された値を引用して,さらに次の要素の値を定義するこ とに7:1る.このよう7:1関係を,データに回帰的参照の依存関係があると言い,本質的にパイ プライン方式の演算[4]にはなじまfIlい.す7Ilわら,このような漸化式の形は,データの回 帰的7Ii定義・引用のためにベクトル化できない. 一般に以下のよう7Il演算がDOループ中にある時, M≦Nならばベクトル化可能だが, M>N#らばベクトル化不可である. A(工十M)‑A(I十N)+B(I). 例2. DO. 10. VPでの実行のイメージ. 1‑1, 100. C(I)‑A(1‑1)+B(I)‑・‑庄) 二二‑ラ. A(I)‑C(I)‑D(I) 10. ・ョ. C, ‑A/‑1+B; , I ‑1.2,‑100 A,‑. ‑C, ‑、D,‑. I ‑1.2.‑ 100. C ONTI NU E. ‑583‑. 九州大学大型計算機センター広報 Vol.18 No.6 1985.

(6) 解. 説. このDOループのVPでの実行は, ①を100回,続けて④を100回行う,上の右側のイメ ージになる.そのため,図4に示すようにスカラの場合とVPの場合では,データAの定義 ・引用の関係が逆転し,異7:1る結果を与えることになる.よって, Fortran77/VPコンパ イラは,このよう7Ii回帰的7:1データの参照関係を含むループはベクトル化し7Ilい. これらの例から明らかなように, DOループ中のデータの回帰的参照は,自動ベクトル化を不可 能にする最も大きな要因の1つである.. 西己. 列. A. 図3.回帰的なデータの定義・引用. VPでの実行噸序 ・,. 日日‖日日凹. スカラでの実行噸序. ▼..一. >. ̀一. i C(1)‑A(O)+B(1). C (2)‑A(1)+B (2). A(1)‑C (l)‑D(l) A(2)‑C(2)‑D(2). C (100)‑A(99)+B (100). A(100)‑C(lOO)‑D(lOO). 図4.回帰的参照によるベクトル化不可の例. 九州大学大型計算機センター広報 Vol.18 No.6 1985. 584‑.

(7) ベクトルプロセッサの有効な使用法(21 ‑プログラムの高速化について‑. Fortran 77/VPコンパイラは,表2に示すタイプのすべてのベクトル演算を自動ベクトル化で きる・す7Ilわち,算術・論理代入などの基本的ベクトル演算はもちろんのこと,総和・内積演算,最 大値・最小値検索7Ilども,ベクトルマクロ命令が用意されているのでベクトル化できる.また, DO ループ内にベクトル化の対象と7Iiら7Ilいデータや文を含む場合,その部分を除いて可能7:1限りベクト ル化を行う部分ベクトル化の機能や,最内DOループに限らずその外側のDOループもベクトル化の 対象とする多重DOループのベクトル化機能もある.これらについては,文献[2]を参照されたい.. 表2.自動ベクトル化可能なベクトル演算. 表中に現れるA. B, L. C. Nは配列, Sはスカラデータ. MAX, MI Nは組込み関数.王はDO変数を意味している.. 5.2. 最適化制御行. 最適化制御行は, Fortran77/VPコンパイラにチューニングのための情報を指示するものであ る・それは,ソースプログラムの中に書き, 1けたから6けたまでが'/*VOCL. *で始まる行のこ. とである.この最適化制御行の形式を表3に示す.この制御行の有効範囲は,プログラム単位,ルー プ単位,文単位で,それぞれ7けた目からTOTAI‥. LOOP, STMTと指定する.この行の指. 定により,ベクトル化の促進やベクトル性能の向上をはかることができるが,それらについては後述 する.. ‑585‑. 九州大学大nt一計算機センター広報 Vol.18 No.6 1985.

(8) 解. 説. 表3 最適化制御行の形式. *VOCL. 有効範囲.制御情報〔.制御情報]‑. 備考1̲ 有効範囲の詳細 TOTAL プログラム単位 LOOP ループ単位 S TMT 文単位 備考2ー 制御情報の詳細 r e 1 op 関係演算子 :GO TO 文 Pl.P2.P3.P :分岐確率 nl,n2.n3 文番号 m :繰返し回数 S :変数名 1 : DO変数. 九州大学大型計算機センター広報 Vol.18 No.6 1985. ‑586‑.

(9) ベクトルプロセッサの有効な使用法(2) ‑プログラムの高速化について‑. 4.ベクトル化の促進 プログラム高速化のためには,何よりもまずベクトル化率を上げる必要がある.このT:砂の処置に ついて述べる. 1) DOループ内に利用者定義副プログラムの引用がある時,その部分はベクトル化され7まい.これ に対しては, ・コンパイラオプションPIを指定して,副プログラムを引用の位置た内部展開し,ベクトル化の 対象とする. pI (副プログラム名,. ). pI (*). ‑. 指定した副プログラムを展開の対象とする. ‑・‑‑. 叫. すべてを展開の対象とする. ・利用者定義副プログラムを文関数として定義する.こうすればベクトル化の対象と7Igる. 2)データの回帰的参照がTIlいことが分かっている時,最適化制御行でその旨指示すればベクトル化 できる.. 例1.. *VOCL LOOP,M.LE. N DO. 10. D O 1 O. 1‑1, 100. 1‑1, 100. ^S31. A(I+M)‑A(I+N)+B(I). A(I+M)‑A(N(I))+B(I) 10. 10. CONTINUE. CONTI NUE. この場合, *VOCL I」OOP, NOVREC(A)と指定してもよい. 例2.. *VOCL LOOP, NOVREC(A) DO. 10. DO. 1‑1, 100. 1‑1, 100. A(N(I))‑A(N(I))+B(I). A(N(I))‑A(N(I))+B(I) ⇒ 10. 10. 10. CONTI NUE. CONTI NUE. リストベクトルN (I)の値に重7:1りがなければ,この例のように指定してベクトル化できる. 3)ベクトル化されtzvoループ長が短いため,ベクトル化率が低いことがある.これに対しては, ・2, 3次元7Iiどの配列を1次元化して,多重ループを一重ループ化するよう書き替える.こうし て可能な限りベクトル長を長くする. ・ループ長の長いDO変数でベクトル化されるように書き替える.. ・最適化制御行で,最適なDO変数を指示する. 例. *VOCL LOOP,VI(I). DO 10 I‑1, N DO 1 0 J‑1, M. DO 1 0 I‑1, N. N≫Mの場合. DO 10 J‑1, M. ≡≡ヨ. A(I,J)‑A(I,J)+S*B(I,J). A(I,J)‑A(I,J)+S*B(I,J) 10. 10. CONT工NUE. CONTI NUE. この例では, DO変数Iでベクトル化することを指示している.こうするとベクトル長が長く 7Ilるばかりでなく,データアクセスも連続に7:3ってさらに効率が上がる.. ‑587‑. 九州大学大Tf'J計算機センター広報 Vol.18 No.6 1985.

(10) 解. 説. 5.ベクトル性能の向上 ベクトル化されてもその部分のベクトル長が短かければ高速化は望め7:1い.このための処置は4の 3)で述べた.この点を除けば,ここでの処置は少し細か7Ilチューニングということになる. 1) IF文の真率の指定 文献[4]で述べたように, I F文を含むDOループのベクトル化方式には3種類ある. I F文の真 率の目安が分かっている時には,それを指定すれば最適な方式が選択される. 例. *voc工一. DO. 10. 1‑1. 100. STMT, IF(10). DO IO. IF(A(I).LT‑0)GO TO 10. 1‑1, 100. IFCA(I).LT‑0) GO TO 10 =≒>. X(I)‑SQRT(A(I)) 10. X(I)‑SQRT(A(I)). CONTINUE. 10. CONTI NUE. 2) DOループの繰り返し回数の指定 文献[4]で述べたように, VPのベクトルレジスタは可変構成方式を採っているので,繰り返し 回数があらかじめ分かっている時にはそれを指定すれば最適な構成が選ばれる.例えば. *voc工一. LOOP, R云pEAT(100)などと指定する. 3)パンク競合の回避 メモl)上のとびとびのデータをアクセスする場合,そのテざ‑タ間隔が適当で7:Sいとメモリバンクの 競合を起し性能が著しく低下することがある.その回避のために,配列の寸法(type*m A(K, N) のKの値)を以下のように定めるとよい.. trpe#‑コ事由軍1 L .十i「4n+2 「十. nは正整数. 例. DIMENSION A(400, 200). ‑>. DIMllNSION A(402, 200). 4)演算密度の向上 文献[4]で述べたように, VPはパイプライン・ハラレライズ(並列実行)の機能を持っので,こ れを有効にするためにDO^‑プ中の演算子をできるだけ多くする方がよい. 例. アンローリングの方法 DO 10 J‑l, 100. DO 10 J‑l, 100, 2. DO I0. DO 10. 1‑1, 100. B(I)‑B(I)‑+‑A(I , J)*x(J) 10. CONTINUE. 九州大学大型計算機センター広報 Vol.18 No.6 1985. 10. 1‑1, 100. B(I)‑B(I)+A(I, J)*X(J)+A(I, J+l)*X(J+l) CONTINUE. ‑588‑.

(11) ベクトルプロセッサの有効な使用法(2) ‑プログラムの高速化について‑. 5)ベクトル長が短い時 DOループ繰り返し回数が1, 2, 3などの時は,ベクトル化のオーバーヘッドのためにVPでは かえって遅く7Ilることがある.そのような場合は,最適化制御行でベクトル化抑止の指定をする.. 例. *vOCL LOOP, SCALAR DO 10 I‑K, K+N N‑l,2などの時 A(I)‑A(I)+B(I). 10. DO 10 I‑K,K+N. ⇒. CONTINUE. A(I)‑A(I)+B(I). 10. CONTINUE. 6. SSL皿/VPの適用 連立一次方程式,固有値問題,フーリエ変換7:1どの計算の場合には,科学技術計算用ライブラリS s1‑ 1/VPを使用するのがよい. S S工一皿/VPは,標準機能と拡張機能に分けられる.標準機能 については,従来使用してきf:ssl皿(スカラ版)と呼び出し形式など完全に互換が4)るので,柄 も変更する必要は7Ilい.さらにVP向きアルゴリズムを採用して開発された拡張機能のルーチン[5] も奨められる.これらの性能指標7ISどの一覧を付録2に示した. 参考文献 1.石氷,河津,菅崎,山本,武富. ベクトルプロセッサの有効な使用法(1). ‑チューニングツ. ールの使用法について‑ ,九大大型計算機センター広報, 18, 6, 1985. 2.計算機マニュアル. FACOM OSIV/F4. ンドブック(78SP‑5740‑1 ). MSP FORTRAN. 77/VPプログラミングハ. 富士通(秩).. 3.九大大型計算機センターニュース Na 318 「VP利用者グループ」結成の呼びかけ, Na 3i9, 第1回VP研究会の開催について. 4.磯辺,松延,今村,武富,景川. ベクトルプロセッサ. FACOM VPIOOについて,九大大型. 計算機センター広報18, 5, 1985, 397‑412. 5.計算機マニュアル. FACOM FORTRAN S SLII拡張機能使用手引書(99SP‑0060‑2). 富士通(株).. ‑589‑. 九州大学大型計算機センター広報 Vol.18 No.6 1985.

(12) 解. 説. 付録1.九州大学vP研究会. VPIOO実測結果一覧. ⊂測定環境及び条件コ 富士通沼津工場 VP200 (VPIOOモード実測) ‑VsPクローズ(M382とのJES/MAS結合) OSN/F4 ‑FORTRAN 77 VIOL31 ‑FORTUNE VIOLl1 ‑FORTRAN 77/VP VIOL20 ‑会話型ペクトライザ VIOL20. 九州大学大型計算機センター広報 Vol. 18 No.6 1985. VSP VI0. ‑590‑. *予想効果とは.会話型ベクトライザが予想した M3 8 0に対する効果(倍率)のことである..

(13) ベクトルプロセッサの有効な使用法(2) ‑プログラムの高津4ヒについて‑. 付録2. SSLH/VP性能指標一覧.文献E2コより転載. ここで. sslh/vpの相対性能く倍率) αを次式で定義する. M380上でのSSLHのCPU時間. VP200上でのSSLE/VPのCPU時間 また.個々のサブルーチンにおける相対性能(倍率)の程度に応じて.次のような性能指標を導入 する.. 表中のS, dはそれぞれ単相皮演算.倍精度演算の場合であることを示す. "次数‑は.性能指標 を貫出した問題の大きさであり.サブルーチンの入力バラメタに対応して表示している. また. d柄考"偶の数億は.適当な次数mにおける相対性能(倍率) βを推定する近似式の係数 く上段は単相最 下段は倍精皮)である.推定相対性能は.次のような2次近似式により求めること ができる. β≒c O十cl#m十c2*m*m c 2の欄が空白の場合は. 1次式で求めることを意味する.ここで. rnの範囲は.一次放〝で表示 した値をpとして. 16≦m≦p である.近イ以係数は. i 6次〜p次での相対性能値に対して・最小二乗法により算出したものである・ 推定相対性能βは.標準的なデータを用いた場合の例であり・利用者プログラムでのデータとは異な る場合がある.. ‑591‑. 九州大学大型計算機センター広報 Vol. 18 No.6 1985.

(14) 解. 読. A.捜型計貫 〔行列格納モードの変換】. 〔行列捜作】. 九州大学大型計算機センター広報 Vol. 18 No.6 1985. ‑592‑.

(15) ベクトルプロセッサの有効な使用法(2) ‑プログラムの高速化について‑ 【i垂立一次方程式】 考. * :より高速性を追求する場合は.拡張機能VLSX, VLTXが通している.. 〔逆行列]. ‑593‑. 九州大学大?‑!計算機センタ‑広報 Vol.18 No.6 1985.

(16) 解. 〔最小二乗解】. ら.固有健固有ベクトル. 注)性能は.行列の特性(固有債の分布など)に依存する.. 九州大学大型計算機センター広報 Vol.18 No.6 1985. ‑594‑.

(17) ベクトルプロセッサの有効な使用法(21 ‑プ?̲グラムの高速化に?いて‑ C.非線型計貫. D.毎悠問題. E.補間・近似 〔相聞]. ‑595‑. 九州大学大型計算機センター広報 Vol.18 No.6 1985.

(18) 解. 九州大学大型計算機センター広報 Vol.18 No.6 1985. ‑596‑.

(19) ベクトルプロセッサの有効な使用法(2) ‑プログラムの高速化について‑ F.変換. * ;より高速性を追求する場合は 拡張故能VRFTl. VCFTlが遺している. G.数値穣分. ‑597‑. 九州大学大型計算機センター広報 Vol.18 No.6 1985.

(20) ¥m. m. H.撤分方程式. I.特殊関数(続く). 九州大学大型計算機センター広報 Vol.18 No.6 1985. ‑598‑.

(21) ベクトルプロセッサの有効な使用法(2) ‑プログラムの高速化について‑ I.特殊関数(続き). ∫.擬似乱数. * :該当する倍精度故能はない.. ‑599‑. 九州大学大?J計算機センター広報 Vol.18 No.6 1985.

(22) 解. 説. SSL H拡張機能一覧表. 置l有鍾薗有ベクトル. フーリエ変換. vCFTi. 足故空罷ま7‑1エ変換(性能使先空・ 2着藍FFT). 社故空理素フーリエ変換(ノモり筋初空. 2基底fFT】. 九州大学大型計算機センター広報 Vo.18 No.6 1985. ‑600‑.

(23)

参照

関連したドキュメント

洋上液化施設及び LNGRV 等の現状と展望を整理するとともに、浮体式 LNG 受入基地 を使用する場合について、LNGRV 等及び輸送用

第 5

12―1 法第 12 条において準用する定率法第 20 条の 3 及び令第 37 条において 準用する定率法施行令第 61 条の 2 の規定の適用については、定率法基本通達 20 の 3―1、20 の 3―2

TRACG は,オリジナルの原子炉過渡解析コード(TRAC)[1]の GE Hitachi Nuclear Energy

を受けている保税蔵置場の名称及び所在地を、同法第 61 条の5第1項の承

出来形の測定が,必要な測 定項目について所定の測 定基準に基づき行われて おり,測定値が規格値を満 足し,そのばらつきが規格 値の概ね

環境影響評価の項目及び調査等の手法を選定するに当たっては、条例第 47

特定工事の元請業者及び自主施工者に加え、下請負人についても、新法第 18 条の 20 に基づく作業基準遵守義務及び新法第 18 条の