(57)【要約】  ＣＰＵとアクセラレータとを含むコンピュータシステムを対象とする設計支援装置において、プログラム解析手段は、高位言語で記述された入力プログラムから、入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、関数やループの実行回数を基に処理からデータへのアクセス量を含む処理とデータの関係性を解析し、演算器実現方式評価手段は、求めた処理に対し、アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、アクセラレータの使用リソース量、遅延、および通信帯域を評価し、設計空間探索手段は、求めた処理とデータとについて、ＣＰＵとアクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について演算器実現方式評価手段の評価によって得られた結果を基に、入力プログラム全体の使用リソース量、通信帯域、および性能を求め、提示する。
2017135219.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵとアクセラレータとを含むコンピュータシステムを対象とする設計支援装置であって、
高位言語で記述された入力プログラムから、該入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、前記関数やループの実行回数を基に前記処理から前記データへのアクセス量を含む処理とデータの関係性を解析するプログラム解析手段と、
求めた前記処理に対し、前記アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、前記アクセラレータの使用リソース量、遅延、および通信帯域を評価する演算器実現方式評価手段と、
求めた前記処理と前記データとについて、前記ＣＰＵと前記アクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について前記演算器実現方式評価手段の評価結果を基に、前記入力プログラム全体の使用リソース量、通信帯域、および性能を求め、提示する設計空間探索手段を、
備える設計支援装置。
【請求項２】
前記演算器実現方式評価手段は、高位合成手段を用いて前記アクセラレータとしてパイプライン型演算器を生成し、生成したパイプライン型演算器の使用リソース量及び遅延を見積る、請求項１に記載の設計支援装置。
【請求項３】
前記演算器実現方式評価手段は、前記設計空間探索手段が生成した演算器実現方式指定情報を基に、前記パイプライン型演算器を評価する、請求項２に記載の設計支援装置。
【請求項４】
前記演算器実現方式指定情報は、前記パイプライン型演算器のデータ投入間隔（Data Initiation Interval）の指定を含む、請求項３に記載の設計支援装置。
【請求項５】
前記演算器実現方式評価手段は、前記パイプライン型演算器の要求通信帯域を見積る、請求項２に記載の設計支援装置。
【請求項６】
前記設計空間探索手段は、前記ＣＰＵと前記アクセラレータとの間の通信帯域を制約として設計空間を探索する、請求項１に記載の設計支援装置。
【請求項７】
ＣＰＵとアクセラレータとを含むコンピュータシステムを対象とする設計支援装置で実行される設計支援方法であって、
高位言語で記述された入力プログラムから、該入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、前記関数やループの実行回数を基に前記処理から前記データへのアクセス量を含む処理とデータの関係性を解析し、
求めた前記処理に対し、前記アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、前記アクセラレータの使用リソース量、遅延、および通信帯域を評価し、
求めた前記処理と前記データとについて、前記ＣＰＵと前記アクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について前記評価結果を基に、前記入力プログラム全体の使用リソース量、通信帯域、および性能を求め、提示する、設計支援方法。
【請求項８】
前記演算器実現方式評価手段は、高位合成手段を用いて前記アクセラレータとしてパイプライン型演算器を生成し、生成したパイプライン型演算器の使用リソース量及び遅延を見積る、請求項７に記載の設計支援方法。
【請求項９】
前記演算器実現方式評価手段は、前記設計空間探索手段が生成した演算器実現方式指定情報を基に、前記パイプライン型演算器を評価する、請求項８に記載の設計支援方法。
【請求項１０】
コンピュータに、ＣＰＵとアクセラレータとを含むコンピュータシステムの設計支援をさせる設計支援プログラムを格納した記録媒体であって、前記コンピュータに、
高位言語で記述された入力プログラムから、該入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、前記関数やループの実行回数を基に前記処理から前記データへのアクセス量を含む処理とデータの関係性を解析し、
求めた前記処理に対し、前記アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、前記アクセラレータの使用リソース量、遅延、および通信帯域を評価し、
求めた前記処理と前記データとについて、前記ＣＰＵと前記アクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について前記評価結果を基に、前記入力プログラム全体の使用リソース量、通信帯域、および性能を求め、提示する、
ことを実行させる設計支援プログラムを格納した記録媒体。
【請求項１１】
前記演算器実現方式指定情報は、前記パイプライン型演算器のデータ投入間隔（Data Initiation Interval）の指定を含む、請求項９に記載の設計支援方法。
【請求項１２】
前記演算器実現方式評価手段は、前記パイプライン型演算器の要求通信帯域を見積る、請求項８に記載の設計支援方法。
【請求項１３】
前記設計空間探索手段は、前記ＣＰＵと前記アクセラレータとの間の通信帯域を制約として設計空間を探索する、請求項７に記載の設計支援方法。
【請求項１４】
前記演算器実現方式評価手順は、前記コンピュータに、高位合成手段を用いて前記アクセラレータとしてパイプライン型演算器を生成させ、生成したパイプライン型演算器の使用リソース量及び遅延を見積らせる、請求項１０に記載の設計支援プログラムを格納した記録媒体。
【請求項１５】
前記演算器実現方式評価手順は、前記コンピュータに、前記設計空間探索手順で生成された演算器実現方式指定情報を基に、前記パイプライン型演算器を評価させる、請求項１４に記載の設計支援プログラムを格納した記録媒体。
【請求項１６】
前記演算器実現方式指定情報は、前記パイプライン型演算器のデータ投入間隔（Data Initiation Interval）の指定を含む、請求項１５に記載の設計支援プログラムを格納した記録媒体。
【請求項１７】
前記演算器実現方式評価手順は、前記コンピュータに、前記パイプライン型演算器の要求通信帯域を見積らせる、請求項１１に記載の設計支援プログラムを格納した記録媒体。
【請求項１８】
前記設計空間探索手順は、前記コンピュータに、前記ＣＰＵと前記アクセラレータとの間の通信帯域を制約として設計空間を探索させる、請求項１０に記載の設計支援プログラムを格納した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、中央処理装置（ＣＰＵ：Central Processing Unit）とアクセラレータとを含むコンピュータシステムを対象とする設計支援装置等に関する。
【背景技術】
【０００２】
アクセラレータとは、 コンピュータの処理能力を高めるために、追加して利用するハードウェア又はソフトウェアの総称である。比較的低いコストで、計算を高速化・効率化する手法として、ＦＰＧＡ（Field Programmable Gate Array）上に実装した専用回路による演算又はＧＰＧＰＵ（General Purpose computing on Graphics Processing Unit）が知られている。なお、ここではアクセラレータとして主にＦＰＧＡを例に説明する。アクセラレータとしてＧＰＧＰＵなど他のアクセラレータを想定してもよい。【０００３】
この種のＣＰＵとアクセラレータを含むコンピュータシステムを対象とする設計支援装置が、種々知られている。【０００４】
特許文献１は、高位合成において、異なる形式のメモリアクセスに対して同じメモリを共有できる回路に修正する手段を有する「高位合成装置」を開示している。【０００５】
特許文献２は、メモリアクセス回数から通信帯域を計算し、バス競合の確率を計算する「プログラムの動作推定方法」を開示している。特許文献２に開示されたモデリング／シミュレーション・システムは、好適にはＵＭＬ（Unified Modeling Language）に基づくシミュレーション・システムであり、モデルエディタと、計算モジュールとを有する。計算モジュールは、所定の評価アルゴリズムに従い、実行時間やメモリ帯域利用率などの値を推測する。【０００６】
特許文献３は、シミュレーション時にシミュレータを動作させるＣＰＵとハードウェアエミュレータとの間での通信量を減らす「システムシミュレーション方法」を開示している。シミュレーション手段としては、コンピュータ上のハードウェアシミュレータと、プログラマブルデバイスからなるハードウェアエミュレータが併用される。シミュレーション手段割当工程では、ハードウェアエミュレータが割り当てられるグループと、コンピュータ上のシミュレーションが割り当てられるグループとからなり、かつ、最小の境界通信量を持つグループ分けを得る。シミュレーション手段割当工程では、初期グループ分けと、その初期グループ分けによる境界通信量の計算とが行われ、次に、グループ分け候補の作成と、そのグループ分け候補における境界通信量の計算とが行われる。これにより、ＣＰＵ及びメモリにはコンピュータ上のシミュレータが、また特定機能ブロックにはハードウェアエミュレータがそれぞれ割り当てられる。【０００７】
特許文献４は、ヘテロジニアスマルチコアに向けたソフトウェアの最適化技術と、通信コストを考慮した割当て手法とを開示している。特許文献４に開示された設計支援装置は、取得部と、抽出部とを含む。取得部は、組み込みシステムに組み込まれている演算要素の種別および当該演算要素に実行させる最適化処理に関する設定情報を取得する機能を有する。抽出部は、設定情報に含まれる演算要素の種別により最適化処理が実行可能なタスクを複数のタスクの中から抽出する機能を有する。抽出部は、あらかじめ用意されたプログラムパターンを抽出するための解析ルーチンの中から設定情報に合致するプログラムパターンを選択し、選択されたプログラムパターンに該当するタスクを複数のタスクの中から抽出する。例えば、演算要素（ＰＥ：processor element）種が「リコンフィグ回路」で最適化手法が「パイプライン」である場合には、パイプライン処理に関する解析ルーチンが選択され、対象プログラムコードを、分割されたタスクごとに解析する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１４−１０６６３９号公報
【特許文献２】特許第５１５３９０４号公報
【特許文献３】特開２００３−６７４３９号公報
【特許文献４】特開２０１０−１１３３８４号公報
【非特許文献】
【０００９】
【非特許文献１】”CyberWorkBench”（登録商標）、日本電気株式会社、[online]、インターネット（URL: http://jpn.nec.com/cyberworkbench/）
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記特許文献１〜４には、それぞれ、次に述べるような課題がある。【００１１】
上記特許文献１〜３ではシミュレーションを対象としており、実システムへの実装は考慮されていなかった。すなわち、ＣＰＵとハードウェアエミュレータとの間の通信遅延が大きく、データを頻繁にやり取りする場合には特性が異なるため、そのままでは実システムへ適用できなかった。【００１２】
また、特許文献３は、通信量によりハードウェアエミュレータへ割り当てるか否かを判断する手法を開示しているが、演算方式により通信量が変化する点については考慮されていなかった。また、ハードウェアエミュレータ側の回路は高位合成により得られるものではなかった。【００１３】
スループットはバス周波数及びバス幅に依存する。特許文献４においては、演算器の並列数は考慮されているが、ＤＩＩ(Data Initiation Interval)などの演算器のスループットは考慮されていなかった。【００１４】
関連する設計支援装置は、一般的にはハードウェア・ソフトウェア分割問題を解く装置として認知されることが多い。関連する設計支援装置は、ＣＰＵからＦＰＧＡなどのアクセラレータへ処理をオフロードする際には、入力データをアクセラレータ側に一括転送し、処理後に出力データをアクセラレータ側から一括転送するのが一般的である。ここでは、アクセラレータ側のリソース制約(ＦＰＧＡの場合は面積制約)下で性能を最大化するために、処理をどちらに置くかを決定する探索問題である。【００１５】
近年、ＣＰＵとＦＰＧＡとがメモリコヒーレンシを保つアーキテクチャが現れ、ＦＰＧＡ側に配置された処理からＣＰＵ側メモリ中のデータを利用するケースが想定されるようになっている。特に、複数回メモリアクセスをする場合は、アクセラレータ側メモリにデータを置いた方が帯域は節約できる。しかし、アクセラレータ側メモリのメモリ容量制約により、すべてのデータをアクセラレータ側メモリに置くことはできないことが多い。【００１６】
その場合、ＣＰＵとアクセラレータとの間の通信帯域・アクセラレータ側メモリの容量及びアクセラレータのリソース制約の制約下で、処理の配置のみならず、データの配置を最適配置する必要がある。ここで、「リソース制約」とは、ＦＰＧＡの場合は面積制約である。「処理の配置」とは、アクセラレータ側で実行するか、ＣＰＵ側で実行するかの配置である。「データの配置」とは、データをアクセラレータ側メモリに置くか、ＣＰＵ側メモリに置くかという配置である。また、通信帯域・面積は、回路のスループットや演算方式などの演算器実現方式に強く依存する。ここで、「回路のスループット」は、ＤＩＩ（Data Initiation Interval：データ投入可能間隔）である。「演算方式」は、タイリング方式、ラインバッファ方式などである。【００１７】
関連技術の問題点は、上記のように、関連の設計支援装置では最適なシステム設計が難しく、設計工数が増すことである。【００１８】
本発明の目的は、上述した課題を解決する、設計支援装置等を提供することにある。
【課題を解決するための手段】
【００１９】
本発明の設計支援装置は、ＣＰＵとアクセラレータとを含むコンピュータシステムを対象とする設計支援装置であって、高位言語で記述された入力プログラムから、この入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、関数やループの実行回数を基に処理からデータへのアクセス量を含む処理とデータの関係性を解析するプログラム解析手段と；求めた処理に対し、アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、アクセラレータの使用リソース量、遅延、および通信帯域を評価する演算器実現方式評価手段と；求めた処理とデータとについて、ＣＰＵとアクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について演算器実現方式評価手段の評価結果を基に、入力プログラム全体の使用リソース量、通信帯域、および性能を求め、提示する設計空間探索手段と；を備える。【００２０】
本発明の設計支援方法は、ＣＰＵとアクセラレータとを含むコンピュータシステムを対象とする設計支援装置で実行される設計支援方法であって、高位言語で記述された入力プログラムから、この入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、関数やループの実行回数を基に処理からデータへのアクセス量を含む処理とデータの関係性を解析し、求めた処理に対し、アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、アクセラレータの使用リソース量、遅延、および通信帯域を評価し、求めた処理とデータとについて、ＣＰＵとアクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について評価結果を基に、入力プログラム全体の使用リソース量、通信帯域、および性能を求め、提示する。【００２１】
本発明の記録媒体に格納された設計支援プログラムは、コンピュータに、ＣＰＵとアクセラレータとを含むコンピュータシステムの設計支援をさせる設計支援プログラムであって、コンピュータに、高位言語で記述された入力プログラムから、この入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、関数やループの実行回数を基に処理からデータへのアクセス量を含む処理とデータの関係性を解析し、求めた処理に対し、アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、アクセラレータの使用リソース量、遅延、および通信帯域を評価し、求めた処理とデータとについて、ＣＰＵとアクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について評価によって得られた結果を基に、入力プログラム全体の使用リソース量、通信帯域、および性能を求め、提示することを実行させる。
【発明の効果】
【００２２】
本発明によれば、設計工数を削減することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の一実施の形態に係る設計支援装置の概略構成を示すブロック図である。
【図２】設計支援装置全体の動作を説明するためのフローチャートである。
【図３】設計支援装置に使用されるプログラム解析部の入出力例を示す図である。
【図４】設計支援装置に使用される設計空間探索部の動作を説明するためのフローチャートである。
【図５】設計支援装置が対象とするコンピュータシステムを示すブロック図である。
【図６Ａ】設計支援装置に使用される演算器実現方式指定情報の例を示す図である。
【図６Ｂ】設計支援装置に使用される演算器実現方式指定情報の例を示す図である。
【図７Ａ】設計支援装置に使用される設計空間探索部中の処理割付列挙部の出力例を示す図である。
【図７Ｂ】設計支援装置に使用される設計空間探索部中のデータ割付列挙部の出力例を示す図である。
【図８】設計支援装置に使用される設計空間探索部中の演算器実現方式列挙部の出力例を示す図である。
【図９】設計支援装置に使用される演算器実現方式評価部の出力例を示す図である。
【図１０】設計支援装置に使用される設計空間探索部から出力される解候補の表示例を示す図である。
【図１１】解候補表示のＧＵＩの例を示す図である。
【図１２】本発明に係る設計支援装置と高位合成装置との統合形態を示すブロック図である。
【図１３】本発明の一態様である設計支援装置の概要を示す図である。
【発明を実施するための形態】
【００２４】
[実施の形態]
次に、発明を実施するための形態について図面を参照して詳細に説明する。
【００２５】
図５は、後述する本発明の実施形態に係る設計支援装置１００が対象とするコンピュータシステム１０を示すブロック図である。
【００２６】
図５に示されるように、コンピュータシステム１０は、ＣＰＵ１２と、アクセラレータ１４と、ＣＰＵ側メモリ１６と、アクセラレータ側メモリ１８とから成る。
【００２７】
ＣＰＵ１２とアクセラレータ１４とは、それぞれ、ＣＰＵ側メモリ１６とアクセラレータ側メモリ１８とに接続されている。また、ＣＰＵ１２とアクセラレータ１４とがバス２０で接続されており、そのバス２０を通じて、ＣＰＵ１２からアクセラレータ側メモリ１８にアクセスでき、及び、アクセラレータ１４からＣＰＵ側メモリ１６にアクセスできる。
【００２８】
本発明の実施形態に係る設計支援装置１００は、このようなコンピュータシステム１０を対象とし、ＣＰＵ１２とアクセラレータ１４との間の通信バス帯域を考慮して、処理及びデータの最適な配置を探索する設計支援装置である。そして、本発明の実施形態に係る設計支援装置１００は、特にアクセラレータ１４上での処理の実現方法を複数種類評価し、また実現方法に応じて変化するＣＰＵ１２とアクセラレータ１４との間の通信量を考慮して、最適な実現方法を探索する。
【００２９】
なお、ここではアクセラレータ１４として主にＦＰＧＡを例に説明するが、アクセラレータとしてＧＰＧＰＵなど他のアクセラレータを想定してもよい。
【００３０】
[構成の説明]
図１を参照すると、本発明の一実施形態における設計支援装置１００は、プログラム解析部１１０と、演算器実現方式評価部１２０と、設計空間探索部１３０とを含む。
【００３１】
プログラム解析部１１０は、高級言語で記述された入力プログラム２００を入力として解析し、入力プログラム２００に含まれる関数などの処理２１０や、変数および配列などのデータ２２０を抽出し、入力プログラム２００中の処理２１０と、データ２２０と、処理とデータの関係性２３０とを出力する。
【００３２】
ここで、処理２１０は、例えば関数でよい。また、データ２２０は、例えば変数（配列変数を含む）でよい。また、処理とデータの関係性２３０は、ある処理２１０があるデータ２２０に対して何バイトアクセスしたかのアクセス量を表す情報である。
【００３３】
また、入力プログラム２００の解析は、静的な解析と動的な解析を含む。静的な解析は、入力プログラム２００の構文解析及び意味解析により、入力プログラム２００中の関数名や引数、変数名及び変数の型やサイズを抽出する。動的な解析は、入力プログラム２００を実行することにより、ループの実行回数や各変数へのアクセス回数及びアクセス量を得ることができる。なお、入力プログラム２００は、CプログラムやC++プログラムやSystemC（登録商標）プログラムやOpenCL（登録商標）プログラムなどが想定されるが、これに限られるものではない。
【００３４】
演算器実現方式評価部１２０は、処理２１０と、演算器実現方式指定情報と、動作周波数とアクセラレータの型番を含む対象ＨＷ（hardware）制約２５０を入力とし、処理の実行可能モデル（実行形式）と、使用リソース量見積りと、遅延の見積りと、スループットの見積りと、通信帯域の見積りを出力する。
【００３５】
ここで、処理の実行可能モデルとは、ＦＰＧＡの場合はＲＴＬ（register transfer level）記述である。使用リソース量見積りとは、ＦＰＧＡの場合は面積見積りである。遅延の見積りとスループットの見積りとは、性能の見積りと総称される。
【００３６】
図６Ａおよび図６Ｂは、演算器実現方式指定情報の例を示す図である。
【００３７】
図６Ａは、演算器タイプとしてパイプライン型演算器を、ＤＩＩとして２を、パイプライン段数として２４を、データアクセス方式としてリングバッファを指定している、演算器実現方式指定情報の例を示している。これは、２サイクルごとにデータを投入可能な２４段のパイプライン型演算器であり、データの入出力はリングバッファを通じて行う演算器として実現することを表す。すなわち、ＣＰＵがメモリから読み込んだ入力データをリングバッファに書込み、リングバッファのライトポインタの更新などを通じて演算器に通知し、演算器はリングバッファから入力データを読み込み、演算を行う。
【００３８】
図６Ｂは、演算器タイプとしてパイプライン型演算器を、ＤＩＩとして４を、パイプライン段数として２０を、データアクセス方式として直接アクセス方式を指定している、演算器実現方式指定情報の例を示している。これは、４サイクルごとにデータを投入可能な２０段のパイプライン型演算器であり、データの入出力は演算器内でアドレス生成を行い、生成されたアドレスを用いてメモリに直接アクセスする演算器として実現することを表す。
【００３９】
なお、演算器実現方式評価部１２０は、CyberWorkBench（非特許文献１）などの高位合成ツールである高位合成部１２２を利用することで、指定されたＤＩＩと動作周波数制約に対する使用リソース量や遅延を求めることができる。
【００４０】
ここで、通信帯域Ｂ（MB/sec）とは、処理の動作周波数Ｆ(MHｚ)と、スループットＴ（サイクル）と、１回の処理実行あたり必要なデータ入出力量Ｍ（バイト）とを用いて、Ｂ＝（Ｆ×Ｍ）／Ｔで表される。なお、ＣＰＵ１２とアクセラレータ１４との間の通信路において入力と出力との帯域が独立している場合は、データ入力量とデータ出力量とを分けて考えればよい。ここで、スループットＴとは、Ｔサイクルに１回処理を開始できることを表す。
【００４１】
図１に戻って、設計空間探索部１３０は、処理割付列挙部１３１と、データ割付列挙部１３２と、演算器実現方式列挙部１３３と、解候補保存部１３４と、解候補表示部１３５とを有する。
【００４２】
設計空間探索部１３０には、対象ＨＷ制約２５０と、アプリ要求性能等の対象ＳＷ（software）制約２６０と、処理とデータの関係性２３０と、データ２２０と、演算器実現方式評価部１２０からの面積見積り、性能見積り、および帯域見積りとが入力される。
【００４３】
設計空間探索部１３０では、まず、処理割付列挙部１３１と、データ割付列挙部１３２と、演算器実現方式列挙部１３３とを用いて設計空間中の解候補を列挙し、列挙されたそれぞれの解候補である設計候補に対し、使用リソース量と処理遅延と通信帯域とを、設計空間探索部１３０中の面積見積部、性能見積部、通信帯域見積部を用いて見積もり、見積もられたそれぞれの結果を解候補とともに解候補保存部１３４に保存する。そして、設計空間探索部１３０は、解候補表示部１３５を用いて、解候補保存部１３４に保存された内容を設計者に提示するとともに、最適な解候補を出力する。なお、設計空間探索部１３０中の面積見積部１３６、性能見積部１３７、通信帯域見積部１３８では、解候補を構成するそれぞれの処理について、高位合成部１２２からの見積結果を組み合わせることで見積もりを行う。なお、設計空間探索部１３０は、解候補の情報だけではなく、解候補の実行形式も出力するようにしてもよい。設計候補の使用リソース量と処理遅延と通信帯域とは、設計空間と総称される。
【００４４】
このように、設計空間探索部１３０は、ＣＰＵ１２とアクセラレータ１４との間の通信帯域を制約として設計空間を探索する。
【００４５】
図７Ａ、図７Ｂおよび図８は、設計空間探索部１３０の動作例を説明するための図である。
【００４６】
図７Ａは、処理割付列挙部１３１の出力例を示す図である。ここでは、ｆｕｎｃＡ、ｆｕｎｃＢ、ｍａｉｎの３つの処理の場合の例を示す。処理割付列挙部１３１は、それぞれの処理について、ＣＰＵ１２かアクセラレータ１４かのいずれかに割り付ける全組合せを生成する。すなわち、３つの処理の場合は２＾３＝８種類の処理割付が出力される。
【００４７】
図７Ｂは、データ割付列挙部１３２の出力例を示す図である。ここでは、Ａ，Ｂ，Ｒ，Ｔの４つのデータの場合の例を示す。データ割付列挙部１３２は、それぞれのデータについて、ＣＰＵ側メモリ１６かアクセラレータ側メモリ１８かのいずれかに割り付ける全組合せを生成する。すなわち、４つのデータの場合は２＾４＝１６種類のデータ割付が出力される。
【００４８】
図８は、演算器実現方式列挙部１３３の出力例を示す図である。演算器実現方式列挙部１３３は、処理実現方式の各項目である、演算器タイプと、パイプライン段数と、ＤＩＩと、データアクセス方式とについて、すべての組合せを生成する。
【００４９】
例えば、演算器タイプはパイプライン型と逐次型とが候補であり、データアクセス方式はリングバッファ方式と直接アクセス方式とが候補である。パイプライン段数及びＤＩＩは、１、２、３、・・・が候補であるが、取りうる値の最小値や最大値を別途設定（例えば１〜２４など）できるようにしてもよい。プログラム解析部１１０が高位合成を行い処理のステップ数を見積もることで最小値や最大値を設定してもよい。また、項目の組合せによっては無効な組合せ（例えば、逐次型演算器ではＤＩＩは指定されない）又は一意に決まる項目（例えば、逐次型演算器ではパイプライン段数は１となる）が想定される。その制約は処理実現方式内に組み込まれてもよい。
【００５０】
図９は、演算器実現方式評価部１２０の出力例を示す図である。演算器実現方式評価部１２０は、それぞれの処理実現方式に対して、使用リソース量、遅延、スループット、および通信帯域の見積り値を出力する。
【００５１】
図１０は、解候補の表示例を示す図である。ここでは、通信帯域と性能との間の関係を示している。グラフの横軸が性能で、縦軸が通信帯域である。右下に行くほど性能が高く、必要通信帯域が少ないことを示す。
【００５２】
例えば、通信帯域はＭＢ／ｓ（Ｍｅｇａ Ｂｙｔｅ／Ｓｅｃｏｎｄ）で表され、性能はＧＯＰＳ（Ｇｉｇａ Ｏｐｅｒａｔｉｏｎ Ｐｅｒ Ｓｅｃｏｎｄ）で表される。丸印は解候補を表しており、その上の数字は、（処理割付番号、データ割付番号、処理実現方式列挙部番号）である。例えば、（１，１，１）は処理割付１とデータ割付１と処理実現方式１の組合せを示す。実線は対象システム（コンピュータシステム）１０の通信帯域制約を示しており、すなわち、実線より上の候補は通信帯域制約を満たさないため実現できないことになる。
【００５３】
図１０の例では、解候補（８，１，１）が制約を満たす中で最も性能がよい解ということになる。
【００５４】
以上の説明から明らかなように、本実施形態によれば、設計工数を削減できるという効果を奏する。その理由は、入力プログラム２００中の各処理に対して、複数の演算器実現方式を列挙し、それぞれの演算器実現方式を高位合成により評価し、その評価結果とデータの配置とに基づいて必要な通信帯域を見積り、入力プログラム２００中の各処理の配置及び入力プログラム２００中の各データの配置及び演算器実現方式を探索候補とし、入力通信帯域制約の制約下で設計空間探索を行うことにより、設計完了後に通信帯域制約違反が判明することによる設計のやり直しをなくせるためである。
【００５５】
[動作の説明]
図２は、設計支援装置１００全体の動作を説明するフローチャートである。
【００５６】
まず、ステップＳ１０１で、プログラム解析部１１０は、入力プログラム２００の解析を行い、解析した情報中の関数名および変数名を、処理２１０及びデータ２２０として抽出する。次に、ステップＳ１０２で、設計空間探索部１３０は、各処理２１０及び各データ２２０をＣＰＵ１２またはアクセラレータ１４のいずれに割り付けるかの組み合わせを列挙する。次に、ステップＳ１０３で、設計空間探索部１３０は、当該組み合わせにおいてアクセラレータ１４に割り付けられた各処理２１０について、演算器実現方式を列挙する。ここで演算器実現方式は、前記の通り、演算器タイプ、パイプライン段数、ＤＩＩ、およびデータアクセス方式などが想定されるが、上記に限るものではない。また、パイプライン段数などは対象アクセラレータの周波数制約およびＤＩＩなどにより自動的に決定されるパラメタを含めてもよい。
【００５７】
また、上述した図７Ａ及び図７Ｂを参照した説明は、ＣＰＵとアクセラレータ（Ａｃｃ：Accelerator）とがそれぞれ１つの場合の割り付け例である。
【００５８】
これに対して、複数個または複数種類のアクセラレータを対象とし、そのいずれか処理及びデータを割り付けるという探索問題も同様の考え方で扱うことができる。すなわち、アクセラレータが２種類存在する場合には、処理またはデータが割り付けられる対象がＣＰＵまたはアクセラレータの２通りではなく、ＣＰＵまたはアクセラレータ_Ａまたはアクセラレータ_Ｂの３通りとなる。このとき、例えば処理割付の組合せは３＾３＝２７通りとなるであろう。
【００５９】
ステップＳ１０４で、演算器実現方式評価部１２０は、列挙された解候補の面積・遅延・帯域を評価する。ステップＳ１０５で、設計空間探索部１３０は、解候補を出力する。
【００６０】
図３は、プログラム解析部１１０の入出力例を示す図である。入力プログラム２００中には、funcAとfuncBとmainという３つの関数が含まれている。また、データ２２０として、Ａ、Ｂ、およびＲというグローバル配列変数と、Ｔというローカル配列変数とが含まれている。この場合、処理２１０として、funcA関数とfuncB関数とmain関数との中身が出力される。データ２２０として、ＡとＢとＲとＴとの変数名及びデータ型及び配列のサイズが出力される。処理とデータの関係性２３０として、それぞれの関数がそれぞれのデータにアクセスする量（バイト）が出力される。なお、データ２２０はスカラ（単一）変数でもよいし、クラスや構造体やその配列でもよい。
【００６１】
例えば、図３において、処理とデータの関係性２３０は以下のように求められることができる。例えばfuncAはＮ＝２５６回実行される。そして、funcAではＡ及びＢに1回ずつアクセスし、Ｔにはpt[0]、pt[1]、pt[2]の合計３回アクセスする。それぞれのデータ型はfloat型であり、すなわち４バイトのデータ型である。つまり、funcAはデータＡ及びデータＢに２５６×１×４＝１０２４バイトアクセスし、データＴには２５６×３×４＝３０７２バイトアクセスする。また、データＲにはアクセスしない。同様に、funcB及びmainについてもそれぞれのデータに対するアクセス量を取得することができる。
【００６２】
図４は、設計空間探索部１３０の動作を説明するためのフローチャートである。
【００６３】
まず、設計空間探索部１３０は、各処理２１０と各データ２２０とを、ＣＰＵ１２またはアクセラレータ１４のいずれに割り付けるかの組み合わせを列挙し、そのうちの一つの割り付けの組み合わせを選択する（ステップＳ２０１）。
【００６４】
次に、設計空間探索部１３０は、アクセラレータ１４に割り付けられた処理２１０について、演算器実現方式を列挙し、そのうちの一つの方式を選択する（ステップＳ２０２）。そして、設計空間探索部１３０は、指定された演算器実現方式の面積、遅延、および通信帯域の見積りを行う（ステップＳ２０３）。ここでは、設計空間探索部１３０は、各処理についての面積、遅延、および通信帯域の見積りを統合し、ハードウェア制約２５０及びソフトウェア制約２６０を満たすかどうかを判定する。ここで、各処理２１０についての面積、遅延、および通信帯域の見積りは、演算器実現方式評価部１２０を用いて取得することができるが、既に評価した結果を再利用するようにしてもよい。そして、設計空間探索部１３０は、評価結果を解候補として保存しておく（ステップＳ２０４）。設計空間探索部１３０は、この処理を、すべての演算器実現方式を判定するまで繰り返す（ステップＳ２０５）。
【００６５】
すべての演算器実現方式の判定が完了した場合（ステップＳ２０５のＹ）、設計空間探索部１３０は、次の割り付けの組み合わせを選択し、上記を繰り返す（ステップＳ２０６）。すべての割り付けの組み合わせの判定が完了したら（ステップＳ２０６のＹ）、設計空間探索部１３０は、保存された解候補を出力する（ステップＳ２０７）。
【００６６】
解候補の出力は、グラフやパレート曲線などの形式で設計者に提示するＧＵＩ（graphical user interface）でなされてもよい。また、設計空間探索部１３０は、設計者が選択した解候補に対応する実行形式を出力するようにしてもよい。ここでいう実行形式とは、ＦＰＧＡをアクセラレータ１４とする場合、対応する演算器実現方式による処理のＲＴＬ記述や各種インタフェースＲＴＬ記述を含むＦＰＧＡ向けの記述と、入力プログラム中のアクセラレータに割り付けられた処理部分をアクセラレータ呼び出し記述に変更したプログラムと、を含む。
【００６７】
図１１は、ＧＵＩの例を示す図である。左上にあるグラフ中の候補を選択すると、その候補に関する処理割付及びデータ割付が左下に表示される。また、処理を選択すると、右に選択した処理の実現方式が表示される。また、画面右上には選択した候補のリソース、性能、および通信帯域の見積りが表示される。また、画面右下のボタンを押すと、選択した候補に対応する実行形式を生成できる。また、画面左上のコンボボックスを選択することで、リソースと性能との間の関係など、グラフの表示内容を変更することができる。
【００６８】
次に、本発明の一態様である設計支援装置の概要について図１３を参照して説明する。なお、設計支援装置は、ＣＰＵとアクセラレータとを含むコンピュータシステムを対象とする装置である。設計支援装置１００は、プログラム解析部１１０、演算器実現方式評価部１２０及び設計空間探索部１３０を備える。
【００６９】
プログラム解析部１１０は、高位言語で記述された入力プログラムから、該入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、関数やループの実行回数を基に処理からデータへのアクセス量を含む処理とデータの関係性を解析する。
【００７０】
演算器実現方式評価部１２０は、求めた処理に対し、アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、アクセラレータの使用リソース量、遅延、および通信帯域を評価する。
【００７１】
設計空間探索部１３０は、求めた処理とデータとについて、ＣＰＵとアクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について演算器実現方式評価部１２０の評価によって得られた結果を基に、入力プログラム全体の使用リソース量、通信帯域、および性能を求め、提示する。
【００７２】
このように設計支援装置１００は、ＣＰＵとアクセラレータとへの割付の組合せの候補に対して、処理ごとに様々な演算器実現方式及びデータの配置を評価し、かつ、通信帯域などを見積ったうえで候補を提示することができる。これにより、設計の後戻りを防ぎ、設計期間の短縮を実現する。
【００７３】
次に、本実施の形態の効果について説明する。関連技術では、ＤＩＩなどの演算器実現方式は設計空間探索の探索パラメタとして利用されていなかった。また、演算器実現方式（例えばＤＩＩ）が変わると、アクセラレータ１４の１サイクルあたり必要となる入出力データ量が変わるため、ＣＰＵ１２とアクセラレータ１４との間の通信で必要となる通信帯域が変化する。場合によっては要求通信帯域がハードウェアで実現可能な通信帯域を上回ることでアクセラレータ１４に通信待ち時間が発生し、想定していたアプリケーション性能が出ないことがある。また、要求通信帯域は、データをＣＰＵ側メモリ１６に配置するかアクセラレータ側メモリ１８に配置するかにも大きく影響を受ける。このため、データの配置を考慮しない関連技術では、最適な設計にたどりつけなかったり、たどりつくのに時間がかかったりしていた。
【００７４】
これに対して、本実施の形態においては、処理ごとに様々な演算器実現方式及びデータの配置を評価し、かつ、通信帯域を見積ったうえで設計者に提示することで、設計の後戻りを防ぐことができる。すなわち、本実施の形態は、関連技術と比較して設計期間の短縮を実現するといえる。
【００７５】
尚、設計支援装置の各部は、ハードウェアとソフトウェアとの組み合わせを用いて実現すればよい。ハードウェアとソフトウェアとを組み合わせた形態では、ＲＡＭ（random access memory）に設計支援プログラムが展開され、該プログラムに基づいて制御部（ＣＰＵ（central processing unit））等のハードウェアを動作させることによって、各部を各種手段として実現する。また、該プログラムは、記録媒体に記録されて頒布されても良い。当該記録媒体に記録されたプログラムは、有線、無線、又は記録媒体そのものを介して、メモリに読込まれ、制御部等を動作させる。尚、記録媒体を例示すれば、オプティカルディスクや磁気ディスク、半導体メモリ装置、ハードディスクなどが挙げられる。
【００７６】
上記実施の形態を別の表現で説明すれば、設計支援装置として動作させるコンピュータを、ＲＡＭに展開された画像処理プログラムに基づき、プログラム解析部１１０、演算器実現方式評価部１２０、および設計空間探索部１３０として動作させることで実現することが可能である。
【００７７】
また、本発明の具体的な構成は前述の実施の形態に限られるものではなく、この発明の要旨を逸脱しない範囲の変更があってもこの発明に含まれる。
【００７８】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記実施の形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【００７９】
なお、本発明の設計支援装置１００で得られた最適な処理配置に対して、図１２に示すように高位合成装置３００を用いて、処理間の実装方式の最適化を施すことができる。
【００８０】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００８１】
（付記１）ＣＰＵとアクセラレータとを含むコンピュータシステムを対象とする設計支援装置であって、
高位言語で記述された入力プログラムから、該入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、前記関数やループの実行回数を基に前記処理から前記データへのアクセス量を含む処理とデータの関係性を解析するプログラム解析手段と、  求めた前記処理に対し、前記アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、前記アクセラレータの使用リソース量、遅延、および通信帯域を評価する演算器実現方式評価手段と、
求めた前記処理と前記データとについて、前記ＣＰＵと前記アクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について前記演算器実現方式評価手段の評価によって得られた結果を基に、前記入力プログラム全体の使用リソース量、通信帯域、および性能を求め、提示する設計空間探索手段と、
を備える設計支援装置。
【００８２】
（付記２）前記演算器実現方式評価手段は、高位合成手段を用いて前記アクセラレータとしてパイプライン型演算器を生成し、生成したパイプライン型演算器の使用リソース量及び遅延を見積る、付記１に記載の設計支援装置。
【００８３】
（付記３）前記演算器実現方式評価手段は、前記設計空間探索手段が生成した演算器実現方式指定情報を基に、前記パイプライン型演算器を評価する、付記２に記載の設計支援装置。
【００８４】
（付記４）前記演算器実現方式指定情報は、前記パイプライン型演算器のデータ投入間隔（Data Initiation Interval）の指定を含む、付記３に記載の設計支援装置。
【００８５】
（付記５）前記演算器実現方式評価手段は、前記パイプライン型演算器の要求通信帯域を見積る、付記２に記載の設計支援装置。
【００８６】
（付記６）前記設計空間探索手段は、前記ＣＰＵと前記アクセラレータとの間の通信帯域を制約として設計空間を探索する、付記１に記載の設計支援装置。
【００８７】
（付記７）ＣＰＵとアクセラレータとを含むコンピュータシステムを対象とする設計支援装置で実行される設計支援方法であって、
プログラム解析手段が、高位言語で記述された入力プログラムから、該入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、前記関数やループの実行回数を基に前記処理から前記データへのアクセス量を含む処理とデータの関係性を解析し、  演算器実現方式評価手段が、求めた前記処理に対し、前記アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、前記アクセラレータの使用リソース量、遅延、および通信帯域を評価し、
設計空間探索手段が、求めた前記処理と前記データとについて、前記ＣＰＵと前記アクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について前記演算器実現方式評価手段の評価によって得られた結果を基に、前記入力プログラム全体の使用リソース量、通信帯域、および性能を求め、それらを設計者が選択可能に提示する、設計支援方法。
【００８８】
（付記８）前記演算器実現方式評価手段は、高位合成手段を用いて前記アクセラレータとしてパイプライン型演算器を生成し、生成したパイプライン型演算器の使用リソース量及び遅延を見積る、付記７に記載の設計支援方法。
【００８９】
（付記９）前記演算器実現方式評価手段は、前記設計空間探索手段が生成した演算器実現方式指定情報を基に、前記パイプライン型演算器を評価する、付記８に記載の設計支援方法。
【００９０】
（付記１０）前記演算器実現方式指定情報は、前記パイプライン型演算器のデータ投入間隔（Data Initiation Interval）の指定を含む、付記９に記載の設計支援方法。
【００９１】
（付記１１）前記演算器実現方式評価手段は、前記パイプライン型演算器の要求通信帯域を見積る、付記８に記載の設計支援方法。
【００９２】
（付記１２）前記設計空間探索手段は、前記ＣＰＵと前記アクセラレータとの間の通信帯域を制約として設計空間を探索する、付記７に記載の設計支援方法。
【００９３】
（付記１３）コンピュータに、ＣＰＵとアクセラレータとを含むコンピュータシステムの設計支援をさせる設計支援プログラムであって、前記コンピュータに、
高位言語で記述された入力プログラムから、該入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、前記関数やループの実行回数を基に前記処理から前記データへのアクセス量を含む処理とデータの関係性を解析するプログラム解析手順と、  求めた前記処理に対し、前記アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、前記アクセラレータの使用リソース量、遅延、および通信帯域を評価する演算器実現方式評価手順と、
求めた前記処理と前記データとについて、前記ＣＰＵと前記アクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について前記演算器実現方式評価手順での評価によって得られた結果を基に、前記入力プログラム全体の使用リソース量、通信帯域、および性能を求め、それらを設計者が選択可能に提示する設計空間探索手順と、
を実行させる設計支援プログラム。
【００９４】
（付記１４）前記演算器実現方式評価手順は、前記コンピュータに、高位合成手段を用いて前記アクセラレータとしてパイプライン型演算器を生成させ、生成したパイプライン型演算器の使用リソース量及び遅延を見積らせる、付記１３に記載の設計支援プログラム。
【００９５】
（付記１５）前記演算器実現方式評価手順は、前記コンピュータに、前記設計空間探索手順で生成された演算器実現方式指定情報を基に、前記パイプライン型演算器を評価させる、付記１４に記載の設計支援プログラム。
【００９６】
（付記１６）前記演算器実現方式指定情報は、前記パイプライン型演算器のデータ投入間隔（Data Initiation Interval）の指定を含む、付記１５に記載の設計支援プログラム。
【００９７】
（付記１７）前記演算器実現方式評価手順は、前記コンピュータに、前記パイプライン型演算器の要求通信帯域を見積らせる、付記１４に記載の設計支援プログラム。
【００９８】
（付記１８）前記設計空間探索手順は、前記コンピュータに、前記ＣＰＵと前記アクセラレータとの間の通信帯域を制約として設計空間を探索させる、付記１３に記載の設計支援プログラム。
【００９９】
この出願は、２０１６年２月１日に出願された日本出願特願２０１６−０１７０５１を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１００】
１０    コンピュータシステム（対象システム）
１２    ＣＰＵ
１４    アクセラレータ
１６    ＣＰＵ側メモリ
１８    アクセラレータ側メモリ
２０    バス
１００    設計支援装置
１１０    プログラム解析部（プロファイラ）
１２０    演算器実現方式評価部
１２２    高位合成部
１３０    設計空間探索部
１３１    処理割付列挙部
１３２    データ割付列挙部
１３３    演算器実現方式列挙部
１３４    解候補保存部
１３５    解候補表示部
１３６    面積見積部
１３７    性能見積部
１３８    通信帯域見積部
２００    入力プログラム
２１０    処理
２２０    データ
２３０    処理とデータの関係性
２５０    対象ＨＷ制約
２６０    対象ＳＷ制約
【図１】
2017135219.tif 000003
【図２】
2017135219.tif 000004
【図３】
2017135219.tif 000005
【図４】
2017135219.tif 000006
【図５】
2017135219.tif 000007
【図６Ａ】
2017135219.tif 000008
【図６Ｂ】
2017135219.tif 000009
【図７Ａ】
2017135219.tif 000010
【図７Ｂ】
2017135219.tif 000011
【図８】
2017135219.tif 000012
【図９】
2017135219.tif 000013
【図１０】
2017135219.tif 000014
【図１１】
2017135219.tif 000015
【図１２】
2017135219.tif 000016
【図１３】
2017135219.tif 000017
【手続補正書】
【提出日】平成30年7月19日(2018.7.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ＣＰＵとアクセラレータとを含むコンピュータシステムを対象とする設計支援装置であって、
高位言語で記述された入力プログラムから、該入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、前記関数やループの実行回数を基に前記処理から前記データへのアクセス量を含む処理とデータの関係性を解析するプログラム解析手段と、
求めた前記処理に対し、前記アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、前記アクセラレータの使用リソース量、遅延、および通信帯域を評価する演算器実現方式評価手段と、
求めた前記処理と前記データとについて、前記ＣＰＵと前記アクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について前記演算器実現方式評価手段の評価結果を基に、前記入力プログラム全体の使用リソース量、通信帯域、および性能を求め、提示する設計空間探索手段を、
備える設計支援装置。
【請求項２】
前記演算器実現方式評価手段は、高位合成手段を用いて前記アクセラレータとしてパイプライン型演算器を生成し、生成したパイプライン型演算器の使用リソース量及び遅延を見積る、請求項１に記載の設計支援装置。
【請求項３】
前記演算器実現方式評価手段は、前記設計空間探索手段が生成した演算器実現方式指定情報を基に、前記パイプライン型演算器を評価する、請求項２に記載の設計支援装置。
【請求項４】
前記演算器実現方式指定情報は、前記パイプライン型演算器のデータ投入間隔（Data Initiation Interval）の指定を含む、請求項３に記載の設計支援装置。
【請求項５】
前記演算器実現方式評価手段は、前記パイプライン型演算器の要求通信帯域を見積る、請求項２に記載の設計支援装置。
【請求項６】
前記設計空間探索手段は、前記ＣＰＵと前記アクセラレータとの間の通信帯域を制約として設計空間を探索する、請求項１に記載の設計支援装置。
【請求項７】
ＣＰＵとアクセラレータとを含むコンピュータシステムを対象とする設計支援装置で実行される設計支援方法であって、
高位言語で記述された入力プログラムから、該入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、前記関数やループの実行回数を基に前記処理から前記データへのアクセス量を含む処理とデータの関係性を解析し、
求めた前記処理に対し、前記アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、前記アクセラレータの使用リソース量、遅延、および通信帯域を評価し、
求めた前記処理と前記データとについて、前記ＣＰＵと前記アクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について前記評価結果を基に、前記入力プログラム全体の使用リソース量、通信帯域、および性能を求め、提示する、設計支援方法。
【請求項８】
前記アクセラレータとしてパイプライン型演算器を生成し、生成したパイプライン型演算器の使用リソース量及び遅延を見積る、請求項７に記載の設計支援方法。
【請求項９】
演算器実現方式指定情報を基に、前記パイプライン型演算器を評価する、請求項８に記載の設計支援方法。
【請求項１０】
コンピュータに、ＣＰＵとアクセラレータとを含むコンピュータシステムの設計支援をさせる設計支援プログラムであって、前記コンピュータに、
高位言語で記述された入力プログラムから、該入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、前記関数やループの実行回数を基に前記処理から前記データへのアクセス量を含む処理とデータの関係性を解析し、
求めた前記処理に対し、前記アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、前記アクセラレータの使用リソース量、遅延、および通信帯域を評価し、
求めた前記処理と前記データとについて、前記ＣＰＵと前記アクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について前記評価結果を基に、前記入力プログラム全体の使用リソース量、通信帯域、および性能を求め、提示する、
ことを実行させる設計支援プログラム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２１
【補正方法】変更
【補正の内容】
【００２１】
本発明の設計支援プログラムは、コンピュータに、ＣＰＵとアクセラレータとを含むコンピュータシステムの設計支援をさせる設計支援プログラムであって、コンピュータに、高位言語で記述された入力プログラムから、この入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、関数やループの実行回数を基に処理からデータへのアクセス量を含む処理とデータの関係性を解析し、求めた処理に対し、アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、アクセラレータの使用リソース量、遅延、および通信帯域を評価し、求めた処理とデータとについて、ＣＰＵとアクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について評価によって得られた結果を基に、入力プログラム全体の使用リソース量、通信帯域、および性能を求め、提示することを実行させる。
【国際調査報告】
2017135219.tif 000018
2017135219.tif 000019
2017135219.tif 000020