next up previous
Next: Native Goalの実行方式 Up: 実行系の改良 Previous: 実行系の改良

Reduction First Thread Scheduling

標準KLICのゴール・スケジューリング戦略はResumption Firstと呼ばれるものであり, 中断状態のゴールがbody unificationによって実行可能になると,unify goalの sibling goalに優先してスケジューリングされる。この方法では,並行プロセスの間 で構造体を介した通信が行なわれる場合,構造体の部分的な生成のたびにゴールの中 断/再開が生じるという欠点がある[2]。我々のKLIC/THはこのような 問題点を解消することを目的の一つとしているが,スレッドのスケジューリングを標 準KLICに委ねていたため,同様の問題点が生じていた。

そこでスレッド・スケジューリングをReduction First, すなわちスレッド内のゴー ル実行を再優先とする方式に変更した。なおこの方法はMulti-PSIやPIMにおける Reduction Firstとはことなり,あるゴールのreductionが完了しても,そのゴールが 属するスレッドに実行可能ゴールが存在する限り,resumeされたゴール(スレッド) の実行は行なわれない。したがって前述の構造体を介した通信の際も,部分的な生成 によるスレッド切替を大幅に削減することができる。

このスケジューリング方式を簡単なサーバ/クライアント型プログラムを用いて評価 した結果,表gifに示すように標準KLICや従来のKLIC/THに対して約 5倍の速度向上が得られることが明らかになった。

  

?実行時間[sec]実行時間比
オリジナルKLIC4.655.54
従来版KLIC/TH3.464.12
改良版KLIC/TH0.841

表: Reduction Firstの効果



next up previous
Next: Native Goalの実行方式 Up: 実行系の改良 Previous: 実行系の改良



www-admin@icot.or.jp