JP6763411B2 - 設計支援装置、設計支援方法、および設計支援プログラム - Google Patents

設計支援装置、設計支援方法、および設計支援プログラム Download PDF

Info

Publication number
JP6763411B2
JP6763411B2 JP2017565548A JP2017565548A JP6763411B2 JP 6763411 B2 JP6763411 B2 JP 6763411B2 JP 2017565548 A JP2017565548 A JP 2017565548A JP 2017565548 A JP2017565548 A JP 2017565548A JP 6763411 B2 JP6763411 B2 JP 6763411B2
Authority
JP
Japan
Prior art keywords
accelerator
data
arithmetic unit
design support
design
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017565548A
Other languages
English (en)
Other versions
JPWO2017135219A1 (ja
Inventor
悠記 小林
悠記 小林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JPWO2017135219A1 publication Critical patent/JPWO2017135219A1/ja
Application granted granted Critical
Publication of JP6763411B2 publication Critical patent/JP6763411B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3495Performance evaluation by tracing or monitoring for systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3447Performance evaluation by modeling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment

Description

本発明は、中央処理装置(CPU:Central Processing Unit)とアクセラレータとを含むコンピュータシステムを対象とする設計支援装置等に関する。
アクセラレータとは、 コンピュータの処理能力を高めるために、追加して利用するハードウェア又はソフトウェアの総称である。比較的低いコストで、計算を高速化・効率化する手法として、FPGA(Field Programmable Gate Array)上に実装した専用回路による演算又はGPGPU(General Purpose computing on Graphics Processing Unit)が知られている。なお、ここではアクセラレータとして主にFPGAを例に説明する。アクセラレータとしてGPGPUなど他のアクセラレータを想定してもよい。
この種のCPUとアクセラレータを含むコンピュータシステムを対象とする設計支援装置が、種々知られている。
特許文献1は、高位合成において、異なる形式のメモリアクセスに対して同じメモリを共有できる回路に修正する手段を有する「高位合成装置」を開示している。
特許文献2は、メモリアクセス回数から通信帯域を計算し、バス競合の確率を計算する「プログラムの動作推定方法」を開示している。特許文献2に開示されたモデリング/シミュレーション・システムは、好適にはUML(Unified Modeling Language)に基づくシミュレーション・システムであり、モデルエディタと、計算モジュールとを有する。計算モジュールは、所定の評価アルゴリズムに従い、実行時間やメモリ帯域利用率などの値を推測する。
特許文献3は、シミュレーション時にシミュレータを動作させるCPUとハードウェアエミュレータとの間での通信量を減らす「システムシミュレーション方法」を開示している。シミュレーション手段としては、コンピュータ上のハードウェアシミュレータと、プログラマブルデバイスからなるハードウェアエミュレータが併用される。シミュレーション手段割当工程では、ハードウェアエミュレータが割り当てられるグループと、コンピュータ上のシミュレーションが割り当てられるグループとからなり、かつ、最小の境界通信量を持つグループ分けを得る。シミュレーション手段割当工程では、初期グループ分けと、その初期グループ分けによる境界通信量の計算とが行われ、次に、グループ分け候補の作成と、そのグループ分け候補における境界通信量の計算とが行われる。これにより、CPU及びメモリにはコンピュータ上のシミュレータが、また特定機能ブロックにはハードウェアエミュレータがそれぞれ割り当てられる。
特許文献4は、ヘテロジニアスマルチコアに向けたソフトウェアの最適化技術と、通信コストを考慮した割当て手法とを開示している。特許文献4に開示された設計支援装置は、取得部と、抽出部とを含む。取得部は、組み込みシステムに組み込まれている演算要素の種別および当該演算要素に実行させる最適化処理に関する設定情報を取得する機能を有する。抽出部は、設定情報に含まれる演算要素の種別により最適化処理が実行可能なタスクを複数のタスクの中から抽出する機能を有する。抽出部は、あらかじめ用意されたプログラムパターンを抽出するための解析ルーチンの中から設定情報に合致するプログラムパターンを選択し、選択されたプログラムパターンに該当するタスクを複数のタスクの中から抽出する。例えば、演算要素(PE:processor element)種が「リコンフィグ回路」で最適化手法が「パイプライン」である場合には、パイプライン処理に関する解析ルーチンが選択され、対象プログラムコードを、分割されたタスクごとに解析する。
特開2014−106639号公報 特許第5153904号公報 特開2003−67439号公報 特開2010−113384号公報
"CyberWorkBench"(登録商標)、日本電気株式会社、[online]、インターネット(URL: http://jpn.nec.com/cyberworkbench/)
しかしながら、上記特許文献1〜4には、それぞれ、次に述べるような課題がある。
上記特許文献1〜3ではシミュレーションを対象としており、実システムへの実装は考慮されていなかった。すなわち、CPUとハードウェアエミュレータとの間の通信遅延が大きく、データを頻繁にやり取りする場合には特性が異なるため、そのままでは実システムへ適用できなかった。
また、特許文献3は、通信量によりハードウェアエミュレータへ割り当てるか否かを判断する手法を開示しているが、演算方式により通信量が変化する点については考慮されていなかった。また、ハードウェアエミュレータ側の回路は高位合成により得られるものではなかった。
スループットはバス周波数及びバス幅に依存する。特許文献4においては、演算器の並列数は考慮されているが、DII(Data Initiation Interval)などの演算器のスループットは考慮されていなかった。
関連する設計支援装置は、一般的にはハードウェア・ソフトウェア分割問題を解く装置として認知されることが多い。関連する設計支援装置は、CPUからFPGAなどのアクセラレータへ処理をオフロードする際には、入力データをアクセラレータ側に一括転送し、処理後に出力データをアクセラレータ側から一括転送するのが一般的である。ここでは、アクセラレータ側のリソース制約(FPGAの場合は面積制約)下で性能を最大化するために、処理をどちらに置くかを決定する探索問題である。
近年、CPUとFPGAとがメモリコヒーレンシを保つアーキテクチャが現れ、FPGA側に配置された処理からCPU側メモリ中のデータを利用するケースが想定されるようになっている。特に、複数回メモリアクセスをする場合は、アクセラレータ側メモリにデータを置いた方が帯域は節約できる。しかし、アクセラレータ側メモリのメモリ容量制約により、すべてのデータをアクセラレータ側メモリに置くことはできないことが多い。
その場合、CPUとアクセラレータとの間の通信帯域・アクセラレータ側メモリの容量及びアクセラレータのリソース制約の制約下で、処理の配置のみならず、データの配置を最適配置する必要がある。ここで、「リソース制約」とは、FPGAの場合は面積制約である。「処理の配置」とは、アクセラレータ側で実行するか、CPU側で実行するかの配置である。「データの配置」とは、データをアクセラレータ側メモリに置くか、CPU側メモリに置くかという配置である。また、通信帯域・面積は、回路のスループットや演算方式などの演算器実現方式に強く依存する。ここで、「回路のスループット」は、DII(Data Initiation Interval:データ投入可能間隔)である。「演算方式」は、タイリング方式、ラインバッファ方式などである。
関連技術の問題点は、上記のように、関連の設計支援装置では最適なシステム設計が難しく、設計工数が増すことである。
本発明の目的は、上述した課題を解決する、設計支援装置等を提供することにある。
本発明の設計支援装置は、CPUとアクセラレータとを含むコンピュータシステムを対象とする設計支援装置であって、高位言語で記述された入力プログラムから、この入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、関数やループの実行回数を基に処理からデータへのアクセス量を含む処理とデータの関係性を解析するプログラム解析手段と;求めた処理に対し、アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、アクセラレータの使用リソース量、遅延、および通信帯域を評価する演算器実現方式評価手段と;求めた処理とデータとについて、CPUとアクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について演算器実現方式評価手段の評価結果を基に、入力プログラム全体の使用リソース量、通信帯域、および性能を求め、提示する設計空間探索手段と;を備える。
本発明の設計支援方法は、CPUとアクセラレータとを含むコンピュータシステムを対象とする設計支援装置で実行される設計支援方法であって、高位言語で記述された入力プログラムから、この入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、関数やループの実行回数を基に処理からデータへのアクセス量を含む処理とデータの関係性を解析し、求めた処理に対し、アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、アクセラレータの使用リソース量、遅延、および通信帯域を評価し、求めた処理とデータとについて、CPUとアクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について評価結果を基に、入力プログラム全体の使用リソース量、通信帯域、および性能を求め、提示する。
本発明設計支援プログラムは、コンピュータに、CPUとアクセラレータとを含むコンピュータシステムの設計支援をさせる設計支援プログラムであって、コンピュータに、高位言語で記述された入力プログラムから、この入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、関数やループの実行回数を基に処理からデータへのアクセス量を含む処理とデータの関係性を解析し、求めた処理に対し、アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、アクセラレータの使用リソース量、遅延、および通信帯域を評価し、求めた処理とデータとについて、CPUとアクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について評価によって得られた結果を基に、入力プログラム全体の使用リソース量、通信帯域、および性能を求め、提示することを実行させる。

本発明によれば、設計工数を削減することができる。
本発明の一実施の形態に係る設計支援装置の概略構成を示すブロック図である。 設計支援装置全体の動作を説明するためのフローチャートである。 設計支援装置に使用されるプログラム解析部の入出力例を示す図である。 設計支援装置に使用される設計空間探索部の動作を説明するためのフローチャートである。 設計支援装置が対象とするコンピュータシステムを示すブロック図である。 設計支援装置に使用される演算器実現方式指定情報の例を示す図である。 設計支援装置に使用される演算器実現方式指定情報の例を示す図である。 設計支援装置に使用される設計空間探索部中の処理割付列挙部の出力例を示す図である。 設計支援装置に使用される設計空間探索部中のデータ割付列挙部の出力例を示す図である。 設計支援装置に使用される設計空間探索部中の演算器実現方式列挙部の出力例を示す図である。 設計支援装置に使用される演算器実現方式評価部の出力例を示す図である。 設計支援装置に使用される設計空間探索部から出力される解候補の表示例を示す図である。 解候補表示のGUIの例を示す図である。 本発明に係る設計支援装置と高位合成装置との統合形態を示すブロック図である。 本発明の一態様である設計支援装置の概要を示す図である。
[実施の形態]
次に、発明を実施するための形態について図面を参照して詳細に説明する。
図5は、後述する本発明の実施形態に係る設計支援装置100が対象とするコンピュータシステム10を示すブロック図である。
図5に示されるように、コンピュータシステム10は、CPU12と、アクセラレータ14と、CPU側メモリ16と、アクセラレータ側メモリ18とから成る。
CPU12とアクセラレータ14とは、それぞれ、CPU側メモリ16とアクセラレータ側メモリ18とに接続されている。また、CPU12とアクセラレータ14とがバス20で接続されており、そのバス20を通じて、CPU12からアクセラレータ側メモリ18にアクセスでき、及び、アクセラレータ14からCPU側メモリ16にアクセスできる。
本発明の実施形態に係る設計支援装置100は、このようなコンピュータシステム10を対象とし、CPU12とアクセラレータ14との間の通信バス帯域を考慮して、処理及びデータの最適な配置を探索する設計支援装置である。そして、本発明の実施形態に係る設計支援装置100は、特にアクセラレータ14上での処理の実現方法を複数種類評価し、また実現方法に応じて変化するCPU12とアクセラレータ14との間の通信量を考慮して、最適な実現方法を探索する。
なお、ここではアクセラレータ14として主にFPGAを例に説明するが、アクセラレータとしてGPGPUなど他のアクセラレータを想定してもよい。
[構成の説明]
図1を参照すると、本発明の一実施形態における設計支援装置100は、プログラム解析部110と、演算器実現方式評価部120と、設計空間探索部130とを含む。
プログラム解析部110は、高級言語で記述された入力プログラム200を入力として解析し、入力プログラム200に含まれる関数などの処理210や、変数および配列などのデータ220を抽出し、入力プログラム200中の処理210と、データ220と、処理とデータの関係性230とを出力する。
ここで、処理210は、例えば関数でよい。また、データ220は、例えば変数(配列変数を含む)でよい。また、処理とデータの関係性230は、ある処理210があるデータ220に対して何バイトアクセスしたかのアクセス量を表す情報である。
また、入力プログラム200の解析は、静的な解析と動的な解析を含む。静的な解析は、入力プログラム200の構文解析及び意味解析により、入力プログラム200中の関数名や引数、変数名及び変数の型やサイズを抽出する。動的な解析は、入力プログラム200を実行することにより、ループの実行回数や各変数へのアクセス回数及びアクセス量を得ることができる。なお、入力プログラム200は、CプログラムやC++プログラムやSystemC(登録商標)プログラムやOpenCL(登録商標)プログラムなどが想定されるが、これに限られるものではない。
演算器実現方式評価部120は、処理210と、演算器実現方式指定情報と、動作周波数とアクセラレータの型番を含む対象HW(hardware)制約250を入力とし、処理の実行可能モデル(実行形式)と、使用リソース量見積りと、遅延の見積りと、スループットの見積りと、通信帯域の見積りを出力する。
ここで、処理の実行可能モデルとは、FPGAの場合はRTL(register transfer level)記述である。使用リソース量見積りとは、FPGAの場合は面積見積りである。遅延の見積りとスループットの見積りとは、性能の見積りと総称される。
図6Aおよび図6Bは、演算器実現方式指定情報の例を示す図である。
図6Aは、演算器タイプとしてパイプライン型演算器を、DIIとして2を、パイプライン段数として24を、データアクセス方式としてリングバッファを指定している、演算器実現方式指定情報の例を示している。これは、2サイクルごとにデータを投入可能な24段のパイプライン型演算器であり、データの入出力はリングバッファを通じて行う演算器として実現することを表す。すなわち、CPUがメモリから読み込んだ入力データをリングバッファに書込み、リングバッファのライトポインタの更新などを通じて演算器に通知し、演算器はリングバッファから入力データを読み込み、演算を行う。
図6Bは、演算器タイプとしてパイプライン型演算器を、DIIとして4を、パイプライン段数として20を、データアクセス方式として直接アクセス方式を指定している、演算器実現方式指定情報の例を示している。これは、4サイクルごとにデータを投入可能な20段のパイプライン型演算器であり、データの入出力は演算器内でアドレス生成を行い、生成されたアドレスを用いてメモリに直接アクセスする演算器として実現することを表す。
なお、演算器実現方式評価部120は、CyberWorkBench(非特許文献1)などの高位合成ツールである高位合成部122を利用することで、指定されたDIIと動作周波数制約に対する使用リソース量や遅延を求めることができる。
ここで、通信帯域B(MB/sec)とは、処理の動作周波数F(MHz)と、スループットT(サイクル)と、1回の処理実行あたり必要なデータ入出力量M(バイト)とを用いて、B=(F×M)/Tで表される。なお、CPU12とアクセラレータ14との間の通信路において入力と出力との帯域が独立している場合は、データ入力量とデータ出力量とを分けて考えればよい。ここで、スループットTとは、Tサイクルに1回処理を開始できることを表す。
図1に戻って、設計空間探索部130は、処理割付列挙部131と、データ割付列挙部132と、演算器実現方式列挙部133と、解候補保存部134と、解候補表示部135とを有する。
設計空間探索部130には、対象HW制約250と、アプリ要求性能等の対象SW(software)制約260と、処理とデータの関係性230と、データ220と、演算器実現方式評価部120からの面積見積り、性能見積り、および帯域見積りとが入力される。
設計空間探索部130では、まず、処理割付列挙部131と、データ割付列挙部132と、演算器実現方式列挙部133とを用いて設計空間中の解候補を列挙し、列挙されたそれぞれの解候補である設計候補に対し、使用リソース量と処理遅延と通信帯域とを、設計空間探索部130中の面積見積部、性能見積部、通信帯域見積部を用いて見積もり、見積もられたそれぞれの結果を解候補とともに解候補保存部134に保存する。そして、設計空間探索部130は、解候補表示部135を用いて、解候補保存部134に保存された内容を設計者に提示するとともに、最適な解候補を出力する。なお、設計空間探索部130中の面積見積部136、性能見積部137、通信帯域見積部138では、解候補を構成するそれぞれの処理について、高位合成部122からの見積結果を組み合わせることで見積もりを行う。なお、設計空間探索部130は、解候補の情報だけではなく、解候補の実行形式も出力するようにしてもよい。設計候補の使用リソース量と処理遅延と通信帯域とは、設計空間と総称される。
このように、設計空間探索部130は、CPU12とアクセラレータ14との間の通信帯域を制約として設計空間を探索する。
図7A、図7Bおよび図8は、設計空間探索部130の動作例を説明するための図である。
図7Aは、処理割付列挙部131の出力例を示す図である。ここでは、funcA、funcB、mainの3つの処理の場合の例を示す。処理割付列挙部131は、それぞれの処理について、CPU12かアクセラレータ14かのいずれかに割り付ける全組合せを生成する。すなわち、3つの処理の場合は2^3=8種類の処理割付が出力される。
図7Bは、データ割付列挙部132の出力例を示す図である。ここでは、A,B,R,Tの4つのデータの場合の例を示す。データ割付列挙部132は、それぞれのデータについて、CPU側メモリ16かアクセラレータ側メモリ18かのいずれかに割り付ける全組合せを生成する。すなわち、4つのデータの場合は2^4=16種類のデータ割付が出力される。
図8は、演算器実現方式列挙部133の出力例を示す図である。演算器実現方式列挙部133は、処理実現方式の各項目である、演算器タイプと、パイプライン段数と、DIIと、データアクセス方式とについて、すべての組合せを生成する。
例えば、演算器タイプはパイプライン型と逐次型とが候補であり、データアクセス方式はリングバッファ方式と直接アクセス方式とが候補である。パイプライン段数及びDIIは、1、2、3、・・・が候補であるが、取りうる値の最小値や最大値を別途設定(例えば1〜24など)できるようにしてもよい。プログラム解析部110が高位合成を行い処理のステップ数を見積もることで最小値や最大値を設定してもよい。また、項目の組合せによっては無効な組合せ(例えば、逐次型演算器ではDIIは指定されない)又は一意に決まる項目(例えば、逐次型演算器ではパイプライン段数は1となる)が想定される。その制約は処理実現方式内に組み込まれてもよい。
図9は、演算器実現方式評価部120の出力例を示す図である。演算器実現方式評価部120は、それぞれの処理実現方式に対して、使用リソース量、遅延、スループット、および通信帯域の見積り値を出力する。
図10は、解候補の表示例を示す図である。ここでは、通信帯域と性能との間の関係を示している。グラフの横軸が性能で、縦軸が通信帯域である。右下に行くほど性能が高く、必要通信帯域が少ないことを示す。
例えば、通信帯域はMB/s(Mega Byte/Second)で表され、性能はGOPS(Giga Operation Per Second)で表される。丸印は解候補を表しており、その上の数字は、(処理割付番号、データ割付番号、処理実現方式列挙部番号)である。例えば、(1,1,1)は処理割付1とデータ割付1と処理実現方式1の組合せを示す。実線は対象システム(コンピュータシステム)10の通信帯域制約を示しており、すなわち、実線より上の候補は通信帯域制約を満たさないため実現できないことになる。
図10の例では、解候補(8,1,1)が制約を満たす中で最も性能がよい解ということになる。
以上の説明から明らかなように、本実施形態によれば、設計工数を削減できるという効果を奏する。その理由は、入力プログラム200中の各処理に対して、複数の演算器実現方式を列挙し、それぞれの演算器実現方式を高位合成により評価し、その評価結果とデータの配置とに基づいて必要な通信帯域を見積り、入力プログラム200中の各処理の配置及び入力プログラム200中の各データの配置及び演算器実現方式を探索候補とし、入力通信帯域制約の制約下で設計空間探索を行うことにより、設計完了後に通信帯域制約違反が判明することによる設計のやり直しをなくせるためである。
[動作の説明]
図2は、設計支援装置100全体の動作を説明するフローチャートである。
まず、ステップS101で、プログラム解析部110は、入力プログラム200の解析を行い、解析した情報中の関数名および変数名を、処理210及びデータ220として抽出する。次に、ステップS102で、設計空間探索部130は、各処理210及び各データ220をCPU12またはアクセラレータ14のいずれに割り付けるかの組み合わせを列挙する。次に、ステップS103で、設計空間探索部130は、当該組み合わせにおいてアクセラレータ14に割り付けられた各処理210について、演算器実現方式を列挙する。ここで演算器実現方式は、前記の通り、演算器タイプ、パイプライン段数、DII、およびデータアクセス方式などが想定されるが、上記に限るものではない。また、パイプライン段数などは対象アクセラレータの周波数制約およびDIIなどにより自動的に決定されるパラメタを含めてもよい。
また、上述した図7A及び図7Bを参照した説明は、CPUとアクセラレータ(Acc:Accelerator)とがそれぞれ1つの場合の割り付け例である。
これに対して、複数個または複数種類のアクセラレータを対象とし、そのいずれか処理及びデータを割り付けるという探索問題も同様の考え方で扱うことができる。すなわち、アクセラレータが2種類存在する場合には、処理またはデータが割り付けられる対象がCPUまたはアクセラレータの2通りではなく、CPUまたはアクセラレータ_Aまたはアクセラレータ_Bの3通りとなる。このとき、例えば処理割付の組合せは3^3=27通りとなるであろう。
ステップS104で、演算器実現方式評価部120は、列挙された解候補の面積・遅延・帯域を評価する。ステップS105で、設計空間探索部130は、解候補を出力する。
図3は、プログラム解析部110の入出力例を示す図である。入力プログラム200中には、funcAとfuncBとmainという3つの関数が含まれている。また、データ220として、A、B、およびRというグローバル配列変数と、Tというローカル配列変数とが含まれている。この場合、処理210として、funcA関数とfuncB関数とmain関数との中身が出力される。データ220として、AとBとRとTとの変数名及びデータ型及び配列のサイズが出力される。処理とデータの関係性230として、それぞれの関数がそれぞれのデータにアクセスする量(バイト)が出力される。なお、データ220はスカラ(単一)変数でもよいし、クラスや構造体やその配列でもよい。
例えば、図3において、処理とデータの関係性230は以下のように求められることができる。例えばfuncAはN=256回実行される。そして、funcAではA及びBに1回ずつアクセスし、Tにはpt[0]、pt[1]、pt[2]の合計3回アクセスする。それぞれのデータ型はfloat型であり、すなわち4バイトのデータ型である。つまり、funcAはデータA及びデータBに256×1×4=1024バイトアクセスし、データTには256×3×4=3072バイトアクセスする。また、データRにはアクセスしない。同様に、funcB及びmainについてもそれぞれのデータに対するアクセス量を取得することができる。
図4は、設計空間探索部130の動作を説明するためのフローチャートである。
まず、設計空間探索部130は、各処理210と各データ220とを、CPU12またはアクセラレータ14のいずれに割り付けるかの組み合わせを列挙し、そのうちの一つの割り付けの組み合わせを選択する(ステップS201)。
次に、設計空間探索部130は、アクセラレータ14に割り付けられた処理210について、演算器実現方式を列挙し、そのうちの一つの方式を選択する(ステップS202)。そして、設計空間探索部130は、指定された演算器実現方式の面積、遅延、および通信帯域の見積りを行う(ステップS203)。ここでは、設計空間探索部130は、各処理についての面積、遅延、および通信帯域の見積りを統合し、ハードウェア制約250及びソフトウェア制約260を満たすかどうかを判定する。ここで、各処理210についての面積、遅延、および通信帯域の見積りは、演算器実現方式評価部120を用いて取得することができるが、既に評価した結果を再利用するようにしてもよい。そして、設計空間探索部130は、評価結果を解候補として保存しておく(ステップS204)。設計空間探索部130は、この処理を、すべての演算器実現方式を判定するまで繰り返す(ステップS205)。
すべての演算器実現方式の判定が完了した場合(ステップS205のY)、設計空間探索部130は、次の割り付けの組み合わせを選択し、上記を繰り返す(ステップS206)。すべての割り付けの組み合わせの判定が完了したら(ステップS206のY)、設計空間探索部130は、保存された解候補を出力する(ステップS207)。
解候補の出力は、グラフやパレート曲線などの形式で設計者に提示するGUI(graphical user interface)でなされてもよい。また、設計空間探索部130は、設計者が選択した解候補に対応する実行形式を出力するようにしてもよい。ここでいう実行形式とは、FPGAをアクセラレータ14とする場合、対応する演算器実現方式による処理のRTL記述や各種インタフェースRTL記述を含むFPGA向けの記述と、入力プログラム中のアクセラレータに割り付けられた処理部分をアクセラレータ呼び出し記述に変更したプログラムと、を含む。
図11は、GUIの例を示す図である。左上にあるグラフ中の候補を選択すると、その候補に関する処理割付及びデータ割付が左下に表示される。また、処理を選択すると、右に選択した処理の実現方式が表示される。また、画面右上には選択した候補のリソース、性能、および通信帯域の見積りが表示される。また、画面右下のボタンを押すと、選択した候補に対応する実行形式を生成できる。また、画面左上のコンボボックスを選択することで、リソースと性能との間の関係など、グラフの表示内容を変更することができる。
次に、本発明の一態様である設計支援装置の概要について図13を参照して説明する。なお、設計支援装置は、CPUとアクセラレータとを含むコンピュータシステムを対象とする装置である。設計支援装置100は、プログラム解析部110、演算器実現方式評価部120及び設計空間探索部130を備える。
プログラム解析部110は、高位言語で記述された入力プログラムから、該入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、関数やループの実行回数を基に処理からデータへのアクセス量を含む処理とデータの関係性を解析する。
演算器実現方式評価部120は、求めた処理に対し、アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、アクセラレータの使用リソース量、遅延、および通信帯域を評価する。
設計空間探索部130は、求めた処理とデータとについて、CPUとアクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について演算器実現方式評価部120の評価によって得られた結果を基に、入力プログラム全体の使用リソース量、通信帯域、および性能を求め、提示する。
このように設計支援装置100は、CPUとアクセラレータとへの割付の組合せの候補に対して、処理ごとに様々な演算器実現方式及びデータの配置を評価し、かつ、通信帯域などを見積ったうえで候補を提示することができる。これにより、設計の後戻りを防ぎ、設計期間の短縮を実現する。
次に、本実施の形態の効果について説明する。関連技術では、DIIなどの演算器実現方式は設計空間探索の探索パラメタとして利用されていなかった。また、演算器実現方式(例えばDII)が変わると、アクセラレータ14の1サイクルあたり必要となる入出力データ量が変わるため、CPU12とアクセラレータ14との間の通信で必要となる通信帯域が変化する。場合によっては要求通信帯域がハードウェアで実現可能な通信帯域を上回ることでアクセラレータ14に通信待ち時間が発生し、想定していたアプリケーション性能が出ないことがある。また、要求通信帯域は、データをCPU側メモリ16に配置するかアクセラレータ側メモリ18に配置するかにも大きく影響を受ける。このため、データの配置を考慮しない関連技術では、最適な設計にたどりつけなかったり、たどりつくのに時間がかかったりしていた。
これに対して、本実施の形態においては、処理ごとに様々な演算器実現方式及びデータの配置を評価し、かつ、通信帯域を見積ったうえで設計者に提示することで、設計の後戻りを防ぐことができる。すなわち、本実施の形態は、関連技術と比較して設計期間の短縮を実現するといえる。
尚、設計支援装置の各部は、ハードウェアとソフトウェアとの組み合わせを用いて実現すればよい。ハードウェアとソフトウェアとを組み合わせた形態では、RAM(random access memory)に設計支援プログラムが展開され、該プログラムに基づいて制御部(CPU(central processing unit))等のハードウェアを動作させることによって、各部を各種手段として実現する。また、該プログラムは、記録媒体に記録されて頒布されても良い。当該記録媒体に記録されたプログラムは、有線、無線、又は記録媒体そのものを介して、メモリに読込まれ、制御部等を動作させる。尚、記録媒体を例示すれば、オプティカルディスクや磁気ディスク、半導体メモリ装置、ハードディスクなどが挙げられる。
上記実施の形態を別の表現で説明すれば、設計支援装置として動作させるコンピュータを、RAMに展開された画像処理プログラムに基づき、プログラム解析部110、演算器実現方式評価部120、および設計空間探索部130として動作させることで実現することが可能である。
また、本発明の具体的な構成は前述の実施の形態に限られるものではなく、この発明の要旨を逸脱しない範囲の変更があってもこの発明に含まれる。
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記実施の形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
なお、本発明の設計支援装置100で得られた最適な処理配置に対して、図12に示すように高位合成装置300を用いて、処理間の実装方式の最適化を施すことができる。
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)CPUとアクセラレータとを含むコンピュータシステムを対象とする設計支援装置であって、
高位言語で記述された入力プログラムから、該入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、前記関数やループの実行回数を基に前記処理から前記データへのアクセス量を含む処理とデータの関係性を解析するプログラム解析手段と、 求めた前記処理に対し、前記アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、前記アクセラレータの使用リソース量、遅延、および通信帯域を評価する演算器実現方式評価手段と、
求めた前記処理と前記データとについて、前記CPUと前記アクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について前記演算器実現方式評価手段の評価によって得られた結果を基に、前記入力プログラム全体の使用リソース量、通信帯域、および性能を求め、提示する設計空間探索手段と、
を備える設計支援装置。
(付記2)前記演算器実現方式評価手段は、高位合成手段を用いて前記アクセラレータとしてパイプライン型演算器を生成し、生成したパイプライン型演算器の使用リソース量及び遅延を見積る、付記1に記載の設計支援装置。
(付記3)前記演算器実現方式評価手段は、前記設計空間探索手段が生成した演算器実現方式指定情報を基に、前記パイプライン型演算器を評価する、付記2に記載の設計支援装置。
(付記4)前記演算器実現方式指定情報は、前記パイプライン型演算器のデータ投入間隔(Data Initiation Interval)の指定を含む、付記3に記載の設計支援装置。
(付記5)前記演算器実現方式評価手段は、前記パイプライン型演算器の要求通信帯域を見積る、付記2に記載の設計支援装置。
(付記6)前記設計空間探索手段は、前記CPUと前記アクセラレータとの間の通信帯域を制約として設計空間を探索する、付記1に記載の設計支援装置。
(付記7)CPUとアクセラレータとを含むコンピュータシステムを対象とする設計支援装置で実行される設計支援方法であって、
プログラム解析手段が、高位言語で記述された入力プログラムから、該入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、前記関数やループの実行回数を基に前記処理から前記データへのアクセス量を含む処理とデータの関係性を解析し、 演算器実現方式評価手段が、求めた前記処理に対し、前記アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、前記アクセラレータの使用リソース量、遅延、および通信帯域を評価し、
設計空間探索手段が、求めた前記処理と前記データとについて、前記CPUと前記アクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について前記演算器実現方式評価手段の評価によって得られた結果を基に、前記入力プログラム全体の使用リソース量、通信帯域、および性能を求め、それらを設計者が選択可能に提示する、設計支援方法。
(付記8)前記演算器実現方式評価手段は、高位合成手段を用いて前記アクセラレータとしてパイプライン型演算器を生成し、生成したパイプライン型演算器の使用リソース量及び遅延を見積る、付記7に記載の設計支援方法。
(付記9)前記演算器実現方式評価手段は、前記設計空間探索手段が生成した演算器実現方式指定情報を基に、前記パイプライン型演算器を評価する、付記8に記載の設計支援方法。
(付記10)前記演算器実現方式指定情報は、前記パイプライン型演算器のデータ投入間隔(Data Initiation Interval)の指定を含む、付記9に記載の設計支援方法。
(付記11)前記演算器実現方式評価手段は、前記パイプライン型演算器の要求通信帯域を見積る、付記8に記載の設計支援方法。
(付記12)前記設計空間探索手段は、前記CPUと前記アクセラレータとの間の通信帯域を制約として設計空間を探索する、付記7に記載の設計支援方法。
(付記13)コンピュータに、CPUとアクセラレータとを含むコンピュータシステムの設計支援をさせる設計支援プログラムであって、前記コンピュータに、
高位言語で記述された入力プログラムから、該入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、前記関数やループの実行回数を基に前記処理から前記データへのアクセス量を含む処理とデータの関係性を解析するプログラム解析手順と、 求めた前記処理に対し、前記アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、前記アクセラレータの使用リソース量、遅延、および通信帯域を評価する演算器実現方式評価手順と、
求めた前記処理と前記データとについて、前記CPUと前記アクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について前記演算器実現方式評価手順での評価によって得られた結果を基に、前記入力プログラム全体の使用リソース量、通信帯域、および性能を求め、それらを設計者が選択可能に提示する設計空間探索手順と、
を実行させる設計支援プログラム。
(付記14)前記演算器実現方式評価手順は、前記コンピュータに、高位合成手段を用いて前記アクセラレータとしてパイプライン型演算器を生成させ、生成したパイプライン型演算器の使用リソース量及び遅延を見積らせる、付記13に記載の設計支援プログラム。
(付記15)前記演算器実現方式評価手順は、前記コンピュータに、前記設計空間探索手順で生成された演算器実現方式指定情報を基に、前記パイプライン型演算器を評価させる、付記14に記載の設計支援プログラム。
(付記16)前記演算器実現方式指定情報は、前記パイプライン型演算器のデータ投入間隔(Data Initiation Interval)の指定を含む、付記15に記載の設計支援プログラム。
(付記17)前記演算器実現方式評価手順は、前記コンピュータに、前記パイプライン型演算器の要求通信帯域を見積らせる、付記14に記載の設計支援プログラム。
(付記18)前記設計空間探索手順は、前記コンピュータに、前記CPUと前記アクセラレータとの間の通信帯域を制約として設計空間を探索させる、付記13に記載の設計支援プログラム。
この出願は、2016年2月1日に出願された日本出願特願2016−017051を基礎とする優先権を主張し、その開示の全てをここに取り込む。
10 コンピュータシステム(対象システム)
12 CPU
14 アクセラレータ
16 CPU側メモリ
18 アクセラレータ側メモリ
20 バス
100 設計支援装置
110 プログラム解析部(プロファイラ)
120 演算器実現方式評価部
122 高位合成部
130 設計空間探索部
131 処理割付列挙部
132 データ割付列挙部
133 演算器実現方式列挙部
134 解候補保存部
135 解候補表示部
136 面積見積部
137 性能見積部
138 通信帯域見積部
200 入力プログラム
210 処理
220 データ
230 処理とデータの関係性
250 対象HW制約
260 対象SW制約

Claims (10)

  1. CPUとアクセラレータとを含むコンピュータシステムを対象とする設計支援装置であって、
    高位言語で記述された入力プログラムから、該入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、前記関数やループの実行回数を基に前記処理から前記データへのアクセス量を含む処理とデータの関係性を解析するプログラム解析手段と、
    求めた前記処理に対し、前記アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、前記アクセラレータの使用リソース量、遅延、および通信帯域を評価する演算器実現方式評価手段と、
    求めた前記処理と前記データとについて、前記CPUと前記アクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について前記演算器実現方式評価手段の評価結果を基に、前記入力プログラム全体の使用リソース量、通信帯域、および性能を求め、提示する設計空間探索手段を、
    備える設計支援装置。
  2. 前記演算器実現方式評価手段は、高位合成手段を用いて前記アクセラレータとしてパイプライン型演算器を生成し、生成したパイプライン型演算器の使用リソース量及び遅延を見積る、請求項1に記載の設計支援装置。
  3. 前記演算器実現方式評価手段は、前記設計空間探索手段が生成した演算器実現方式指定情報を基に、前記パイプライン型演算器を評価する、請求項2に記載の設計支援装置。
  4. 前記演算器実現方式指定情報は、前記パイプライン型演算器のデータ投入間隔(Data Initiation Interval)の指定を含む、請求項3に記載の設計支援装置。
  5. 前記演算器実現方式評価手段は、前記パイプライン型演算器の要求通信帯域を見積る、請求項2に記載の設計支援装置。
  6. 前記設計空間探索手段は、前記CPUと前記アクセラレータとの間の通信帯域を制約として設計空間を探索する、請求項1に記載の設計支援装置。
  7. CPUとアクセラレータとを含むコンピュータシステムを対象とする設計支援装置で実行される設計支援方法であって、
    高位言語で記述された入力プログラムから、該入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、前記関数やループの実行回数を基に前記処理から前記データへのアクセス量を含む処理とデータの関係性を解析し、
    求めた前記処理に対し、前記アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、前記アクセラレータの使用リソース量、遅延、および通信帯域を評価し、
    求めた前記処理と前記データとについて、前記CPUと前記アクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について前記評価結果を基に、前記入力プログラム全体の使用リソース量、通信帯域、および性能を求め、提示する、設計支援方法。
  8. 前記アクセラレータとしてパイプライン型演算器を生成し、生成したパイプライン型演算器の使用リソース量及び遅延を見積る、請求項7に記載の設計支援方法。
  9. 演算器実現方式指定情報を基に、前記パイプライン型演算器を評価する、請求項8に記載の設計支援方法。
  10. コンピュータに、CPUとアクセラレータとを含むコンピュータシステムの設計支援をさせる設計支援プログラムであって、前記コンピュータに、
    高位言語で記述された入力プログラムから、該入力プログラム中に含まれる関数を含む処理と変数を含むデータとを抽出し、前記関数やループの実行回数を基に前記処理から前記データへのアクセス量を含む処理とデータの関係性を解析し、
    求めた前記処理に対し、前記アクセラレータの動作周波数や型番を含むハードウェア仕様を基に、前記アクセラレータの使用リソース量、遅延、および通信帯域を評価し、
    求めた前記処理と前記データとについて、前記CPUと前記アクセラレータとへの割付の組合せで表される候補を生成し、それぞれの候補について前記評価結果を基に、前記入力プログラム全体の使用リソース量、通信帯域、および性能を求め、提示する、
    ことを実行させる設計支援プログラム
JP2017565548A 2016-02-01 2017-01-31 設計支援装置、設計支援方法、および設計支援プログラム Active JP6763411B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2016017051 2016-02-01
JP2016017051 2016-02-01
PCT/JP2017/003311 WO2017135219A1 (ja) 2016-02-01 2017-01-31 設計支援装置、設計支援方法、および設計支援プログラムを格納した記録媒体

Publications (2)

Publication Number Publication Date
JPWO2017135219A1 JPWO2017135219A1 (ja) 2018-11-29
JP6763411B2 true JP6763411B2 (ja) 2020-09-30

Family

ID=59499778

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017565548A Active JP6763411B2 (ja) 2016-02-01 2017-01-31 設計支援装置、設計支援方法、および設計支援プログラム

Country Status (3)

Country Link
US (1) US10909021B2 (ja)
JP (1) JP6763411B2 (ja)
WO (1) WO2017135219A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6752393B1 (ja) 2019-11-19 2020-09-09 三菱電機株式会社 設計支援システムおよび設計支援プログラム
US11893484B2 (en) * 2019-12-06 2024-02-06 X Development Llc System and method for efficient parallel execution of physical simulations

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003067439A (ja) 2001-08-30 2003-03-07 Matsushita Electric Ind Co Ltd システムシミュレーション方法
US7340693B2 (en) * 2005-02-24 2008-03-04 Nick Martin System for designing re-programmable digital hardware platforms
JP5245727B2 (ja) 2008-11-04 2013-07-24 富士通株式会社 設計支援プログラム、設計支援装置、および設計支援方法
US8769357B1 (en) * 2009-07-23 2014-07-01 Gidel Ltd. System and method for evaluation of a field programmable gate array (FPGA)
JP5153904B2 (ja) 2010-09-22 2013-02-27 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムの動作推測方法及びプログラム
JP5772948B2 (ja) 2011-03-17 2015-09-02 富士通株式会社 システムおよびスケジューリング方法
JPWO2014002412A1 (ja) 2012-06-26 2016-05-30 日本電気株式会社 プログラム変換装置及び方法、処理切替方法、実行方式決定方法及びプログラム記憶媒体、プロセッサシステム並びに並列実行方法
JP2014106639A (ja) 2012-11-26 2014-06-09 Ricoh Co Ltd 高位合成装置、高位合成方法、及び高位合成プログラム

Also Published As

Publication number Publication date
US20190042389A1 (en) 2019-02-07
WO2017135219A1 (ja) 2017-08-10
JPWO2017135219A1 (ja) 2018-11-29
US10909021B2 (en) 2021-02-02

Similar Documents

Publication Publication Date Title
Ozdal et al. Energy efficient architecture for graph analytics accelerators
EP2707797B1 (en) Automatic load balancing for heterogeneous cores
US11221834B2 (en) Method and system of intelligent iterative compiler optimizations based on static and dynamic feedback
Xu et al. Graph processing on GPUs: Where are the bottlenecks?
Cattaneo et al. On how to accelerate iterative stencil loops: a scalable streaming-based approach
JP2010113482A (ja) 資源割付方法、プログラム、及び資源割付装置
US8615770B1 (en) System and method for dynamically spawning thread blocks within multi-threaded processing systems
US20190205487A1 (en) Information processing apparatus, computer-readable recording medium, and information processing method
Pezzarossa et al. Using dynamic partial reconfiguration of FPGAs in real-Time systems
JP6763411B2 (ja) 設計支援装置、設計支援方法、および設計支援プログラム
Seyoum et al. Automating the design flow under dynamic partial reconfiguration for hardware-software co-design in FPGA SoC
Pezzarossa et al. Can real-time systems benefit from dynamic partial reconfiguration?
US8959497B1 (en) System and method for dynamically spawning thread blocks within multi-threaded processing systems
JP4870956B2 (ja) 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部
Sirowy et al. Online SystemC emulation acceleration
US9032405B2 (en) Systems and method for assigning executable functions to available processors in a multiprocessing environment
Santambrogio et al. A novel soc design methodology combining adaptive software and reconfigurable hardware
JP2023180315A (ja) 変換プログラムおよび変換処理方法
Giorgi et al. Translating timing into an architecture: the synergy of COTSon and HLS (domain expertise—designing a computer architecture via HLS)
Anuradha et al. Efficient workload characterization technique for heterogeneous processors
Hsiung et al. Perfecto: A SystemC-based performance evaluation framework for dynamically partially reconfigurable systems
US10311188B2 (en) Circuit design support apparatus, circuit design support method, and computer readable medium
US20220222177A1 (en) Systems, apparatus, articles of manufacture, and methods for improved data transfer for heterogeneous programs
US20230367640A1 (en) Program execution strategies for heterogeneous computing systems
Zhong et al. Accelerating Data Analytics Kernels with Heterogeneous Computing

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180719

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191216

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200811

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200824

R150 Certificate of patent or registration of utility model

Ref document number: 6763411

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150