JP7278716B2 - Adjustment device, adjustment method and adjustment program - Google Patents
Adjustment device, adjustment method and adjustment program Download PDFInfo
- Publication number
- JP7278716B2 JP7278716B2 JP2018096575A JP2018096575A JP7278716B2 JP 7278716 B2 JP7278716 B2 JP 7278716B2 JP 2018096575 A JP2018096575 A JP 2018096575A JP 2018096575 A JP2018096575 A JP 2018096575A JP 7278716 B2 JP7278716 B2 JP 7278716B2
- Authority
- JP
- Japan
- Prior art keywords
- graph
- graphs
- adjustment
- decomposition
- unit
- 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
Links
- 238000000034 method Methods 0.000 title claims description 51
- 238000012545 processing Methods 0.000 claims description 76
- 238000000354 decomposition reaction Methods 0.000 claims description 64
- 230000006870 function Effects 0.000 claims description 41
- 238000003860 storage Methods 0.000 description 36
- 230000008569 process Effects 0.000 description 26
- 238000010586 diagram Methods 0.000 description 23
- 230000002085 persistent effect Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 102100025682 Dystroglycan 1 Human genes 0.000 description 3
- 101000855983 Homo sapiens Dystroglycan 1 Proteins 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000002688 persistence Effects 0.000 description 3
- 238000004549 pulsed laser deposition Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008034 disappearance Effects 0.000 description 2
- 238000012886 linear function Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 101100412093 Schizosaccharomyces pombe (strain 972 / ATCC 24843) rec16 gene Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000001747 exhibiting effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003595 spectral effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Description
本発明は、調整装置、調整方法および調整プログラムに関する。 The present invention relates to an adjusting device, an adjusting method and an adjusting program.
従来、複数の機能ブロックを有し、製造後に利用者が機能ブロックの構成を設定できるプログラマブルロジックデバイス(PLD)の技術が知られている。このようなPLDが有する構成の設定を容易にするため、高レベル言語からPLDが有する機能ブロックの構成をコンパイルする技術が知られている。 2. Description of the Related Art Conventionally, a programmable logic device (PLD) technology is known that has a plurality of functional blocks and allows a user to set the configuration of the functional blocks after manufacturing. In order to facilitate the setting of the configuration of such PLD, a technology is known that compiles the configuration of functional blocks of PLD from a high-level language.
しかしながら、上述した技術では、PLDにおける処理の効率を改善する余地がある。 However, the techniques described above leave room for improving the efficiency of processing in PLDs.
例えば、上述した技術は、PLDに所定の処理を実行させるための構成をコンパイルしているに過ぎず、PLDが有する機能を効率的に利用する構成を実現しているとは言えない場合がある。 For example, the above-described technology merely compiles a configuration for causing the PLD to execute a predetermined process, and may not realize a configuration that efficiently uses the functions of the PLD. .
本願は、上記に鑑みてなされたものであって、PLDにおける処理の効率を改善することを目的とする。 The present application has been made in view of the above, and aims to improve the efficiency of processing in PLDs.
本願に係る調整装置は、処理に用いる論理回路の組み合わせを変更可能な演算装置の各論理回路が発揮する機能の内容を示す複数の第1グラフと、前記演算装置に所定の処理を実行させる機械語を生成するコンパイラが、前記機械語を生成するための前記所定の処理の内容から生成する第2グラフとを取得する取得部と、前記取得部により取得された前記第1グラフの構造と前記第2グラフの構造、または、グラフ構造のパターンが類似するように、前記コンパイラ若しくは前記演算装置が発揮する機能を調整する調整部とを有することを特徴とする。 The adjustment device according to the present application includes a plurality of first graphs showing the contents of functions exhibited by each logic circuit of an arithmetic device capable of changing the combination of logic circuits used for processing, and a machine that causes the arithmetic device to execute a predetermined process. A compiler for generating a word acquires a second graph generated from the content of the predetermined processing for generating the machine language; an acquisition unit for acquiring a structure of the first graph acquired by the acquisition unit; It is characterized by comprising an adjustment unit that adjusts the function exhibited by the compiler or the arithmetic unit so that the structure of the second graph or the pattern of the graph structure is similar.
実施形態の一態様によれば、PLDにおける処理の効率を改善することができる。 According to one aspect of an embodiment, efficiency of processing in a PLD can be improved.
以下に、本願に係る調整装置、調整方法および調整プログラムを実施するための形態(以下、「実施形態」と記載する。)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る調整装置、調整方法および調整プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。 EMBODIMENT OF THE INVENTION Below, the form (it describes as "embodiment" hereafter.) for implementing the adjusting device, the adjusting method, and the adjusting program concerning this application is demonstrated in detail, referring drawings. Note that the adjusting device, adjusting method, and adjusting program according to the present application are not limited to this embodiment. Also, in each of the following embodiments, the same parts are denoted by the same reference numerals, and overlapping descriptions are omitted.
[実施形態]
〔1-1.演算装置の一例〕
まず、図1を用いて、調整装置が実行する調整処理の一例について説明する。なお、以下の説明では、調整処理により、所定の処理を示すコードを、所定の処理を演算装置100に実行させるための機械語へとコンパイルするコンパイラの調整を行う処理の一例について説明する。
[Embodiment]
[1-1. Example of computing device]
First, an example of adjustment processing executed by the adjustment device will be described with reference to FIG. In the following description, an example of a process of adjusting a compiler that compiles a code indicating a predetermined process into a machine language for causing the
図1は、実施形態に係る調整装置が実行する処理の一例を示す図である。図1では、調整装置10は、以下に説明する調整処理を実行する情報処理装置であり、例えば、サーバ装置やクラウドシステム等により実現される。
FIG. 1 is a diagram illustrating an example of processing executed by an adjustment device according to an embodiment; In FIG. 1, the
演算装置100は、以下に説明する調整処理を実行する演算装置である。ここで、演算装置100は、製造後に利用者が内部の論理回路を定義あるいは変更することができる集積回路であり、所謂PLD(Programmable Logic Device)である。より具体的には、演算装置100は、FPGA(Field-Programmable Gate Array)により実現される。また、演算装置100は、調整装置10および主記憶装置200と接続されている。
The
主記憶装置200は、各種データを記憶する記憶装置であり、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子等の記憶装置によって実現される。
The
例えば、演算装置100は、プロセッサ110、入出力装置120、メモリコントローラ130、FPGA150およびFPGA150を有する。プロセッサ110は、演算装置100が有するプロセッサであり、例えば、ARMアーキテクチャやPOWERアーキテクチャを採用したプロセッサ若しくはマイクロプロセッサである。そして、プロセッサ110は、FPGAと連携することで、各種の演算処理を実行する。
For example,
例えば、プロセッサ110は、プロセッサコア111とキャッシュメモリ112とを有する。プロセッサコア111は、論理演算や四則演算を実現する所謂コアであり、ALU(Arithmetic Logic Unit)から構成される算術論理演算装置により実現される。キャッシュメモリ112は、プロセッサ110が有する補助記憶装置である。より具体的には、キャッシュメモリ112は、主記憶装置200よりもプロセッサコア111が高速にアクセスすることができる記憶装置であり、所謂キャッシュメモリである。
For example,
入出力装置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)等、各種の通信規格に沿って外部装置との間の通信を制御する各種の入出力装置により実現される。
The input/
メモリコントローラ130は、演算装置100による主記憶装置200へのメモリアクセスを制御する。例えば、メモリコントローラ130は、ページング方式により主記憶装置200に格納されたデータの読み出しや書込みを行う。より具体的な例を挙げると、メモリコントローラ130は、プロセッサ110やFPGA150が処理を実行する際に用いる仮想ページ番号と、主記憶装置200が有する記憶領域を示す物理ページ番号とを対応付けたページテーブルを有し、ページテーブルを参照しながら、プロセッサ110やFPGA150が処理に用いる情報を主記憶装置200から読み出したり、主記憶装置200に対する情報の書込みを実現する。
The memory controller 130 controls memory access to the
例えば、図1に示す構成を有する場合、プロセッサコア111は、キャッシュメモリ112にアクセスし、演算対象となるデータの取得を試行する。そして、プロセッサコア111は、データがキャッシュメモリ112に格納されていない場合(すなわち、キャッシュミス)は、メモリコントローラ130に対して、演算対象となるデータが格納されている記憶領域のアドレスを通知する。より具体的には、プロセッサコア111は、演算処理に用いる仮想ページ番号をメモリコントローラ130に通知する。
For example, in the configuration shown in FIG. 1, the processor core 111 accesses the
このような場合、メモリコントローラ130は、ページテーブルを参照し、アクセス対象となる物理ページ番号を特定する。そして、メモリコントローラ130は、主記憶装置200が有する記憶領域のうち、特定した物理ページ番号が示す記憶領域に格納されたデータを読出す。その後、メモリコントローラ130は、読み出したデータと仮想ページ番号とを対応付けてキャッシュメモリ112に登録する。
In such a case, the memory controller 130 refers to the page table and identifies the physical page number to be accessed. Memory controller 130 then reads the data stored in the storage area indicated by the identified physical page number among the storage areas of
また、メモリコントローラ130は、キャッシュメモリ112に登録されたデータを主記憶装置200に書き戻す場合(ライトバック)は、ページテーブルを参照し、書き戻しの対象となる情報と対応付けられた仮想ページ番号と対応する物理ページ番号を特定する。そして、メモリコントローラ130は、主記憶装置200の記憶領域のうち、特定した物理ページ番号が示す記憶領域に書き戻しの対象となる情報を格納する。
In addition, when writing back data registered in the
FPGA150は、調整装置10から提供される機械語に従って、回路構成を変更可能な演算装置である。例えば、FPGA150は、デジタル回路要素とアナログ回路要素とを含む。例えば、FPGA150には、所定の処理を実行可能な論理コンポーネントである複数の論理ブロックを有し、論理ブロック間が再構成可能な配線により相互接続されている。そして、FPGA150は、調整装置10から提供されるハードウェア記述言語(HDL:Hardware Description language)により、論理コンポーネント間の接続を変更することで、各種の処理をハードウェアにより実現することができる。すなわち、FPGA150は、処理に用いる論理回路の組み合わせを変更可能な演算装置として動作する。
The
〔1-2.調整処理の一例〕
ここで、FPGA150が有する各論理コンポーネントは、入力された情報に対して様々な処理を実行することができる。このような論理コンポーネントが実行可能な処理は、例えば、入力に対する出力の真理値表から生成される論理式を構成する回路により表すことができる。
[1-2. Example of adjustment processing]
Here, each logic component of the
一方、このようなFPGA150に所定の処理を実行させるため、処理を記述したコードからFPGA150に処理を実行させるためのHDLを生成するコンパイラが知られている。このようなコンパイラは、例えば、仮想機械をターゲットとした中間コード(ビットコード)を生成し、その仮想機械向けコードを特定のマシンの機械語に変換するLLVM(低レベル仮想機械)を用いて構成される(例えば、非特許文献3参照)。このようなLLVMにより構成されるコンパイラは、処理を記述したコードから処理のスケジューリングを行う。例えば、コンパイラは、処理を記述したコードから処理の流れを示すDAG(Directed Acyclic Graph)を生成し、生成したDAGを用いてスケジューリングを行う。
On the other hand, in order to cause the
ここで、DAGが有する構造と、FPGAが有する各論理コンポーネントが発揮可能な機能の構造とが類似するように、コンパイラにコードをコンパイルさせた場合は、FPGA150の構成を処理に対して最適化することができるとも考えられる。より具体的には、所定の処理を実行する際にFPGAが構成する論理コンポーネントの機能の構造と、DAGが有する構造とが類似する場合は、HDLの最適化を実現できるとも考えられる。そこで、調整装置10は、以下の調整処理を実行する。
Here, if the compiler compiles the code so that the structure of the DAG and the structure of the functions that can be exhibited by each logic component of the FPGA are similar, the configuration of the
まず、調整装置10は、処理に用いる論理回路の組み合わせを変更可能な演算装置、すなわち、FPGA150の各論理回路が発揮する機能の内容を示す複数の第1グラフを取得する。例えば、調整装置10は、所定の処理を実行する際に、FPGA150上に構成されうる論理モジュールの構造を示す第1グラフを取得する。例えば、FPGA150は、接続を変更可能な複数の論理回路を有する。そこで、調整装置10は、FPGA150が所定の処理を実行する際に構成する1つまたは複数の機能を示す複数の第1グラフを生成する。この第1グラフは、グラフ構造だけではなく、顔認識処理、音声認識処理、言語処理、行列演算のような数学演算処理等のようなパッケージ化されたFPGA回路を表すグラフ構造のパターンでもよい。
First, the
例えば、調整装置10は、所定の処理を実行するために第1処理~第5処理が必要となる場合、各処理のそれぞれをFPGA150が実現するために、FPGA150が1つまたは複数の論理回路を用いて実現する処理の論理を処理ごとに特定する。そして、調整装置10は、特定した各論理を示すグラフを第1グラフとして生成する。
For example, when the
また、調整装置10は、FPGA150に所定の処理を実行させる機械語を生成するコンパイラが、機械語を生成するための所定の処理の内容から生成する第2グラフを取得する。すなわち、調整装置10は、コンパイラが生成するDAGを第2グラフとして取得する。
Further, the
そして、調整装置10は、第1グラフの構造と第2グラフの構造とが類似するように、コンパイラ、若しくは、FPGA150が発揮する機能を調整する。例えば、調整装置10は、コードからコンパイラが生成するDAGの構造が、FPGA150の機能を示す第1グラフの構造に近づくように、コンパイラを再構成する。このようなコンパイラの再構成は、例えば、コンパイラを構成するプログラムモジュールのうち、DAGを生成するためのプログラムモジュールを修正することで実現される。すなわち、調整装置10は、FPGA150用のコンパイラコンパイラとしての処理を実行する際に、第1グラフの構造と第2グラフの構造とが類似するように、コンパイラを構成する。
Then, the
例えば、コンパイラがLLVMにより実現される場合、コンパイラは、IR(Intermediate Representation)ビルダを用いてコードから中間表現を生成し、オプティマイザを用いて中間表現からHDLを生成する。ここで、オプティマイザは、中間表現からHDLを生成する際に、DAGを生成し、生成したDAGを用いてHDLを生成する(例えば、非特許文献2参照)。そこで、調整装置10は、中間表現から生成されるDAGの構造が第1グラフに近づくように、IRビルダやオプティマイザの論理を修正すればよい。
For example, when the compiler is implemented by LLVM, the compiler uses an IR (Intermediate Representation) builder to generate an intermediate representation from the code, and an optimizer to generate HDL from the intermediate representation. Here, the optimizer generates a DAG when generating HDL from the intermediate representation, and generates HDL using the generated DAG (see
このような処理の結果、調整装置10は、FPGA150が有する機能の構造に類似する構造を有するDAGを用いて、コードをHDLにコンパイルするコンパイラを生成することができる。このようなコンパイラにより生成されたHDLは、FPGA150が有する論理コンポーネントの効率的な構成を実現することができる。この結果、調整装置10は、FPGA150等、PLDにおける処理の効率を改善することができる。
As a result of such processing, the
〔1-3.グラフの比較について〕
ここで、調整装置10は、第1グラフの構造と第2グラフの構造とが類似するように、コンパイラを調整するのであれば、任意の手法により、第1グラフの構造と第2グラフの構造とを比較してよい。例えば、調整装置10は、グラフが有するトポロジを比較する各種の手法を用いて、第1グラフの構造と第2グラフの構造とを比較し、比較結果に基づいて、第1グラフの構造と第2グラフの構造、または、グラフ構造のパターンが類似するように、コンパイラを調整すればよい。
[1-3. About graph comparison]
Here, as long as the compiler is adjusted so that the structure of the first graph and the structure of the second graph are similar, the
例えば、複数のノードの集合で示される情報が有する構造を示す手法として、パーシステントホモロジーの技術が知られている。このようなパーシステントホモロジーの技術においては、所定のn次元空間上に配置された各ノードの大きさを変化させ、生じた穴の数、穴の大きさ、消滅した穴の数を特定する。そして、このような技術においては、特定した情報から穴の発生パラメータと穴の消滅パラメータとを特定し、特定した発生パラメータと消滅パラメータとから生成されるパーシステント図を、ノードの集合の構造が有する特徴として用いる(例えば、特許文献4参照)。 For example, a technique of persistent homology is known as a technique for indicating the structure of information indicated by a set of multiple nodes. In such a technique of persistent homology, the size of each node arranged on a predetermined n-dimensional space is changed to specify the number of holes created, the size of the holes, and the number of holes eliminated. In such a technique, a hole generation parameter and a hole disappearance parameter are specified from the specified information, and a persistent diagram generated from the specified hole occurrence parameter and hole disappearance parameter is generated based on the structure of the set of nodes. It is used as a feature to have (for example, see Patent Document 4).
ここで、第1グラフから生成したパーシステント図と、第2グラフから生成したパーシステント図とが類似する場合(例えば、パーシステント図に現れる線形関数の傾きが類似する場合)は、第1グラフの構造と第2グラフの構造とが類似すると推定される。そこで、調整装置10は、第1グラフから生成したパーシステント図と、第2グラフから生成したパーシステント図とを生成し、生成したパーシステント図の比較結果に基づいて、第1グラフと第2グラフとが類似するか否かを判定してもよい。また、調整装置10は、第1グラフから生成したパーシステント図と、第2グラフから生成したパーシステント図とが類似するように、コンパイラの調整を行ってもよい。
Here, when the persistent diagram generated from the first graph and the persistent diagram generated from the second graph are similar (for example, when the slopes of the linear functions appearing in the persistent diagram are similar), the first graph is assumed to be similar to the structure of the second graph. Therefore, the
また、上述した処理に係わらず、調整装置10は、他の手法を用いて、第1グラフの構造と第2グラフの構造とが類似するかを判定して良い。例えば、調整装置10は、第1グラフの位相と第2グラフの位相とを比較し、各位相が類似するようにコンパイラの調整を行ってもよい。
Moreover, regardless of the above-described processing, the
また、調整装置10は、第2グラフを複数の分解グラフに分解し、分解した分解グラフと第1グラフの構造とが類似するように、コンパイラの調整を行ってもよい。例えば、調整装置10は、FPGA150が発揮可能な機能を示す第1グラフであって、それぞれ異なる機能を示す複数の第1グラフを取得する。また、調整装置10は、グラフラプラシアンに基づいて、第2グラフを複数の分解グラフに分解する。そして、調整装置10は、複数の分解グラフの構造と、複数の第1グラフの構造とが類似するように、コンパイラを調整してもよい。
Further, the
例えば、適切にグラフの分解を行うため、分解グラフ間のエッジの数がなるべく小さくなり、かつ、各分解グラフの大きさ(ノードの数)がなるべく等しくなるように、グラフを複数の分解グラフに分解するための様々な手法が提案されている。このような分解グラフに分解するための手法として、グラフ全体を示す隣接行列を生成し、生成した隣接行列に基づいたグラフラプラシアンを設定し、グラフラプラシアンに基づいて、グラフを分解するエッジを決定するスペクトラルクラスタリングの手法が知られている(例えば、非特許文献5参照)。 For example, in order to properly decompose a graph, divide the graph into multiple decomposed graphs so that the number of edges between decomposed graphs is as small as possible and the size (number of nodes) of each decomposed graph is as equal as possible. Various techniques have been proposed for decomposition. As a method for decomposing into such a decomposed graph, an adjacency matrix indicating the entire graph is generated, a graph Laplacian is set based on the generated adjacency matrix, and an edge for decomposing the graph is determined based on the graph Laplacian. A method of spectral clustering is known (see, for example, Non-Patent Document 5).
そこで、調整装置10は、第2グラフのグラフラプラシアンに基づき、第2グラフを複数の分解グラフに分解する。また、調整装置10は、FPGA150が発揮可能な各機能を示す複数の第1グラフを取得する。そして、調整装置10は、複数の分解グラフと、複数の第1グラフとを比較し、各グラフの構造が類似するように、コンパイラの調整を行う。例えば、調整装置10は、いずれかの第1グラフとの類似度が所定の範囲内に収まる分解グラフの数が最大化するように、コンパイラの調整を行ってもよい。また、調整装置10は、各分解グラフと、各第1グラフとの類似度の和が最大化するように、コンパイラの調整を行ってもよい。すなわち、調整装置10は、分解グラフの構造と第1グラフの構造との類似度を指標として、コンパイラの調整を実行する。
Therefore, the
なお、調整装置10は、グラフ構造そのものの類似性のみならず、グラフ構造のパターンが類似するように、コンパイラやFPGA150の調整を行ってもよい。例えば、調整装置10は、各種のパターン解析技術を用いて、グラフ構造が有するパターンを特定し、特定したパターンが類似するように、コンパイラやFPGA150の調整を行ってもよい。
Note that the
〔1-4.調整処理の一例について〕
次に、図1を用いて、調整装置10が実行する調整処理の一例を説明する。まず、調整装置10は、FPGA150が発揮可能な機能を示すグラフ(すなわち、第1グラフ)を機能分解グラフとして取得する。例えば、調整装置10は、所定の処理を実行するためにFPGA150が論理回路を用いて構成する各論理の内容を示す複数のグラフを機能分解グラフとして取得する。
[1-4. About an example of adjustment processing]
Next, an example of adjustment processing executed by the
また、調整装置10は、所定の処理を示すソースコードからコンパイラが生成したDAGを取得し、DAGの構造と機能分解グラフの構造とを比較する(ステップS2)。例えば、調整装置10は、所定の処理を示すソースコードをLLVMに入力し、LLVMが生成したDAGを取得する。また、調整装置10は、グラフラプラシアンに基づいて、DAGを複数の分解グラフDAG1~DAG4に分解する。そして、調整装置10は、分解グラフDAG1~DAG4と、機能分解グラフのそれぞれとを比較し、類似するか否かを判定する。
Further, the
そして、調整装置10は、DAGと機能分解グラフとが相互に類似するように、コンパイラの調整を行う。例えば、調整装置10は、機能分解グラフと類似するDAGを生成するように、LLVMが有するIRビルダやオプティマイザの調整を行う。そして、調整装置10は、調整したコンパイラがソースコードから生成したHDLを用いて、FPGA150の設定を行う(ステップS4)。
Then, the adjusting
〔1-5.FPGA側の調整について〕
ここで、上述した説明では、調整装置10は、コンパイラ側の調整を行うことで、FPGA150による処理の最適化を図った。しかしながら、実施形態は、これに限定されるものではない。例えば、調整装置10は、所定の処理を実行する際にFPGA150が発揮する機能を調整することで、処理の最適化を図ってもよい。
[1-5. Adjustment on the FPGA side]
Here, in the above description, the
例えば、調整装置10は、所定の処理を実現するためにFPGA150に発揮させる機能の組み合わせを複数特定する。また、調整装置10は、特定した組み合わせごとに、機能分解グラフとの構造とDAGの構造とを比較する。そして、調整装置10は、特定した組み合わせのうち、機能分解グラフの構造がDAGの構造に最も近い機能分解グラフを特定する。その後、調整装置10は、特定した機能分解グラフの組が示す機能を発揮するように、FPGA150の設定を行ってもよい。また、調整装置10は、DAGの構造が、特定した組に含まれる機能分解グラフの構造と類似するように、コンパイラを調整してもよい。
For example, the adjusting
すなわち、調整装置10は、LLVMの中間言語に合わせた最適化が行われるように、FPGA150の回路設計を調整し、FPGA150の回路設計に合わせた中間言語の最適化が行われるように、LLVMの調整を行う。より具体的には、調整装置10は、LLVMがスケジューリングにより生成するInstruction(中間表現)と、FPGA150が発揮する機能を示すPre Implemented Bitstreamとが相互に類似するように、LLVMやFPGA150の回路設計を調整する。このような処理の結果、FPGA150の回路設計をLLVMの中間言語、すなわち、抽象的なバックエンドに近づけることができる。この結果、調整装置10は、LLVMおよびFPGA150のボトルネックを相互に解消することができる。
That is, the
〔2.生成装置の構成〕
以下、上記した調整処理を実現する調整装置10が有する機能構成の一例について説明する。図2は、実施形態に係る調整装置の構成例を示す図である。図2に示すように、調整装置10は、通信部20、記憶部30、および制御部40を有する。
[2. Configuration of generation device]
An example of the functional configuration of the
通信部20は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部20は、所定のネットワークを介して演算装置100と接続され、演算装置100との間で各種通信を行う。
The communication unit 20 is realized by, for example, a NIC (Network Interface Card) or the like. The communication unit 20 is connected to the
記憶部30は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。また、記憶部30は、DAGデータベース31、機能分解グラフデータベース32、およびLLVM33を記憶する。 The storage unit 30 is implemented by, for example, a semiconductor memory device such as a RAM (Random Access Memory) or a flash memory, or a storage device such as a hard disk or an optical disk. The storage unit 30 also stores a DAG database 31 , a functional decomposition graph database 32 and an LLVM 33 .
DAGデータベース31には、LLVM33が生成するDAGの情報が登録される。例えば、図3は、実施形態に係るDAGデータベースに登録される情報の一例を示す図である。図3に示すように、DAGデータベース31には、「ノードID」、「機能」、「エッジ情報」、「条件情報」および「接続先」といった情報が対応付けて登録されている。 DAG information generated by the LLVM 33 is registered in the DAG database 31 . For example, FIG. 3 is a diagram showing an example of information registered in the DAG database according to the embodiment. As shown in FIG. 3, in the DAG database 31, information such as "node ID", "function", "edge information", "condition information", and "connection destination" are associated and registered.
ここで、「ノードID」とは、DAGに含まれるノードを示す識別子である。また、「機能」とは、「ノードID」が示すノードと対応する機能(すなわち、処理の内容)を示す情報である。また、「エッジ情報」とは、ノード間を接続するエッジを示す識別子である。また、「条件情報」とは、対応付けられた「エッジ情報」が示すエッジにより接続された他のノードが示す機能を発揮させるための条件を示す情報である。また、「接続先」とは、対応付けられた「エッジ情報」が示すエッジにより接続された他のノードのノードIDである。 Here, "node ID" is an identifier that indicates a node included in the DAG. A "function" is information indicating a function (that is, the content of processing) corresponding to a node indicated by the "node ID". "Edge information" is an identifier that indicates an edge that connects nodes. "Condition information" is information indicating a condition for exhibiting a function indicated by another node connected by an edge indicated by associated "edge information". The "connection destination" is the node ID of another node connected by the edge indicated by the associated "edge information".
例えば、図3に示す例では、DAGデータベース31には、ノードID「N1」、機能「機能#1」、エッジ情報「E12」、条件情報「C1」および接続先「N2」が対応付けて登録されている。このような情報は、ノードID「N1」が示す処理の内容が「機能#1」であり、処理結果が条件情報「C1」を満たした場合に、エッジ情報「E12」が示すエッジにより接続されたノードID「N2」が示すノードの処理が実行される旨を示す。なお、図3に示す例では、「機能#1」や「C1」といった概念的な値を記載したが、実際には、実行する処理の内容を示す関数や文字列、条件を示す関数等が登録されることとなる。
For example, in the example shown in FIG. 3, the node ID "N1", the function "
図2に戻り、説明を続ける。機能分解グラフデータベース32には、機能分解グラフが登録される。例えば、図4は、実施形態に係る機能分解グラフデータベースに登録される情報の一例を示す図である。図4に示すように、機能分解グラフデータベース32には、「ノードID」、「機能」、「エッジ情報」、「条件情報」および「接続先」といった情報が登録される。すなわち、機能分解グラフデータベース32には、DAGデータベース31と同様に、FPGA150が構成可能な論理モジュールにおける処理の内容を示すグラフの情報が登録される。
Returning to FIG. 2, the description is continued. Functional decomposition graphs are registered in the functional decomposition graph database 32 . For example, FIG. 4 is a diagram showing an example of information registered in the functional decomposition graph database according to the embodiment. As shown in FIG. 4, the functional decomposition graph database 32 registers information such as "node ID", "function", "edge information", "condition information", and "connection destination". That is, in the functional decomposition graph database 32, similarly to the DAG database 31, graph information indicating the contents of processing in logic modules that can be configured by the
図2に戻り、説明を続ける。LLVM33は、所定のソースコードが示す処理を演算装置100のFPGA150に実行させるためのHDLを生成するコンパイラである。
Returning to FIG. 2, the description is continued. The LLVM 33 is a compiler that generates HDL for causing the
制御部40は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等のプロセッサによって、調整装置10内部の記憶装置に記憶されている各種プログラムがRAM等を作業領域として実行されることにより実現される。また、制御部40は、コントローラ(controller)であり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現されてもよい。
The control unit 40 is a controller, and various programs stored in a storage device inside the
図2に示すように、制御部40は、取得部41、分解部42、比較部43、調整部44、および設定部45を有する。
As shown in FIG. 2 , the control unit 40 has an acquisition unit 41 , a
取得部41は、処理に用いる論理回路の組み合わせを変更可能な演算装置の各論理回路が発揮する機能の内容を示す複数の第1グラフと、演算装置に所定の処理を実行させる機械語を生成するコンパイラが、機械語を生成するための前記所定の処理の内容から生成する第2グラフとを取得する。例えば、取得部41は、利用者が利用する端末装置(図示は省略)から、所定の処理を示すソースコードを受付ける。このような場合、取得部41は、FPGA150が所定の処理を実行する際に構成する論理コンポーネントの組み合わせを特定する。そして、取得部41は、生成した論理コンポーネントにおける処理の内容を示すグラフを機能分解グラフとして生成する。すなわち、取得部41は、複数の機能分解グラフを生成する。そして、取得部41は、生成した機能分解グラフを機能分解グラフデータベース32に登録する。
Acquisition unit 41 generates a plurality of first graphs showing details of functions exhibited by each logic circuit of an arithmetic device capable of changing the combination of logic circuits used for processing, and machine language for causing the arithmetic device to execute predetermined processing. and a second graph generated from the content of the predetermined processing for generating the machine language by a compiler. For example, the acquisition unit 41 receives a source code indicating predetermined processing from a terminal device (not shown) used by the user. In such a case, the acquisition unit 41 identifies a combination of logic components that are configured when the
また、取得部41は、LLVM33を読出し、受付けたソースコードをLLVM33に入力する。このような場合、LLVM33は、処理を実行するためのHDLを生成するが、その際に実行するスケジューリングにおいて中間表現を生成する。そこで、取得部41は、LLVM33がソースコードから生成した中間表現を取得し、取得した中間表現を示すグラフ、すなわち、DAGを取得する。そして、取得部41は、取得したDAGをDAGデータベース31に登録する。 The acquisition unit 41 also reads the LLVM 33 and inputs the received source code to the LLVM 33 . In such a case, the LLVM 33 generates an HDL for executing processing, but generates an intermediate representation in scheduling for execution at that time. Therefore, the acquisition unit 41 acquires the intermediate representation generated from the source code by the LLVM 33, and acquires a graph indicating the acquired intermediate representation, that is, the DAG. The acquisition unit 41 then registers the acquired DAG in the DAG database 31 .
分解部42は、グラフラプラシアンに基づいて、第2グラフを複数の分解グラフに分解する。例えば、分解部42は、DAGデータベース31を参照し、DAGを取得する。このような場合、分解部42は、DAGのグラフラプラシアンを生成し、生成したグラフラプラシアンを用いて、DAGを複数の分解グラフに分解する。例えば、分解部42は、非特許文献5に開示された手法を用いて、分解グラフを生成する。
The decomposing
比較部43は、DAGと機能分解グラフとの構造を比較する。例えば、比較部43は、分解部42がDAGを分解することで生成した複数の分解グラフを取得する。このような場合、比較部43は、機能分解グラフデータベース32を参照し、各機能分解グラフを取得する。そして、比較部43は、各分解グラフの構造と、各機能分解グラフの構造とを比較し、類似度を算出する。
The comparison unit 43 compares the structures of the DAG and the functional decomposition graph. For example, the comparing unit 43 acquires a plurality of decomposed graphs generated by decomposing the DAG by the decomposing
例えば、比較部43は、非特許文献4に開示された技術を用いて、各グラフのパーシステント図を生成し、生成したパーシステント図の類似度を算出する。例えば、比較部43は、パーシステント図に現れる線形関数の傾きの値の類似度を算出する。 For example, the comparison unit 43 uses the technology disclosed in Non-Patent Document 4 to generate a persistent diagram of each graph and calculate the similarity of the generated persistent diagrams. For example, the comparison unit 43 calculates the similarity of the slope values of the linear functions appearing in the persistent diagram.
調整部44は、第1グラフの構造と第2グラフの構造、または、グラフ構造のパターンが類似するように、コンパイラ若しくは演算装置が発揮する機能を調整する。例えば、調整部44は、比較部43による各分解グラフの構造と、各機能分解グラフの構造とを比較結果を取得する。より具体的には、調整部44は、各分解グラフの構造と、各機能分解グラフの構造との類似度を取得する。 The adjustment unit 44 adjusts the functions performed by the compiler or the arithmetic device so that the structure of the first graph and the structure of the second graph or the patterns of the graph structures are similar. For example, the adjustment unit 44 acquires the result of comparing the structure of each decomposition graph and the structure of each functional decomposition graph by the comparison unit 43 . More specifically, the adjusting unit 44 acquires the degree of similarity between the structure of each decomposition graph and the structure of each functional decomposition graph.
例えば、調整部44は、各分解グラフの構造と各機能分解グラフの構造との類似度の総和が高くなるように、LLVM33が有するIRビルダやオプティマイザを修正する。なお、調整部44は、IRビルダやオプティマイザの修正内容と、修正した結果新たにLLVM33が生成した中間表現に基づくDAGの分解グラフの構造と、各機能分解グラフの構造との類似度との間の関係に基づいて、IRビルダやオプティマイザの修正方針を決定してもよい。すなわち、調整部44は、各分解グラフの構造と各機能分解グラフの構造との類似度の総和が高くなるように、LLVM33から新たなLLVMを生成する。 For example, the adjustment unit 44 modifies the IR builder and optimizer of the LLVM 33 so that the sum of similarities between the structure of each decomposition graph and the structure of each functional decomposition graph increases. Note that the adjustment unit 44 determines the degree of similarity between the content of corrections made by the IR builder or optimizer, the structure of the DAG decomposition graph based on the intermediate representation newly generated by the LLVM 33 as a result of the correction, and the structure of each functional decomposition graph. A correction policy for the IR builder or optimizer may be determined based on the relationship of . That is, the adjustment unit 44 generates a new LLVM from the LLVM 33 so that the sum of similarities between the structure of each decomposition graph and the structure of each functional decomposition graph is high.
なお、調整部44は、各分解グラフの構造と各機能分解グラフの構造との類似度の総和が高くなるように、FPGA150が構成する論理モジュールの構造を修正してもよい。例えば、調整部44は、FPGA150に構成させる論理モジュールを、各分解グラフの構造と類似する構造を有する論理モジュールに限定させてもよい。その後、調整部44は、新たなLLVMを記憶部30に登録する。
Note that the adjustment unit 44 may modify the structure of the logic modules configured by the
設定部45は、調整部44により調整されたLLVMを用いて、FPGA150の設定を行う。例えば、設定部45は、LLVMを用いて、ソースコードをHDLに変換し、変換後のHDLを演算装置100へと提供することで、FPGA150に所定の処理を実行させるための論理コンポーネントを設定する。
The setting
〔3.生成装置が実行する処理の流れの一例〕
次に、図5を用いて、調整装置10が実行する提供処理の流れの一例について説明する。図5は、実施形態に係る調整処理の流れの一例を説明するフローチャートである。まず、調整装置10は、FPGAの機能分解グラフを取得する(ステップS101)。また、調整装置10は、コンパイラであるLLVMの中間表現に基づくDAGが有する構造と機能分解グラフが有する構造とを比較する(ステップS102)。
[3. Example of flow of processing executed by generation device]
Next, an example of the flow of provision processing executed by the
そして、調整装置10は、各グラフの構造が類似するようにコンパイラを構成する(ステップS103)。その後、調整装置10は、調整したコンパイラを用いて、ソースコードを機械語に変換し(ステップS104)、変換後の機械語を用いてFPGAの設定を行い(ステップS105)、処理を終了する。
Then, the
〔4.変形例〕
上記では、調整装置10による提供処理の一例について説明した。しかしながら、実施形態は、これに限定されるものではない。以下、調整装置10が実行する調整処理のバリエーションについて説明する。
[4. Modification]
An example of the providing process by the
〔4-1.装置構成〕
上述した例では、調整装置10は、調整装置10内で調整処理を実行した。しかしながら、実施形態は、これに限定されるものではない。例えば、調整装置10は、演算装置100の設定を行うフロントエンドサーバと、調整処理を実行するバックエンドサーバとにより実現されてもよい。このような場合、例えば、フロントエンドサーバは、図2に示す設定部45を有し、バックエンドサーバは、図2に示す取得部41、分解部42、比較部43、および調整部44を有する。また、調整装置10は、DAGデータベース31や機能分解グラフデータベース32を外部のストレージサーバに記憶させてもよい。
[4-1. Device configuration〕
In the example described above, the
〔4-2.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文章中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
[4-2. others〕
Further, among the processes described in the above embodiments, all or part of the processes described as being automatically performed can be manually performed, or the processes described as being performed manually can be performed manually. All or part of this can also be done automatically by known methods. In addition, information including processing procedures, specific names, and various data and parameters shown in the above text and drawings can be arbitrarily changed unless otherwise specified. For example, the various information shown in each drawing is not limited to the illustrated information.
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。 Also, each component of each device illustrated is functionally conceptual, and does not necessarily need to be physically configured as illustrated. In other words, the specific form of distribution and integration of each device is not limited to the one shown in the figure, and all or part of them can be functionally or physically distributed and integrated in arbitrary units according to various loads and usage conditions. Can be integrated and configured.
また、上記してきた各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。 Moreover, each of the embodiments described above can be appropriately combined within a range that does not contradict the processing contents.
〔4-3.プログラム〕
また、上述してきた実施形態に係る調整装置10は、例えば図6に示すような構成のコンピュータ1000によって実現される。図6は、ハードウェア構成の一例を示す図である。コンピュータ1000は、出力装置1010、入力装置1020と接続され、演算装置1030、一次記憶装置1040、二次記憶装置1050、出力IF(Interface)1060、入力IF1070、ネットワークIF1080がバス1090により接続された形態を有する。
[4-3. program〕
Moreover, the adjusting
演算装置1030は、一次記憶装置1040や二次記憶装置1050に格納されたプログラムや入力装置1020から読み出したプログラム等に基づいて動作し、各種の処理を実行する。一次記憶装置1040は、RAM等、演算装置1030が各種の演算に用いるデータを一次的に記憶するメモリ装置である。また、二次記憶装置1050は、演算装置1030が各種の演算に用いるデータや、各種のデータベースが登録される記憶装置であり、ROM(Read Only Memory)、HDD、フラッシュメモリ等により実現される。
Arithmetic device 1030 operates based on programs stored in
出力IF1060は、モニタやプリンタといった各種の情報を出力する出力装置1010に対し、出力対象となる情報を送信するためのインタフェースであり、例えば、USB(Universal Serial Bus)やDVI(Digital Visual Interface)、HDMI(登録商標)(High Definition Multimedia Interface)といった規格のコネクタにより実現される。また、入力IF1070は、マウス、キーボード、およびスキャナ等といった各種の入力装置1020から情報を受信するためのインタフェースであり、例えば、USB等により実現される。
The output IF 1060 is an interface for transmitting information to be output to the
なお、入力装置1020は、例えば、CD(Compact Disc)、DVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等から情報を読み出す装置であってもよい。また、入力装置1020は、USBメモリ等の外付け記憶媒体であってもよい。
Note that the
ネットワークIF1080は、ネットワークNを介して他の機器からデータを受信して演算装置1030へ送り、また、ネットワークNを介して演算装置1030が生成したデータを他の機器へ送信する。 Network IF 1080 receives data from other devices via network N and sends the data to arithmetic device 1030, and also transmits data generated by arithmetic device 1030 via network N to other devices.
演算装置1030は、出力IF1060や入力IF1070を介して、出力装置1010や入力装置1020の制御を行う。例えば、演算装置1030は、入力装置1020や二次記憶装置1050からプログラムを一次記憶装置1040上にロードし、ロードしたプログラムを実行する。
The arithmetic device 1030 controls the
例えば、コンピュータ1000が調整装置10として機能する場合、コンピュータ1000の演算装置1030は、一次記憶装置1040上にロードされたプログラムまたはデータを実行することにより、制御部40の機能を実現する。コンピュータ1000のCPU1100は、これらのプログラムまたはデータを記録媒体1800から読み取って実行するが、他の例として、他の装置からネットワークNを介してこれらのプログラムを取得してもよい。
For example, when
〔5.効果〕
上述したように、調整装置10は、処理に用いる論理回路の組み合わせを変更可能な演算装置の各論理回路が発揮する機能の内容を示す複数の第1グラフと、演算装置に所定の処理を実行させる機械語を生成するコンパイラが、機械語を生成するための所定の処理の内容から生成する第2グラフとを取得する。そして、調整装置10は、取得された第1グラフの構造と第2グラフの構造、または、グラフ構造のパターンが類似するように、コンパイラ若しくは演算装置が発揮する機能を調整する。このように、調整装置10は、PLDの論理設計と、PLDの設定を行うコンパイラが中間表現を生成する際に用いる論理設計とを近づけることで、PLDの設定を最適化するので、PLDにおける処理の効率を改善できる。
[5. effect〕
As described above, the
また、調整装置10は、グラフラプラシアンに基づいて、第2グラフを複数の分解グラフに分解し、複数の第1グラフの構造と複数の分解グラフの構造、または、グラフ構造のパターンが類似するように、コンパイラ若しくは演算装置が発揮する機能を調整する。また、調整装置10は、複数の第1グラフを取得し、複数の分解グラフの構造と複数の第1グラフの構造、または、グラフ構造のパターンが類似するように、コンパイラ若しくは演算装置が発揮する機能を調整する。また、調整装置10は、スケジューリングのためにコンパイラが中間表現から生成する第2グラフを取得する。また、調整装置10は、低レベル仮想機械を用いて構成されたコンパイラが生成する第2グラフを取得する。このため、調整装置10は、PLDの設定を最適化するので、PLDにおける処理の効率を改善できる。
Further, the
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。 As described above, some of the embodiments of the present application have been described in detail based on the drawings. It is possible to carry out the invention in other forms with modifications.
また、上記してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、生成部は、生成手段や生成回路に読み替えることができる。 Also, the "section, module, unit" described above can be read as "means" or "circuit". For example, the generating unit can be read as generating means or a generating circuit.
10 調整装置
20 通信部
30 記憶部
31 DAGデータベース
32 機能分解グラフデータベース
33 LLVM
40 制御部
41 取得部
42 分解部
43 比較部
44 調整部
45 設定部
100 演算装置
150 FPGA
REFERENCE SIGNS
40 control unit 41
Claims (5)
前記第2グラフを複数の分解グラフに分解する分解部と、
前記取得部により取得された複数の前記第1グラフの構造と前記分解部により分解された複数の前記分解グラフの構造とが類似するように、前記LLVMを調整する調整部と
を有することを特徴とする調整装置。 A plurality of first graphs showing contents of functions exhibited by each logic circuit of an arithmetic unit capable of changing the combination of logic circuits, and LLVM for generating machine language for causing the arithmetic unit to execute predetermined processing from source code. an acquisition unit that acquires a second graph generated from the source code by the compiler used;
a decomposition unit that decomposes the second graph into a plurality of decomposition graphs;
an adjusting unit that adjusts the LLVM so that structures of the plurality of first graphs obtained by the obtaining unit and structures of the plurality of decomposed graphs decomposed by the decomposing unit are similar to each other; adjustment device.
ことを特徴とする請求項1に記載の調整装置。 The decomposing unit decomposes the second graph into a plurality of decomposed graphs based on graph Laplacian.
The adjusting device according to claim 1, characterized in that:
ことを特徴とする請求項1又は2に記載の調整装置。 3. The coordinator according to claim 1 , wherein the acquisition unit acquires the second graph generated from the intermediate representation by the compiler for scheduling.
論理回路の組み合わせを変更可能な演算装置の各論理回路が発揮する機能の内容を示す複数の第1グラフと、前記演算装置に所定の処理を実行させる機械語をソースコードから生成するLLVMを用いたコンパイラが前記ソースコードから生成する第2グラフとを取得する取得工程と、
前記第2グラフを複数の分解グラフに分解する分解工程と、
前記取得工程により取得された複数の前記第1グラフの構造と前記分解工程により分解された複数の前記分解グラフの構造とが類似するように、前記LLVMを調整する調整工程と
を含むことを特徴とする調整方法。 An adjustment method performed by an adjustment device,
A plurality of first graphs showing contents of functions exhibited by each logic circuit of an arithmetic unit capable of changing the combination of logic circuits, and LLVM for generating machine language for causing the arithmetic unit to execute predetermined processing from source code. a obtaining step of obtaining a second graph generated from the source code by the compiler used;
a decomposition step of decomposing the second graph into a plurality of decomposition graphs;
an adjusting step of adjusting the LLVM so that structures of the plurality of first graphs obtained by the obtaining step and structures of the plurality of decomposed graphs decomposed by the decomposing step are similar to each other. adjustment method.
前記第2グラフを複数の分解グラフに分解する分解手順と、前記取得手順により取得された複数の前記第1グラフの構造と前記分解手順により分解された複数の前記分解グラフの構造とが類似するように、前記LLVMを調整する調整手順と
をコンピュータに実行させるための調整プログラム。 A plurality of first graphs showing contents of functions exhibited by each logic circuit of an arithmetic unit capable of changing the combination of logic circuits, and LLVM for generating machine language for causing the arithmetic unit to execute predetermined processing from source code. an acquisition procedure for acquiring a second graph generated from the source code by the compiler used;
A decomposition procedure for decomposing the second graph into a plurality of decomposition graphs, and structures of the plurality of first graphs obtained by the obtaining procedure and structures of the plurality of decomposition graphs obtained by the decomposition procedure are similar. and an adjustment program for causing a computer to execute:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018096575A JP7278716B2 (en) | 2018-05-18 | 2018-05-18 | Adjustment device, adjustment method and adjustment program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018096575A JP7278716B2 (en) | 2018-05-18 | 2018-05-18 | Adjustment device, adjustment method and adjustment program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019200736A JP2019200736A (en) | 2019-11-21 |
JP7278716B2 true JP7278716B2 (en) | 2023-05-22 |
Family
ID=68611279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018096575A Active JP7278716B2 (en) | 2018-05-18 | 2018-05-18 | Adjustment device, adjustment method and adjustment program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7278716B2 (en) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013165490A (en) | 2012-02-09 | 2013-08-22 | Altera Corp | Configuring programmable device using high-level language |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004334429A (en) * | 2003-05-06 | 2004-11-25 | Hitachi Ltd | Logic circuit and program to be executed on logic circuit |
US8789026B2 (en) * | 2011-08-02 | 2014-07-22 | International Business Machines Corporation | Technique for compiling and running high-level programs on heterogeneous computers |
-
2018
- 2018-05-18 JP JP2018096575A patent/JP7278716B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013165490A (en) | 2012-02-09 | 2013-08-22 | Altera Corp | Configuring programmable device using high-level language |
Non-Patent Citations (2)
Title |
---|
川本達郎、グラフ分割と固有値問題、日本神経回路学会誌、Vol.21、No.4、2015年2月5日、pp.162-169 |
橋本織弘、部分マッチングを考慮しMISO構造に対応した専用演算器合成手法、電子情報通信学会技術研究報告、2010年1月19日、Vol.109、No.394、pp.89-94 |
Also Published As
Publication number | Publication date |
---|---|
JP2019200736A (en) | 2019-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10089086B2 (en) | Method and apparatus for compiling regular expressions | |
WO2018171717A1 (en) | Automated design method and system for neural network processor | |
US11204747B1 (en) | Re-targetable interface for data exchange between heterogeneous systems and accelerator abstraction into software instructions | |
KR100992025B1 (en) | A method for multi-cycle clock gating | |
US20190228126A1 (en) | Machine-learning circuit optimization using quantized prediction functions | |
US20190229996A1 (en) | Methods and apparatus to insert buffers in a dataflow graph | |
JP5605435B2 (en) | Method and apparatus for accelerating design space search | |
Sommer et al. | Automatic mapping of the sum-product network inference problem to fpga-based accelerators | |
CN116822422B (en) | Analysis optimization method of digital logic circuit and related equipment | |
JP2020053018A (en) | Training data generation method for generating training data of vqa system, training data generation device, electronic apparatus and computer readable medium | |
JP2018077595A (en) | Engineering support program, engineering support method, and information processing device | |
JPH07160744A (en) | Autonomously evolving hardware design system | |
WO2021161429A1 (en) | Program generation device, program generation method, and program | |
Frangieh et al. | A design assembly framework for FPGA back-end acceleration | |
JP5157534B2 (en) | Behavioral synthesis apparatus and program | |
JP7278716B2 (en) | Adjustment device, adjustment method and adjustment program | |
US20200234120A1 (en) | Generation of tensor data for learning based on a ranking relationship of labels | |
JPWO2018066083A1 (en) | Learning program, information processing apparatus and learning method | |
JP6364332B2 (en) | Specification generation method, specification generation device, and program | |
CN114239858A (en) | Method and equipment for learning images of distributed image model | |
JP6956043B2 (en) | Arithmetic logic unit and search method | |
JP6305644B2 (en) | Architecture generation apparatus and architecture generation program | |
JP6034240B2 (en) | Analysis method, analysis apparatus, and analysis program | |
JP7218856B2 (en) | LEARNER GENERATION DEVICE, LEARNER PRODUCTION METHOD, AND PROGRAM | |
US20230409289A1 (en) | Data processing apparatus and method |
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 |