JP7278716B2 - Adjustment device, adjustment method and adjustment program - Google Patents

Adjustment device, adjustment method and adjustment program Download PDF

Info

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
Application number
JP2018096575A
Other languages
Japanese (ja)
Other versions
JP2019200736A (en
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.)
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/en
Publication of JP2019200736A publication Critical patent/JP2019200736A/en
Application granted granted Critical
Publication of JP7278716B2 publication Critical patent/JP7278716B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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.

特開2013-165490号公報JP 2013-165490 A

“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日検索)“Assignment Decision Diagram for High-Level Synthesis,” Viraphol Chaiyakul, Daniel D. Gajski <Internet> http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.33.9420&rep=rep1&type=pdf Searched on May 1, 2018) “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日検索)“A deeper look into the LLVM code generator, Part 1, Eli Bendersky” <Internet> https://eli.thegreenplace.net/2013/02/25/a-deeper-look-into-the-llvm-code-generator -part-1 (searched on May 1, 2018) “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日検索)“QuickDough: A Rapid FPGA Accelerator Generation Framework using Soft Coarse-Grained Reconfigurable Array Overlay” Hayden Kwok-Hay So, <Internet> https://www.eee.hku.hk/~hso/olaf2013/so_olaf.pdf (Heisei 30 (searched on May 1, 2015) “パーシステントホモロジーと機械学習” 平岡 裕章<インターネット>http://ibisml.org/archive/ibis2016/Hiraoka_IBIS2016.pdf(平成30年5月1日検索)“Persistent Homology and Machine Learning” Hiroaki Hiraoka <Internet> http://ibisml.org/archive/ibis2016/Hiraoka_IBIS2016.pdf (searched May 1, 2018) “グラフ分解と固有値問題”,川本 達郎, 日本神経回路学会誌 Vol.21,No.4(2014),162-169<インターネット>https://www.jstage.jst.go.jp/article/jnns/21/4/21_162/_pdf(平成30年5月1日検索)“Graph Decomposition and Eigenvalue Problem”, Tatsuro Kawamoto, Journal of Japanese Neural Network Society Vol. 21, No. 4 (2014), 162-169 <Internet> https://www.jstage.jst.go.jp/article/jnns/21/4/21_162/_pdf (searched May 1, 2018)

しかしながら、上述した技術では、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.

図1は、実施形態に係る調整装置が実行する処理の一例を示す図である。FIG. 1 is a diagram illustrating an example of processing executed by an adjustment device according to an embodiment; 図2は、実施形態に係る調整装置の構成例を示す図である。FIG. 2 is a diagram illustrating a configuration example of the adjustment device according to the embodiment; 図3は、実施形態に係るDAGデータベースに登録される情報の一例を示す図である。FIG. 3 is a diagram illustrating an example of information registered in a DAG database according to the embodiment; 図4は、実施形態に係る機能分解グラフデータベースに登録される情報の一例を示す図である。FIG. 4 is a diagram illustrating an example of information registered in a functional decomposition graph database according to the embodiment; 図5は、実施形態に係る調整処理の流れの一例を説明するフローチャートである。FIG. 5 is a flowchart illustrating an example of the flow of adjustment processing according to the embodiment. 図6は、ハードウェア構成の一例を示す図である。FIG. 6 is a diagram illustrating an example of a hardware configuration;

以下に、本願に係る調整装置、調整方法および調整プログラムを実施するための形態(以下、「実施形態」と記載する。)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る調整装置、調整方法および調整プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。 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 arithmetic device 100 to execute the predetermined process will be described.

図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 adjustment device 10 is an information processing device that executes adjustment processing described below, and is realized by, for example, a server device, a cloud system, or the like.

演算装置100は、以下に説明する調整処理を実行する演算装置である。ここで、演算装置100は、製造後に利用者が内部の論理回路を定義あるいは変更することができる集積回路であり、所謂PLD(Programmable Logic Device)である。より具体的には、演算装置100は、FPGA(Field-Programmable Gate Array)により実現される。また、演算装置100は、調整装置10および主記憶装置200と接続されている。 The arithmetic device 100 is an arithmetic device that executes adjustment processing described below. Here, the arithmetic device 100 is an integrated circuit in which a user can define or change an internal logic circuit after manufacturing, and is a so-called PLD (Programmable Logic Device). More specifically, arithmetic device 100 is implemented by an FPGA (Field-Programmable Gate Array). Arithmetic device 100 is also connected to adjustment device 10 and main storage device 200 .

主記憶装置200は、各種データを記憶する記憶装置であり、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子等の記憶装置によって実現される。 The main storage device 200 is a storage device that stores various data, and is realized by a storage device such as a semiconductor memory device such as a RAM (Random Access Memory) and a flash memory.

例えば、演算装置100は、プロセッサ110、入出力装置120、メモリコントローラ130、FPGA150およびFPGA150を有する。プロセッサ110は、演算装置100が有するプロセッサであり、例えば、ARMアーキテクチャやPOWERアーキテクチャを採用したプロセッサ若しくはマイクロプロセッサである。そして、プロセッサ110は、FPGAと連携することで、各種の演算処理を実行する。 For example, computing device 100 has processor 110 , input/output device 120 , memory controller 130 , FPGA 150 and FPGA 150 . The processor 110 is a processor included in the computing device 100, and is, for example, a processor or microprocessor that employs the ARM architecture or the POWER architecture. And the processor 110 performs various arithmetic processing by cooperating with FPGA.

例えば、プロセッサ110は、プロセッサコア111とキャッシュメモリ112とを有する。プロセッサコア111は、論理演算や四則演算を実現する所謂コアであり、ALU(Arithmetic Logic Unit)から構成される算術論理演算装置により実現される。キャッシュメモリ112は、プロセッサ110が有する補助記憶装置である。より具体的には、キャッシュメモリ112は、主記憶装置200よりもプロセッサコア111が高速にアクセスすることができる記憶装置であり、所謂キャッシュメモリである。 For example, processor 110 has processor core 111 and cache memory 112 . The processor core 111 is a so-called core that implements logic operations and four arithmetic operations, and is implemented by an arithmetic logic unit configured from an ALU (Arithmetic Logic Unit). A cache memory 112 is an auxiliary storage device that the processor 110 has. More specifically, the cache memory 112 is a storage device that can be accessed by the processor core 111 at a higher speed than the main storage device 200, and is a so-called cache memory.

入出力装置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/output device 120 is a device that relays communication between the arithmetic device 100 and any external device such as the adjustment device 10, and is a so-called I/O (Input Output) device. For example, the input/output device 120 includes a USB (Universal Serial Bus), Ethernet, SD (Secure Digital), UART (Universal Asynchronous Receiver/Transmitter), SPI (Serial Peripheral Interface), I2C, GPIO (General-purpose input/output ), etc., are implemented by various input/output devices that control communication with external devices according to various communication standards.

メモリコントローラ130は、演算装置100による主記憶装置200へのメモリアクセスを制御する。例えば、メモリコントローラ130は、ページング方式により主記憶装置200に格納されたデータの読み出しや書込みを行う。より具体的な例を挙げると、メモリコントローラ130は、プロセッサ110やFPGA150が処理を実行する際に用いる仮想ページ番号と、主記憶装置200が有する記憶領域を示す物理ページ番号とを対応付けたページテーブルを有し、ページテーブルを参照しながら、プロセッサ110やFPGA150が処理に用いる情報を主記憶装置200から読み出したり、主記憶装置200に対する情報の書込みを実現する。 The memory controller 130 controls memory access to the main storage device 200 by the arithmetic device 100 . For example, the memory controller 130 reads and writes data stored in the main memory device 200 by paging. To give a more specific example, the memory controller 130 creates a page in which a virtual page number used when the processor 110 or FPGA 150 executes processing and a physical page number indicating a storage area of the main memory device 200 are associated with each other. It has a table, and reads information used for processing by the processor 110 and FPGA 150 from the main storage device 200 and writes information to the main storage device 200 while referring to the page table.

例えば、図1に示す構成を有する場合、プロセッサコア111は、キャッシュメモリ112にアクセスし、演算対象となるデータの取得を試行する。そして、プロセッサコア111は、データがキャッシュメモリ112に格納されていない場合(すなわち、キャッシュミス)は、メモリコントローラ130に対して、演算対象となるデータが格納されている記憶領域のアドレスを通知する。より具体的には、プロセッサコア111は、演算処理に用いる仮想ページ番号をメモリコントローラ130に通知する。 For example, in the configuration shown in FIG. 1, the processor core 111 accesses the cache memory 112 and tries to acquire data to be operated. Then, if the data is not stored in the cache memory 112 (that is, a cache miss), the processor core 111 notifies the memory controller 130 of the address of the storage area where the data to be operated is stored. . More specifically, the processor core 111 notifies the memory controller 130 of the virtual page number used for arithmetic processing.

このような場合、メモリコントローラ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 main memory device 200 . After that, the memory controller 130 associates the read data with the virtual page number and registers them in the cache memory 112 .

また、メモリコントローラ130は、キャッシュメモリ112に登録されたデータを主記憶装置200に書き戻す場合(ライトバック)は、ページテーブルを参照し、書き戻しの対象となる情報と対応付けられた仮想ページ番号と対応する物理ページ番号を特定する。そして、メモリコントローラ130は、主記憶装置200の記憶領域のうち、特定した物理ページ番号が示す記憶領域に書き戻しの対象となる情報を格納する。 In addition, when writing back data registered in the cache memory 112 to the main storage device 200 (write back), the memory controller 130 refers to the page table and stores the virtual page associated with the information to be written back. Identify the number and the corresponding physical page number. Then, the memory controller 130 stores the information to be written back in the storage area indicated by the specified physical page number among the storage areas of the main memory device 200 .

FPGA150は、調整装置10から提供される機械語に従って、回路構成を変更可能な演算装置である。例えば、FPGA150は、デジタル回路要素とアナログ回路要素とを含む。例えば、FPGA150には、所定の処理を実行可能な論理コンポーネントである複数の論理ブロックを有し、論理ブロック間が再構成可能な配線により相互接続されている。そして、FPGA150は、調整装置10から提供されるハードウェア記述言語(HDL:Hardware Description language)により、論理コンポーネント間の接続を変更することで、各種の処理をハードウェアにより実現することができる。すなわち、FPGA150は、処理に用いる論理回路の組み合わせを変更可能な演算装置として動作する。 The FPGA 150 is an arithmetic device whose circuit configuration can be changed according to the machine language provided by the adjusting device 10 . For example, FPGA 150 includes digital circuitry and analog circuitry. For example, the FPGA 150 has a plurality of logic blocks, which are logic components capable of executing predetermined processing, and the logic blocks are interconnected by reconfigurable wiring. The FPGA 150 can implement various types of processing by hardware by changing connections between logical components using a hardware description language (HDL) provided by the adjustment device 10 . That is, the FPGA 150 operates as an arithmetic device capable of changing the combination of logic circuits used for processing.

〔1-2.調整処理の一例〕
ここで、FPGA150が有する各論理コンポーネントは、入力された情報に対して様々な処理を実行することができる。このような論理コンポーネントが実行可能な処理は、例えば、入力に対する出力の真理値表から生成される論理式を構成する回路により表すことができる。
[1-2. Example of adjustment processing]
Here, each logic component of the FPGA 150 can execute various processes on input information. The processing that such logic components can perform can be represented, for example, by a circuit that constructs a logic equation generated from a truth table of outputs with respect to inputs.

一方、このようなFPGA150に所定の処理を実行させるため、処理を記述したコードからFPGA150に処理を実行させるためのHDLを生成するコンパイラが知られている。このようなコンパイラは、例えば、仮想機械をターゲットとした中間コード(ビットコード)を生成し、その仮想機械向けコードを特定のマシンの機械語に変換するLLVM(低レベル仮想機械)を用いて構成される(例えば、非特許文献3参照)。このようなLLVMにより構成されるコンパイラは、処理を記述したコードから処理のスケジューリングを行う。例えば、コンパイラは、処理を記述したコードから処理の流れを示すDAG(Directed Acyclic Graph)を生成し、生成したDAGを用いてスケジューリングを行う。 On the other hand, in order to cause the FPGA 150 to execute a predetermined process, a compiler is known that generates HDL for causing the FPGA 150 to execute the process from a code describing the process. Such a compiler, for example, is configured using LLVM (low-level virtual machine) that generates intermediate code (bitcode) targeting a virtual machine and converts the code for the virtual machine into machine language for a specific machine. (See, for example, Non-Patent Document 3). A compiler configured with such LLVM schedules processing from a code describing the processing. For example, the compiler generates a DAG (Directed Acyclic Graph) indicating the flow of processing from code describing processing, and performs scheduling using the generated DAG.

ここで、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 FPGA 150 is optimized for processing. It is also conceivable that More specifically, if the structure of the functions of the logic components that the FPGA configures when executing a given process is similar to the structure that the DAG has, it is conceivable that the HDL can be optimized. Therefore, the adjustment device 10 executes the following adjustment processing.

まず、調整装置10は、処理に用いる論理回路の組み合わせを変更可能な演算装置、すなわち、FPGA150の各論理回路が発揮する機能の内容を示す複数の第1グラフを取得する。例えば、調整装置10は、所定の処理を実行する際に、FPGA150上に構成されうる論理モジュールの構造を示す第1グラフを取得する。例えば、FPGA150は、接続を変更可能な複数の論理回路を有する。そこで、調整装置10は、FPGA150が所定の処理を実行する際に構成する1つまたは複数の機能を示す複数の第1グラフを生成する。この第1グラフは、グラフ構造だけではなく、顔認識処理、音声認識処理、言語処理、行列演算のような数学演算処理等のようなパッケージ化されたFPGA回路を表すグラフ構造のパターンでもよい。 First, the adjustment device 10 acquires a plurality of first graphs showing the content of the function exhibited by each logic circuit of the arithmetic device, that is, the FPGA 150, which can change the combination of logic circuits used for processing. For example, the coordinator 10 acquires a first graph showing the structure of logic modules that can be configured on the FPGA 150 when executing predetermined processing. For example, the FPGA 150 has multiple logic circuits that can change connections. Therefore, the adjustment device 10 generates a plurality of first graphs showing one or more functions configured when the FPGA 150 executes predetermined processing. This first graph may be not only a graph structure, but also a graph structure pattern representing a packaged FPGA circuit such as face recognition processing, voice recognition processing, language processing, mathematical operations such as matrix operations, and the like.

例えば、調整装置10は、所定の処理を実行するために第1処理~第5処理が必要となる場合、各処理のそれぞれをFPGA150が実現するために、FPGA150が1つまたは複数の論理回路を用いて実現する処理の論理を処理ごとに特定する。そして、調整装置10は、特定した各論理を示すグラフを第1グラフとして生成する。 For example, when the adjustment device 10 requires the first to fifth processes to execute a predetermined process, the FPGA 150 implements one or more logic circuits so that the FPGA 150 implements each process. The logic of the processing to be implemented by using is specified for each processing. Then, the adjustment device 10 generates a graph indicating each identified logic as a first graph.

また、調整装置10は、FPGA150に所定の処理を実行させる機械語を生成するコンパイラが、機械語を生成するための所定の処理の内容から生成する第2グラフを取得する。すなわち、調整装置10は、コンパイラが生成するDAGを第2グラフとして取得する。 Further, the adjustment device 10 acquires a second graph generated by a compiler that generates a machine language for causing the FPGA 150 to execute a predetermined process from the content of the predetermined process for generating the machine language. That is, the adjustment device 10 acquires the DAG generated by the compiler as the second graph.

そして、調整装置10は、第1グラフの構造と第2グラフの構造とが類似するように、コンパイラ、若しくは、FPGA150が発揮する機能を調整する。例えば、調整装置10は、コードからコンパイラが生成するDAGの構造が、FPGA150の機能を示す第1グラフの構造に近づくように、コンパイラを再構成する。このようなコンパイラの再構成は、例えば、コンパイラを構成するプログラムモジュールのうち、DAGを生成するためのプログラムモジュールを修正することで実現される。すなわち、調整装置10は、FPGA150用のコンパイラコンパイラとしての処理を実行する際に、第1グラフの構造と第2グラフの構造とが類似するように、コンパイラを構成する。 Then, the adjustment device 10 adjusts the functions exhibited by the compiler or the FPGA 150 so that the structure of the first graph and the structure of the second graph are similar. For example, the adjustment device 10 reconfigures the compiler so that the structure of the DAG generated by the compiler from the code approaches the structure of the first graph representing the function of the FPGA 150 . Such reconfiguration of the compiler is realized, for example, by correcting a program module for generating a DAG among the program modules that make up the compiler. That is, the adjustment device 10 configures the compiler so that the structure of the first graph and the structure of the second graph are similar when executing processing as a compiler for the FPGA 150 .

例えば、コンパイラがLLVMにより実現される場合、コンパイラは、IR(Intermediate Representation)ビルダを用いてコードから中間表現を生成し、オプティマイザを用いて中間表現からHDLを生成する。ここで、オプティマイザは、中間表現からHDLを生成する際に、DAGを生成し、生成したDAGを用いてHDLを生成する(例えば、非特許文献2参照)。そこで、調整装置10は、中間表現から生成されるDAGの構造が第グラフに近づくように、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 Non-Patent Document 2, for example). Therefore, the adjustment device 10 should modify the logic of the IR builder and optimizer so that the structure of the DAG generated from the intermediate representation approaches the first graph.

このような処理の結果、調整装置10は、FPGA150が有する機能の構造に類似する構造を有するDAGを用いて、コードをHDLにコンパイルするコンパイラを生成することができる。このようなコンパイラにより生成されたHDLは、FPGA150が有する論理コンポーネントの効率的な構成を実現することができる。この結果、調整装置10は、FPGA150等、PLDにおける処理の効率を改善することができる。 As a result of such processing, the coordinator 10 can generate a compiler that compiles the code into HDL using a DAG having a structure similar to that of the functions of the FPGA 150 . HDL generated by such a compiler can implement efficient configuration of the logic components of the FPGA 150 . As a result, the adjustment device 10 can improve the efficiency of processing in PLDs such as the FPGA 150 .

〔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 adjustment device 10 uses any method to adjust the structure of the first graph and the structure of the second graph. can be compared with For example, the adjustment device 10 compares the structure of the first graph with the structure of the second graph using various techniques for comparing the topologies of the graphs, and based on the comparison result, compares the structure of the first graph with the structure of the second graph. The compiler should be adjusted so that the structures of the two graphs or the patterns of the graph structures are similar.

例えば、複数のノードの集合で示される情報が有する構造を示す手法として、パーシステントホモロジーの技術が知られている。このようなパーシステントホモロジーの技術においては、所定の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 adjustment device 10 generates a persistence diagram generated from the first graph and a persistence diagram generated from the second graph, and compares the generated persistence diagrams with the first graph and the second graph. It may be determined whether or not the graphs are similar. Further, the adjustment device 10 may adjust the compiler so that the persistent diagram generated from the first graph and the persistent diagram generated from the second graph are similar.

また、上述した処理に係わらず、調整装置10は、他の手法を用いて、第1グラフの構造と第2グラフの構造とが類似するかを判定して良い。例えば、調整装置10は、第1グラフの位相と第2グラフの位相とを比較し、各位相が類似するようにコンパイラの調整を行ってもよい。 Moreover, regardless of the above-described processing, the adjustment device 10 may use another technique to determine whether the structure of the first graph and the structure of the second graph are similar. For example, the adjustment device 10 may compare the phase of the first graph and the phase of the second graph and adjust the compiler so that the phases are similar.

また、調整装置10は、第2グラフを複数の分解グラフに分解し、分解した分解グラフと第1グラフの構造とが類似するように、コンパイラの調整を行ってもよい。例えば、調整装置10は、FPGA150が発揮可能な機能を示す第1グラフであって、それぞれ異なる機能を示す複数の第1グラフを取得する。また、調整装置10は、グラフラプラシアンに基づいて、第2グラフを複数の分解グラフに分解する。そして、調整装置10は、複数の分解グラフの構造と、複数の第1グラフの構造とが類似するように、コンパイラを調整してもよい。 Further, the adjustment device 10 may decompose the second graph into a plurality of decomposed graphs, and adjust the compiler so that the decomposed decomposed graph and the structure of the first graph are similar. For example, the adjusting device 10 acquires a plurality of first graphs showing functions that the FPGA 150 can exhibit, each showing a different function. Also, the adjustment device 10 decomposes the second graph into a plurality of decomposed graphs based on the graph Laplacian. Then, the adjustment device 10 may adjust the compiler so that the structures of the multiple decomposition graphs and the structures of the multiple first graphs are similar.

例えば、適切にグラフの分解を行うため、分解グラフのエッジの数がなるべく小さくなり、かつ、各分解グラフの大きさ(ノードの数)がなるべく等しくなるように、グラフを複数の分解グラフに分解するための様々な手法が提案されている。このような分解グラフに分解するための手法として、グラフ全体を示す隣接行列を生成し、生成した隣接行列に基づいたグラフラプラシアンを設定し、グラフラプラシアンに基づいて、グラフを分解するエッジを決定するスペクトラルクラスタリングの手法が知られている(例えば、非特許文献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 adjustment device 10 decomposes the second graph into a plurality of decomposed graphs based on the graph Laplacian of the second graph. Further, the adjustment device 10 acquires a plurality of first graphs showing each function that the FPGA 150 can exhibit. Then, the adjustment device 10 compares the multiple decomposed graphs with the multiple first graphs, and adjusts the compiler so that the structures of the graphs are similar. For example, the adjustment device 10 may adjust the compiler so as to maximize the number of decomposed graphs whose similarity to any first graph falls within a predetermined range. Further, the adjustment device 10 may adjust the compiler so that the sum of similarities between each decomposition graph and each first graph is maximized. That is, the adjustment device 10 adjusts the compiler using the degree of similarity between the structure of the decomposition graph and the structure of the first graph as an index.

なお、調整装置10は、グラフ構造そのものの類似性のみならず、グラフ構造のパターンが類似するように、コンパイラやFPGA150の調整を行ってもよい。例えば、調整装置10は、各種のパターン解析技術を用いて、グラフ構造が有するパターンを特定し、特定したパターンが類似するように、コンパイラやFPGA150の調整を行ってもよい。 Note that the adjustment device 10 may adjust the compiler and the FPGA 150 so that not only the similarity of the graph structures themselves but also the patterns of the graph structures are similar. For example, the adjustment device 10 may use various pattern analysis techniques to identify patterns that the graph structures have, and adjust the compiler and FPGA 150 so that the identified patterns are similar.

〔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 adjustment device 10 will be described with reference to FIG. First, the adjustment device 10 acquires a graph (that is, the first graph) indicating the functions that the FPGA 150 can exhibit as a functional decomposition graph. For example, the adjustment device 10 acquires, as functional decomposition graphs, a plurality of graphs showing the content of each logic configured by the FPGA 150 using logic circuits in order to execute predetermined processing.

また、調整装置10は、所定の処理を示すソースコードからコンパイラが生成したDAGを取得し、DAGの構造と機能分解グラフの構造とを比較する(ステップS2)。例えば、調整装置10は、所定の処理を示すソースコードをLLVMに入力し、LLVMが生成したDAGを取得する。また、調整装置10は、グラフラプラシアンに基づいて、DAGを複数の分解グラフDAG1~DAG4に分解する。そして、調整装置10は、分解グラフDAG1~DAG4と、機能分解グラフのそれぞれとを比較し、類似するか否かを判定する。 Further, the adjustment device 10 acquires a DAG generated by the compiler from the source code indicating the predetermined processing, and compares the structure of the DAG with the structure of the functional decomposition graph (step S2). For example, the coordinator 10 inputs a source code indicating predetermined processing to LLVM, and obtains a DAG generated by LLVM. Further, the adjustment device 10 decomposes the DAG into a plurality of decomposed graphs DAG1 to DAG4 based on the graph Laplacian. Then, the adjustment device 10 compares the decomposition graphs DAG1 to DAG4 with each of the functional decomposition graphs, and determines whether or not they are similar.

そして、調整装置10は、DAGと機能分解グラフとが相互に類似するように、コンパイラの調整を行う。例えば、調整装置10は、機能分解グラフと類似するDAGを生成するように、LLVMが有するIRビルダやオプティマイザの調整を行う。そして、調整装置10は、調整したコンパイラがソースコードから生成したHDLを用いて、FPGA150の設定を行う(ステップS4)。 Then, the adjusting device 10 adjusts the compiler so that the DAG and the functional decomposition graph are similar to each other. For example, the adjustment device 10 adjusts the IR builder and optimizer of LLVM so as to generate a DAG similar to the functional decomposition graph. Then, the adjusting device 10 sets the FPGA 150 using the HDL generated from the source code by the adjusted compiler (step S4).

〔1-5.FPGA側の調整について〕
ここで、上述した説明では、調整装置10は、コンパイラ側の調整を行うことで、FPGA150による処理の最適化を図った。しかしながら、実施形態は、これに限定されるものではない。例えば、調整装置10は、所定の処理を実行する際にFPGA150が発揮する機能を調整することで、処理の最適化を図ってもよい。
[1-5. Adjustment on the FPGA side]
Here, in the above description, the adjustment device 10 optimizes the processing by the FPGA 150 by adjusting the compiler. However, embodiments are not so limited. For example, the adjusting device 10 may optimize the processing by adjusting the functions exhibited by the FPGA 150 when executing the predetermined processing.

例えば、調整装置10は、所定の処理を実現するためにFPGA150に発揮させる機能の組み合わせを複数特定する。また、調整装置10は、特定した組み合わせごとに、機能分解グラフとの構造とDAGの構造とを比較する。そして、調整装置10は、特定した組み合わせのうち、機能分解グラフの構造がDAGの構造に最も近い機能分解グラフを特定する。その後、調整装置10は、特定した機能分解グラフの組が示す機能を発揮するように、FPGA150の設定を行ってもよい。また、調整装置10は、DAGの構造が、特定した組に含まれる機能分解グラフの構造と類似するように、コンパイラを調整してもよい。 For example, the adjusting device 10 identifies a plurality of combinations of functions to be exhibited by the FPGA 150 in order to implement predetermined processing. Further, the adjustment device 10 compares the structure of the functional decomposition graph and the structure of the DAG for each specified combination. Then, the adjustment device 10 identifies a functional decomposition graph whose structure is closest to the structure of the DAG from among the identified combinations. After that, the adjustment device 10 may set the FPGA 150 so as to exhibit the function indicated by the identified set of functional decomposition graphs. Also, the adjustment device 10 may adjust the compiler so that the structure of the DAG is similar to the structure of the functional decomposition graph included in the specified set.

すなわち、調整装置10は、LLVMの中間言語に合わせた最適化が行われるように、FPGA150の回路設計を調整し、FPGA150の回路設計に合わせた中間言語の最適化が行われるように、LLVMの調整を行う。より具体的には、調整装置10は、LLVMがスケジューリングにより生成するInstruction(中間表現)と、FPGA150が発揮する機能を示すPre Implemented Bitstreamとが相互に類似するように、LLVMやFPGA150の回路設計を調整する。このような処理の結果、FPGA150の回路設計をLLVMの中間言語、すなわち、抽象的なバックエンドに近づけることができる。この結果、調整装置10は、LLVMおよびFPGA150のボトルネックを相互に解消することができる。 That is, the adjustment device 10 adjusts the circuit design of the FPGA 150 so that optimization is performed according to the intermediate language of the LLVM, and optimizes the intermediate language according to the circuit design of the FPGA 150. make adjustments. More specifically, the adjustment device 10 designs the circuits of the LLVM and the FPGA 150 so that the Instruction (intermediate representation) generated by the scheduling of the LLVM and the Pre-Implemented Bitstream indicating the function exhibited by the FPGA 150 are similar to each other. adjust. As a result of such processing, the circuit design of FPGA 150 can be brought closer to the intermediate language of LLVM, that is, the abstract backend. As a result, the coordinator 10 can eliminate the bottlenecks of the LLVM and the FPGA 150 mutually.

〔2.生成装置の構成〕
以下、上記した調整処理を実現する調整装置10が有する機能構成の一例について説明する。図2は、実施形態に係る調整装置の構成例を示す図である。図2に示すように、調整装置10は、通信部20、記憶部30、および制御部40を有する。
[2. Configuration of generation device]
An example of the functional configuration of the adjustment device 10 that implements the adjustment process described above will be described below. FIG. 2 is a diagram illustrating a configuration example of the adjustment device according to the embodiment; As shown in FIG. 2 , the adjustment device 10 has a communication section 20 , a storage section 30 and a control section 40 .

通信部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 arithmetic device 100 via a predetermined network, and performs various communications with the arithmetic device 100 .

記憶部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 "function #1", the edge information "E12", the condition information "C1", and the connection destination "N2" are registered in the DAG database 31 in association with each other. It is Such information is connected by the edge indicated by the edge information "E12" when the content of the process indicated by the node ID "N1" is "function #1" and the processing result satisfies the condition information "C1". This indicates that the process of the node indicated by the node ID "N2" will be executed. Note that in the example shown in FIG. 3, conceptual values such as "function #1" and "C1" are described, but in reality, there are functions, character strings, and functions that indicate the conditions of the processing to be executed. to be registered.

図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 FPGA 150 is registered.

図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 FPGA 150 of the arithmetic device 100 to execute processing indicated by a given source code.

制御部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 adjustment device 10 are executed by a processor such as a CPU (Central Processing Unit) or an MPU (Micro Processing Unit) in a RAM or the like. It is realized by being executed as a work area. Also, the control unit 40 is a controller, and may be implemented by an integrated circuit such as an ASIC (Application Specific Integrated Circuit) or an FPGA (Field Programmable Gate Array).

図2に示すように、制御部40は、取得部41、分解部42、比較部43、調整部44、および設定部45を有する。 As shown in FIG. 2 , the control unit 40 has an acquisition unit 41 , a decomposition unit 42 , a comparison unit 43 , an adjustment unit 44 and a setting unit 45 .

取得部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 FPGA 150 executes predetermined processing. Then, the acquisition unit 41 generates a graph indicating the content of processing in the generated logic component as a functional decomposition graph. That is, the acquisition unit 41 generates a plurality of functional decomposition graphs. The acquisition unit 41 then registers the generated functional decomposition graph in the functional decomposition graph database 32 .

また、取得部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 unit 42 decomposes the second graph into a plurality of decomposed graphs based on the graph Laplacian. For example, the decomposition unit 42 refers to the DAG database 31 and acquires DAGs. In such a case, the decomposing unit 42 generates a graph Laplacian of the DAG, and uses the generated graph Laplacian to decompose the DAG into a plurality of decomposition graphs. For example, the decomposition unit 42 uses the technique disclosed in Non-Patent Document 5 to generate a decomposition graph.

比較部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 unit 42 . In such a case, the comparison unit 43 refers to the functional decomposition graph database 32 and acquires each functional decomposition graph. Then, the comparison unit 43 compares the structure of each decomposition graph with the structure of each functional decomposition graph, and calculates the degree of similarity.

例えば、比較部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 FPGA 150 so that the sum of similarities between the structure of each decomposition graph and the structure of each function decomposition graph increases. For example, the adjustment unit 44 may limit the logic modules configured in the FPGA 150 to logic modules having a structure similar to the structure of each decomposition graph. The adjustment unit 44 then registers the new LLVM in the storage unit 30 .

設定部45は、調整部44により調整されたLLVMを用いて、FPGA150の設定を行う。例えば、設定部45は、LLVMを用いて、ソースコードをHDLに変換し、変換後のHDLを演算装置100へと提供することで、FPGA150に所定の処理を実行させるための論理コンポーネントを設定する。 The setting unit 45 uses the LLVM adjusted by the adjustment unit 44 to set the FPGA 150 . For example, the setting unit 45 converts the source code into HDL using LLVM, and provides the converted HDL to the arithmetic device 100 to set logic components for causing the FPGA 150 to execute predetermined processing. do.

〔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 adjustment device 10 will be described with reference to FIG. 5 . FIG. 5 is a flowchart illustrating an example of the flow of adjustment processing according to the embodiment. First, the adjustment device 10 acquires a functional decomposition graph of FPGA (step S101). Further, the adjustment device 10 compares the structure of the DAG based on the intermediate representation of LLVM, which is the compiler, with the structure of the functional decomposition graph (step S102).

そして、調整装置10は、各グラフの構造が類似するようにコンパイラを構成する(ステップS103)。その後、調整装置10は、調整したコンパイラを用いて、ソースコードを機械語に変換し(ステップS104)、変換後の機械語を用いてFPGAの設定を行い(ステップS105)、処理を終了する。 Then, the adjustment device 10 configures the compiler so that the structures of the graphs are similar (step S103). After that, the adjustment device 10 converts the source code into machine language using the adjusted compiler (step S104), configures the FPGA using the converted machine language (step S105), and ends the process.

〔4.変形例〕
上記では、調整装置10による提供処理の一例について説明した。しかしながら、実施形態は、これに限定されるものではない。以下、調整装置10が実行する調整処理のバリエーションについて説明する。
[4. Modification]
An example of the providing process by the adjustment device 10 has been described above. However, embodiments are not so limited. Variations of the adjustment process executed by the adjustment device 10 will be described below.

〔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 adjustment device 10 performed adjustment processing within the adjustment device 10 . However, embodiments are not so limited. For example, the adjustment device 10 may be implemented by a front-end server that configures the arithmetic device 100 and a back-end server that executes adjustment processing. In such a case, for example, the front-end server has a setting unit 45 shown in FIG. 2, and the back-end server has an acquisition unit 41, a decomposition unit 42, a comparison unit 43, and an adjustment unit 44 shown in FIG. . Further, the adjustment device 10 may store the DAG database 31 and the functional decomposition graph database 32 in an external storage server.

〔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 device 10 according to the above-described embodiments is implemented by a computer 1000 configured as shown in FIG. 6, for example. FIG. 6 is a diagram illustrating an example of a hardware configuration; A computer 1000 is connected to an output device 1010 and an input device 1020, and an arithmetic device 1030, a primary storage device 1040, a secondary storage device 1050, an output IF (Interface) 1060, an input IF 1070, and a network IF 1080 are connected via a bus 1090. have

演算装置1030は、一次記憶装置1040や二次記憶装置1050に格納されたプログラムや入力装置1020から読み出したプログラム等に基づいて動作し、各種の処理を実行する。一次記憶装置1040は、RAM等、演算装置1030が各種の演算に用いるデータを一次的に記憶するメモリ装置である。また、二次記憶装置1050は、演算装置1030が各種の演算に用いるデータや、各種のデータベースが登録される記憶装置であり、ROM(Read Only Memory)、HDD、フラッシュメモリ等により実現される。 Arithmetic device 1030 operates based on programs stored in primary storage device 1040 and secondary storage device 1050, programs read from input device 1020, and the like, and executes various types of processing. The primary storage device 1040 is a memory device such as a RAM that temporarily stores data used by the arithmetic device 1030 for various calculations. The secondary storage device 1050 is a storage device in which data used for various calculations by the arithmetic device 1030 and various databases are registered, and is implemented by a ROM (Read Only Memory), HDD, flash memory, or the like.

出力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 output device 1010 that outputs various types of information such as a monitor and a printer. It is realized by a connector conforming to a standard such as HDMI (registered trademark) (High Definition Multimedia Interface). Also, the input IF 1070 is an interface for receiving information from various input devices 1020 such as a mouse, keyboard, scanner, etc., and is realized by, for example, USB.

なお、入力装置1020は、例えば、CD(Compact Disc)、DVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等から情報を読み出す装置であってもよい。また、入力装置1020は、USBメモリ等の外付け記憶媒体であってもよい。 Note that the input device 1020 includes, for example, optical recording media such as CDs (Compact Discs), DVDs (Digital Versatile Discs), PDs (Phase change rewritable discs), magneto-optical recording media such as MOs (Magneto-Optical discs), and tapes. It may be a device that reads information from a medium, a magnetic recording medium, a semiconductor memory, or the like. Also, the input device 1020 may be an external storage medium such as a USB memory.

ネットワーク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 output device 1010 and the input device 1020 via the output IF 1060 and the input IF 1070 . For example, arithmetic device 1030 loads a program from input device 1020 or secondary storage device 1050 onto primary storage device 1040 and executes the loaded program.

例えば、コンピュータ1000が調整装置10として機能する場合、コンピュータ1000の演算装置1030は、一次記憶装置1040上にロードされたプログラムまたはデータを実行することにより、制御部40の機能を実現する。コンピュータ1000のCPU1100は、これらのプログラムまたはデータを記録媒体1800から読み取って実行するが、他の例として、他の装置からネットワークNを介してこれらのプログラムを取得してもよい。 For example, when computer 1000 functions as adjustment device 10 , arithmetic device 1030 of computer 1000 implements the functions of control unit 40 by executing programs or data loaded on primary storage device 1040 . CPU 1100 of computer 1000 reads these programs or data from recording medium 1800 and executes them, but as another example, these programs may be acquired via network N from another device.

〔5.効果〕
上述したように、調整装置10は、処理に用いる論理回路の組み合わせを変更可能な演算装置の各論理回路が発揮する機能の内容を示す複数の第1グラフと、演算装置に所定の処理を実行させる機械語を生成するコンパイラが、機械語を生成するための所定の処理の内容から生成する第2グラフとを取得する。そして、調整装置10は、取得された第1グラフの構造と第2グラフの構造、または、グラフ構造のパターンが類似するように、コンパイラ若しくは演算装置が発揮する機能を調整する。このように、調整装置10は、PLDの論理設計と、PLDの設定を行うコンパイラが中間表現を生成する際に用いる論理設計とを近づけることで、PLDの設定を最適化するので、PLDにおける処理の効率を改善できる。
[5. effect〕
As described above, the adjustment device 10 has a plurality of first graphs showing the content of the function exhibited by each logic circuit of the arithmetic device capable of changing the combination of the logic circuits used for processing, and the arithmetic device executes a predetermined process. A second graph generated from the content of a predetermined process for generating the machine language is obtained by a compiler that generates a machine language for generating the machine language. Then, the adjustment device 10 adjusts the function exhibited by the compiler or the arithmetic device so that the structure of the acquired first graph and the structure of the second graph or the patterns of the graph structures are similar. In this way, the adjustment device 10 optimizes the PLD setting by bringing the logic design of the PLD closer to the logic design used by the compiler that sets the PLD to generate the intermediate representation. can improve the efficiency of

また、調整装置10は、グラフラプラシアンに基づいて、第2グラフを複数の分解グラフに分解し、複数の第1グラフの構造と複数の分解グラフの構造、または、グラフ構造のパターンが類似するように、コンパイラ若しくは演算装置が発揮する機能を調整する。また、調整装置10は、複数の第1グラフを取得し、複数の分解グラフの構造と複数の第1グラフの構造、または、グラフ構造のパターンが類似するように、コンパイラ若しくは演算装置が発揮する機能を調整する。また、調整装置10は、スケジューリングのためにコンパイラが中間表現から生成する第2グラフを取得する。また、調整装置10は、低レベル仮想機械を用いて構成されたコンパイラが生成する第2グラフを取得する。このため、調整装置10は、PLDの設定を最適化するので、PLDにおける処理の効率を改善できる。 Further, the adjustment device 10 decomposes the second graph into a plurality of decomposed graphs based on the graph Laplacian so that the structures of the plurality of first graphs and the structures of the decomposed graphs or the patterns of the graph structures are similar. In addition, it adjusts the functions that the compiler or the arithmetic unit exhibits. In addition, the adjustment device 10 acquires a plurality of first graphs, and the compiler or the arithmetic device performs such that the structures of the plurality of decomposed graphs and the structures of the plurality of first graphs, or the patterns of the graph structures are similar. Adjust functions. The coordinator 10 also obtains a second graph that the compiler generates from the intermediate representation for scheduling. The coordinator 10 also obtains a second graph generated by a compiler configured using a low-level virtual machine. Therefore, the adjustment device 10 optimizes the settings of the PLD, thereby improving the efficiency of processing in the PLD.

以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。 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 LIST 10 adjustment device 20 communication unit 30 storage unit 31 DAG database 32 functional decomposition graph database 33 LLVM
40 control unit 41 acquisition unit 42 decomposition unit 43 comparison unit 44 adjustment unit 45 setting unit 100 arithmetic unit 150 FPGA

Claims (5)

理回路の組み合わせを変更可能な演算装置の各論理回路が発揮する機能の内容を示す複数の第1グラフと、前記演算装置に所定の処理を実行させる機械語をソースコードから生成するLLVMを用いたコンパイラが前ソースコードから生成する第2グラフとを取得する取得部と、
前記第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.
前記分解部は、グラフラプラシアンに基づいて、前記第2グラフを複数の分解グラフに分解す
ことを特徴とする請求項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:
前記取得部は、スケジューリングのために前記コンパイラが中間表現から生成する第2グラフを取得する
ことを特徴とする請求項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.
理回路の組み合わせを変更可能な演算装置の各論理回路が発揮する機能の内容を示す複数の第1グラフと、前記演算装置に所定の処理を実行させる機械語をソースコードから生成するLLVMを用いたコンパイラが前ソースコードから生成する第2グラフとを取得する取得手順と、
前記第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:
JP2018096575A 2018-05-18 2018-05-18 Adjustment device, adjustment method and adjustment program Active JP7278716B2 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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