(57)【特許請求の範囲】
【請求項１】
シングルコアマイコン用に記述されたシングルプログラムを解析して、前記シングルプログラムの各処理単位間における同じデータへのアクセスを示している各データ依存関係を基に、マルチコアマイコン用に並列化可能な前記処理単位を並列化した並列プログラム（２１ａ１）を生成するコンピュータが実行する並列化方法であって、
複数の前記データ依存関係における無視可能な前記データ依存関係を示す無視情報（３０）を取得して、前記無視情報で示された前記データ依存関係のうち、同じ前記データへの書込みと書込みとを示す前記データ依存関係を同期必須依存関係として抽出する抽出手順（１０ｃ）と、
前記無視情報で示された前記データ依存関係のうち、前記同期必須依存関係で抽出されていない前記データ依存関係を無視し、前記同期必須依存関係となる二つの前記処理単位の同時実行を回避することで前記データの異常が発生しないようにしつつ、前記処理単位が最も多く並列化されるように前記並列プログラムを生成する生成手順（１０ｄ、１０ｅ、１０ｆ）と、を備えている並列化方法。
【請求項２】
前記抽出手順は、複数の前記データのうち、書込みと参照のタイミング規定が制御制約として必要な前記データを示す同時性必要情報（４０）を取得するとともに、前記無視情報で示された前記データ依存関係のうち、前記同時性必要情報で示された前記データに対する書込みと参照とを含む前記データ依存関係をさらに前記同期必須依存関係として抽出し、
前記生成手順は、前記無視情報で示された前記データ依存関係のうち、前記同期必須依存関係で抽出されていない前記データ依存関係を無視し、前記同期必須依存関係となる二つの前記処理単位による同じ前記データへの書込みが同時に発生せず、且つ、前記タイミング規定が維持されるようにしつつ、前記処理単位が最も多く並列化されるように前記並列プログラムを生成する請求項１に記載の並列化方法。
【請求項３】
前記生成手順は、二つの前記処理単位の処理順序を前記シングルプログラムでの順番を維持もしくは逆転させて並べて、前記並列プログラムを生成する請求項１又は２に記載の並列化方法。
【請求項４】
前記抽出手順は、抽出した前記同期必須依存関係の全てについて、二つの前記処理単位の処理順序を前記シングルプログラムでの順番を維持もしくは逆転させた全組合せについてのデータ依存パターンを生成する請求項１又は２に記載の並列化方法。
【請求項５】
前記生成手順は、
生成された前記データ依存パターン毎に、スケジューリングするとともに、複数のスケジューリング結果の夫々における並列度を算出する算出手順（１０ｄ、１０ｅ）と、
前記算出手順での複数の前記スケジューリング結果から前記並列度が最大となる前記スケジューリング結果の採用を決定することで、前記処理単位が最も多く並列化された前記並列プログラムを生成する決定手順（１０ｆ）とを含んでいる請求項４に記載の並列化方法。
【請求項６】
前記シングルプログラムは、複数の前記処理単位を複数の機能群に区分可能に構成されており、
前記無視情報は、異なる前記機能群に区分される前記処理単位間の前記データ依存関係を、無視可能な前記データ依存関係として示す請求項１乃至５のいずれか一項に記載の並列化方法。
【請求項７】
シングルコアマイコン用に記述されたシングルプログラムを解析して、前記シングルプログラムの各処理単位間における同じデータへのアクセスを示している各データ依存関係を基に、マルチコアマイコン用に並列化可能な前記処理単位を並列化した並列プログラム（２１ａ１）を生成する並列化ツールであって、
複数の前記データ依存関係における無視可能な前記データ依存関係を示す無視情報（３０）を取得して、前記無視情報で示された前記データ依存関係のうち、同じ前記データへの書込みと書込みとを示す前記データ依存関係を同期必須依存関係として抽出する抽出部（１０ｃ）と、
前記無視情報で示された前記データ依存関係のうち前記同期必須依存関係で抽出されていない前記データ依存関係を無視し、前記同期必須依存関係となる二つの前記処理単位の同時実行を回避することで前記データの異常が発生しないようにしつつ、前記処理単位が最も多く並列化されるように前記並列プログラムを生成する生成部（１０ｄ、１０ｅ、１０ｆ）と、を備えている並列化ツール。
【請求項８】
前記抽出部は、複数の前記データのうち、書込みと参照のタイミング規定が制御制約として必要な前記データを示す同時性必要情報（４０）をさらに取得するとともに、前記無視情報で示された前記データ依存関係のうち、前記同時性必要情報で示された前記データに対する書込みと参照とを含む前記データ依存関係をさらに前記同期必須依存関係として抽出し、
前記生成部は、前記無視情報で示された前記データ依存関係のうち前記同期必須依存関係で抽出されていない前記データ依存関係を無視し、前記同期必須依存関係となる二つの前記処理単位による同じ前記データへの書込みが同時に発生せず、且つ、前記タイミング規定が維持されるようにしつつ、前記処理単位が最も多く並列化されるように前記並列プログラムを生成する請求項７に記載の並列化ツール。
【請求項９】
前記生成部は、二つの前記処理単位の処理順序を前記シングルプログラムでの順番を維持もしくは逆転させて並べて、前記並列プログラムを生成する請求項７又は８に記載の並列化ツール。
【請求項１０】
前記抽出部は、抽出した前記同期必須依存関係の全てについて、二つの前記処理単位の処理順序を前記シングルプログラムでの順番を維持もしくは逆転させた全組合せについてのデータ依存パターンを生成する請求項７又は８に記載の並列化ツール。
【請求項１１】
前記生成部は、
生成された前記データ依存パターン毎に、スケジューリングするとともに、複数のスケジューリング結果の夫々における並列度を算出する算出部（１０ｄ、１０ｅ）と、
前記算出部での複数の前記スケジューリング結果から前記並列度が最大となる前記スケジューリング結果の採用を決定することで、前記処理単位が最も多く並列化された前記並列プログラムを生成する決定部（１０ｆ）とを含んでいる請求項１０に記載の並列化ツール。
【請求項１２】
前記シングルプログラムは、複数の前記処理単位を複数の機能群に区分可能に構成されており、
前記無視情報は、異なる前記機能群に区分される前記処理単位間の前記データ依存関係を、無視可能な前記データ依存関係として示す請求項７乃至１１のいずれか一項に記載の並列化ツール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シングルコアマイコン用のシングルプログラムから、マルチコアマイコン用の並列プログラムを生成する並列化方法、並列化ツール、及び生成された並列プログラムを実装した車載装置に関する。
【背景技術】
【０００２】
従来、シングルコアマイコン用のシングルプログラムから、マルチコアマイコン用の並列プログラムを生成する並列化方法の一例として特許文献１に開示された並列化コンパイル方法がある。
【０００３】
この並列化コンパイル方法では、シングルプログラムのソースコードを字句解析や構文解析を行って中間言語を生成し、この中間言語を用いて、複数のマクロタスク（以下、処理単位）のデータ依存関係の解析や最適化等を行う。また、並列化コンパイル方法では、各処理単位のデータ依存関係や処理単位毎の実行時間を基にスケジューリングを行って並列プログラムを生成する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−１８０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、並列プログラムを生成する際には、ソフトウェア上の各処理単位のデータ依存関係を解析して、このデータ依存関係を維持しながら並列化する。これにより、並列プログラムでは、ソフトウェア上、シングルコアマイコン時の動作を維持可能となるが、実際の制御を考えると厳密にデータ依存関係を維持しなくても応答性を維持可能な場合がある。このような場合は、データ依存関係がある二つの処理単位間のデータ依存関係をあえて無視してスケジューリングすることで、ソフトウェア上の並列性に加え、制御上の並列性を併せた大きな並列性能を引き出すことが可能となると考えられる。
【０００６】
しかしながら、データ依存関係を無視してスケジューリングしたとしても、二つの処理単位間にデータ依存関係があったということは、共通のデータにアクセスしているということである。よって、これらの処理単位が割り当てられた異なるコアは、共通のデータに同時にアクセスすることがありうる。また、このデータは、異なるコアに同時にアクセスされた場合、データに異常が生じる可能性がある。このような場合は、並列プログラムにコア間排他処理を追加して、データに異常が生じることを回避することが考えられる。ところが、コア間排他処理は、オーバーヘッドによる性能低下が少なくない。
【０００７】
また、上記のようなデータに異常が生じることを回避する方法としては、データ依存関係がある処理単位どうしの同時実行を回避する同期処理が考えられる。しかしながら、この方法では、データ依存関係があると一律同期してしまうため、スケジューリング時の制約となり、並列実行時の性能が低下してしまうことが考えられる。
【０００８】
本開示は、上記問題点に鑑みなされたものであり、並列プログラムを生成する際の制約を低減しつつ、並列実行時の性能を向上できる並列プログラムを作成できる並列化方法、並列化ツールを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために本開示の一つは、
シングルコアマイコン用に記述されたシングルプログラムを解析して、シングルプログラムの各処理単位間における同じデータへのアクセスを示している各データ依存関係を基に、マルチコアマイコン用に並列化可能な処理単位を並列化した並列プログラム（２１ａ１）を生成するコンピュータが実行する並列化方法であって、
複数のデータ依存関係における無視可能なデータ依存関係を示す無視情報（３０）を取得して、無視情報で示されたデータ依存関係のうち、同じデータへの書込みと書込みとを示すデータ依存関係を同期必須依存関係として抽出する抽出手順（１０ｃ）と、
無視情報で示されたデータ依存関係のうち同期必須依存関係で抽出されていないデータ依存関係を無視し、同期必須依存関係となる二つの処理単位の同時実行を回避することでデータの異常が発生しないようにしつつ、処理単位が最も多く並列化されるように並列プログラムを生成する生成手順（１０ｄ、１０ｅ、１０ｆ）と、を備えていることを特徴とする。
【００１０】
このように、本開示では、無視情報で示されたデータ依存関係のうち同期必須依存関係で抽出されていないデータ依存関係を無視して、処理単位が最も多く並列化されるように並列プログラムを生成する。このため、本開示は、データ依存関係を無視しない場合よりも、並列実行時の性能を向上できる並列プログラムを生成できる。
【００１１】
また、データは、異なるコアに同時にアクセスされた場合、特に、異なるコアからのデータの書込みが同時に発生した場合に異常が生じる可能性がある。そこで、本開示は、無視情報で示されたデータ依存関係のうち、同じデータへの書込みと書込みとを示すデータ依存関係を同期必須依存関係として抽出する。そして、本開示は、同期必須依存関係となる二つの処理単位による同じデータへの書込みが同時に発生しないようにしつつ、処理単位が最も多く並列化されるように並列プログラムを生成する。このため、本開示は、二つの処理単位による同じデータへの書込みが同時に発生しないようにし、且つ、二つの処理単位による書込みと参照が同時に発生しないようにする場合よりも、並列プログラムを生成する際の制約を低減ができる。
【００１２】
本開示の他の一つは、
シングルコアマイコン用に記述されたシングルプログラムを解析して、シングルプログラムの各処理単位間における同じデータへのアクセスを示している各データ依存関係を基に、マルチコアマイコン用に並列化可能な処理単位を並列化した並列プログラム（２１ａ１）を生成する並列化ツールであって、
複数のデータ依存関係における無視可能なデータ依存関係を示す無視情報（３０）を取得して、無視情報で示されたデータ依存関係のうち、同じデータへの書込みと書込みとを示すデータ依存関係を同期必須依存関係として抽出する抽出部（１０ｃ）と、
無視情報で示されたデータ依存関係のうち同期必須依存関係で抽出されていないデータ依存関係を無視し、同期必須依存関係となる二つの処理単位の同時実行を回避することでデータの異常が発生しないようにしつつ、処理単位が最も多く並列化されるように並列プログラムを生成する生成部（１０ｄ、１０ｅ、１０ｆ）と、を備えていることを特徴とする。
【００１３】
このように、並列化ツールでは、上記並列化方法と同様に、並列プログラムを生成する際の制約を低減しつつ、並列実行時の性能を向上できる並列プログラムを生成できる。
【００１６】
なお、特許請求の範囲、及びこの項に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１７】
【図１】実施形態におけるコンピュータの概略構成を示すブロック図である。
【図２】実施形態における車載装置の概略構成を示すブロック図である。
【図３】実施形態におけるコンピュータの機能を示すブロック図である。
【図４】実施形態におけるコンピュータの処理を示すフローチャートである。
【図５】実施形態におけるコンピュータの処理を示すフローチャートである。
【図６】処理単位のデータ依存関係を示す図面である。
【図７】シングルプログラムの第１例を示す図面である。
【図８】図７のシングルプログラムに同期必須依存関係を適用した場合の図面である。
【図９】図８のシングルプログラムにおけるスケジュールパターンを示す図面である。
【図１０】シングルプログラムの第２例を示す図面である。
【図１１】図１０のシングルプログラムに同期必須依存関係を適用した場合の図面である。
【図１２】図１１のシングルプログラムにおけるデータ依存パターンを示す図面である。
【発明を実施するための形態】
【００１８】
以下において、図面を参照しながら、発明を実施するための形態を説明する。本実施形態では、コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理単位から第１コア２１ｃと第２コア２１ｄを有するマルチコアプロセッサ２１用に並列化した並列プログラム２１ａ１を生成するコンピュータ１０を採用する。また、本実施形態は、並列プログラム２１ａ１を生成するための自動並列化コンパイラ１を採用する。さらに、本実施形態では、コンピュータ１０で生成された並列プログラム２１ａ１を備えた車載装置２０を採用する。なお、プロセッサは、マイコンと言い換えることができる。よって、マルチコアプロセッサは、マルチコアマイコンと言い換えることができる。
【００１９】
自動並列化コンパイラ１は、並列プログラム２１ａ１を生成するための手順を含んでいる。よって、自動並列化コンパイラ１は、並列化方法に相当する。自動並列化コンパイラ１は、並列化方法を含むプログラムである。また、コンピュータ１０は、自動並列化コンパイラ１を実行することで、並列プログラム２１ａ１を生成する。よって、コンピュータ１０は、並列化ツールに相当する。
【００２０】
上記処理単位は、処理ブロックやマクロタスク（ＭＴ）などと言い換えることができる。以下においては、処理単位をＭＴとも称する。本実施形態では、第１例として第１１ＭＴ〜第１３ＭＴを採用して、第２例として第２１ＭＴ〜第２３ＭＴを採用する。なお、各ＭＴは、第１コア２１ｃや第２コア２１ｄが実行可能な命令を少なくとも一つ含んでいる。
【００２１】
このように、並列プログラム２１ａ１を生成する背景としては、プロセッサの発熱量増大や消費電力増加、クロック周波数の限界問題から、マルチコアプロセッサ２１が主流になることなどがあげられる。そして、マルチコアプロセッサ２１は、車載装置の分野においても適用が必要となっている。また、並列プログラム２１ａ１としては、ソフトの開発期間や開発費を抑えつつ、信頼性が高く高速に処理の実行が可能なものが求められる。
【００２２】
なお、並列プログラム２１ａ１を生成する際には、シングルプログラムにおける複数のＭＴのデータ依存関係を解析して、複数のＭＴをマルチコアプロセッサ２１の異なるコア２１ｃ、２１ｄに割り振る（言い換えると、割り付ける）。この点に関しては、特開２０１５−１８０７号公報を参照されたい。なお、本実施形態では、一例として、Ｃ言語で記述されたシングルプログラムを採用する。しかしながら、本発明は、これに限定されない。シングルプログラムは、Ｃ言語とは異なるプログラミング言語で記述されていてもよい。
【００２３】
本実施形態では、図７に示す第１１ＭＴ〜第１３ＭＴを含むシングルプログラムや、図１０に示す第２１ＭＴ〜第２３ＭＴを含むシングルプログラムを採用する。この複数のＭＴは、お互いにデータ依存関係があるＭＴが含まれている。図７、図１０では、データ依存関係があるＭＴどうしを矢印で繋いで図示している。特に、二点鎖線の矢印は、無視情報３０に基づいて、データ依存関係を無視するデータ依存関係を示している。
【００２４】
また、シングルプログラムは、複数のＭＴを複数の機能群に区分可能に構成されている。例えば、ある複数のＭＴは、機能αを達成するためのものであり機能群αに区分される。そして、他の複数のＭＴは、機能βを達成するためのものであり、機能群βに区分される。
【００２５】
データ依存関係は、二つのＭＴが同一のデータにアクセスする際の関係である。データ依存関係は、図６に示すように、第１〜第３ケースがある。第１ケースは、第１ＭＴがデータに書込み（Ｗｒｉｔｅ）、そのデータを第２ＭＴが参照（Ｒｅａｄ）する関係である。また、第２ケースは、第１ＭＴと第２ＭＴが同一のデータに書込み（Ｗｒｉｔｅ）する関係である。そして、第３ケースは、第１ＭＴがデータを参照（Ｒｅａｄ）し、そのデータに第２ＭＴが書込み（Ｗｒｉｔｅ）する関係である。なお、第１ＭＴは、シングルプログラムにおける実行順序が第２ＭＴよりも先である。
【００２６】
上記のように、第１ケースは、Ｗｒｉｔｅ‐Ｒｅａｄを示すデータ依存関係であるためＷＲ関係とも称する。また、第２ケースは、Ｗｒｉｔｅ‐Ｗｒｉｔｅを示すデータ依存関係であるためＷＷ関係とも称する。そして、第３ケースは、Ｒｅａｄ‐Ｗｒｉｔｅを示すデータ依存関係であるためＲＷ関係とも称する。
【００２７】
なお、一般的にプログラム内の異なる機能もしくは機能群の間では、独立性をもって設計されていることが多く、機能間もしくは機能群間の実行順序（データへのアクセス順序）の車載装置２０の制御応答性への影響が十分に小さいことが多い。つまり、異なる機能群に区分されている二つのＭＴは、データ依存関係を無視してスケジューリングしてもよいことが多い。このようにして生成された並列プログラムは、車載装置２０の制御への影響が十分に小さい、すなわち応答性を維持可能と言える。
【００２８】
そして、本実施形態では、上記の通り、機能間もしくは機能群間の実行順序の車載装置２０の制御応答性への影響が十分に小さいケースを想定する。よってこの場合、異なる機能分に区分されている二つのＭＴのデータ依存関係は、無視可能なデータ依存関係であると定義できる。複数のデータ依存関係における無視可能なデータ依存関係を示す無視情報３０を用いて、並列プログラム２１ａ１を生成する。
【００２９】
なお、第１例は、第１１ＭＴと第１２ＭＴとが同じ機能群であり、第１３ＭＴが第１１ＭＴ及び第１２ＭＴと異なる機能群である。一方、第２例は、第２１ＭＴと第２２ＭＴとが同じ機能群であり、第２３ＭＴが第２１ＭＴ及び第２２ＭＴと異なる機能群である。また、第１例は、第１１ＭＴと第１２ＭＴとが同じコアに割り振られ、第１３ＭＴが第１１ＭＴ及び第１２ＭＴと異なるコアに割り振られる。一方、第２例は、第２１ＭＴと第２２ＭＴとが同じコアに割り振られ、第２３ＭＴが第２１ＭＴ及び第２２ＭＴと異なるコアに割り振られる。そして、本実施形態では、機能群間におけるデータ依存関係を無視して生成した並列プログラムは、車載装置２０の制御への影響が十分に小さいものとする。
【００３０】
ところで、並列プログラム２１ａ１は、データ依存関係がある二つのＭＴが別々のコア２１ｃ、２１ｄに配置されることもある。よって、並列プログラム２１ａ１は、データ依存関係がある二つのＭＴが別々のコア２１ｃ、２１ｄに配置される場合、他コアに割り振られた処理順序が先のＭＴの実行が完了するのを待って、処理順序が後のＭＴを実行する同期処理を含んでいる。つまり、並列プログラム２１ａ１は、自コアに割り振られたＭＴの実行が完了した場合に、他コアに割り振られたＭＴの実行が完了するのを待って、自コアに割り振られた次のＭＴを実行させる同期処理を含んでいる。
【００３１】
このため、後程説明する第１コア２１ｃと第２コア２１ｄは、同期処理を行うために、自身に割り振られたＭＴの実行が完了した場合、ＲＡＭ２１ｂにアクセスして、同期待ちであることを示す情報（以下、完了情報）をＲＡＭ２１ｂに記憶する。そして、他コアにおけるデータ依存関係があるＭＴの実行完了を待っている自コアは、ＭＴを実行することなく、定期的にＲＡＭ２１ｂにアクセスして、ＲＡＭ２１ｂに完了情報が記憶されているか否かを確認する。つまり、他コアにおけるデータ依存関係があるＭＴの実行完了を待っている自コアは、非動作中に定期的に動作して、ＲＡＭ２１ｂにアクセスし、完了情報が記憶されているか否かを確認する。このように、第１コア２１ｃと第２コア２１ｄは、お互いに待合せをしながら、言い換えると同期を取りながら、ＭＴの実行を行う。よって、同期処理は、待合わせ処理と言うこともできる。なお、並列プログラム２１ａ１は、第１コア２１ｃが実行するプログラムと、第２コア２１ｄが実行するプログラムとを含んでいる。
【００３２】
ここで、図１、図３を用いて、コンピュータ１０の構成に関して説明する。コンピュータ１０は、ディスプレイ１１、ＨＤＤ１２、ＣＰＵ１３、ＲＯＭ１４、ＲＡＭ１５、入力装置１６、読取部１７などを備えて構成されている。また、コンピュータ１０は、記憶媒体１８に記憶された記憶内容を読み取り可能に構成されている。この記憶媒体１８には、自動並列化コンパイラ１が記憶されている。よって、コンピュータ１０は、記憶媒体１８に記憶された自動並列化コンパイラ１を実行することで、並列プログラム２１ａ１を生成する。
【００３３】
コンピュータ１０及び記憶媒体１８の構成は、特開２０１５−１８０７号公報に記載されたパーソナルコンピュータ１００及び記憶媒体１８０を参照されたい。なお、自動並列化コンパイラ１は、特開２０１５−１８０７号公報に記載されたものに加えて、抽出手順、算出手順、決定手順を含んでいる。
【００３４】
また、コンピュータ１０は、図３に示すように、機能ブロックとして、アクセス情報解析部１０ａ、依存関係解析部１０ｂ、再構築部１０ｃ、スケジューリング部１０ｄ、並列度算出部１０ｅ、決定部１０ｆを備えている。
【００３５】
アクセス情報解析部１０ａは、シングルプログラムにおける各ＭＴのデータアクセス情報を解析する。つまり、アクセス情報解析部１０ａは、各ＭＴにおけるデータに対するＲｅａｄやＷｒｉｔｅを解析する。なお、図７に示すように、第１１ＭＴのデータアクセスは、データＸ及びデータＹに対するＲｅａｄである。第１２ＭＴのデータアクセスは、データＸに対するＷｒｉｔｅである。第１３ＭＴのデータアクセスは、データＸ及びデータＹに対するＷｒｉｔｅである。また、図１０に示すように、第２１ＭＴ、第２２ＭＴ、第２３ＭＴ夫々のデータアクセスは、データＸに対するＷｒｉｔｅである。
【００３６】
依存関係解析部１０ｂは、シングルプログラムのデータ依存関係を解析し、並列化可能なＭＴを抽出する。
【００３７】
再構築部１０ｃは、無視情報３０を加味したデータ依存関係を再構築する。そして、再構築部１０ｃは、再構築したデータ依存関係に基づいて、複数のデータ依存パターンを生成する。
【００３８】
ところで、無視情報３０で示されたデータ依存関係のうち、ＷＷ関係は、同時実行されることで、データで干渉が起こる可能性がある。これによって、データが破壊される可能性がある。つまり、図６に示す第１〜第３ケースのうち、第２ケースは、二つのＭＴ間のデータ依存関係が無視されることにより、二つのＭＴが同時実行されるスケジューリングとされる可能性があり、その結果、データで干渉が起こる可能性がある。よって、ＷＷ関係の二つのＭＴ間では、同期処理を追加する必要がある。つまり、データ干渉は、同じデータにＷｒｉｔｅするＭＴどうしを同期処理により同時実行できないようにすれば回避できる。
【００３９】
そこで、再構築部１０ｃは、無視情報３０で示されたデータ依存関係のうち、同じデータに対するＷＷ関係を同期必須依存関係として抽出する。なお、再構築部１０ｃは、アクセス情報解析部１０ａの解析結果などから、同期必須依存関係を抽出できる。
【００４０】
そして、再構築部１０ｃは、無視情報３０で示されたデータ依存関係のうち、ＲＷ関係とＷＲ関係に関しては無視する。一方、再構築部１０ｃは、無視情報３０で示されたデータ依存関係のうち、ＷＷ関係に関しては、ＷＷ関係となるＭＴの順番を入れ替えたデータ依存パターンを生成する。
【００４１】
さらに、無視情報３０で示されたデータ依存関係におけるＲＷ関係及びＷＲ関係の中には、制御的に同時性、すなわちデータ更新タイミングの一致が必要なものもある。このデータ依存関係は、無視することで、データ更新タイミングが一致せず不具合が生じる可能性がある。
【００４２】
そこで、再構築部１０ｃは、複数のデータのうち、ＲＷ関係やＷＲ関係のタイミング規定が制御制約として必要なデータを示す同時性必要情報４０を取得する。同時性必要情報４０は、ＲＷ関係やＷＲ関係のタイミング規定が制御制約として必要なデータが、例えばリストやプログラムコード上の指示子等の情報で与えられている。
【００４３】
そして、再構築部１０ｃは、無視情報３０で示されたデータ依存関係のうち、同時性必要情報４０で示されたデータに対するＷｒｉｔｅとＲｅａｄを含むデータ依存関係を、さらに同期必須依存関係として抽出してもよい。ＷｒｉｔｅとＲｅａｄを含むデータ依存関係は、ＲＷ関係とＷＲ関係である。
【００４４】
再構築部１０ｃは、無視情報３０で示されたデータ依存関係のＲＷ関係のうち、同時性必要情報４０で示されたデータに対するＲＷ関係に関しては、このＲＷ関係となるＭＴの順番を入れ替えたデータ依存パターンを生成する。同様に、再構築部１０ｃは、無視情報３０で示されたデータ依存関係のＷＲ関係のうち、同時性必要情報４０で示されたデータに対するＷＲ関係に関しては、このＷＲ関係となるＭＴの順番を入れ替えたデータ依存パターンを生成する。
【００４５】
なお、本発明は、同時性必要情報４０で示されたデータ依存関係を抽出しなくてもよい。本発明は、少なくともＷＷ関係を同期必須依存関係として抽出するものであればよい。
【００４６】
このように、再構築部１０ｃは、同期必須依存関係を抽出する部位であるため特許請求の範囲における抽出部に相当する。なお、コンピュータ１０は、自動並列化コンパイラ１を実行することで抽出する。このため、再構築部１０ｃは、特許請求の範囲の抽出手順にも相当するとみなせる。
【００４７】
ここで、図１０、図１１、図１２を用いて、一例として第２例の第２１ＭＴ〜第２３ＭＴにおけるデータ依存パターンの生成に関して説明する。なお、図１１における太線の両方向矢印は、同期処理を追加する箇所であることを示している。
【００４８】
図１０に示すように、第２例は、無視情報３０によれば、第２１ＭＴと第２３ＭＴのデータ依存関係、及び第２２ＭＴと第２３ＭＴのデータ依存関係を無視できる。しかしながら、第２１ＭＴと第２３ＭＴはＷＷ関係である。同様に、第２２ＭＴと第２３ＭＴはＷＷ関係である。つまり、図１１に示すように、第２１ＭＴと第２３ＭＴや、第２２ＭＴと第２３ＭＴは、コアを跨いでＷＷ関係であるので、スケジュール結果で処理順序を決め、同期処理を追加して同時にデータへの書込みが発生しないようにする必要がある。
【００４９】
よって、コンピュータ１０は、図１２に示すように、データ依存パターンを生成する。第１データ依存パターンは、第２１ＭＴと第２３ＭＴに関して、シングルプログラムでの順番を逆転させたパターンである。第２データ依存パターンは、第２２ＭＴと第２３ＭＴに関して、シングルプログラムでの順番を逆転させたパターンである。第３データ依存パターンは、第２１ＭＴ〜第２３ＭＴに関して、シングルプログラムでの順番を維持したパターンである。
【００５０】
なお、第１データ依存パターンにおいて、破線矢印で示す第２３ＭＴと第２２ＭＴのデータ依存関係は、実質効果がない。同様に、第３データ依存パターンにおいて、破線矢印で示す第２１ＭＴと第２３ＭＴのデータ依存関係は、実質効果がない。このため、並列実行時の同期処理は不要である。
【００５１】
このように、コンピュータ１０は、抽出した同期必須依存関係の全てについて、二つのＭＴの処理順序をシングルプログラムでの順番を維持もしくは逆転させた全組合せについてのデータ依存パターンを生成する。これは、コア間排他をなくす提案手法を実施した場合に、データ依存関係を無視することで得られる性能向上を最大化するためである。
【００５２】
スケジューリング部１０ｄと並列度算出部１０ｅは、再構築部１０ｃで生成した複数のデータ依存パターンの夫々に関して、個別にスケジューリングを行うとともに並列度を算出する。つまり、スケジューリング部１０ｄと並列度算出部１０ｅは、生成されたデータ依存パターン毎に、スケジューリングするとともに、複数のスケジューリング結果の夫々における並列度を算出する。
【００５３】
なお、スケジューリング部１０ｄと並列度算出部１０ｅは、特許請求の範囲の算出部に相当する。また、コンピュータ１０は、自動並列化コンパイラ１を実行することでスケジューリングと並列度の算出を行う。このため、スケジューリング部１０ｄと並列度算出部１０ｅは、特許請求の範囲の算出手順にも相当するとみなせる。
【００５４】
決定部１０ｆは、並列度最大の結果を適用する。つまり、決定部１０ｆは、複数のスケジューリング結果から並列度が最大となるスケジューリング結果の採用を決定することで、ＭＴが最も多く並列化された並列プログラムを生成する。このように、コンピュータ１０は、データ依存関係の全パターンについてスケジューリングを行うとともに、並列度を算出して比較することで、最大性能の並列プログラムを生成できる。なお、並列度とは、シングルプログラムの処理時間に対する並列化後の最悪実行時間の改善度合いを示すものである。よって、並列化された複数のＭＴが多いほど、並列度が大きくなる。
【００５５】
上記のように、コンピュータ１０は、自動並列化コンパイラ１を実行することで並列度が最大となるスケジューリング結果の採用を決定する。このため、決定部１０ｆは、特許請求の範囲の決定手順に相当するとみなせる。
【００５６】
また、コンピュータ１０は、データ依存パターンを生成することなく、並列プログラムを生成してもよい。この場合、再構築部１０ｃは、無視情報３０を加味したデータ依存関係を再構築する。再構築部１０ｃは、無視情報３０で示されたデータ依存関係のうち、同じデータに対するＷＷ関係を同期必須依存関係として抽出する。また、再構築部１０ｃは、無視情報３０で示されたデータ依存関係のうち、同時性必要情報４０で示されたデータに対するＷｒｉｔｅとＲｅａｄを含むデータ依存関係を、さらに同期必須依存関係として抽出してもよい。
【００５７】
スケジューリング部１０ｄは、再構築部１０ｃで抽出した同期必須依存関係となる二つのＭＴの処理順序をシングルプログラムでの順番を維持もしくは逆転させて並べて、複数のスケジュールパターンを生成する。並列度算出部１０ｅは、スケジューリング結果である各スケジュールパターンの並列度を算出する。そして、決定部１０ｆは、複数のスケジュールパターンから並列度が最大となるスケジュールパターンの採用を決定することで、並列化されるＭＴの合計処理時間が最も多くなる並列プログラムを生成する。このとき、決定部１０ｆは、同期必須依存関係となる二つのＭＴによる同じデータへの書込みが同時に発生しないスケジュールパターンを選択する。また、同時性必要情報４０を用いる場合、決定部１０ｆは、タイミング規定が維持されるようにスケジュールパターンを選択する。
【００５８】
ここで、図７、図８、図９を用いて、一例として第１例の第１１ＭＴ〜第１３ＭＴにおけるスケジュールパターンの生成に関して説明する。なお、図８における太線の両方向矢印は、同期処理を追加する箇所であることを示している。
【００５９】
図７に示すように、第１例は、無視情報３０によれば、第１１ＭＴと第１３ＭＴのデータ依存関係、及び第１２ＭＴと第１３ＭＴのデータ依存関係を無視できる。しかしながら、第１２ＭＴと第１３ＭＴはＷＷ関係である。つまり、第１２ＭＴと第１３ＭＴは、図８に示すように、コアを跨いでＷＷ関係であるので、スケジュール結果で処理順序を決め、同期処理を追加して同時にデータへの書込みが発生しないようにする必要がある。
【００６０】
そして、コンピュータ１０は、図９に示すように、複数のスケジュールパターンを生成する。ここでは、第１パターン、第２パターン、第３パターン、第４パターン、第５パターンのスケジュールパターンを生成している。なお、第４パターンは、第１２ＭＴと第１３ＭＴによるデータへの書込みが同時に発生する。このため、決定部１０ｆは、第４パターンは選択しない。つまり、コンピュータ１０は、第４パターンを除いてスケジューリングすることになる。
【００６１】
なお、スケジューリング部１０ｄと並列度算出部１０ｅと決定部１０ｆは、特許請求の範囲の生成部に相当する。また、コンピュータ１０は、自動並列化コンパイラ１を実行することで並列プログラムを生成する。このため、スケジューリング部１０ｄと並列度算出部１０ｅと決定部１０ｆは、特許請求の範囲の生成手順にも相当するとみなせる。
【００６２】
ここで、図４、図５に示すフローチャートを用いて、コンピュータ１０の処理動作に関して説明する。図４と図５は、コンピュータ１０の一連の処理動作を示している。コンピュータ１０は、動作を開始した場合、図４に示す処理をスタートする。また、コンピュータ１０は、図４のステップＳ１２でＹＥＳ判定すると、図５のステップＳ１９（Ａ点）へ進む。そして、コンピュータ１０は、図５のステップＳ２１でＮＯ判定した場合、及びステップＳ２４の処理が終了した場合に、図４のステップＳ１１（Ｂ点）へ進む。
【００６３】
ステップＳ１０では、全ＭＴ間のデータ依存関係を解析する。つまり、データ依存関係がＷＷ関係、ＷＲ関係、ＲＷ関係のいずれであるかを解析する。
【００６４】
ステップＳ１１、Ｓ１２では、処理対象のＭＴを順次スキャンして、無視情報３０の未判断のＭＴがあるか否かを判定する。つまり、ステップＳ１０で解析したデータ依存関係のうち、無視情報３０に該当するか否かの判断が未処理のＭＴが存在するか否かを判定する。未処理のＭＴがあると判定した場合は、ステップＳ１９へ進む。一方、未処理のＭＴがないと判定した場合は、ステップＳ１３へ進む。
【００６５】
ステップＳ１９では、無視情報３０の判断済みとする。つまり、処理対象のＭＴに関して、無視情報３０に該当するか否かの判断が済みであるとする。
【００６６】
ステップＳ２０では、データ依存関係を全てスキャンする。ここでは、処理対象のＭＴに関するデータ依存関係を全てスキャンする。
【００６７】
ステップＳ２１では、無視情報３０が存在するか否かを判定する。処理対象のＭＴに関する未処理の無視情報３０が存在するか否かを判定し、存在すると判定した場合は、ステップＳ２２へ進む。一方、存在しないと判定した場合は、ステップＳ１１へ戻る。
【００６８】
ステップＳ２２では、データ依存関係がＷＷ関係であるか否かを判定する。無視情報３０に該当するデータ依存関係がＷＷ関係であるか否か、すなわち、同期必須依存関係であるか否かを判定する。そして、ＷＷ関係であると判定した場合は、同期必須依存関係であるとみなしてステップＳ２３へ進む。一方、ＷＷ関係でないと判定した場合は、同期必須依存関係でないとみなしてステップＳ２５へ進む。
【００６９】
ステップＳ２３では、該当するデータ依存関係を逆転候補に設定する。つまり、無視情報３０に該当し、且つＷＷ関係であるデータ依存関係を逆転候補に設定する。一方、ステップＳ２５では、該当するデータ依存関係を削除する。つまり、無視情報３０に該当するデータ依存関係を削除する。
【００７０】
ステップＳ２４では、該当する無視情報３０を処理済みとする。そして、ステップＳ２４での処理が終了すると、ステップＳ１１へ戻る。
【００７１】
ステップＳ１３では、データ依存関係の組合せの全パターンを作成する。つまり、上記のように、全ての組合せのデータ依存パターンを作成する。よって、以下においては、データ依存パターンを組合せとも称する。コンピュータ１０は、このようにして作成した複数のデータ依存パターンを用いて、以下のステップＳ１４〜Ｓ１８に示す処理を実行して並列プログラム２１ａ１を生成する。
【００７２】
ステップＳ１４では、全て組合せを一度ずつ処理（Ｓ１６〜Ｓ１８の実行を）したか否かを判定する。つまり、全ての組合せの夫々に対して、スケジューリングと並列度の算出の処理を行ったか否かを判定する。処理したと判定した場合は、ステップＳ１５へ進む。一方、処理していないと判定した場合は、ステップＳ１６へ進む。
【００７３】
ステップＳ１５では、算出した並列度が最大のスケジューリングで並列化コードを生成する。つまり、並列度が最大のスケジューリングで並列プログラム２１ａ１を生成する。
【００７４】
ステップＳ１６、Ｓ１７では、未処理のデータ依存関係の組合せをスキャンして、処理対象のデータ依存関係の組合せ中にデータ依存関係の循環があるか否かを判定する。つまり、データ依存関係を逆転させることにより矛盾が生じるケースがあるか否かを判定する。循環がないと判定した場合は、矛盾が生じないとみなしてステップＳ１８へ進む。一方、循環があると判定した場合は、矛盾が生じるとみなしてステップＳ１４へ進む。
【００７５】
ステップＳ１８では、対象の組合せについて、スケジューリングするとともに並列度を算出する。
【００７６】
このように、コンピュータ１０は、無視情報３０で示されたデータ依存関係のうち同期必須依存関係で抽出されていないデータ依存関係を無視する。そして、コンピュータ１０は、無視情報３０で示されたデータ依存関係のうち同期必須依存関係となる二つのＭＴによる同じデータへの書込みが同時に発生しないようにしつつ、ＭＴが最も多く並列化されるように並列プログラムを生成する。
【００７７】
また、コンピュータ１０は、同時性必要情報４０を取得する場合、無視情報で示されたデータ依存関係のうち同期必須依存関係で抽出されていないデータ依存関係を無視する。そして、コンピュータ１０は、無視情報で示されたデータ依存関係のうち同期必須依存関係となる二つのＭＴによる同じデータへの書込みが同時に発生せず、且つ、タイミング規定が維持されるようにしつつ、ＭＴが最も多く並列化されるように並列プログラムを生成する。
【００７８】
このように、コンピュータ１０は、無視情報３０で示されたデータ依存関係のうち同期必須依存関係で抽出されていないデータ依存関係を無視して、処理単位が最も多く並列化されるように並列プログラムを生成する。このため、コンピュータ１０は、データ依存関係を無視しない場合よりも、並列実行時の性能を向上できる並列プログラム２１ａ１を生成できる。
【００７９】
また、データは、異なるコア２１ｃ、２１ｄに同時にアクセスされた場合、特に、異なるコア２１ｃ、２１ｄからのデータの書込みが同時に発生した場合に異常が生じる可能性がある。そこで、コンピュータ１０は、無視情報３０で示されたデータ依存関係のうち、同じデータへのＷＷ関係を同期必須依存関係として抽出する。そして、コンピュータ１０は、同期必須依存関係となる二つのＭＴによる同じデータへの書込みが同時に発生しないようにしつつ、ＭＴが最も多く並列化されるように並列プログラム２１ａ１を生成する。
【００８０】
このため、コンピュータ１０は、二つのＭＴによる同じデータへの書込みが同時に発生しないようにし、且つ、二つのＭＴによる書込みと参照が同時に発生しないようにする場合よりも、並列プログラム２１ａ１を生成する際の制約を低減ができる。つまり、コンピュータ１０は、無視情報３０で示されたデータ依存関係のうち、同じデータへのＷＲ関係やＲＷ関係は無視できるため、並列プログラム２１ａ１を生成する際の制約を低減ができる。
【００８１】
さらに、コンピュータ１０は、データ依存関係を無視した複数のＭＴをマルチコア上で並行実行する際に、データ干渉の可能性があるＭＴどうしを抽出することができる。このため、コンピュータ１０は、並列化コードの自動生成過程として限定せず、別途干渉対策が可能となる嬉しさがある。
【００８２】
また、コンピュータ１０は、同時性必要情報４０を用いることで、ＷＷ関係以外に、制御制約を考慮して同期必須依存関係を抽出することができる。この制御制約は、ソフト上解析不能なコア間排他処理を行う要因となる。しかしながら、コンピュータ１０は、同時性必要情報４０を用いることで、コア間排他処理を行うことなく、対策することが可能となる。
【００８３】
なお、コンピュータ１０は、自動並列化コンパイラ１を実行することで並列プログラムを生成する。このため、自動並列化コンパイラ１は、コンピュータ１０と同様の効果を奏することができる。
【００８４】
次に、車載装置２０の構成に関して説明する。車載装置２０は、図２に示すように、マルチコアプロセッサ２１、通信部２２、センサ部２３、入出力ポート２４を備えて構成されている。また、マルチコアプロセッサ２１は、ＲＯＭ２１ａ、ＲＡＭ２１ｂ、第１コア２１ｃ、第２コア２１ｄを備えて構成されている。車載装置２０は、例えば、自動車に搭載されたエンジン制御装置やハイブリッド制御装置などに適用できる。しかしながら、並列プログラム２１ａ１は、これに限定されない。なお、コアは、プロセッサエレメントとも称することができる。
【００８５】
第１コア２１ｃと第２コア２１ｄは、並列プログラム２１ａ１を実行することで、エンジン制御やハイブリッド制御などを行う。つまり、車載装置２０は、第１コア２１ｃと第２コア２１ｄの夫々に割り当てられたＭＴを、第１コア２１ｃと第２コア２１ｄが実行することで、エンジン制御やハイブリッド制御などを行う。
【００８６】
よって、車載装置２０は、より多くのＭＴが並列化された並列プログラム２１ａ１を含んでいる。これによって、車載装置２０は、各ＭＴを最適に実行できる。
【００８７】
なお、ＲＡＭ２１ｂ、通信部２２、センサ部２３、入出力ポート２４は、特開２０１５−１８０７号公報に記載されたＲＡＭ４２０、通信部４３０、センサ部４５０、入出力ポート４６０を参照されたい。
【００８８】
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上記実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。
【符号の説明】
【００８９】
１…自動並列化コンパイラ、１０…コンピュータ、１１…ディスプレイ、１２…ＨＤＤ、１３…ＣＰＵ、１４…ＲＯＭ、１５…ＲＡＭ、１６…入力装置、１７…読取部、１８…記憶媒体、２０…車載装置、２１…マルチコアプロセッサ、２１ａ…ＲＯＭ、２１ａ１…並列プログラム、２１ｂ…ＲＡＭ、２１ｃ…第１コア、２１ｄ…第２コア、２２…通信部、２３…センサ部、２４…入出力ポート
【図１】
0006558310.tif 000002
【図２】
0006558310.tif 000003
【図３】
0006558310.tif 000004
【図４】
0006558310.tif 000005
【図５】
0006558310.tif 000006
【図６】
0006558310.tif 000007
【図７】
0006558310.tif 000008
【図８】
0006558310.tif 000009
【図９】
0006558310.tif 000010
【図１０】
0006558310.tif 000011
【図１１】
0006558310.tif 000012
【図１２】
0006558310.tif 000013