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

VOR:++

ドキュメント内 電気通信大学 (ページ 90-171)

VOR:=+?=+?

_ _ _

VGUVE KPVOCKP]

CWVQKPV:=?=?

CWVQKPV+

CWVQKPV+

CWVQKPVVOR

VGUVE

HQT+++

VGUVE ] VGUVE

HQT++++

VGUVE ]

VGUVE

:++++VOR VGUVE

VOR:++

_ _ _ VGUVE

:QDLGEV%QFG ᄌ឵

ㅒᄌ឵

0/? -プログラムの変換・逆変換例

しかし,本ツールのプログラムリストラクチャリングは!! ( コンパイ ラで逆コンパイルされたプログラム部分を使用している.したがってユーザがリス トラクチャリングを指示するたびにソースコード の可読性が失われていくことにな る.そこで今後はリストラクチャリングされたコード は実際にはソースコード のコ ンパイル直前に行なうこととし,実際には '!( で対話型並列化を行なってい るときにはリストラクチャされたコード はプレビュー機能を用いてソースコード 上 にプレビューする事にとどめ形をとるほうが良いと考えられる.

また,実装環境93:におけるプログラムのイタレーション回数の違いによる並

動作検証および評価 45

列化効果を表.3に示す.このプログラム900:はイタレーション回数*を可変さ せそのときの逐次実行および並列実行した場合の実行時間を示すものである.表.3 より,ある一定以上のイタレーション回数を超えない限り,並列度が.を超えない ことが明らかとなっている.これにより,ユーザはループを並列化する際には

ループボデ ィの構造

ループのイタレーション回数 逐次実行での実行時間

を考慮して手動で並列化するか否か決めなければならないと考えられる.したがっ て,ユーザが並列化の最終判断をすることとしている本研究で提案した枠組みでは,

オーバヘッド だけを増長させる無益な並列化を防ぐことができる可能性があると考 えられる.

!"

#!$%! &'

(# !( ( $!

$!)' **

)

#!$% ! &'

)!" +, + * ! " + , + '

-($.)/$0.

1

00? 実装環境93:で実行したテストプログラム

.3? 実装環境93:におけるテストプログラムの実行時間計測結果

反復回数9*: 逐次実行時間<= 並列実行時間 <= 並列度9逐次実行時間並列実行時間:

.77 .77.7

$

8.7.7

%

77/

.777 .17.7

%

857.7

%

7/.

.7777 .70.7

&

.4/.7

&

787

.77777 ..0.7 '

..5.7 '

763

.777777 ./..7 (

..5.7 (

.70

.7777777 ./0.7 )

466.7 (

.31

動作検証および評価 57

ユーザとの双方向対話

今回用いた2 ,-ベンチマークの中には,ユーザの知識を用いなければ並列化不 可能である構造のループを持っている場合が存在した.したがって,

Iユーザに情報を提供するだけではなく,プログラムの特性に関するユーザの知識を 受け取ることを可能とし,その情報を利用した支援を行なうことを可能とする.J という本研究の枠組みでは,より多くのプログラム部分を並列化し,より高性能な プログラムを作成するためには必要であると考えられる.

ツールの可搬性および拡張性と低コスト 導入

現段階での実装では, '!(, E Gとシェルスクリプトを利 用して構成されており, '!( が実装できる計算機環境は広範囲で,可搬性が 高いと考えられる.

また,表3で示されているようなアプリケーション上で動作する並列化支援機能 を作成することで, '!( に新たな支援機能を追加することが可能であり,機 能拡張性が高いと考えられる.

さらに, '!( はフリーソフトウエアとして配布可能であるため,低コスト 導入が可能であると考えられる.

ディレクティブによるプログラム特性の提供

本研究の枠組みでは,テキストエディタ上でプログラムの並列化および最適化を 行う.そこで,本ツールでは,デ ィレクティブによりプログラムの特性を提示して いる.それ以外でも世の中にはデ ィレクティブによる並列化のヒントが与えること のできるコンパイラが存在する<00=<01=9表.8.4:.これらを見てみると,共通の 部分が多く見られる.

本研究の枠組みで採用しているヒントデ ィレクティブの方式は,! ( 同様,

次の利点があると考えられる.

ファイルの一元管理のしやすさ?

本方式を用いることにより,本方式のディレクティブを理解できない並列化コ ンパイラや並列化支援ツールにとってはこのディレクティブを無視することが できる.よってこのディレクティブの書かれたファイルを他の並列化コンパイ ラや並列化支援ツールに掛けてもエラーにならない.よって本方式を用いるこ とによりこのディレクティブが記述されているファイルを保管するだけでよい 事となる.ファイルの一元管理はプログラム管理が便利になると考えられる.

.8? ( 2 コンパイラののヒントデ ィレクティブの仕様

デ ィレクティブ 意味

N 置かれた場所に依って、サブルーチンを並列 化しない、またはファイルを並列化しない.

N N を無効にする.

N 並列化を行うときに、同じ配列への参照があ るかもしれないという仮定を無視する.

N これに続くループを並列化しない.

N 並列化を行うときに、サブルーチン・コール に関する依存関 係を無視する.

N 9 : 配列 は順列配列である.

N 安全ならば 、これに続くループを並列化する.

N これに続くループを並列化しない.

プログラムの可搬性?

先述したとおり,このディレクティブの埋め込まれたファイルは他の自動並列 化コンパイラや並列化支援ツールに掛けても,ディレクティブが無視されるだ けでエラーにはならない.よってこの方式を用いたソースコードには可搬性が あると考えられる.

並列化コストの削減?

自動並列化コンパイラや並列化支援ツールで一度並列化可能かど うかわからな かった部分はユーザが手動で並列化可能かど うか再調査しなければならない.

しかし,本システムを使用してそのような部分に並列化のためのヒントを与え ることができれば,ユーザによる並列化のコストは削減される可能性が高い.

よって,本方式によるディレクティブの付加は並列化コストの削減にも役立っ ていると考えられる.

プログラムの可読性?

プログラムの特性を別ファイルに保存している場合の並列化支援システムや自 動並列化コンパイラでは特別なビューアーを通してでなければその設定してあ

動作検証および評価 5/

.4? - &;のヒントデ ィレクティブの仕様

デ ィレクティブ 意味

このプラグマの直後の文または文ブロックがクリティカ ル・セクションであることを指定する.

選択されたループ内の関数呼び出しで、ループに依存す る部分がないことを示す.

選択されたループの反復を依存しないものとみなし 、そ のループの並列化を可能にする.

特定のループの反復回数を指定する.

選択されたループの並列化を明示的にコンパイラーに指 示する.

プラグマは、選択されたループの中に指定

された配列内に値の重複がないことを示す.

並列ループ実行のスケジューリング・アルゴ リズムを指 定する.

選択されたループの順次実行をコンパイラーに明示的に 指示する.

るプログラム特性を見ることができない.しかし,本方式のように直接プログ ラム自身にプログラムの特性をディレクティブを用いて書き込むことによって ビューアーなどを用いずに直接プログラムエディタ上にあるソースコードから 読むことができる.また,ディレクティブは高々数行の文であるためにプログ ラムの可読性を損ないにくいと考えられる.よって本方式はプログラムの可読 性が保たれたままプログラム並列化や最適化ができると考えられる.

プログラムの教育的価値?

本方式では,プログラム部分の特性や最適化に関するリストラクチャリングの 指示を直接ソースコード 中に書き込んでいる.これは,他のユーザから見れば そのプログラム部分にはど ういう特性があるのかがわかったり,そのプログラ ム部分に対する最適化のための方法を知ることができる.特にプログラム並 列化初心者にとってこのようなディレクティブは教育的価値があると考えられ る.したがって,プログラム中にディレクティブでプログラムの特性やプログ

ラムリストラクチャリングの指示を明示することは教育的価値が高いと考えら れる.

以上の利点より今後のプログラム並列化支援システムにはデ ィレクティブによる プログラム特性の提供が必要不可欠になってくると考えられる.そこで,本研究で は<00=<01=を参考にすると次のヒントディレクティブが必要になることが考えられる

9表.5:

.5? 本方式で必要となりうるヒントデ ィレクティブの仕様

デ ィレクティブ 意味

9: 内の関数は並列化しても依存関係がない.

9: 内に記述された配列内に値の重複がないことを示す.

9: 内で定義された不等式により内の変数のとりう る値を指定する.

9: スレッド 毎に内の変数の価はユニークである.

9: 内の変数は並列化したときに強制的にプライベート 化される.

強制的に並列化する.

並列化しないことを強制する.

ドキュメント内 電気通信大学 (ページ 90-171)

関連したドキュメント