next up previous contents
Next: 1.6.2 ゴール分散プラグマ Up: 1.6.1 並列実行指定の方針 Previous: 負荷分散はプログラムで指定する

ふたつの並列性を分離する

KL1 では二種類の並列性を別々に指定するものとしている. 二種類の並列性 とは, 以下のようなものである.

論理的並列性
プログラムのどの部分が並列に動作しても良いかを指定するもの. 次に述べ る物理的な並列性と区別して, 並行性と呼んだりもする. これはプログラム の正しさに関わるもので, 指定が誤っていればプログラムは正しく動作しない かも知れない. KL1 ではガードで節の選択条件を指定すると, 選択条件が判 定できるデータがそろうまで自動的に実行を遅らせるので, 並列に動作して良 いかどうかは暗黙に指定することになる.
物理的並列性
論理的には並列に動作して良い部分の内, どれを実際に並列に動かすかを指定 するもの. この指定による並列動作は, もともと並列動作して良いものの内 から指定するのだから, プログラムの正しさには影響しないが, プログラムの 実行効率は大きく左右する. KL1 ではこれは プラグマ (pragma) と呼 ばれる機能を用いて指定する.

論理的並列性と物理的並列性の指定を分離すれば, プログラムの正しさに影響 を与えることなく負荷分散の仕方だけを変えることができる. 分散方式の研 究を行なうためにはさまざまな分散方式を実験する必要が生じるが, その際に ただでさえ困難な並列プログラムのデバッグを, 毎回改めてやり直す必要がな ければ, 実験の効率を著しく高めるだろう.

なお, プラグマはプログラムの正しさとは分離された効率のためだけの指定な ので, 言語処理系はこれに従わない方が効率が良いと判断できれば, 必ずしも 従わない場合もあってよい.

以下, このプラグマの指定方法について概説する.



next up previous contents
Next: 1.6.2 ゴール分散プラグマ Up: 1.6.1 並列実行指定の方針 Previous: 負荷分散はプログラムで指定する



KLIC