(57)【要約】【課題】グラフ構造のプログラムにおいて、実行時の条件に依存する実行時間の揺れを吸収し、最悪実行時間を短縮する。【解決手段】予め定められている推定実行時間に基づいて個々の処理ノード中の実行済割合を、相対的な位置情報として算出する相対位置情報算出部（１４１）と、位置情報に基づいて個々の処理ノードの実行優先順位を変更する優先順位変更部（１４２）と、を設ける。【選択図】図５
2019179418.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理ノードで構成されるグラフ構造のプログラムを実行する際のスケジューリング方法であって、
予め定められている推定実行時間に対する個々の処理ノード中の実行済割合を、相対的な位置情報として算出する相対位置情報算出ステップと、
前記位置情報に基づいて個々の処理ノードの実行優先順位を変更する優先順位変更ステップと、を備えるスケジューリング方法。
【請求項２】
請求項１に記載のスケジューリング方法であって、
前記優先順位変更ステップにおいて、実行済割合の少ない処理ノードの実行優先順位を高くする、スケジューリング方法。
【請求項３】
請求項１に記載のスケジューリング方法であって、
前記優先順位変更ステップにおいて、処理ノード相互の依存関係を考慮して処理ノードの実行優先順位を変更する、スケジューリング方法。
【請求項４】
複数の処理ノードで構成されるグラフ構造のプログラムを実行する際のスケジューリング装置であって、
予め定められている推定実行時間に対する個々の処理ノード中の実行済割合を、相対的な位置情報として算出する相対位置情報算出部（１４１）と、
前記位置情報に基づいて個々の処理ノードの実行優先順位を変更する優先順位変更部（１４２）と、を備えるスケジューリング装置。
【請求項５】
請求項４に記載のスケジューリング装置であって、
前記優先順位変更部は、実行済割合の少ない処理ノードの実行優先順位を高くする、スケジューリング装置。
【請求項６】
請求項４に記載のスケジューリング装置であって、
前記優先順位変更部は、処理ノード相互の依存関係を考慮して処理ノードの実行優先順位を変更する、スケジューリング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、複数の処理ノードで構成されるグラフ構造のプログラムを実行する際のスケジューリング方法及びスケジューリング装置に関する。
【背景技術】
【０００２】
マルチコアプロセッサにおいて、スレッドの実行順序を変更するスケジューリング方法が提案されている。下記特許文献１には、マルチコアプロセッサ内の少なくとも１つのプロセッサ要素が、実行時に再構成可能である再構成可能論理を含み、再構成可能論理の構成ごとに、実行可能な状態の実行可能トランザクションをリストし、再構成可能なプロセッサ要素の個々の構成に割り振られる実行可能トランザクションの構成待ち行列を設けるステップと、現在選択されている構成インスタンスと関連付けられた構成待ち行列の内容を、実行のために再構成可能なプロセッサ要素に出力するステップと、事前定義された閾値に達したときに、現在選択されている構成インスタンスを切り換えるステップと、を備えるものが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−２３９１９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１では、グラフ構造のプログラムにおいて、実行時の条件に依存する実行時間の揺れにより、グラフ全体の最悪実行時間が長くなるという事象に対して有効な解決手段とはならない。
【０００５】
本開示は、グラフ構造のプログラムにおいて、実行時の条件に依存する実行時間の揺れを吸収し、最悪実行時間を短縮することを目的とする。
【課題を解決するための手段】
【０００６】
本開示は、複数の処理ノードで構成されるグラフ構造のプログラムを実行する際のスケジューリング方法であって、予め定められている推定実行時間に対する個々の処理ノード中の実行済割合を、相対的な位置情報として算出する相対位置情報算出ステップと、位置情報に基づいて個々の処理ノードの実行優先順位を変更する優先順位変更ステップと、を備える。
【０００７】
本開示は、複数の処理ノードで構成されるグラフ構造のプログラムを実行する際のスケジューリング装置であって、予め定められている推定実行時間に対する個々の処理ノード中の実行済割合を、相対的な位置情報として算出する相対位置情報算出部（１４１）と、位置情報に基づいて個々の処理ノードの実行優先順位を変更する優先順位変更部（１４２）と、を備える。
【０００８】
推定実行時間に対する個々の処理ノード中の実行済割合を相対的な位置情報として算出し、その位置情報に基づいて個々の処理ノードの実行優先順位を変更するので、推定実行時間に対して処理の進みが遅くなったり早くなったりといった実行時間の揺れを吸収することができる。
【０００９】
尚、「課題を解決するための手段」及び「特許請求の範囲」に記載した括弧内の符号は、後述する「発明を実施するための形態」との対応関係を示すものであって、「課題を解決するための手段」及び「特許請求の範囲」が、後述する「発明を実施するための形態」に限定されることを示すものではない。
【発明の効果】
【００１０】
本開示によれば、グラフ構造のプログラムにおいて、実行時の条件に依存する実行時間の揺れを吸収し、最悪実行時間を短縮することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、本実施形態の前提となる並列処理について説明するための図である。
【図２】図２は、図１に示される並列処理を実行するためのシステム構成例を示す図である。
【図３】図３は、図２に用いられるＤＦＰの構成例を示す図である。
【図４】図４は、コンパイラの機能的な構成例を説明するための図である。
【図５】図５は、スレッドスケジューラの機能的な構成例を説明するための図である。
【図６】図６は、位置情報算出の一例を説明するための図である。
【図７】図７は、優先順位付けの一例を説明するための図である。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照しながら本実施形態について説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の符号を付して、重複する説明は省略する。
【００１３】
図１（Ａ）は、グラフ構造のプログラムコードを示しており、図１（Ｂ）は、スレッドの状態を示しており、図１（Ｃ）は、並列処理の状況を示している。
【００１４】
図１（Ａ）に示されるように、本実施形態が処理対象とするプログラムは、データと処理とが分割されているグラフ構造を有している。このグラフ構造は、プログラムのタスク並列性、グラフ並列性を保持している。
【００１５】
図１（Ａ）に示されるプログラムコードに対して、コンパイラによる自動ベクトル化とグラフ構造の抽出を行うと、図１（Ｂ）に示されるような大量のスレッドを生成することができる。
【００１６】
図１（Ｂ）に示される多量のスレッドに対して、ハードウェアによる動的レジスタ配置とスレッド・スケジューリングにより、図１（Ｃ）に示されるような並列実行を行うことができる。実行中にレジスタ資源を動的配置することで、異なる命令ストリームに対しても複数のスレッドを並列実行することができる。
【００１７】
続いて図２を参照しながら、動的レジスタ配置及びスレッド・スケジューリングを行うアクセラレータとしてのＤＦＰ（Ｄａｔａ  Ｆｌｏｗ  Ｐｒｏｃｅｓｓｏｒ）１０を含むシステム構成例である、データ処理システム２を説明する。
【００１８】
データ処理システム２は、ＤＦＰ１０と、イベントハンドラ２０と、ホストＣＰＵ２１と、ＲＯＭ２２と、ＲＡＭ２３と、外部インターフェイス２４と、システムバス２５と、を備えている。ホストＣＰＵ２１は、データ処理を主として行う演算装置である。ホストＣＰＵ２１は、ＯＳをサポートしている。イベントハンドラ２０は、割り込み処理を生成する部分である。
【００１９】
ＲＯＭ２２は、読込専用のメモリである。ＲＡＭ２３は、読み書き用のメモリである。外部インターフェイス２４は、データ処理システム２外と情報授受を行うためのインターフェイスである。システムバス２５は、ＤＦＰ１０と、ホストＣＰＵ２１と、ＲＯＭ２２と、ＲＡＭ２３と、外部インターフェイス２４との間で情報の送受信を行うためのものである。
【００２０】
ＤＦＰ１０は、ホストＣＰＵ２１の重い演算負荷に対処するために設けられている個別のマスタとして位置づけられている。ＤＦＰ１０は、イベントハンドラ２０が生成した割り込みをサポートするように構成されている。
【００２１】
続いて図３を参照しながら、ＤＦＰ１０について説明する。図３に示されるように、ＤＦＰ１０は、コマンドユニット１２と、スレッドスケジューラ１４と、実行コア１６と、メモリサブシステム１８と、を備えている。
【００２２】
コマンドユニット１２は、コンフィグ・インターフェイスとの間で情報通信可能なように構成されている。コマンドユニット１２は、コマンドバッファとしても機能している。
【００２３】
スレッドスケジューラ１４は、図１（Ｂ）に例示されるような多量のスレッドの処理をスケジューリングする部分である。スレッドスケジューラ１４は、スレッドを跨いだスケジューリングを行うことが可能である。
【００２４】
実行コア１６は、４つのプロセッシングエレメントである、ＰＥ＃０と、ＰＥ＃１と、ＰＥ＃２と、ＰＥ＃３と、を有している。実行コア１６は、独立してスケジューリング可能な多数のパイプラインを有している。
【００２５】
メモリサブシステム１８は、アービタ１８１と、Ｌ１キャッシュ１８ａと、Ｌ２キャッシュ１８ｂと、を有している。メモリサブシステム１８は、システム・バス・インターフェイス及びＲＯＭインターフェイスとの間で情報通信可能なように構成されている。
【００２６】
続いて、図４を参照しながら、コンパイラ５０について説明する。コンパイラ５０は、機能的な構成要素として、実行時間推定部５０１と、優先順位付与部５０２と、を備える。
【００２７】
実行時間推定部５０１は、グラフ構造を構成する個々の処理ノードの実行時間を推定する部分である。優先順位付与部５０２は、実行時間推定部５０１が推定した実行時間に基づいて、個々の処理ノードに対する初期の優先順位を付与する部分である。
【００２８】
続いて、図５を参照しながら、スレッドスケジューラ１４の機能的な構成要素について説明する。スレッドスケジューラ１４は、機能的な構成要素として、相対位置情報算出部１４１と、優先順位変更部１４２と、を備える。
【００２９】
相対位置情報算出部１４１は、予め定められている推定実行時間に対する個々の処理ノード中の実行済割合を、相対的な位置情報として算出する相対位置情報算出ステップを実行する部分である。図６に示されるように、相対的な位置情報は各ノードに対して算出される。図６に示される例の場合、Ｎｏｄｅ０は、位置情報が２であるので、実行済割合は２０％である。Ｎｏｄｅ１は、位置情報が９であるので、実行済割合は９０％である。Ｎｏｄｅ２は、位置情報が５であるので、実行済割合は５０％である。Ｎｏｄｅ３は、位置情報が４であるので、実行済割合は４０％である。
【００３０】
優先順位変更部１４２は、位置情報に基づいて個々の処理ノードの実行優先順位を変更する優先順位変更ステップを実行する部分である。より具体的には、実行済割合の少ない処理ノードの実行優先順位を高くする。
【００３１】
図６の例示では、実行済割合の少ない順に処理ノードを並べると、Ｎｏｄｅ０（位置情報：２、実行済割合：２０％）、Ｎｏｄｅ３（位置情報：５、実行済割合：５０％）、Ｎｏｄｅ２（位置情報：５、実行済割合：５０％）、Ｎｏｄｅ１（位置情報：９、実行済割合：９０％）となる。
【００３２】
ここで、Ｎｏｄｅ３は、Ｎｏｄｅ１の実行結果及びＮｏｄｅ２の実行結果を用いて実行される処理ノードである。従って、Ｎｏｄｅ３の実行優先順位よりも、Ｎｏｄｅ１及びＮｏｄｅ２の実行優先順位を高める必要がある。これらを考慮し、優先順位変更部１４２は、優先順位の高い方から、Ｎｏｄｅ０、Ｎｏｄｅ２、Ｎｏｄｅ１、Ｎｏｄｅ３となるように実行優先順位を変更する（図７参照）。
【００３３】
上記したように本実施形態は、複数の処理ノードで構成されるグラフ構造のプログラムを実行する際のスケジューリング方法であって、予め定められている推定実行時間に対する個々の処理ノード中の実行済割合を、相対的な位置情報として算出する相対位置情報算出ステップと、位置情報に基づいて個々の処理ノードの実行優先順位を変更する優先順位変更ステップと、を備える。
【００３４】
装置として捉えれば、複数の処理ノードで構成されるグラフ構造のプログラムを実行する際のスケジューリング装置としてのスレッドスケジューラ１４であって、予め定められている推定実行時間に対する個々の処理ノード中の実行済割合を、相対的な位置情報として算出する相対位置情報算出部１４１と、位置情報に基づいて個々の処理ノードの実行優先順位を変更する優先順位変更部１４２と、を備える。
【００３５】
推定実行時間に対する個々の処理ノード中の実行済割合を相対的な位置情報として算出し、その位置情報に基づいて個々の処理ノードの実行優先順位を変更するので、推定実行時間に対して処理の進みが遅くなったり早くなったりといった実行時間の揺れを吸収することができる。
【００３６】
スケジューリング方法では、優先順位変更ステップにおいて、実行済割合の少ない処理ノードの実行優先順位を高くすることができる。同様に、スケジューリング装置としてのスレッドスケジューラ１４において、優先順位変更部１４２は、実行済割合の少ない処理ノードの実行優先順位を高くする。実行済割合の少ない処理ノードの実行優先順位を高めることで、最悪実行時間をより短縮することができる。
【００３７】
スケジューリング方法では、優先順位変更ステップにおいて、処理ノード相互の依存関係を考慮して処理ノードの実行優先順位を変更する。同様に、スケジューリング装置としてのスレッドスケジューラ１４において、優先順位変更部１４２は、処理ノード相互の依存関係を考慮して処理ノードの実行優先順位を変更する。依存関係を考慮することで、他の処理ノードの出力待ちを低減することができ、最悪実行時間をより短縮することができる。
【００３８】
以上、具体例を参照しつつ本実施形態について説明した。しかし、本開示はこれらの具体例に限定されるものではない。これら具体例に、当業者が適宜設計変更を加えたものも、本開示の特徴を備えている限り、本開示の範囲に包含される。前述した各具体例が備える各要素およびその配置、条件、形状などは、例示したものに限定されるわけではなく適宜変更することができる。前述した各具体例が備える各要素は、技術的な矛盾が生じない限り、適宜組み合わせを変えることができる。
【符号の説明】
【００３９】
１４１：相対位置情報算出部
１４２：優先順位変更部
【図１】
2019179418.tif 000003
【図２】
2019179418.tif 000004
【図３】
2019179418.tif 000005
【図４】
2019179418.tif 000006
【図５】
2019179418.tif 000007
【図６】
2019179418.tif 000008
【図７】
2019179418.tif 000009