JP2019200736A - 調整装置、調整方法および調整プログラム - Google Patents

調整装置、調整方法および調整プログラム Download PDF

Info

Publication number
JP2019200736A
JP2019200736A JP2018096575A JP2018096575A JP2019200736A JP 2019200736 A JP2019200736 A JP 2019200736A JP 2018096575 A JP2018096575 A JP 2018096575A JP 2018096575 A JP2018096575 A JP 2018096575A JP 2019200736 A JP2019200736 A JP 2019200736A
Authority
JP
Japan
Prior art keywords
graph
adjustment
compiler
unit
processing
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.)
Granted
Application number
JP2018096575A
Other languages
English (en)
Other versions
JP7278716B2 (ja
Inventor
直行 角田
Naoyuki Tsunoda
直行 角田
晃平 菅原
Kohei Sugawara
晃平 菅原
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.)
Yahoo Japan Corp
Original Assignee
Yahoo Japan 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 Yahoo Japan Corp filed Critical Yahoo Japan Corp
Priority to JP2018096575A priority Critical patent/JP7278716B2/ja
Publication of JP2019200736A publication Critical patent/JP2019200736A/ja
Application granted granted Critical
Publication of JP7278716B2 publication Critical patent/JP7278716B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

【課題】PLDにおける処理の効率を改善する。【解決手段】本願に係る調整装置は、処理に用いる論理回路の組み合わせを変更可能な演算装置の各論理回路が発揮する機能の内容を示す複数の第1グラフと、前記演算装置に所定の処理を実行させる機械語を生成するコンパイラが、前記機械語を生成するための前記所定の処理の内容から生成する第2グラフとを取得する取得部と、前記取得部により取得された前記第1グラフの構造と前記第2グラフの構造、または、グラフ構造のパターンが類似するように、前記コンパイラ若しくは前記演算装置が発揮する機能を調整する調整部とを有することを特徴とする。【選択図】図1

Description

本発明は、調整装置、調整方法および調整プログラムに関する。
従来、複数の機能ブロックを有し、製造後に利用者が機能ブロックの構成を設定できるプログラマブルロジックデバイス(PLD)の技術が知られている。このようなPLDが有する構成の設定を容易にするため、高レベル言語からPLDが有する機能ブロックの構成をコンパイルする技術が知られている。
特開2013−165490号公報
"Assignment Decision Diagram for High-Level Synthesis",Viraphol Chaiyakul, Daniel D. Gajski <インターネット>http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.33.9420&rep=rep1&type=pdf(平成30年5月1日検索) "A deeper look into the LLVM code generator, Part 1, Eli Bendersky"<インターネット>https://eli.thegreenplace.net/2013/02/25/a-deeper-look-into-the-llvm-code-generator-part-1(平成30年5月1日検索) "QuickDough: A Rapid FPGA Accelerator Generation Framework using Soft Coarse-Grained Reconfigurable Array Overlay" Hayden Kwok-Hay So, <インターネット>https://www.eee.hku.hk/~hso/olaf2013/so_olaf.pdf(平成30年5月1日検索) "パーシステントホモロジーと機械学習" 平岡 裕章<インターネット>http://ibisml.org/archive/ibis2016/Hiraoka_IBIS2016.pdf(平成30年5月1日検索) "グラフ分解と固有値問題",川本 達郎, 日本神経回路学会誌 Vol.21,No.4(2014),162−169<インターネット>https://www.jstage.jst.go.jp/article/jnns/21/4/21_162/_pdf(平成30年5月1日検索)
しかしながら、上述した技術では、PLDにおける処理の効率を改善する余地がある。
例えば、上述した技術は、PLDに処理の処理を実行させるための構成をコンパイルしているに過ぎず、PLDが有する機能を効率的に利用する構成を実現しているとは言えない場合がある。
本願は、上記に鑑みてなされたものであって、PLDにおける処理の効率を改善することを目的とする。
本願に係る調整装置は、処理に用いる論理回路の組み合わせを変更可能な演算装置の各論理回路が発揮する機能の内容を示す複数の第1グラフと、前記演算装置に所定の処理を実行させる機械語を生成するコンパイラが、前記機械語を生成するための前記所定の処理の内容から生成する第2グラフとを取得する取得部と、前記取得部により取得された前記第1グラフの構造と前記第2グラフの構造、または、グラフ構造のパターンが類似するように、前記コンパイラ若しくは前記演算装置が発揮する機能を調整する調整部とを有することを特徴とする。
実施形態の一態様によれば、PLDにおける処理の効率を改善することができる。
図1は、実施形態に係る調整装置が実行する処理の一例を示す図である。 図2は、実施形態に係る調整装置の構成例を示す図である。 図3は、実施形態に係るDAGデータベースに登録される情報の一例を示す図である。 図4は、実施形態に係る機能分解グラフデータベースに登録される情報の一例を示す図である。 図5は、実施形態に係る調整処理の流れの一例を説明するフローチャートである。 図6は、ハードウェア構成の一例を示す図である。
以下に、本願に係る調整装置、調整方法および調整プログラムを実施するための形態(以下、「実施形態」と記載する。)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る調整装置、調整方法および調整プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
[実施形態]
〔1−1.演算装置の一例〕
まず、図1を用いて、調整装置が実行する調整処理の一例について説明する。なお、以下の説明では、調整処理により、所定の処理を示すコードを、所定の処理を演算装置100に実行させるための機械語へとコンパイルするコンパイラの調整を行う処理の一例について説明する。
図1は、実施形態に係る調整装置が実行する処理の一例を示す図である。図1では、調整装置10は、以下に説明する調整処理を実行する情報処理装置であり、例えば、サーバ装置やクラウドシステム等により実現される。
演算装置100は、以下に説明する調整処理を実行する演算装置である。ここで、演算装置100は、製造後に利用者が内部の論理回路を定義あるいは変更することができる集積回路であり、所謂PLD(Programmable Logic Device)である。より具体的には、演算装置100は、FPGA(Field-Programmable Gate Array)により実現される。また、演算装置100は、調整装置10および主記憶装置200と接続されている。
主記憶装置200は、各種データを記憶する記憶装置であり、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子等の記憶装置によって実現される。
例えば、演算装置100は、プロセッサ110、入出力装置120、メモリコントローラ130、FPGA150およびFPGA150を有する。プロセッサ110は、演算装置100が有するプロセッサであり、例えば、ARMアーキテクチャやPOWERアーキテクチャを採用したプロセッサ若しくはマイクロプロセッサである。そして、プロセッサ110は、FPGAと連携することで、各種の演算処理を実行する。
例えば、プロセッサ110は、プロセッサコア111とキャッシュメモリ112とを有する。プロセッサコア111は、論理演算や四則演算を実現する所謂コアであり、ALU(Arithmetic Logic Unit)から構成される算術論理演算装置により実現される。キャッシュメモリ112は、プロセッサ110が有する補助記憶装置である。より具体的には、キャッシュメモリ112は、主記憶装置200よりもプロセッサコア111が高速にアクセスすることができる記憶装置であり、所謂キャッシュメモリである。
入出力装置120は、演算装置100と調整装置10といった任意の外部装置との間の通信を中継する装置であり、所謂I/O(Input Output)装置である。例えば、入出力装置120は、USB(Universal Serial Bus)、イーサーネット、SD(Secure Digital)、UART(Universal Asynchronous Receiver/Transmitter)、SPI(Serial Peripheral Interface)、I2C、GPIO(General-purpose input/output)等、各種の通信規格に沿って外部装置との間の通信を制御する各種の入出力装置により実現される。
メモリコントローラ130は、演算装置100による主記憶装置200へのメモリアクセスを制御する。例えば、メモリコントローラ130は、ページング方式により主記憶装置200に格納されたデータの読み出しや書込みを行う。より具体的な例を挙げると、メモリコントローラ130は、プロセッサ110やFPGA150が処理を実行する際に用いる仮想ページ番号と、主記憶装置200が有する記憶領域を示す物理ページ番号とを対応付けたページテーブルを有し、ページテーブルを参照しながら、プロセッサ110やFPGA150が処理に用いる情報を主記憶装置200から読み出したり、主記憶装置200に対する情報の書込みを実現する。
例えば、図1に示す構成を有する場合、プロセッサコア111は、キャッシュメモリ112にアクセスし、演算対象となるデータの取得を試行する。そして、プロセッサコア111は、データがキャッシュメモリ112に格納されていない場合(すなわち、キャッシュミス)は、メモリコントローラ130に対して、演算対象となるデータが格納されている記憶領域のアドレスを通知する。より具体的には、プロセッサコア111は、演算処理に用いる仮想ページ番号をメモリコントローラ130に通知する。
このような場合、メモリコントローラ130は、ページテーブルを参照し、アクセス対象となる物理ページ番号を特定する。そして、メモリコントローラ130は、主記憶装置200が有する記憶領域のうち、特定した物理ページ番号が示す記憶領域に格納されたデータを読出す。その後、メモリコントローラ130は、読み出したデータと仮想ページ番号とを対応付けてキャッシュメモリ112に登録する。
また、メモリコントローラ130は、キャッシュメモリ112に登録されたデータを主記憶装置200に書き戻す場合(ライトバック)は、ページテーブルを参照し、書き戻しの対象となる情報と対応付けられた仮想ページ番号と対応する物理ページ番号を特定する。そして、メモリコントローラ130は、主記憶装置200の記憶領域のうち、特定した物理ページ番号が示す記憶領域に書き戻しの対象となる情報を格納する。
FPGA150は、調整装置10から提供される機械語に従って、回路構成を変更可能な演算装置である。例えば、FPGA150は、デジタル回路要素とアナログ回路要素とを含む。例えば、FPGA150には、所定の処理を実行可能な論理コンポーネントである複数の論理ブロックを有し、論理ブロック間が再構成可能な配線により相互接続されている。そして、FPGA150は、調整装置10から提供されるハードウェア記述言語(HDL:Hardware Description language)により、論理コンポーネント間の接続を変更することで、各種の処理をハードウェアにより実現することができる。すなわち、FPGA150は、処理に用いる論理回路の組み合わせを変更可能な演算装置として動作する。
〔1−2.調整処理の一例〕
ここで、FPGA150が有する各論理コンポーネントは、入力された情報に対して様々な処理を実行することができる。このような論理コンポーネントが実行可能な処理は、例えば、入力に対する出力の真理値表から生成される論理式を構成する回路により表すことができる。
一方、このようなFPGA150に所定の処理を実行させるため、処理を記述したコードからFPGA150に処理を実行させるためのHDLを生成するコンパイラが知られている。このようなコンパイラは、例えば、仮想機械をターゲットとした中間コード(ビットコード)を生成し、その仮想機械向けコードを特定のマシンの機械語に変換するLLVM(低レベル仮想機械)を用いて構成される(例えば、非特許文献3参照)。このようなLLVMにより構成されるコンパイラは、処理を記述したコードから処理のスケジューリングを行う。例えば、コンパイラは、処理を記述したコードから処理の流れを示すDAG(Directed Acyclic Graph)を生成し、生成したDAGを用いてスケジューリングを行う。
ここで、DAGが有する構造と、FPGAが有する各論理コンポーネントが発揮可能な機能の構造とが類似するように、コンパイラにコードをコンパイルさせた場合は、FPGA150の構成を処理に対して最適化することができるとも考えられる。より具体的には、所定の処理を実行する際にFPGAが構成する論理コンポーネントの機能の構造と、DAGが有する構造とが類似する場合は、HDLの最適化を実現できるとも考えられる。そこで、調整装置10は、以下の調整処理を実行する。
まず、調整装置10は、処理に用いる論理回路の組み合わせを変更可能な演算装置、すなわち、FPGA150の各論理回路が発揮する機能の内容を示す複数の第1グラフを取得する。例えば、調整装置10は、所定の処理を実行する際に、FPGA150上に構成されうる論理モジュールの構造を示す第1グラフを取得する。例えば、FPGA150は、接続を変更可能な複数の論理回路を有する。そこで、調整装置10は、FPGA150が所定の処理を実行する際に構成する1つまたは複数の機能を示す複数の第1グラフを生成する。この第1グラフは、グラフ構造だけではなく、顔認識処理、音声認識処理、言語処理、行列演算のような数学演算処理等のようなパッケージ化されたFPGA回路を表すグラフ構造のパターンでもよい。
例えば、調整装置10は、所定の処理を実行するために第1処理〜第5処理が必要となる場合、各処理のそれぞれをFPGA150が実現するために、FPGA150が1つまたは複数の論理回路を用いて実現する処理の論理を処理ごとに特定する。そして、調整装置10は、特定した各論理を示すグラフを第1グラフとして生成する。
また、調整装置10は、FPGA150に所定の処理を実行させる機械語を生成するコンパイラが、機械語を生成するための所定の処理の内容から生成する第2グラフを取得する。すなわち、調整装置10は、コンパイラが生成するDAGを第2グラフとして取得する。
そして、調整装置10は、第1グラフの構造と第2グラフの構造とが類似するように、コンパイラ、若しくは、FPGA150が発揮する機能を調整する。例えば、調整装置10は、コードからコンパイラが生成するDAGの構造が、FPGA150の機能を示す第1グラフの構造に近づくように、コンパイラを再構成する。このようなコンパイラの再構成は、例えば、コンパイラを構成するプログラムモジュールのうち、DAGを生成するためのプログラムモジュールを修正することで実現される。すなわち、調整装置10は、FPGA150用のコンパイラコンパイラとしての処理を実行する際に、第1グラフの構造と第2グラフの構造とが類似するように、コンパイラを構成する。
例えば、コンパイラがLLVMにより実現される場合、コンパイラは、IR(Intermediate Representation)ビルダを用いてコードから中間表現を生成し、オプティマイザを用いて中間表現からHDLを生成する。ここで、オプティマイザは、中間表現からHDLを生成する際に、DAGを生成し、生成したDAGを用いてHDLを生成する(例えば、非特許文献2参照)。そこで、調整装置10は、中間表現から生成されるDAGの構造が
第2グラフに近づくように、IRビルダやオプティマイザの論理を修正すればよい。
このような処理の結果、調整装置10は、FPGA150が有する機能の構造に類似する構造を有するDAGを用いて、コードをHDLにコンパイルするコンパイラを生成することができる。このようなコンパイラにより生成されたHDLは、FPGA150が有する論理コンポーネントの効率的な構成を実現することができる。この結果、調整装置10は、FPGA150等、PLDにおける処理の効率を改善することができる。
〔1−3.グラフの比較について〕
ここで、調整装置10は、第1グラフの構造と第2グラフの構造とが類似するように、コンパイラを調整するのであれば、任意の手法により、第1グラフの構造と第2グラフの構造とを比較してよい。例えば、調整装置10は、グラフが有するトポロジを比較する各種の手法を用いて、第1グラフの構造と第2グラフの構造とを比較し、比較結果に基づいて、第1グラフの構造と第2グラフの構造、または、グラフ構造のパターンが類似するように、コンパイラを調整すればよい。
例えば、複数のノードの集合で示される情報が有する構造を示す手法として、パーシステントホモロジーの技術が知られている。このようなパーシステントホモロジーの技術においては、所定のn次元空間上に配置された各ノードの大きさを変化させ、生じた穴の数、穴の大きさ、消滅した穴の数を特定する。そして、このような技術においては、特定した情報から穴の発生パラメータと穴の消滅パラメータとを特定し、特定した発生パラメータと消滅パラメータとから生成されるパーシステント図を、ノードの集合の構造が有する特徴として用いる(例えば、特許文献4参照)。
ここで、第1グラフから生成したパーシステント図と、第2グラフから生成したパーシステント図とが類似する場合(例えば、パーシステント図に現れる線形関数の傾きが類似する場合)は、第1グラフの構造と第2グラフの構造とが類似すると推定される。そこで、調整装置10は、第1グラフから生成したパーシステント図と、第2グラフから生成したパーシステント図とを生成し、生成したパーシステント図の比較結果に基づいて、第1グラフと第2グラフとが類似するか否かを判定してもよい。また、調整装置10は、第1グラフから生成したパーシステント図と、第2グラフから生成したパーシステント図とが類似するように、コンパイラの調整を行ってもよい。
また、上述した処理に係わらず、調整装置10は、他の手法を用いて、第1グラフの構造と第2グラフの構造とが類似するかを判定して良い。例えば、調整装置10は、第1グラフの位相と第2グラフの位相とを比較し、各位相が類似するようにコンパイラの調整を行ってもよい。
また、調整装置10は、第2グラフを複数の分解グラフに分解し、分解した分解グラフと第1グラフの構造とが類似するように、コンパイラの調整を行ってもよい。例えば、調整装置10は、FPGA150が発揮可能な機能を示す第1グラフであって、それぞれ異なる機能を示す複数の第1グラフを取得する。また、調整装置10は、グラフラプラシアンに基づいて、第2グラフを複数の分解グラフに分解する。そして、調整装置10は、複数の分解グラフの構造と、複数の第1グラフの構造とが類似するように、コンパイラを調整してもよい。
例えば、適切にグラフの分解を行うため、分解グラフ感のエッジの数がなるべく小さくなり、かつ、各分解グラフの大きさ(ノードの数)がなるべく等しくなるように、グラフを複数の分解グラフに分解するための様々な手法が提案されている。このような分解グラフに分解するための手法として、グラフ全体を示す隣接行列を生成し、生成した隣接行列に基づいたグラフラプラシアンを設定し、グラフラプラシアンに基づいて、グラフを分解するエッジを決定するスペクトラルクラスタリングの手法が知られている(例えば、非特許文献5参照)。
そこで、調整装置10は、第2グラフのグラフラプラシアンに基づき、第2グラフを複数の分解グラフに分解する。また、調整装置10は、FPGA150が発揮可能な各機能を示す複数の第1グラフを取得する。そして、調整装置10は、複数の分解グラフと、複数の第1グラフとを比較し、各グラフの構造が類似するように、コンパイラの調整を行う。例えば、調整装置10は、いずれかの第1グラフとの類似度が所定の範囲内に収まる分解グラフの数が最大化するように、コンパイラの調整を行ってもよい。また、調整装置10は、各分解グラフと、各第1グラフとの類似度の和が最大化するように、コンパイラの調整を行ってもよい。すなわち、調整装置10は、分解グラフの構造と第1グラフの構造との類似度を指標として、コンパイラの調整を実行する。
なお、調整装置10は、グラフ構造そのものの類似性のみならず、グラフ構造のパターンが類似するように、コンパイラやFPGA150の調整を行ってもよい。例えば、調整装置10は、各種のパターン解析技術を用いて、グラフ構造が有するパターンを特定し、特定したパターンが類似するように、コンパイラやFPGA150の調整を行ってもよい。
〔1−4.調整処理の一例について〕
次に、図1を用いて、調整装置10が実行する調整処理の一例を説明する。まず、調整装置10は、FPGA150が発揮可能な機能を示すグラフ(すなわち、第1グラフ)を機能分解グラフとして取得する。例えば、調整装置10は、所定の処理を実行するためにFPGA150が論理回路を用いて構成する各論理の内容を示す複数のグラフを機能分解グラフとして取得する。
また、調整装置10は、所定の処理を示すソースコードからコンパイラが生成したDAGを取得し、DAGの構造と機能分解グラフの構造とを比較する(ステップS2)。例えば、調整装置10は、所定の処理を示すソースコードをLLVMに入力し、LLVMが生成したDAGを取得する。また、調整装置10は、グラフラプラシアンに基づいて、DAGを複数の分解グラフDAG1〜DAG4に分解する。そして、調整装置10は、分解グラフDAG1〜DAG4と、機能分解グラフのそれぞれとを比較し、類似するか否かを判定する。
そして、調整装置10は、DAGと機能分解グラフとが相互に類似するように、コンパイラの調整を行う。例えば、調整装置10は、機能分解グラフと類似するDAGを生成するように、LLVMが有するIRビルダやオプティマイザの調整を行う。そして、調整装置10は、調整したコンパイラがソースコードから生成したHDLを用いて、FPGA150の設定を行う(ステップS4)。
〔1−5.FPGA側の調整について〕
ここで、上述した説明では、調整装置10は、コンパイラ側の調整を行うことで、FPGA150による処理の最適化を図った。しかしながら、実施形態は、これに限定されるものではない。例えば、調整装置10は、所定の処理を実行する際にFPGA150が発揮する機能を調整することで、処理の最適化を図ってもよい。
例えば、調整装置10は、所定の処理を実現するためにFPGA150に発揮させる機能の組み合わせを複数特定する。また、調整装置10は、特定した組み合わせごとに、機能分解グラフとの構造とDAGの構造とを比較する。そして、調整装置10は、特定した組み合わせのうち、機能分解グラフの構造がDAGの構造に最も近い機能分解グラフを特定する。その後、調整装置10は、特定した機能分解グラフの組が示す機能を発揮するように、FPGA150の設定を行ってもよい。また、調整装置10は、DAGの構造が、特定した組に含まれる機能分解グラフの構造と類似するように、コンパイラを調整してもよい。
すなわち、調整装置10は、LLVMの中間言語に合わせた最適化が行われるように、FPGA150の回路設計を調整し、FPGA150の回路設計に合わせた中間言語の最適化が行われるように、LLVMの調整を行う。より具体的には、調整装置10は、LLVMがスケジューリングにより生成するInstruction(中間表現)と、FPGA150が発揮する機能を示すPre Implemented Bitstreamとが相互に類似するように、LLVMやFPGA150の回路設計を調整する。このような処理の結果、FPGA150の回路設計をLLVMの中間言語、すなわち、抽象的なバックエンドに近づけることができる。この結果、調整装置10は、LLVMおよびFPGA150のボトルネックを相互に解消することができる。
〔2.生成装置の構成〕
以下、上記した調整処理を実現する調整装置10が有する機能構成の一例について説明する。図2は、実施形態に係る調整装置の構成例を示す図である。図2に示すように、調整装置10は、通信部20、記憶部30、および制御部40を有する。
通信部20は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部20は、所定のネットワークを介して演算装置100と接続され、演算装置100との間で各種通信を行う。
記憶部30は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。また、記憶部30は、DAGデータベース31、機能分解グラフデータベース32、およびLLVM33を記憶する。
DAGデータベース31には、LLVM33が生成するDAGの情報が登録される。例えば、図3は、実施形態に係るDAGデータベースに登録される情報の一例を示す図である。図3に示すように、DAGデータベース31には、「ノードID」、「機能」、「エッジ情報」、「条件情報」および「接続先」といった情報が対応付けて登録されている。
ここで、「ノードID」とは、DAGに含まれるノードを示す識別子である。また、「機能」とは、「ノードID」が示すノードと対応する機能(すなわち、処理の内容)を示す情報である。また、「エッジ情報」とは、ノード間を接続するエッジを示す識別子である。また、「条件情報」とは、対応付けられた「エッジ情報」が示すエッジにより接続された他のノードが示す機能を発揮させるための条件を示す情報である。また、「接続先」とは、対応付けられた「エッジ情報」が示すエッジにより接続された他のノードのノードIDである。
例えば、図3に示す例では、DAGデータベース31には、ノードID「N1」、機能「機能#1」、エッジ情報「E12」、条件情報「C1」および接続先「N2」が対応付けて登録されている。このような情報は、ノードID「N1」が示す処理の内容が「機能#1」であり、処理結果が条件情報「C1」を満たした場合に、エッジ情報「E12」が示すエッジにより接続されたノードID「N2」が示すノードの処理が実行される旨を示す。なお、図3に示す例では、「機能#1」や「C1」といった概念的な値を記載したが、実際には、実行する処理の内容を示す関数や文字列、条件を示す関数等が登録されることとなる。
図2に戻り、説明を続ける。機能分解グラフデータベース32には、機能分解グラフが登録される。例えば、図4は、実施形態に係る機能分解グラフデータベースに登録される情報の一例を示す図である。図4に示すように、機能分解グラフデータベース32には、「ノードID」、「機能」、「エッジ情報」、「条件情報」および「接続先」といった情報が登録される。すなわち、機能分解グラフデータベース32には、DAGデータベース31と同様に、FPGA150が構成可能な論理モジュールにおける処理の内容を示すグラフの情報が登録される。
図2に戻り、説明を続ける。LLVM33は、所定のソースコードが示す処理を演算装置100のFPGA150に実行させるためのHDLを生成するコンパイラである。
制御部40は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等のプロセッサによって、調整装置10内部の記憶装置に記憶されている各種プログラムがRAM等を作業領域として実行されることにより実現される。また、制御部40は、コントローラ(controller)であり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現されてもよい。
図2に示すように、制御部40は、取得部41、分解部42、比較部43、調整部44、および設定部45を有する。
取得部41は、処理に用いる論理回路の組み合わせを変更可能な演算装置の各論理回路が発揮する機能の内容を示す複数の第1グラフと、演算装置に所定の処理を実行させる機械語を生成するコンパイラが、機械語を生成するための前記所定の処理の内容から生成する第2グラフとを取得する。例えば、取得部41は、利用者が利用する端末装置(図示は省略)から、所定の処理を示すソースコードを受付ける。このような場合、取得部41は、FPGA150が所定の処理を実行する際に構成する論理コンポーネントの組み合わせを特定する。そして、取得部41は、生成した論理コンポーネントにおける処理の内容を示すグラフを機能分解グラフとして生成する。すなわち、取得部41は、複数の機能分解グラフを生成する。そして、取得部41は、生成した機能分解グラフを機能分解グラフデータベース32に登録する。
また、取得部41は、LLVM33を読出し、受付けたソースコードをLLVM33に入力する。このような場合、LLVM33は、処理を実行するためのHDLを生成するが、その際に実行するスケジューリングにおいて中間表現を生成する。そこで、取得部41は、LLVM33がソースコードから生成した中間表現を取得し、取得した中間表現を示すグラフ、すなわち、DAGを取得する。そして、取得部41は、取得したDAGをDAGデータベース31に登録する。
分解部42は、グラフラプラシアンに基づいて、第2グラフを複数の分解グラフに分解する。例えば、分解部42は、DAGデータベース31を参照し、DAGを取得する。このような場合、分解部42は、DAGのグラフラプラシアンを生成し、生成したグラフラプラシアンを用いて、DAGを複数の分解グラフに分解する。例えば、分解部42は、非特許文献5に開示された手法を用いて、分解グラフを生成する。
比較部43は、DAGと機能分解グラフとの構造を比較する。例えば、比較部43は、分解部42がDAGを分解することで生成した複数の分解グラフを取得する。このような場合、比較部43は、機能分解グラフデータベース32を参照し、各機能分解グラフを取得する。そして、比較部43は、各分解グラフの構造と、各機能分解グラフの構造とを比較し、類似度を算出する。
例えば、比較部43は、非特許文献4に開示された技術を用いて、各グラフのパーシステント図を生成し、生成したパーシステント図の類似度を算出する。例えば、比較部43は、パーシステント図に現れる線形関数の傾きの値の類似度を算出する。
調整部44は、第1グラフの構造と第2グラフの構造、または、グラフ構造のパターンが類似するように、コンパイラ若しくは演算装置が発揮する機能を調整する。例えば、調整部44は、比較部43による各分解グラフの構造と、各機能分解グラフの構造とを比較結果を取得する。より具体的には、調整部44は、各分解グラフの構造と、各機能分解グラフの構造との類似度を取得する。
例えば、調整部44は、各分解グラフの構造と各機能分解グラフの構造との類似度の総和が高くなるように、LLVM33が有するIRビルダやオプティマイザを修正する。なお、調整部44は、IRビルダやオプティマイザの修正内容と、修正した結果新たにLLVM33が生成した中間表現に基づくDAGの分解グラフの構造と、各機能分解グラフの構造との類似度との間の関係に基づいて、IRビルダやオプティマイザの修正方針を決定してもよい。すなわち、調整部44は、各分解グラフの構造と各機能分解グラフの構造との類似度の総和が高くなるように、LLVM33から新たなLLVMを生成する。
なお、調整部44は、各分解グラフの構造と各機能分解グラフの構造との類似度の総和が高くなるように、FPGA150が構成する論理モジュールの構造を修正してもよい。例えば、調整部44は、FPGA150に構成させる論理モジュールを、各分解グラフの構造と類似する構造を有する論理モジュールに限定させてもよい。その後、調整部44は、新たなLLVMを記憶部30に登録する。
設定部45は、調整部44により調整されたLLVMを用いて、FPGA150の設定を行う。例えば、設定部45は、LLVMを用いて、ソースコードをDHLに変換し、変換後のHDLを演算装置100へと提供することで、FPGA150に所定の処理を実行させるための論理コンポーネントを設定する。
〔3.生成装置が実行する処理の流れの一例〕
次に、図5を用いて、調整装置10が実行する提供処理の流れの一例について説明する。図5は、実施形態に係る調整処理の流れの一例を説明するフローチャートである。まず、調整装置10は、FPGAの機能分解グラフを取得する(ステップS101)。また、調整装置10は、コンパイラであるLLVMの中間表現に基づくDAGが有する構造と機能分解グラフが有する構造とを比較する(ステップS102)。
そして、調整装置10は、各グラフの構造が類似するようにコンパイラを構成する(ステップS103)。その後、調整装置10は、調整したコンパイラを用いて、ソースコードを機械語に変換し(ステップS104)、変換後の機械語を用いてFPGAの設定を行い(ステップS105)、処理を終了する。
〔4.変形例〕
上記では、調整装置10による提供処理の一例について説明した。しかしながら、実施形態は、これに限定されるものではない。以下、調整装置10が実行する調整処理のバリエーションについて説明する。
〔4−1.装置構成〕
上述した例では、調整装置10は、調整装置10内で調整処理を実行した。しかしながら、実施形態は、これに限定されるものではない。例えば、調整装置10は、演算装置100の設定を行うフロントエンドサーバと、調整処理を実行するバックエンドサーバとにより実現されてもよい。このような場合、例えば、フロントエンドサーバは、図2に示す設定部45を有し、バックエンドサーバは、図2に示す取得部41、分解部42、比較部43、および調整部44を有する。また、調整装置10は、DAGデータベース31や機能分解グラフデータベース32を外部のストレージサーバに記憶させてもよい。
〔4−2.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文章中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
また、上記してきた各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
〔4−3.プログラム〕
また、上述してきた実施形態に係る調整装置10は、例えば図6に示すような構成のコンピュータ1000によって実現される。図6は、ハードウェア構成の一例を示す図である。コンピュータ1000は、出力装置1010、入力装置1020と接続され、演算装置1030、一次記憶装置1040、二次記憶装置1050、出力IF(Interface)1060、入力IF1070、ネットワークIF1080がバス1090により接続された形態を有する。
演算装置1030は、一次記憶装置1040や二次記憶装置1050に格納されたプログラムや入力装置1020から読み出したプログラム等に基づいて動作し、各種の処理を実行する。一次記憶装置1040は、RAM等、演算装置1030が各種の演算に用いるデータを一次的に記憶するメモリ装置である。また、二次記憶装置1050は、演算装置1030が各種の演算に用いるデータや、各種のデータベースが登録される記憶装置であり、ROM(Read Only Memory)、HDD、フラッシュメモリ等により実現される。
出力IF1060は、モニタやプリンタといった各種の情報を出力する出力装置1010に対し、出力対象となる情報を送信するためのインタフェースであり、例えば、USB(Universal Serial Bus)やDVI(Digital Visual Interface)、HDMI(登録商標)(High Definition Multimedia Interface)といった規格のコネクタにより実現される。また、入力IF1070は、マウス、キーボード、およびスキャナ等といった各種の入力装置1020から情報を受信するためのインタフェースであり、例えば、USB等により実現される。
なお、入力装置1020は、例えば、CD(Compact Disc)、DVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等から情報を読み出す装置であってもよい。また、入力装置1020は、USBメモリ等の外付け記憶媒体であってもよい。
ネットワークIF1080は、ネットワークNを介して他の機器からデータを受信して演算装置1030へ送り、また、ネットワークNを介して演算装置1030が生成したデータを他の機器へ送信する。
演算装置1030は、出力IF1060や入力IF1070を介して、出力装置1010や入力装置1020の制御を行う。例えば、演算装置1030は、入力装置1020や二次記憶装置1050からプログラムを一次記憶装置1040上にロードし、ロードしたプログラムを実行する。
例えば、コンピュータ1000が調整装置10として機能する場合、コンピュータ1000の演算装置1030は、一次記憶装置1040上にロードされたプログラムまたはデータを実行することにより、制御部40の機能を実現する。コンピュータ1000のCPU1100は、これらのプログラムまたはデータを記録媒体1800から読み取って実行するが、他の例として、他の装置からネットワークNを介してこれらのプログラムを取得してもよい。
〔5.効果〕
上述したように、調整装置10は、処理に用いる論理回路の組み合わせを変更可能な演算装置の各論理回路が発揮する機能の内容を示す複数の第1グラフと、演算装置に所定の処理を実行させる機械語を生成するコンパイラが、機械語を生成するための所定の処理の内容から生成する第2グラフとを取得する。そして、調整装置10は、取得された第1グラフの構造と第2グラフの構造、または、グラフ構造のパターンが類似するように、コンパイラ若しくは演算装置が発揮する機能を調整する。このように、調整装置10は、PLDの論理設計と、PLDの設定を行うコンパイラが中間表現を生成する際に用いる論理設計とを近づけることで、PLDの設定を最適化するので、PLDにおける処理の効率を改善できる。
また、調整装置10は、グラフラプラシアンに基づいて、第2グラフを複数の分解グラフに分解し、複数の第1グラフの構造と複数の分解グラフの構造、または、グラフ構造のパターンが類似するように、コンパイラ若しくは演算装置が発揮する機能を調整する。また、調整装置10は、複数の第1グラフを取得し、複数の分解グラフの構造と複数の第1グラフの構造、または、グラフ構造のパターンが類似するように、コンパイラ若しくは演算装置が発揮する機能を調整する。また、調整装置10は、スケジューリングのためにコンパイラが中間表現から生成する第2グラフを取得する。また、調整装置10は、低レベル仮想機械を用いて構成されたコンパイラが生成する第2グラフを取得する。このため、調整装置10は、PLDの設定を最適化するので、PLDにおける処理の効率を改善できる。
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
また、上記してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、生成部は、生成手段や生成回路に読み替えることができる。
10 調整装置
20 通信部
30 記憶部
31 DAGデータベース
32 機能分解グラフデータベース
33 LLVM
40 制御部
41 取得部
42 分解部
43 比較部
44 調整部
45 設定部
100 演算装置
150 FPGA

Claims (7)

  1. 処理に用いる論理回路の組み合わせを変更可能な演算装置の各論理回路が発揮する機能の内容を示す複数の第1グラフと、前記演算装置に所定の処理を実行させる機械語を生成するコンパイラが、前記機械語を生成するための前記所定の処理の内容から生成する第2グラフとを取得する取得部と、
    前記取得部により取得された前記第1グラフの構造と前記第2グラフの構造、または、グラフ構造のパターンが類似するように、前記コンパイラ若しくは前記演算装置が発揮する機能を調整する調整部と
    を有することを特徴とする調整装置。
  2. グラフラプラシアンに基づいて、前記第2グラフを複数の分解グラフに分解する分解部
    を有し、
    前記調整部は、複数の前記第1グラフの構造と、複数の前記分解グラフの構造、または、グラフ構造のパターンが類似するように、前記コンパイラ若しくは前記演算装置が発揮する機能を調整する
    ことを特徴とする請求項1に記載の調整装置。
  3. 前記取得部は、複数の第1グラフを取得し、
    前記調整部は、複数の分解グラフの構造と複数の前記第1グラフの構造、または、グラフ構造のパターンが類似するように、前記コンパイラ若しくは前記演算装置が発揮する機能を調整する
    ことを特徴とする請求項1または2に記載の調整装置。
  4. 前記取得部は、スケジューリングのために前記コンパイラが中間表現から生成する第2グラフを取得する
    ことを特徴とする請求項1〜3のうちいずれか1つに記載の調整装置。
  5. 前記取得部は、低レベル仮想機械を用いて構成されたコンパイラが生成する第2グラフを取得する
    ことを特徴とする請求項1〜4のうちいずれか1つに記載の調整装置。
  6. 調整装置が実行する調整方法であって、
    処理に用いる論理回路の組み合わせを変更可能な演算装置の各論理回路が発揮する機能の内容を示す複数の第1グラフと、前記演算装置に所定の処理を実行させる機械語を生成するコンパイラが、前記機械語を生成するための前記所定の処理の内容から生成する第2グラフとを取得する取得工程と、
    前記取得工程により取得された前記第1グラフの構造と前記第2グラフの構造、または、グラフ構造のパターンが類似するように、前記コンパイラ若しくは前記演算装置が発揮する機能を調整する調整工程と
    を含むことを特徴とする調整方法。
  7. 処理に用いる論理回路の組み合わせを変更可能な演算装置の各論理回路が発揮する機能の内容を示す複数の第1グラフと、前記演算装置に所定の処理を実行させる機械語を生成するコンパイラが、前記機械語を生成するための前記所定の処理の内容から生成する第2グラフとを取得する取得手順と、
    前記取得手順により取得された前記第1グラフの構造と前記第2グラフの構造、または、グラフ構造のパターンが類似するように、前記コンパイラ若しくは前記演算装置が発揮する機能を調整する調整手順と
    をコンピュータに実行させるための調整プログラム。
JP2018096575A 2018-05-18 2018-05-18 調整装置、調整方法および調整プログラム Active JP7278716B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018096575A JP7278716B2 (ja) 2018-05-18 2018-05-18 調整装置、調整方法および調整プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018096575A JP7278716B2 (ja) 2018-05-18 2018-05-18 調整装置、調整方法および調整プログラム

Publications (2)

Publication Number Publication Date
JP2019200736A true JP2019200736A (ja) 2019-11-21
JP7278716B2 JP7278716B2 (ja) 2023-05-22

Family

ID=68611279

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018096575A Active JP7278716B2 (ja) 2018-05-18 2018-05-18 調整装置、調整方法および調整プログラム

Country Status (1)

Country Link
JP (1) JP7278716B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004334429A (ja) * 2003-05-06 2004-11-25 Hitachi Ltd 論理回路及びその論理回路上で実行するプログラム
JP2013165490A (ja) * 2012-02-09 2013-08-22 Altera Corp 高レベル言語を用いるプログラマブルデバイスの構成
JP2014524607A (ja) * 2011-08-02 2014-09-22 インターナショナル・ビジネス・マシーンズ・コーポレーション 異種構成コンピュータ上でハイ・レベルのプログラムをコンパイルし、実行するための技法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004334429A (ja) * 2003-05-06 2004-11-25 Hitachi Ltd 論理回路及びその論理回路上で実行するプログラム
JP2014524607A (ja) * 2011-08-02 2014-09-22 インターナショナル・ビジネス・マシーンズ・コーポレーション 異種構成コンピュータ上でハイ・レベルのプログラムをコンパイルし、実行するための技法
JP2013165490A (ja) * 2012-02-09 2013-08-22 Altera Corp 高レベル言語を用いるプログラマブルデバイスの構成

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CHATTOPADHYAY, A., ET AL: "High-Level Modelling and Exploration of Coarse-Grained Re-Configurable Architecture", IN PROCEEDINGS OF THE CONFERENCE ON DESIGN, AUTOMATION AND TEST IN EUROPE (DATE '08) [ONLINE], JPN7021004141, 10 March 2008 (2008-03-10), pages 1334 - 1339, XP058288867, ISSN: 0004607482, DOI: 10.1145/1403375.1403697 *
LEE, G ET AL.: ""Automatic mapping of application to coarse-grained reconfigurable architecture based on high-level", 2008 INTERNATIONAL SOC DESIGN CONFERENCE [ONLINE], JPN6022012973, 2008, pages 395 - 398, ISSN: 0004864528 *
川本達郎: ""グラフ分割と固有値問題"", 日本神経回路学会誌, vol. 第21巻, 第4号, JPN6021039064, 2015, pages 162 - 169, ISSN: 0004864527 *
橋本識弘 ほか: ""部分マッチングを考慮しMISO構造に対応した専用演算器合成手法"", 電子情報通信学会技術研究報告, vol. 第109巻, 第394号, JPN6021039065, 2010, JP, pages 89 - 94, ISSN: 0004864526 *

Also Published As

Publication number Publication date
JP7278716B2 (ja) 2023-05-22

Similar Documents

Publication Publication Date Title
WO2018171717A1 (zh) 面向神经网络处理器的自动化设计方法和系统
JP5763783B2 (ja) 正規表現をコンパイルするための方法および装置
JP5381710B2 (ja) ε遷移を含まない非決定性有限オートマトン生成システムと方法およびプログラム
US20220222404A1 (en) Optimization of parameters for synthesis of a topology using a discriminant function module
US11321625B2 (en) Quantum circuit optimization using machine learning
JP6070936B2 (ja) 情報処理装置、情報処理方法及びプログラム
JP2014506692A (ja) Fsmを実装するための専用要素の利用
JP6933736B2 (ja) 知識グラフにおけるデータモデルを取得する方法、装置、機器及び媒体
WO2018066074A1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
CN107341210B (zh) Hadoop平台下的C-DBSCAN-K聚类算法
CN116822422B (zh) 数字逻辑电路的分析优化方法及相关设备
JP2013524303A (ja) 設計空間探索を加速する方法及び装置
JPH07160744A (ja) 自律進化型ハードウェア設計システム
WO2021161429A1 (ja) プログラム生成装置、プログラム生成方法及びプログラム
US20220207226A1 (en) Generation of hardware design using a constraint solver module for topology synthesis
JP5157534B2 (ja) 動作合成装置、および、プログラム
US20200234120A1 (en) Generation of tensor data for learning based on a ranking relationship of labels
US8904371B2 (en) Data handling among actors in a dataflow programming environment
JP7278716B2 (ja) 調整装置、調整方法および調整プログラム
JP7230349B2 (ja) 設計データ分析のためのシステムおよび方法
JP6173644B1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
JPWO2018066083A1 (ja) 学習プログラム、情報処理装置および学習方法
JP6364332B2 (ja) 仕様生成方法、仕様生成装置、及びプログラム
CN114239858A (zh) 一种用于分布式图模型的图学习方法及设备
JP2018041301A (ja) Rtl最適化システム及びrtl最適化プログラム

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20191101

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20191108

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200917

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210915

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211005

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211206

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220405

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220705

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20220705

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20220713

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20220719

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20220902

C211 Notice of termination of reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C211

Effective date: 20220906

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20221018

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20221108

C13 Notice of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: C13

Effective date: 20221220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230220

C23 Notice of termination of proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C23

Effective date: 20230307

C03 Trial/appeal decision taken

Free format text: JAPANESE INTERMEDIATE CODE: C03

Effective date: 20230411

C30A Notification sent

Free format text: JAPANESE INTERMEDIATE CODE: C3012

Effective date: 20230411

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230510

R150 Certificate of patent or registration of utility model

Ref document number: 7278716

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350