Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7322308B2 - Circuit information, computing device, computing method and program - Google Patents
[go: Go Back, main page]

JP7322308B2 - Circuit information, computing device, computing method and program - Google Patents

Circuit information, computing device, computing method and program Download PDF

Info

Publication number
JP7322308B2
JP7322308B2 JP2023014423A JP2023014423A JP7322308B2 JP 7322308 B2 JP7322308 B2 JP 7322308B2 JP 2023014423 A JP2023014423 A JP 2023014423A JP 2023014423 A JP2023014423 A JP 2023014423A JP 7322308 B2 JP7322308 B2 JP 7322308B2
Authority
JP
Japan
Prior art keywords
variables
time
unit
variable
matrix
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
JP2023014423A
Other languages
Japanese (ja)
Other versions
JP2023052843A (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.)
Toshiba Corp
Original Assignee
Toshiba 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
Priority claimed from JP2018174270A external-priority patent/JP6964056B2/en
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2023014423A priority Critical patent/JP7322308B2/en
Publication of JP2023052843A publication Critical patent/JP2023052843A/en
Priority to JP2023121420A priority patent/JP7551863B2/en
Application granted granted Critical
Publication of JP7322308B2 publication Critical patent/JP7322308B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)

Description

本発明の実施形態は、回路情報、計算装置、計算方法およびプログラムに関する。 The embodiments of the present invention relate to circuit information , computing devices, computing methods, and programs .

イジングモデルを用いて最適化問題を解くための様々なアルゴリズムが提案されている。また、イジングモデルを用いて最適化問題を解くハードウェアも提案されている。 Various algorithms have been proposed to solve optimization problems using Ising models. Hardware that solves the optimization problem using the Ising model has also been proposed.

このような最適化問題を解くハードウェアは、簡易な構成で、高速に問題が解けることが好ましい。また、このような最適化問題を解くハードウェアは、取り扱うことが可能な変数の個数が多い方が好ましい。また、このような最適化問題を解くハードウェアは、取り扱う変数の個数が変わっても、大幅な設計変更をすることなく、自在に対応できることが好ましい。 It is preferable that the hardware for solving such an optimization problem has a simple configuration and can solve the problem at high speed. Also, hardware that solves such optimization problems should preferably be able to handle a large number of variables. Moreover, hardware that solves such an optimization problem should preferably be able to cope with changes in the number of variables to be handled without any major design changes.

特許第5865456号公報Japanese Patent No. 5865456 特開2018-005541号公報JP 2018-005541 A 特開2018-010474号公報JP 2018-010474 A

T. Inagaki et al.,“A coherent Ising machine for 2000-node optimization problems”, Science 354, 603 (2016).T. Inagaki et al.,“A coherent Ising machine for 2000-node optimization problems”, Science 354, 603 (2016). H. Goto,“Bifurcation-based adiabatic quantum computation with a nonlinear oscillator network”, Sci. Rep. 6, 21686 (2016).H. Goto,“Bifurcation-based adiabatic quantum computation with a nonlinear oscillator network”, Sci. Rep. 6, 21686 (2016). Y. Haribara et al., “Performance evaluation of coherent Ising machines against classical neural networks”, Quantum Sci. Technol. 2, 044002 (2017).Y. Haribara et al., “Performance evaluation of coherent Ising machines against classical neural networks”, Quantum Sci. Technol. 2, 044002 (2017).

発明が解決しようとする課題は、簡易な構成で最適化問題を解くことである。 The problem to be solved by the invention is to solve the optimization problem with a simple configuration.

実施形態に係る回路情報は、ハードウェア記述言語により記載された、回路の構成を表す。前記回路情報は、前記回路を、イジングモデルを用いた最適化問題を解く計算装置として機能させる。前記計算装置は、第1変数メモリと、第2変数メモリと、行列乗算部と、時間発展部と、管理部と、出力部と、を備える。前記行列乗算部は、第1時刻におけるN個(Nは2以上の整数)の第1中間変数と、予め設定されたN行×N列の係数を含む係数行列とを行列乗算することにより、前記第1時刻におけるN個の第2中間変数を算出する。前記時間発展部は、前記第1時刻における前記N個の第2中間変数に基づき、前記第1時刻から1サンプリング期間後の第2時刻におけるN個の第1変数および前記第2時刻におけるN個の第2変数を算出し、前記第2時刻におけるN個の第1変数を前記第1変数メモリに書き込み、前記第2時刻におけるN個の第2変数を前記第2変数メモリに書き込む。前記管理部は、開始時刻からサンプリング期間毎で時刻を増加させ、それぞれの時刻に対する処理を前記行列乗算部および前記時間発展部に実行させる。前記出力部は、予め設定された終了時刻におけるN個の第1変数を出力する。前記N個の第1変数は、前記イジングモデルにおけるN個のスピンに対応する。前記N個の第2変数は、前記N個のスピンに対応する前記N個のスピンは、N個の点に対応する。前記N個の第1変数のそれぞれは、前記N個の点のうちの対応するスピンに対応する点の位置を表す。前記N個の第2変数のそれぞれは、前記N個の点のうちの対応するスピンに対応する点の運動量を表す。前記N個の第1中間変数は、前記N個の第1変数に対応し、前記N個の第1中間変数のそれぞれは、前記N個の第1変数のうちの対応する第1変数または前記対応する第1変数に予め設定された係数を乗じた値である。前記N個の第2中間変数は、前記N個の第2変数に対応する。 Circuit information according to the embodiment represents the configuration of a circuit described in a hardware description language. The circuit information causes the circuit to function as a computing device that solves an optimization problem using the Ising model. The computing device comprises a first variable memory, a second variable memory, a matrix multiplication unit, a time evolution unit, a management unit, and an output unit. The matrix multiplication unit performs matrix multiplication of N first intermediate variables (N is an integer equal to or greater than 2) at a first time and a coefficient matrix containing preset N rows×N columns of coefficients, Calculate N second intermediate variables at the first time. The time evolution unit generates N first variables at a second time after one sampling period from the first time and N variables at the second time based on the N second intermediate variables at the first time. N first variables at the second time are written into the first variable memory, and N second variables at the second time are written into the second variable memory. The management unit increases the time for each sampling period from the start time, and causes the matrix multiplication unit and the time evolution unit to execute processing for each time. The output unit outputs N first variables at a preset end time. The N first variables correspond to N spins in the Ising model . The N second variables correspond to the N spins. The N spins correspond to N points. Each of the N first variables represents the position of the point corresponding to the corresponding spin among the N points. Each of the N second variables represents the momentum of the point corresponding to the corresponding spin among the N points. The N first intermediate variables correspond to the N first variables, and each of the N first intermediate variables is a corresponding first variable of the N first variables or the It is a value obtained by multiplying the corresponding first variable by a preset coefficient. The N second intermediate variables correspond to the N second variables.

第1実施形態に係る計算装置の構成図。1 is a configuration diagram of a computing device according to a first embodiment; FIG. 演算部の処理の流れを示すフローチャート。4 is a flow chart showing the flow of processing in a computing unit; 第2実施形態に係る演算部の構成図。The block diagram of the calculating part which concerns on 2nd Embodiment. 第2実施形態での変数および係数行列の関係図。FIG. 10 is a relational diagram of variables and coefficient matrices in the second embodiment; 関数演算部の構成の第1例を示す図。FIG. 4 is a diagram showing a first example of the configuration of a function calculation section; 関数演算部の構成の第2例を示す図。The figure which shows the 2nd example of a structure of a function calculating part. 関数演算部の構成の第3例を示す図。The figure which shows the 3rd example of a structure of a function calculating part. 関数演算部の構成の第4例を示す図。The figure which shows the 4th example of a structure of a function calculating part. 第3実施形態での変数および係数行列の関係図。FIG. 10 is a relational diagram of variables and coefficient matrices in the third embodiment; 第3実施形態に係る行列乗算部の構成図。The block diagram of the matrix multiplication part which concerns on 3rd Embodiment. 第3実施形態に係る実装例を示す図。The figure which shows the example of implementation which concerns on 3rd Embodiment. 第4実施形態での変数および係数行列の関係図。FIG. 11 is a relationship diagram of variables and coefficient matrices in the fourth embodiment; 第4実施形態に係る分割行列乗算部の構成図。FIG. 11 is a configuration diagram of a partitioned matrix multiplication unit according to the fourth embodiment; 第5実施形態での変数および係数行列の関係図。FIG. 11 is a relationship diagram of variables and coefficient matrices in the fifth embodiment; 第6実施形態に係るサブ行列乗算部の構成図。The block diagram of the sub-matrix multiplication part which concerns on 6th Embodiment. 分割行列メモリに記憶された分割行列を示す図。FIG. 4 is a diagram showing a partitioning matrix stored in a partitioning matrix memory; 乗累算部に送信されるサブ行列を示す図。FIG. 4 shows sub-matrices sent to the multiply-accumulate unit; 乗累算部の構成図。FIG. 4 is a configuration diagram of a multiplication-accumulation unit; 第5実施形態におけるパラメータおよびタイミングを示す図。The figure which shows the parameter and timing in 5th Embodiment. 第6実施形態に係る時間発展部の構成図。The block diagram of the time evolution part which concerns on 6th Embodiment. 第1中間変数および第2中間変数のタイミングチャート。Timing chart of the first intermediate variable and the second intermediate variable.

以下、図面を参照しながら実施形態に係る計算装置10について詳細に説明する。実施形態に係る計算装置10は、イジングモデルを用いた最適化問題を解くことを目的とする。 Hereinafter, the computing device 10 according to the embodiment will be described in detail with reference to the drawings. The computing device 10 according to the embodiment aims to solve an optimization problem using an Ising model.

(前提)
まず、計算装置10において実行される処理の前提について説明する。
(Premise)
First, the premise of the processing executed in the computing device 10 will be described.

イジングモデルのエネルギーEIsingは、下記の式(1)により表される。

Figure 0007322308000001
The energy E Ising of the Ising model is represented by the following equation (1).
Figure 0007322308000001

式(1)において、Nはスピンの数を表す。sは、i番目のスピンの状態を表す。例えば、s=±1である。sは、j番目のスピンの状態を表す。例えば、s=±1である。iおよびjは、0以上、(N-1)以下の整数である。 In equation (1), N represents the number of spins. s i represents the state of the i-th spin. For example, s i =±1. s j represents the state of the j-th spin. For example, s j =±1. i and j are integers of 0 or more and (N-1) or less.

式(1)において、Ji,jは、N行×N列の係数行列Jに含まれるi行、j列の係数である。Ji,jは、i番目のスピンとj番目のスピンとの間の相互作用を表す。係数行列Jは、例えば実対称行列である。実対称行列は、対角成分(対角要素)が全てゼロである行列である。hは、N個の係数配列に含まれるi番目の係数である。hは、i番目のスピンに単独に加わる作用を表す。イジングモデルのエネルギーEIsingを最小とするスピン状態(基底状態)を探索する問題をイジング問題という。イジング問題を解く機械をイジングマシンと呼んでもよい。イジングマシンは、係数行列Jとhを入力され、基底状態もしくはよりエネルギーの低い近似解を計算し出力する。 In Equation (1), J i,j is the coefficient in the i-th row and the j-th column included in the coefficient matrix J of N rows×N columns. J i,j represents the interaction between the i-th spin and the j-th spin. The coefficient matrix J is, for example, a real symmetric matrix. A real symmetric matrix is a matrix whose diagonal elements are all zeros. h i is the i-th coefficient contained in the N coefficient array. h i represents an action applied solely to the i-th spin. The problem of searching for the spin state (ground state) that minimizes the energy E Ising of the Ising model is called the Ising problem. A machine that solves the Ising problem may be called an Ising machine. The Ising machine receives coefficient matrices J and h, and calculates and outputs a ground state or an approximate solution with lower energy.

量子分岐マシンの古典モデル(以下、古典分岐マシンと呼ぶ)が提案されている。古典分岐マシンは、式(2)、式(3)および式(4)に示す連立常微分方程式で表された運動方程式を用いて、式(1)の最適解を算出する。 A classical model of a quantum bifurcation machine (hereinafter referred to as a classical bifurcation machine) has been proposed. The classical bifurcation machine calculates the optimum solution of equation (1) using the equations of motion represented by the simultaneous ordinary differential equations shown in equations (2), (3) and (4).

Figure 0007322308000002
Figure 0007322308000002
Figure 0007322308000003
Figure 0007322308000003
Figure 0007322308000004
Figure 0007322308000004

式(2)、式(3)および式(4)において、Nは、質点の数を表し、2以上の整数である。Nは、スピンの数に対応する。xは、i番目の質点の位置を表す実数である。yは、i番目の質点の運動量を表す実数である。iおよびjは、0から(N-1)までの整数である。 In formulas (2), (3) and (4), N represents the number of mass points and is an integer of 2 or more. N corresponds to the number of spins. x i is a real number representing the position of the i-th mass point. yi is a real number representing the momentum of the i-th mass point. i and j are integers from 0 to (N-1).

式(2)、式(3)および式(4)において、Ji,jは、予め定められたN行×N列の係数を含む係数行列Jに含まれるi行、j列の係数である。係数行列Jは、例えば実対称行列である。hは、予め定められたN個の係数配列に含まれるi番目の係数である。式(2)、式(3)および式(4)において、hの項は、無くてもよい。 In equations (2), (3), and (4), J i,j is the coefficient in the i-th row and the j-th column included in the predetermined coefficient matrix J including the coefficients in N rows and N columns. . The coefficient matrix J is, for example, a real symmetric matrix. h i is the i-th coefficient included in a predetermined N coefficient array. In the formulas (2), (3) and (4), the h i term may be omitted.

式(2)、式(3)および式(4)において、Dは、例えば離調に対応する定数である。cは、定数である。Kは、例えばカー係数に対応する定数である。例えば、D、cおよびKは、予め定められている。 In equations (2), (3) and (4), D is a constant corresponding to detuning, for example. c is a constant. K is a constant corresponding to, for example, the Kerr coefficient. For example, D, c and K are predetermined.

式(2)、式(3)および式(4)において、tは、時刻を表す。p(t)は、例えば、tを変数とする関数であり、ポンプレートである。a(t)は、tを変数とする関数である。a(t)は、例えば、下記の式(5)により表される。

Figure 0007322308000005
In equations (2), (3) and (4), t represents time. p(t) is, for example, a function with t as a variable and is a pump rate. a(t) is a function with t as a variable. a(t) is represented, for example, by the following formula (5).
Figure 0007322308000005

古典分岐マシンは、tをゼロから十分大きな値へ微小時間ずつ増加させて、t毎に、式(2)および式(3)を用いてxおよびyを更新する。そして、古典分岐マシンは、tを十分に大きくした場合のxの最終値の符号(±1)を、sの最適解として出力する。このように、古典分岐マシンは、イジングモデルを、式(2)、式(3)および式(4)のHをハミルトニアンとしたハミルトン力学系であると見なしている。 The classical branching machine increments t from zero to a sufficiently large value by minute increments and updates x i and y i using equations (2) and (3) every t. The classical branching machine then outputs the sign (±1) of the final value of x i for sufficiently large t as the optimal solution for s i . Thus, the classical bifurcation machine considers the Ising model to be a Hamiltonian dynamical system with H in Equations (2), (3), and (4) as the Hamiltonian.

また、イジングモデルの最適解を算出する方法として、シミュレーティッドアニーリングが知られている。この方法では、逐次更新アルゴリズムが採用される。逐次更新アルゴリズムは、複数のスピンを1つずつ選択して順次に更新する。このような逐次更新アルゴリズムは、並列計算に適しておらず高速化することは困難である。 Also, simulated annealing is known as a method for calculating the optimum solution of the Ising model. This method employs an iterative update algorithm. The sequential update algorithm selects multiple spins one by one and updates them sequentially. Such a sequential update algorithm is not suitable for parallel computation and is difficult to speed up.

これに対して、古典分岐マシンの運動方程式をデジタル計算機で離散解法によって解くアルゴリズムが考えられる。このアルゴリズムは、シミュレーティッドアニーリングとは異なり、複数の変数を同時に更新することができる。 On the other hand, an algorithm that solves the equation of motion of the classical bifurcation machine by the discrete solution method using a digital computer is conceivable. This algorithm can update multiple variables simultaneously, unlike simulated annealing.

しかし、古典分岐マシンは、最も計算量が大きい係数行列Jを用いた行列乗算を、xおよびyの両者の算出のために、実行しなければならなかった。また、古典分岐マシンは、式(2)、式(3)および式(4)により表される運動方程式を、計算コストの大きい離散解法(4次のルンゲ・クッタ法等)を実行することにより、解かなければならなかった。このため、古典分岐マシンは、計算量が膨大となってしまっていた。 However, the classical bifurcation machine had to perform matrix multiplication with the most computationally intensive coefficient matrix J to compute both x i and y i . In addition, the classical bifurcation machine solves the equations of motion expressed by equations (2), (3) and (4) by a discrete solution method (fourth-order Runge-Kutta method, etc.) with high computational cost. , had to solve. For this reason, the classical branching machine has an enormous amount of computation.

これに対して、実施形態に係る計算装置10は、下記の式(6)、式(7)および式(8)に示す新規な連立常微分方程式で表された運動方程式を用いて、式(1)の最適解を算出する。 On the other hand, the computing device 10 according to the embodiment uses the equations of motion represented by the new simultaneous ordinary differential equations shown in the following equations (6), (7), and (8) to calculate the equation ( Calculate the optimal solution for 1).

Figure 0007322308000006
Figure 0007322308000006
Figure 0007322308000007
Figure 0007322308000007
Figure 0007322308000008
Figure 0007322308000008

式(6)、式(7)および式(8)において、N、xi、、i、j、Ji,j、h、D、c、K、t、p(t)およびa(t)は、式(2)~式(4)と同様である。 In equations (6), (7) and (8), N, x i , y i , i, j, J i, j , hi , D, c, K, t, p(t) and a (t) is the same as in formulas (2) to (4).

実施形態に係る計算装置10は、tをゼロから十分大きな値へと微小時間ずつ増加させて、t毎に、式(6)および式(7)を用いてxおよびyを更新する。そして、実施形態に係る計算装置10は、tを十分に大きくした場合のxの最終値の符号(±1)を、sの最適解として出力する。このように、実施形態に係る計算装置10は、イジング問題を、式(8)のHをハミルトニアンとしたハミルトン力学系の時間発展をシミュレートすることで解く。 The computing device 10 according to the embodiment increments t from zero to a sufficiently large value in small time increments, and updates x i and y i using equations (6) and (7) every time t. Then, the computing device 10 according to the embodiment outputs the sign (±1) of the final value of x i when t is sufficiently large as the optimum solution of s i . As described above, the computing device 10 according to the embodiment solves the Ising problem by simulating the time evolution of the Hamiltonian dynamical system, where H in Equation (8) is the Hamiltonian.

式(6)、式(7)および式(8)において、最も計算量が大きい係数行列Jに対する行列乗算は、式(7)には含まれるが、式(6)には含まれない。従って、実施形態に係る計算装置10は、最も計算量が大きい係数行列Jに対する行列乗算を、yの更新のためにのみ実行すればよく、xの更新のためには実行しなくてよい。また、xの時間微分値(dx/dt)を算出するための式(6)は、p(t)が消去されている。従って、実施形態に係る計算装置10は、少ない計算量でイジングモデルの最適解を算出することができる。 In equations (6), (7), and (8), matrix multiplication for the coefficient matrix J, which requires the largest amount of calculation, is included in equation (7) but not included in equation (6). Therefore, the computing device 10 according to the embodiment only needs to perform matrix multiplication on the coefficient matrix J, which requires the largest amount of calculation, for updating yi , and does not need to perform it for updating xi . . Also, p(t) is eliminated from the equation (6) for calculating the time differential value (dx i /dt) of x i . Therefore, the computing device 10 according to the embodiment can compute the optimum solution of the Ising model with a small amount of computation.

また、xの時間微分値(dx/dt)を算出するための式(6)は、yを含むが、xを含まない。また、yの時間微分値(dy/dt)を算出するための式(7)は、xを含むが、yを含まない。 Also, Equation (6) for calculating the time differential value (dx i /dt) of x i includes y i but does not include x i . Also, Equation (7) for calculating the time differential value (dy i /dt) of y i includes x i but does not include y i .

つまり、式(6)および式(7)を用いる場合、ハミルトニアンにおいて、xとyとは、互いに分離されている。従って、実施形態に係る計算装置10は、計算量が小さく安定な離散解法を適用して、xおよびyを更新することが可能となる。例えば、実施形態に係る計算装置10は、シンプレクティック・オイラー法等を適用して、xおよびyを更新する。従って、実施形態に係る計算装置10は、簡易な演算および簡易な構成で、イジングモデルを用いた最適化問題の最適解を算出することができる。 That is, when using equations (6) and (7), x i and y i are separated from each other in the Hamiltonian. Therefore, the computing device 10 according to the embodiment can update x i and y i by applying a stable discrete solution method with a small amount of computation. For example, the computing device 10 according to the embodiment applies the symplectic Euler method or the like to update x i and y i . Therefore, the computing device 10 according to the embodiment can calculate the optimum solution of the optimization problem using the Ising model with a simple calculation and a simple configuration.

また、実施形態に係る計算装置10は、下記の式(9)および式(10)に示す新規な連立常微分方程式で表された運動方程式を用いて、式(1)の最適解を算出してもよい。 Further, the calculation device 10 according to the embodiment calculates the optimum solution of Equation (1) using the equations of motion represented by the new simultaneous ordinary differential equations shown in Equations (9) and (10) below. may

Figure 0007322308000009
Figure 0007322308000009
Figure 0007322308000010
Figure 0007322308000010

式(9)および式(10)において、N、xi、、i、j、Ji,j、h、D、c、K、t、p(t)およびa(t)は、式(2)~式(4)と同様である。式(9)および式(10)において、nは、2以上の偶数である。 In equations (9) and (10), N, x i , y i , i, j, J i,j , hi , D, c, K, t, p(t) and a(t) are This is similar to formulas (2) to (4). In formulas (9) and (10), n is an even number of 2 or more.

この場合、実施形態に係る計算装置10は、tをゼロから十分大きな値へと微小時間ずつ増加させて、t毎に、式(9)および式(10)を用いてxおよびyを更新する。そして、実施形態に係る計算装置10は、tを十分に大きくした場合のxの最終値の符号(±1)を、sの最適解として出力する。 In this case, the computing device 10 according to the embodiment increments t from zero to a sufficiently large value in small time increments, and calculates x i and y i using equations (9) and (10) for each t. Update. Then, the computing device 10 according to the embodiment outputs the sign (±1) of the final value of x i when t is sufficiently large as the optimum solution of s i .

ここで、最も計算量が大きい係数行列Jに対する行列乗算は、式(9)に含まれ、式(10)には含まれない。従って、式(9)および式(10)を用いる場合も、実施形態に係る計算装置10は、最も計算量が大きい係数行列Jに対する行列乗算を、yの更新のためにのみ実行すればよく、xの更新のためには実行しなくてよい。また、xの時間微分値(dx/dt)を算出するための式(9)は、p(t)が消去されている。従って、式(9)および式(10)を用いる場合も、実施形態に係る計算装置10は、少ない計算量でイジングモデルを用いた最適化問題の最適解を算出することができる。 Here, the matrix multiplication for the coefficient matrix J, which requires the largest amount of calculation, is included in Equation (9) and not included in Equation (10). Therefore, even when using equations (9) and (10), the calculation device 10 according to the embodiment only needs to perform matrix multiplication on the coefficient matrix J, which requires the largest amount of calculation, to update yi . , xi for updating. Also, p(t) is eliminated from the equation (9) for calculating the time differential value (dx i /dt) of x i . Therefore, even when Equations (9) and (10) are used, the computing device 10 according to the embodiment can calculate the optimum solution of the optimization problem using the Ising model with a small amount of calculation.

また、xの時間微分値(dx/dt)を算出するための式(9)は、yを含むが、xを含まない。また、yの時間微分値(dy/dt)を算出するための式(10)は、xを含むが、yを含まない。 Also, Equation (9) for calculating the time differential value (dx i /dt) of x i includes y i but does not include x i . Also, Equation (10) for calculating the time differential value (dy i /dt) of y i includes x i but does not include y i .

つまり、式(9)および式(10)を用いる場合も、ハミルトニアンにおいて、xとyとは、互いに分離されている。従って、式(9)および式(10)を用いる場合も、式(6)および式(7)を用いる場合と同様に、実施形態に係る計算装置10は、簡易な演算および簡易な構成で、イジングモデルを用いた最適化問題の最適解を算出することができる。 That is, x i and y i are separated from each other in the Hamiltonian also when using equations (9) and (10). Therefore, when using formulas (9) and (10), as in the case of using formulas (6) and (7), the computing device 10 according to the embodiment can achieve Optimal solutions for optimization problems using Ising models can be calculated.

(第1実施形態)
第1実施形態に係る計算装置10について説明する。なお、各実施形態の説明において、それまでに説明した装置、ブロックまたは回路等と、略同一の機能および構成を有する装置、ブロックまたは回路には同一の符号を付けて、相違点を除き詳細な説明を省略する。
(First embodiment)
A computing device 10 according to the first embodiment will be described. In the description of each embodiment, devices, blocks, or circuits having substantially the same functions and configurations as the devices, blocks, or circuits described so far are denoted by the same reference numerals, and detailed descriptions other than the differences are given. Description is omitted.

図1は、第1実施形態に係る計算装置10の構成を示す図である。計算装置10は、式(7)および式(8)に示した連立常微分方程式、または、式(9)および式(10)に示した連立常微分方程式を用いて、イジングモデルを用いた最適化問題を解く装置である。 FIG. 1 is a diagram showing the configuration of a computing device 10 according to the first embodiment. Calculation device 10 calculates the optimum It is a device that solves the transformation problem.

計算装置10は、演算部20と、入力部22と、出力部24と、設定部26とを備える。 The computing device 10 includes an arithmetic unit 20 , an input unit 22 , an output unit 24 and a setting unit 26 .

演算部20は、例えば1または複数のCPU(Central Processing Unit)等のプロセッサおよびメモリを備える演算処理装置である。また、演算部20は、第2実施形態以降の回路であってもよい。 The arithmetic unit 20 is an arithmetic processing device that includes a processor such as one or more CPUs (Central Processing Units) and a memory. Further, the calculation unit 20 may be the circuit of the second embodiment or later.

演算部20は、サンプリング時刻を表すパラメータであるtを開始時刻(例えば0)から微小時間(dt)ずつ増加させる。演算部20は、それぞれのサンプリング時刻毎に、式(6)および式(7)に示した連立常微分方程式、または、式(9)および式(10)に示した連立常微分方程式を用いて、N個の第1変数xおよびN個の第2変数yを更新する。そして、演算部20は、予め定められたサンプリング時刻である終了時刻TにおけるN個の第1変数xを出力する。 The calculation unit 20 increases t, which is a parameter representing the sampling time, by minute time (dt) from the start time (for example, 0). At each sampling time, the calculation unit 20 uses the simultaneous ordinary differential equations shown in equations (6) and (7), or the simultaneous ordinary differential equations shown in equations (9) and (10). , N first variables x i and N second variables y i are updated. Then, the calculation unit 20 outputs N first variables x i at the end time T, which is a predetermined sampling time.

入力部22は、演算部20による演算処理に先だって、開始時刻におけるN個の第1変数xおよびN個の第2変数yを取得して、演算部20に与える。開始時刻におけるN個の第1変数xおよびN個の第2変数yは、例えば、乱数により発生された値であってもよいし、予め設定された値(例えば、全て0または全て所定値)であってもよい。 The input unit 22 acquires the N first variables x i and the N second variables y i at the start time prior to the arithmetic processing by the arithmetic unit 20 and gives them to the arithmetic unit 20 . The N first variables x i and the N second variables y i at the start time may be, for example, values generated by random numbers, or preset values (for example, all 0 or all predetermined value).

出力部24は、演算部20による演算処理の終了後に、終了時刻TにおけるN個の第1変数xを取得する。そして、出力部24は、終了時刻TにおけるN個の第1変数xの符号を表す値(例えば、+1,-1)を、イジングモデルにおけるN個のスピンの状態の組み合わせの最適解として出力する。 The output unit 24 acquires the N first variables x i at the end time T after the arithmetic processing by the arithmetic unit 20 is completed. Then, the output unit 24 outputs a value (eg, +1, −1) representing the sign of the N first variables x i at the end time T as the optimum solution for the combination of the states of the N spins in the Ising model. do.

設定部26は、演算部20による演算処理に先だって、式(6)および式(7)に示した連立常微分方程式、および、式(9)および式(10)に示した連立常微分方程式に用いられる各パラメータを演算部20に対して設定する。より具体的には、設定部26は、N、J、h、D、c、K、p(t)およびa(t)を設定する。 Before the arithmetic processing by the arithmetic unit 20, the setting unit 26 sets the simultaneous ordinary differential equations shown in the equations (6) and (7) and the simultaneous ordinary differential equations shown in the equations (9) and (10). Each parameter to be used is set for the calculation unit 20 . More specifically, the setting unit 26 sets N, J, h, D, c, K, p(t) and a(t).

Nは、第1変数および第2変数の数を表す2以上の整数である。
Jは、N行×N列の係数行列である。Ji,jは、係数行列Jに含まれるi行、j列の係数である。
hは、N個の係数を含む係数配列である。hは、係数配列hにおけるi番目の係数である。
D、c、Kは、定数である。
p(t)は、サンプリング時刻を変数とする関数である。
a(t)は、サンプリング時刻を変数とする関数である。
N is an integer of 2 or more representing the number of first variables and second variables.
J is a coefficient matrix of N rows×N columns. J i,j is the coefficient in the i-th row and the j-th column included in the coefficient matrix J.
h is a coefficient array containing N coefficients. h i is the ith coefficient in the coefficient array h.
D, c, K are constants.
p(t) is a function with the sampling time as a variable.
a(t) is a function with the sampling time as a variable.

さらに、設定部26は、dt、TおよびMを設定してもよい。
dtは、サンプリング期間(微小時間)を表す定数である。
Tは、終了時刻に相当するサンプリング時刻を表す定数である。
Mは、式(6)および式(7)の演算の繰り返し数、または、式(9)および式(10)の演算の繰り返し数を表す1以上の整数である。
Further, the setting unit 26 may set dt, T and M.
dt is a constant representing a sampling period (minute time).
T is a constant representing the sampling time corresponding to the end time.
M is an integer of 1 or more representing the number of repetitions of the calculations of formulas (6) and (7) or the number of repetitions of the calculations of formulas (9) and (10).

なお、設定部26は、これらのパラメータのうち一部を、ユーザ操作に応じて任意に変更してもよい。また、設定部26は、これらのパラメータを演算毎に変更せずに固定した値としてもよい。 Note that the setting unit 26 may arbitrarily change some of these parameters according to user operations. Also, the setting unit 26 may set these parameters to fixed values without changing them for each calculation.

図2は、演算部20の処理の流れを示すフローチャートである。 FIG. 2 is a flow chart showing the processing flow of the computing unit 20. As shown in FIG.

まず、S11において、演算部20は、t、pおよびaを初期化する。例えば、演算部20は、t、pおよびaを全て0にする。tは、サンプリング時刻を表すパラメータである。pは、時刻tにおけるp(t)の値を表すパラメータである。aは、時刻tにおけるa(t)の値を表すパラメータである。 First, in S11, the calculation unit 20 initializes t, p and a. For example, the computing unit 20 sets t, p and a to all zero. t is a parameter representing sampling time. p is a parameter representing the value of p(t) at time t. a is a parameter representing the value of a(t) at time t.

続いて、演算部20は、tが予め設定された終了時刻T以上となるまでS13からS20までの処理を繰り返す(S12とS21との間のループ処理)。なお、a(t)が増加関数である場合、演算部20は、aが予め定められた値以上となるまで、S13からS20までの間の処理を繰り返してもよい。 Subsequently, the calculation unit 20 repeats the processing from S13 to S20 until t becomes equal to or greater than the preset end time T (loop processing between S12 and S21). Note that when a(t) is an increasing function, the calculation unit 20 may repeat the processing from S13 to S20 until a becomes equal to or greater than a predetermined value.

S13において、演算部20は、N個の第1変数xのそれぞれに、サンプリング期間(微小時間)dtと、予め設定された係数cとを乗じることにより、N個の第1中間変数x´を算出する。すなわち、S13において、演算部20は、下記の式(21)の演算を実行する。
´=dt×c×x…(21)
In S13, the calculation unit 20 multiplies each of the N first variables x i by the sampling period (minute time) dt and a preset coefficient c to obtain N first intermediate variables x i ' is calculated. That is, in S13, the calculation unit 20 executes the calculation of the following formula (21).
x i ′=dt×c×x i (21)

続いて、S14において、演算部20は、N個の第1中間変数x´と、予め設定されたN行×N列の係数を含む係数行列Jとを行列乗算することにより、N個の第2中間変数bを算出する。すなわち、S14において、演算部20は、下記の式(22)の演算を実行する。

Figure 0007322308000011
Subsequently, in S14, the calculation unit 20 multiplies the N first intermediate variables x i ' by a coefficient matrix J including preset coefficients of N rows×N columns to obtain N A second intermediate variable b i is calculated. That is, in S14, the calculation unit 20 executes the calculation of the following formula (22).
Figure 0007322308000011

なお、演算部20は、S14の処理を実行した後、S13の処理を実行してもよい。この場合、S14において、演算部20は、N個の第1変数xと係数行列Jとを行列乗算することにより、N個の値を算出する。続いて、S13において、演算部20は、S14で算出したN個の値のそれぞれに、(dt×c)を乗じることにより、N個の第2中間変数bを算出する。 Note that the calculation unit 20 may execute the process of S13 after executing the process of S14. In this case, in S14, the calculation unit 20 performs matrix multiplication of the N first variables xi and the coefficient matrix J to calculate N values. Subsequently, in S13, the calculation unit 20 calculates N second intermediate variables b i by multiplying each of the N values calculated in S14 by (dt×c).

続いて、S15において、演算部20は、N個の第2変数yのそれぞれに、対応する第2中間変数bを加算することにより、N個の第2変数yを更新する。すなわち、S15において、演算部20は、下記の式(23)の演算を実行する。
+=b…(23)
Subsequently, in S15, the calculation unit 20 updates the N second variables yi by adding the corresponding second intermediate variables bi to each of the N second variables yi . That is, in S15, the calculation unit 20 executes the calculation of the following formula (23).
y i +=b i (23)

続いて、演算部20は、S17からS18までの処理を、M回繰り返して実行する(S16とS19との間のループ処理)。なお、Mは、1以上の整数である。 Subsequently, the calculation unit 20 repeats the processing from S17 to S18 M times (loop processing between S16 and S19). Note that M is an integer of 1 or more.

S17において、演算部20は、式(7)または式(10)に従った演算を実行することにより、第2変数yを更新する。例えば、S17において、演算部20は、式(7)に従った演算を実行する場合、下記の式(24)の演算を実行する。
+=dt´×[(-D+p-Kx )x-c×h×a]…(24)
In S17, the computation unit 20 updates the second variable yi by performing computation according to Equation (7) or Equation (10). For example, in S17, the calculation unit 20 executes the calculation of the following formula (24) when executing the calculation according to the formula (7).
y i +=dt′×[(−D+p−Kx i 2 )x i −c×h i ×a] (24)

また、例えば、S17において、演算部20は、式(10)に従った演算を実行する場合、下記の式(25)の演算を実行する。なお、式(25)において、nは、2以上の偶数である。
+=dt´×{[(-D+p)(1+x )-Kx n+2]x-c×h×a}…(25)
Further, for example, in S17, the calculation unit 20 executes the calculation of the following formula (25) when executing the calculation according to the formula (10). In addition, in Formula (25), n is an even number of 2 or more.
y i +=dt′×{[(−D+p)(1+x i n )−K x i n+2 ]x i −c×h i ×a} (25)

続いて、S18において、演算部20は、式(6)または式(9)に従った演算を実行することにより、第1変数xを更新する。なお、式(6)および式(9)は、同一の式である。例えば、S18において、演算部20は、式(6)または式(9)に従った演算を実行する場合、下記の式(26)の演算を実行する。
+=dt´×D×y…(26)
Subsequently, in S18, the calculation unit 20 updates the first variable xi by executing the calculation according to Equation (6) or Equation (9). Note that equations (6) and (9) are the same equation. For example, in S18, the calculation unit 20 executes the calculation of the following formula (26) when executing the calculation according to the formula (6) or the formula (9).
x i +=dt′×D×y i (26)

S16からS19までのループ処理は、シンプレクティック・オイラー法における繰り返し演算に対応する。なお、演算部20は、S17の処理とS18の処理を逆に実行してもよい。すなわち、演算部20は、第1変数xを更新した後に、第2変数yを更新してもよい。 The loop processing from S16 to S19 corresponds to repeated calculations in the symplectic Euler method. Note that the calculation unit 20 may perform the processing of S17 and the processing of S18 in reverse. That is, the calculation unit 20 may update the second variable yi after updating the first variable xi .

S16からS19までのループ処理を実行した後、演算部20は、処理をS20に進める。S20において、演算部20は、tにdtを加算することにより、tを更新する。さらに、演算部20は、pおよびaを更新する。例えば、演算部20は、pに、予め設定されたdpを加算することにより、pを更新する。また、演算部20は、更新後のpの平方根を演算することにより、aを更新する。 After executing the loop processing from S16 to S19, the calculation unit 20 advances the processing to S20. In S20, the calculation unit 20 updates t by adding dt to t. Furthermore, the calculation unit 20 updates p and a. For example, the calculation unit 20 updates p by adding a preset dp to p. Further, the calculation unit 20 updates a by calculating the square root of p after updating.

S20の処理を実行した後、演算部20は、tがT以上となったか否かを判断する。演算部20は、tがTより小さい場合には、処理をS13に戻して、S13から処理を繰り返す。tがT以上となった場合には、演算部20は、本フローを終了する。 After executing the process of S20, the calculation unit 20 determines whether or not t has become T or more. If t is smaller than T, the calculation unit 20 returns the process to S13 and repeats the process from S13. When t becomes equal to or greater than T, the calculation unit 20 terminates this flow.

以上のような処理を実行することにより、第1実施形態に係る計算装置10は、式(6)および式(7)に示す連立常微分方程式、または、式(9)および式(10)に示す連立常微分方程式を用いて、最適化問題を解くことができる。第1実施形態に係る計算装置10によれば、第1変数xおよび第2変数yを簡単な演算または簡単な構成で、高速に更新することができる。従って、第1実施形態に係る計算装置10によれば、小さいコストで、高速に最適化問題の最適解を算出することができる。 By executing the processing as described above, the computing device 10 according to the first embodiment converts the simultaneous ordinary differential equations represented by the equations (6) and (7), or the equations (9) and (10) into The optimization problem can be solved using the system of ordinary differential equations shown. According to the computing device 10 according to the first embodiment, the first variable x i and the second variable y i can be updated at high speed with a simple calculation or a simple configuration. Therefore, according to the computing device 10 according to the first embodiment, it is possible to calculate the optimum solution of the optimization problem at low cost and at high speed.

(第2実施形態)
第2実施形態に係る計算装置10について説明する。
(Second embodiment)
A computing device 10 according to the second embodiment will be described.

図3は、第2実施形態に係る演算部20の構成を示す図である。第2実施形態において、計算装置10は、1または複数の半導体装置により実現された回路である。計算装置10は、例えば、FPGA(Field Programmable Gate Array)、ゲートアレイまたは特定用途向け集積回路(ASIC)等であってもよい。また、計算装置10は、一部にプロセッサを含んでもよい。 FIG. 3 is a diagram showing the configuration of the calculation unit 20 according to the second embodiment. In the second embodiment, computing device 10 is a circuit realized by one or more semiconductor devices. Computing device 10 may be, for example, an FPGA (Field Programmable Gate Array), a gate array, an application specific integrated circuit (ASIC), or the like. Also, the computing device 10 may partially include a processor.

第2実施形態に係る演算部20は、行列乗算部28と、時間発展部30と、管理部32とを備える。 The calculation unit 20 according to the second embodiment includes a matrix multiplication unit 28, a time evolution unit 30, and a management unit 32.

行列乗算部28は、任意のサンプリング時刻を表す第1時刻tにおけるN個の第1中間変数x´(t)を時間発展部30から取得する。行列乗算部28は、第1時刻tにおけるN個の第1中間変数x´(t)と、係数行列Jとを行列乗算することにより、第1時刻tにおけるN個の第2中間変数b(t)を算出する。 The matrix multiplication unit 28 acquires from the time evolution unit 30 N first intermediate variables x i '(t 1 ) at a first time t 1 representing an arbitrary sampling time. The matrix multiplication unit 28 performs matrix multiplication of the N first intermediate variables x i '(t 1 ) at the first time t 1 and the coefficient matrix J to obtain N second Compute the intermediate variables b i (t 1 ).

例えば、行列乗算部28は、係数行列メモリ36と、行列乗算実行部38とを有する。係数行列メモリ36は、係数行列Jを記憶する。行列乗算実行部38は、第1時刻tにおけるN個の第1中間変数x´(t)と、係数行列Jとを行列乗算する。 For example, the matrix multiplication section 28 has a coefficient matrix memory 36 and a matrix multiplication execution section 38 . A coefficient matrix memory 36 stores a coefficient matrix J. FIG. The matrix multiplication execution unit 38 performs matrix multiplication of the coefficient matrix J and the N first intermediate variables x i '(t 1 ) at the first time t 1 .

時間発展部30は、第1時刻tにおけるN個の第2中間変数b(t)を行列乗算部28から取得する。時間発展部30は、第1時刻tにおけるN個の第2中間変数b(t)に基づき、第1時刻tから1サンプリング期間後のサンプリング時刻を表す第2時刻tにおけるN個の第1変数x(t)、第2時刻tにおけるN個の第2変数y(t)および第2時刻tにおけるN個の第1中間変数x´(t)を算出する。 The time evolution unit 30 acquires the N second intermediate variables b i (t 1 ) at the first time t 1 from the matrix multiplication unit 28 . Based on the N second intermediate variables b i (t 1 ) at the first time t 1 , the time evolution unit 30 calculates N first variables x i (t 2 ), N second variables y i (t 2 ) at the second time t 2 and N first intermediate variables x i ′(t 2 ) at the second time t 2 ) is calculated.

管理部32は、開始時刻からサンプリング期間毎にサンプリング時刻を増加させる。そして、管理部32は、それぞれのサンプリング時刻に対する処理を、行列乗算部28および時間発展部30に実行させる。 The management unit 32 increases the sampling time for each sampling period from the start time. Then, the management unit 32 causes the matrix multiplication unit 28 and the time evolution unit 30 to execute processing for each sampling time.

すなわち、管理部32は、例えば、行列乗算部28に、第1時刻tにおけるN個の第2中間変数b(t)を算出させる。続いて、管理部32は、時間発展部30に、第2時刻tにおけるN個の第1変数x(t)、N個の第2変数y(t)およびN個の第1中間変数x´(t)を算出させる。続いて、管理部32は、行列乗算部28に、第2時刻tにおけるN個の第2中間変数b(t)を算出させる。続いて、管理部32は、時間発展部30に、第2時刻tから1サンプリング期間後のサンプリング時刻を表す第3時刻tにおけるN個の第1変数x(t)、N個の第2変数y(t)およびN個の第1中間変数x´(t)を算出させる。このように、管理部32は、サンプリング時刻を増加させながら、行列乗算部28および時間発展部30に交互に処理を実行させる。 That is, the management unit 32 causes, for example, the matrix multiplication unit 28 to calculate N second intermediate variables b i (t 1 ) at the first time t 1 . Subsequently, the management unit 32 provides the time evolution unit 30 with N first variables x i (t 2 ), N second variables y i (t 2 ), and N second variables y i (t 2 ) at the second time t 2 . 1 Intermediate variables x i '(t 2 ) are calculated. Subsequently, the management unit 32 causes the matrix multiplication unit 28 to calculate N second intermediate variables b i (t 2 ) at the second time t 2 . Subsequently, the management unit 32 provides the time evolution unit 30 with N first variables x i (t 3 ) at a third time t 3 representing a sampling time after one sampling period from the second time t 2 , N second variables y i (t 3 ) and N first intermediate variables x i '(t 3 ). In this way, the management unit 32 causes the matrix multiplication unit 28 and the time evolution unit 30 to alternately execute processing while increasing the sampling time.

なお、開始時刻(例えば、t)におけるN個の第1変数x(t)およびN個の第2変数y(t)は、例えば、演算処理に先だって、入力部22により予め与えられる。 Note that the N first variables x i (t 0 ) and the N second variables y i (t 0 ) at the start time (for example, t 0 ) are previously calculated by the input unit 22, for example, prior to the arithmetic processing. Given.

例えば、時間発展部30は、第1変数メモリ40と、第2変数メモリ42と、第1加算部44と、関数演算部46と、第1乗算部48と、第1中間変数メモリ50とを有する。 For example, the time evolution unit 30 includes a first variable memory 40, a second variable memory 42, a first addition unit 44, a function operation unit 46, a first multiplication unit 48, and a first intermediate variable memory 50. have.

第1変数メモリ40は、第1時刻tにおけるN個の第1変数x(t)を記憶する。第2変数メモリ42は、第1時刻tにおけるN個の第2変数y(t)を記憶する。 The first variable memory 40 stores N first variables x i (t 1 ) at the first time t 1 . The second variable memory 42 stores N second variables y i (t 1 ) at the first time t 1 .

第1加算部44は、行列乗算部28が算出した第1時刻tにおけるN個の第2中間変数b(t)を取得する。第1加算部44は、第2変数メモリ42に記憶された第1時刻tにおけるN個の第2変数y(t)に、第1時刻tにおけるN個の第2中間変数b(t)を加算することにより、第1時刻tにおけるN個の第2変数y(t)を更新する。例えば、第1加算部44は、先頭のインデックス(i=0)の第2変数y(t)から、最後のインデックス(i=N-1)の第2変数yN-1(t)まで、インデックス順に、N個の第2変数y(t)を更新する。 The first adder 44 acquires the N second intermediate variables b i (t 1 ) at the first time t 1 calculated by the matrix multiplier 28 . The first adder 44 adds the N second intermediate variables b Update the N second variables y i ( t 1 ) at the first time t 1 by adding i (t 1 ). For example, the first adder 44 converts the second variable y 0 (t 1 ) of the top index (i=0) to the second variable y N−1 (t 1 ) of the last index (i=N 1). ), update the N second variables y i (t 1 ) in index order.

なお、実施形態において、N個の第1値とN個の第2値とを加算するとは、同一のインデックスの値同士を加算することにより、N個の第3値を生成することをいう。 In the embodiment, adding N first values and N second values means generating N third values by adding values of the same index.

関数演算部46は、第1変数メモリ40に記憶された第1時刻tにおけるN個の第1変数x(t)、および、第1加算部44が算出した第1時刻tにおける更新されたN個の第2変数y(t)に基づき、第2時刻tにおけるN個の第1変数x(t)および第2時刻tにおけるN個の第2変数y(t)を算出する。例えば、関数演算部46は、先頭のインデックス(i=0)の第1変数x(t)および第2変数y(t)から、最後のインデックス(i=N-1)の第1変数xN-1(t)および第2変数yN-1(t)まで、インデックス順に、N個の第1変数x(t)およびN個の第2変数y(t)を算出する。 The function calculation unit 46 calculates the N first variables x i (t 1 ) at the first time t 1 stored in the first variable memory 40 and N first variables x i (t 2 ) at the second time t 2 and N second variables y at the second time t 2 based on the updated N second variables y i (t 1 ) Calculate i (t 2 ). For example, the function operation unit 46 converts the first variable x 0 (t 2 ) and the second variable y 0 (t 2 ) of the top index (i=0) to the last index (i=N-1). N first variables x i (t 2 ) and N second variables y i (t 2 ), in index order, up to one variable x N−1 (t 2 ) and a second variable y N−1 (t 2 ) 2 ) is calculated.

関数演算部46は、第2時刻tにおけるN個の第1変数x(t)を第1変数メモリ40に書き込む。例えば、関数演算部46は、第2時刻tにおけるN個の第1変数x(t)のそれぞれを、先頭のインデックス(i=0)の第1変数x(t)から順次に第1変数メモリ40に書き込む。第1変数メモリ40は、例えば、デュアルポートメモリであり、あるアドレスのデータの読み出しをしながら、他のアドレスにデータを書き込むことができる。第1変数メモリ40がデュアルポートメモリである場合、関数演算部46は、第2時刻tにおけるN個の第1変数x(t)を、第1時刻tにおけるN個の第1変数x(t)が記憶されていたアドレスに上書きすることができる。 The function calculator 46 writes the N first variables x i (t 2 ) at the second time t 2 to the first variable memory 40 . For example, the function operation unit 46 sequentially calculates each of the N first variables x i (t 2 ) at the second time t 2 from the first variable x 0 (t 2 ) of the leading index (i=0). to the first variable memory 40. The first variable memory 40 is, for example, a dual port memory, and can write data to another address while reading data from a certain address. When the first variable memory 40 is a dual port memory, the function operation unit 46 converts the N first variables x i (t 2 ) at the second time t 2 to the N first variables x i (t 2 ) at the first time t 1 . The address at which the variable x i (t 1 ) was stored can be overwritten.

関数演算部46は、第2時刻tにおけるN個の第2変数y(t)を第2変数メモリ42に書き込む。例えば、関数演算部46は、第2時刻tにおけるN個の第2変数y(t)のそれぞれを、先頭のインデックスの第2変数y(t)から順次に第2変数メモリ42に書き込む。第2変数メモリ42は、例えば、デュアルポートメモリである。第2変数メモリ42がデュアルポートメモリである場合、関数演算部46は、第2時刻tにおけるN個の第2変数y(t)を、第1時刻tにおけるN個の第2変数y(t)が記憶されていたアドレスに上書きすることができる。 The function calculator 46 writes the N second variables y i (t 2 ) at the second time t 2 to the second variable memory 42 . For example, the function operation unit 46 stores each of the N second variables y i (t 2 ) at the second time t 2 in the second variable memory sequentially from the second variable y 0 (t 2 ) at the top index. Write to 42. The second variable memory 42 is, for example, a dual port memory. When the second variable memory 42 is a dual port memory, the function operation unit 46 converts the N second variables y i (t 2 ) at the second time t 2 to the N second variables y i (t 2 ) at the first time t 1 . The address at which the variable y i (t 1 ) was stored can be overwritten.

第1乗算部48は、第2時刻tにおけるN個の第1変数x(t)のそれぞれに、予め設定された値(本実施形態においては、(dt×c))を乗じることにより、第2時刻tにおけるN個の第1中間変数x ´(t)を算出する。第1中間変数メモリ50は、第1乗算部48が算出した第2時刻tにおけるN個の第1中間変数x´(t)を記憶する。なお、第2時刻tにおけるN個の第1中間変数x´(t)は、第1中間変数メモリ50に一時的に記憶された後に、行列乗算部28に送信される。第1中間変数メモリ50は、第2時刻tにおけるN個の第1中間変数x´(t)のそれぞれを、第1乗算部48により生成されてから、行列乗算部28へと送信されるまでの期間保持する。第1中間変数メモリ50は、例えば、FIFO(First IN First Out)メモリを含んでいてもよい。 The first multiplier 48 multiplies each of the N first variables x i (t 2 ) at the second time t 2 by a preset value ((dt×c) in this embodiment). to calculate N first intermediate variables x i ' (t 2 ) at the second time t 2 . The first intermediate variable memory 50 stores N first intermediate variables x i '(t 2 ) at the second time t 2 calculated by the first multiplier 48 . Note that the N first intermediate variables x i '(t 2 ) at the second time t 2 are temporarily stored in the first intermediate variable memory 50 and then sent to the matrix multiplier 28 . The first intermediate variable memory 50 transmits each of the N first intermediate variables x i '(t 2 ) at the second time t 2 to the matrix multiplier 28 after being generated by the first multiplier 48 . retained until The first intermediate variable memory 50 may include, for example, a FIFO (First In First Out) memory.

このような構成において、行列乗算部28は、第1実施形態において説明したS14の処理を実行する。また、第1加算部44は、S15の処理を実行する。関数演算部46は、S16からS19までの処理を実行する。また、第1乗算部48は、S13の処理を実行する。また、管理部32は、S11、S20、および、S12とS21との間のループ処理の管理を実行する。従って、第2実施形態に係る演算部20によれば、第1実施形態と同様に、小さいコストで高速に最適化問題の最適解を算出することができる。 With such a configuration, the matrix multiplication unit 28 executes the processing of S14 described in the first embodiment. Also, the first addition unit 44 executes the process of S15. The function calculator 46 executes the processes from S16 to S19. Also, the first multiplier 48 executes the process of S13. The management unit 32 also manages S11, S20, and loop processing between S12 and S21. Therefore, according to the calculation unit 20 according to the second embodiment, the optimum solution of the optimization problem can be calculated at low cost and at high speed, as in the first embodiment.

なお、第1乗算部48は、第1中間変数メモリ50の前段に代えて、第1加算部44の前段に設けられてもよい。この配置の変更は、第1実施形態のS13とS14との処理を逆にした処理に対応する。ただし、第2時刻tにおけるN個の第1変数x(t)のそれぞれに乗算する値(本実施形態においては(dt×c))が1より小さい場合には、第1乗算部48は、第1中間変数メモリ50の前段に設けられている方がよい。これにより、第1乗算部48は、第2時刻tにおけるN個の第1中間変数x´(t)の桁数を小さくして、行列乗算部28でのオーバフローの確率を少なくすることができる。 Note that the first multiplication section 48 may be provided before the first addition section 44 instead of before the first intermediate variable memory 50 . This arrangement change corresponds to the process in which the processes of S13 and S14 in the first embodiment are reversed. However, when the value ((dt× c ) in this embodiment) to be multiplied by each of the N first variables x i (t 2 ) at the second time t 2 is smaller than 1, the first multiplier 48 is preferably provided in the preceding stage of the first intermediate variable memory 50 . As a result, the first multiplier 48 reduces the number of digits of the N first intermediate variables x i '(t 2 ) at the second time t 2 to reduce the probability of overflow in the matrix multiplier 28. be able to.

第1乗算部48が第1加算部44の前段に設けられた場合、第1中間変数メモリ50は、第2時刻tにおけるN個の第1変数x(t)を、第2時刻tにおけるN個の第1中間変数x´(t)として記憶する。また、この場合、第1乗算部48は、行列乗算部28から出力された第1時刻tにおけるN個の第2中間変数b(t)のそれぞれに、予め設定された値(dt×c)を乗じる。そして、この場合、第1加算部44は、第1時刻tにおけるN個の第2変数y(t)に、第1乗算部48が予め設定された値(dt×c)を乗じた第1時刻tにおけるN個の第2中間変数b(t)を加算することにより、第1時刻tにおけるN個の第2変数y(t)を更新する。 When the first multiplication unit 48 is provided before the first addition unit 44 , the first intermediate variable memory 50 stores the N first variables x i (t 2 ) at the second time t 2 as Store as N first intermediate variables x i '(t 2 ) at t 2 . Also, in this case , the first multiplier 48 assigns preset values ( dt xc). In this case, the first addition unit 44 multiplies the N second variables y i (t 1 ) at the first time t 1 by the value (dt×c) preset by the first multiplication unit 48 . N second variables y i ( t 1 ) at the first time t 1 are updated by adding the N second intermediate variables b i (t 1 ) at the first time t 1 .

また、時間発展部30は、第1時刻tにおけるN個の第1中間変数x´(t)を、1クロックサイクルに第1数(第1数は1以上の整数)の第1中間変数x´(t)を含む第1中間ストリームX´として行列乗算部28へと出力してもよい。また、行列乗算部28は、第1時刻tにおけるN個の第2中間変数b(t)を、1クロックサイクルに第2数(第2数は1以上の整数)の第2中間変数b(t)を含む第2中間ストリームBとして時間発展部30へと出力してもよい。 Also, the time evolution unit 30 converts the N first intermediate variables x i '(t 1 ) at the first time t 1 to a first number (the first number is an integer equal to or greater than 1) in one clock cycle. It may be output to the matrix multiplier 28 as a first intermediate stream X' containing intermediate variables x i '(t 1 ). Also, the matrix multiplication unit 28 multiplies the N second intermediate variables b i (t 1 ) at the first time t 1 by the second intermediate variables of a second number (the second number is an integer equal to or greater than 1) in one clock cycle. It may be output to the time evolution unit 30 as a second intermediate stream B including variables b i (t 1 ).

ここで、ストリームとは、時系列データをいう。より具体的には、ストリームとは、N個のデータを例えばP個(Pは1以上の整数)ずつのデータセットに分割し、1クロックサイクル毎に、P個のデータセットを含むデータ列をいう。 Here, a stream refers to time-series data. More specifically, a stream divides N pieces of data into, for example, P pieces of data sets each (P is an integer of 1 or more), and a data string containing P pieces of data sets is generated for each clock cycle. say.

行列乗算部28および時間発展部30は、このようなストリームを取得した場合、先に取得したデータセットから順に処理を実行する。これにより、行列乗算部28および時間発展部30は、ストリームに含まれる全てのデータの取得が完了する前に、処理を開始することができる。また、行列乗算部28および時間発展部30は、N個のデータの先頭のデータセットの算出が完了した場合、算出が完了したデータセットから順次に送信を開始する。これにより、行列乗算部28および時間発展部30は、全てのデータの算出が完了する前に、次のユニットに処理を開始させることができる。 When acquiring such a stream, the matrix multiplying unit 28 and the time evolution unit 30 sequentially process the data sets acquired earlier. This allows the matrix multiplication unit 28 and the time evolution unit 30 to start processing before all the data included in the stream have been acquired. Also, when the calculation of the leading data set of the N pieces of data is completed, the matrix multiplication unit 28 and the time evolution unit 30 sequentially start transmission from the data set for which the calculation has been completed. This allows the matrix multiplication section 28 and the time evolution section 30 to cause the next unit to start processing before the calculation of all data is completed.

図4は、第2実施形態でのN個の第1中間変数x´、係数行列JおよびN個の第2中間変数bの関係を示す図である。行列乗算部28は、サンプリング時刻毎に、N個の第1中間変数(x´,x´,x´,…,x´,…,xN-1´)を取得する。また、行列乗算部28は、N行×N列の係数を含む係数行列(J0,0,J0,1,J0,2,…,Ji,j,…,JN-1,N-1)を記憶する。 FIG. 4 is a diagram showing the relationship among the N first intermediate variables x i ', the coefficient matrix J, and the N second intermediate variables b i in the second embodiment. The matrix multiplication unit 28 acquires N first intermediate variables (x 0 ′, x 1 ′ , x 2 ′, . . . , x i ', . . . , x N-1 ') at each sampling time. The matrix multiplication unit 28 also generates a coefficient matrix (J 0,0 , J 0,1 , J 0,2 , . . . , J i ,j , . -1 ).

そして、行列乗算部28は、N個の第1中間変数(x´,x´,x´,…,x´,…,xN-1´)と、係数行列(J0,0,J0,1,J0,2,…,Ji,j,…,JN-1,N-1)とを行列乗算することにより、N個の第2中間変数(b,b,b,…,b,…,bN-1)を算出する。 Then, the matrix multiplication unit 28 generates the N first intermediate variables (x 0 ', x 1 ', x 2 ', ..., x i ', ..., x N-1 ') and the coefficient matrix (J 0, 0 , J 0,1 , J 0,2 , . . . , J i ,j , . 1 , b 2 , . . . , b i , .

第2実施形態において、行列乗算部28は、どのような処理により行列乗算を実行してもよい。また、第2実施形態において、行列乗算部28は、例えば内部にプロセッサ等を含み、プログラムにより行列乗算を実行してもよい。 In the second embodiment, the matrix multiplication unit 28 may perform matrix multiplication by any process. Further, in the second embodiment, the matrix multiplication unit 28 may include, for example, a processor inside, and execute matrix multiplication by a program.

図5は、関数演算部46の構成の第1例を示す図である。第1例に係る関数演算部46は、第1のFX演算部51-1と、第1のFX加算部52-1と、第1のFY演算部53-1と、第1のFY加算部54-1とを有する。 FIG. 5 is a diagram showing a first example of the configuration of the function calculator 46. As shown in FIG. The function calculation unit 46 according to the first example includes a first FX calculation unit 51-1, a first FX addition unit 52-1, a first FY calculation unit 53-1, and a first FY addition unit. 54-1.

第1のFX演算部51-1は、第1時刻におけるN個の第1変数のそれぞれに対して、第1関数演算(FX(x))をすることにより、N個の第2微分値を算出する。第1のFX加算部52-1は、第1のFX演算部51-1が算出したN個の第2微分値と、第1加算部44が算出したN個の更新された第2変数とを加算することにより、N個の第2更新値を算出する。 The first FX calculation unit 51-1 performs the first function calculation (FX(x i )) on each of the N first variables at the first time to generate N second differential values Calculate The first FX addition unit 52-1 combines the N second differential values calculated by the first FX calculation unit 51-1 and the N updated second variables calculated by the first addition unit 44. N second update values are calculated by adding .

第1のFY演算部53-1は、第1のFX加算部52-1が算出したN個の第2更新値のそれぞれに対して第2関数演算(FY(y))をすることにより、N個の第1微分値を算出する。第1のFY加算部54-1は、第1のFY演算部53-1が算出したN個の第1微分値と第1時刻におけるN個の第1変数とを加算することにより、N個の第1更新値を算出する。 The first FY calculation unit 53-1 performs a second function calculation (FY(y i )) on each of the N second update values calculated by the first FX addition unit 52-1. , N first differential values are calculated. The first FY addition unit 54-1 adds the N first differential values calculated by the first FY calculation unit 53-1 and the N first variables at the first time, thereby obtaining N Calculate the first updated value of .

そして、関数演算部46は、第1のFY加算部54-1が算出したN個の第1更新値を第1変数メモリ40に与える。第1変数メモリ40は、第1のFY加算部54-1が算出したN個の第1更新値を、第2時刻におけるN個の第1変数として記憶する。 Then, the function calculator 46 provides the first variable memory 40 with the N first update values calculated by the first FY adder 54-1. The first variable memory 40 stores the N first update values calculated by the first FY adding section 54-1 as the N first variables at the second time.

また、関数演算部46は、第1のFX加算部52-1が算出したN個の第2更新値を第2変数メモリ42に与える。第2変数メモリ42は、第1のFX加算部52-1が算出したN個の第2更新値を、第2時刻におけるN個の第2変数として記憶する。 Also, the function calculation unit 46 provides the second variable memory 42 with the N second update values calculated by the first FX addition unit 52-1. The second variable memory 42 stores the N second update values calculated by the first FX adding section 52-1 as N second variables at the second time.

ここで、第1関数演算は、下記の式(31)の演算である。
FX(x)=dt´×[(-D+p-Kx )x-c×h×a]…(31)
Here, the first function operation is the operation of Equation (31) below.
FX(x i )=dt′×[(−D+p−Kx i 2 )x i −c×h i ×a] (31)

また、第2関数は、下記の式(32)の演算である。
FY(y)=dt´×D×y…(32)
Also, the second function is the calculation of the following equation (32).
FY(y i )=dt′×D×y i (32)

また、第1関数演算は、下記の式(33)の演算であってもよい。
FX(x)=dt´×{[(-D+p)(1+x )-Kx n+2]x-c×h×a}…(33)
Also, the first function operation may be the operation of the following equation (33).
FX(x i )=dt′×{[(−D+p)(1+x i n )−K x i n+2 ]x i −c×h i ×a} (33)

式(31)、(32)および(33)において、xは、第1時刻におけるN個の第1変数のうちのi番目の第1変数、または、N個の第1更新値のうちのi番目の第1更新値である。yは、第1加算部44が算出した更新されたN個の第2変数のうちのi番目の第2変数、または、N個の第2更新値のうちのi番目の第2更新値である。 In equations (31), (32) and (33), x i is the i-th first variable among the N first variables at the first time, or the i-th first variable among the N first update values It is the i-th first update value. yi is the i-th second variable of the updated N second variables calculated by the first adder 44 or the i-th second update value of the N second update values; is.

dt´は、予め設定された微小時間である。D、c、Kは、予め設定された定数である。hは、i毎に設定された係数である。pおよびaは、予め定められた演算式に従ってサンプリング時刻毎に増加する値である。 dt' is a minute time set in advance. D, c, and K are preset constants. h i is a coefficient set for each i. p and a are values that increase at each sampling time according to a predetermined arithmetic expression.

このような第1例の構成の関数演算部46は、第1実施形態におけるS16からS19までのループ処理を、S17→S18の順で、1回実行することができる。これにより、関数演算部46によれば、シンプレクティック・オイラー法と呼ばれる方法を用いて、第1時刻におけるN個の第1変数およびN個の第2変数を時間発展させて、第2時刻におけるN個の第1変数およびN個の第2変数を算出することができる。 The function calculation unit 46 having such a configuration of the first example can execute the loop processing from S16 to S19 in the first embodiment once in the order of S17→S18. As a result, the function computing unit 46 uses a method called the symplectic Euler method to time-evolve the N first variables and N second variables at the first time to obtain N first variables and N second variables in can be calculated.

さらに、第1例に係る関数演算部46は、パイプライン処理により演算を実現してもよい。パイプライン処理を実行する場合、例えば、関数演算部46は、第1変数XINおよび第2変数YINを含む1つの変数ペアを、クロックサイクル毎にインデックス順に受け取る。そして、関数演算部46は、受け取った変数ペアに対して演算を実行することにより、演算処理後の第1変数XOUTおよび第2変数YOUTを含む1つの変数ペアを算出する。 Furthermore, the function calculation unit 46 according to the first example may realize calculation by pipeline processing. When executing pipeline processing, for example, the function operation unit 46 receives one variable pair including the first variable X IN and the second variable Y IN in index order for each clock cycle. Then, the function calculation unit 46 calculates one variable pair including the first variable X OUT and the second variable Y OUT after the calculation processing by performing calculation on the received variable pair.

具体的には、パイプライン処理を実行する場合、関数演算部46は、2段のX転送レジスタ55-1~55-2と、2段のY転送レジスタ56-1~56-2と、1つのX出力レジスタ57と、1つのY出力レジスタ58とを、さらに有する。 Specifically, when executing pipeline processing, the function operation unit 46 includes two stages of X transfer registers 55-1 to 55-2, two stages of Y transfer registers 56-1 to 56-2, 1 It further has one X output register 57 and one Y output register 58 .

1段目のX転送レジスタ55-1は、クロックサイクル毎に、第1変数メモリ40から、第1時刻におけるN個の第1変数の中から1つの第1変数XINを取得し、取得した1つの第1変数XINを、1クロックサイクル期間保持する。1段目のY転送レジスタ56-1は、クロックサイクル毎に、第1加算部44が算出した更新されたN個の第2変数の中から、1つの第2変数YINを取得し、取得した1つの第2変数YINを、1クロックサイクル期間保持する。なお、1段目のX転送レジスタ55-1および1段目のY転送レジスタ56-1は、同一のクロックサイクルにおいて、同一のインデックスiの1つの第1変数および1つの第2変数を取得する。 The first-stage X transfer register 55-1 acquires one first variable X IN out of N first variables at the first time from the first variable memory 40 for each clock cycle, and acquires One first variable X IN is held for one clock cycle period. The Y transfer register 56-1 of the first stage acquires one second variable Y IN out of the N updated second variables calculated by the first adder 44 for each clock cycle. One second variable Y IN is held for one clock cycle period. The X transfer register 55-1 at the first stage and the Y transfer register 56-1 at the first stage acquire one first variable and one second variable of the same index i in the same clock cycle. .

第1のFX演算部51-1は、クロックサイクル毎に、1段目のX転送レジスタ55-1に格納された第1変数XINに対して、第1関数演算を実行することにより、第2微分値を算出する。第1のFX加算部52-1は、クロックサイクル毎に、第1のFX演算部51-1が当該クロックサイクルにおいて算出した第2微分値と、1段目のY転送レジスタ56-1に格納された第2変数YINとを加算することにより、第2更新値Yを算出する。 The first FX calculation unit 51-1 executes the first function calculation on the first variable XIN stored in the first-stage X transfer register 55-1 for each clock cycle, thereby obtaining the first Calculate the second differential value. For each clock cycle, the first FX addition unit 52-1 stores the second differential value calculated in the clock cycle by the first FX calculation unit 51-1 in the first-stage Y transfer register 56-1. The second update value Y_1 is calculated by adding the second variable Y_IN .

2段目のX転送レジスタ55-2は、クロックサイクル毎に、直前のクロックサイクルにおいて1段目のX転送レジスタ55-1が保持していた第1変数XINを取得し、取得した第1変数XINを、1クロックサイクル期間保持する。2段目のY転送レジスタ56-2は、クロックサイクル毎に、第1のFX加算部52-1が直前のクロックサイクルにおいて算出した第2更新値Yを取得し、取得した第2更新値Yを1クロックサイクル期間保持する。 The second-stage X transfer register 55-2 acquires the first variable X IN held by the first-stage X transfer register 55-1 in the immediately preceding clock cycle, and stores the acquired first variable X IN at each clock cycle. The variable X IN is held for one clock cycle period. The Y transfer register 56-2 in the second stage acquires the second update value Y1 calculated in the immediately preceding clock cycle by the first FX addition unit 52-1 for each clock cycle, and stores the acquired second update value Hold Y 1 for one clock cycle.

第1のFY演算部53-1は、クロックサイクル毎に、2段目のY転送レジスタ56-2に格納された第2更新値Yに対して、第2関数演算を実行することにより、第1微分値を算出する。第1のFY加算部54-1は、クロックサイクル毎に、第1のFY演算部53-1が当該クロックサイクルにおいて算出した第1微分値と、2段目のX転送レジスタ55-2に格納された第1変数XINとを加算することにより、第1更新値Xを算出する。 The first FY calculation unit 53-1 executes the second function calculation on the second update value Y1 stored in the Y transfer register 56-2 of the second stage for each clock cycle. A first differential value is calculated. For each clock cycle, the first FY addition unit 54-1 stores the first differential value calculated in the clock cycle by the first FY calculation unit 53-1 in the second-stage X transfer register 55-2. The first update value X_1 is calculated by adding the first variable X_IN obtained.

X出力レジスタ57は、クロックサイクル毎に、第1のFY加算部54-1が直前のクロックサイクルにおいて算出した第1更新値Xを取得し、取得した第1更新値Xを第2時刻における1つの第1変数XOUTとして第1変数メモリ40に記憶させる。 For each clock cycle, the X output register 57 acquires the first updated value X1 calculated by the first FY adder 54-1 in the immediately preceding clock cycle, and stores the acquired first updated value X1 at the second time. is stored in the first variable memory 40 as one first variable X OUT in .

Y出力レジスタ58は、クロックサイクル毎に、第2段目のY転送レジスタ56-2に格納された第2更新値Yを取得し、取得した第2更新値Yを第2時刻における1つの第2変数YOUTとして第2変数メモリ42に記憶させる。 The Y output register 58 acquires the second update value Y 1 stored in the second stage Y transfer register 56-2 at each clock cycle, and converts the acquired second update value Y 1 to 1 at the second time. are stored in the second variable memory 42 as two second variables Y OUT .

このようなパイプライン処理を実行することにより、第1例に係る関数演算部46は、クロックサイクル毎に、下記のような演算を実行することができる。 By executing such pipeline processing, the function calculation unit 46 according to the first example can execute the following calculation for each clock cycle.

=FX(XIN)+YIN
=FY(Y)+XIN
OUT=Y
OUT=X
Y1 =FX( XIN )+ YIN
X1 =FY( Y1 )+ XIN
Y OUT = Y 1
X OUT =X 1

このような第1例に係る関数演算部46は、同一のインデックスiの1つの第1変数XINおよび1つの第2変数YINを含む変数ペアに対して、第1関数演算→FX加算→第2関数演算→FY加算の一連の演算セットを、1回実行することができる。さらに、第1例に係る関数演算部46は、パイプライン処理を実行するので、複数の変数ペアに対して並列して演算を実行することができる。これにより、第1例に係る関数演算部46は、N個の変数ペアに対する演算を、短時間で完了させることができる。 The function operation unit 46 according to such a first example performs first function operation → FX addition → for variable pairs including one first variable X IN and one second variable Y IN with the same index i. A series of operation sets of second function operation→FY addition can be executed once. Furthermore, since the function calculation unit 46 according to the first example executes pipeline processing, it is possible to execute calculations in parallel on a plurality of variable pairs. As a result, the function calculation unit 46 according to the first example can complete calculations for N variable pairs in a short period of time.

図6は、関数演算部46の構成の第2例を示す図である。関数演算部46は、図6に示すような、第2例の構成であってもよい。第2例に係る関数演算部46は、第1例と同一の構成要素を有するが、各構成要素の配置が異なる。第2例を説明するに当たり、第1例と同一の動作をする構成要素については、同一の符号を付けて相違点を除き詳細な説明を省略する。 FIG. 6 is a diagram showing a second example of the configuration of the function calculator 46. As shown in FIG. The function calculator 46 may have the configuration of the second example as shown in FIG. The function calculator 46 according to the second example has the same components as those of the first example, but the arrangement of each component is different. In describing the second example, components that operate in the same manner as in the first example are denoted by the same reference numerals, and detailed description thereof will be omitted except for differences.

第1のFY演算部53-1は、第1加算部44が算出した更新されたN個の第2変数のそれぞれに対して第2関数演算(FY(y))をすることにより、N個の第1微分値を算出する。第1のFY加算部54-1は、第1のFY演算部53-1が算出したN個の第1微分値と第1時刻におけるN個の第1変数とを加算することにより、N個の第1更新値を算出する。 The first FY calculation unit 53-1 performs a second function calculation (FY(y i )) on each of the N updated second variables calculated by the first addition unit 44, thereby obtaining N Calculate the first differential values. The first FY addition unit 54-1 adds the N first differential values calculated by the first FY calculation unit 53-1 and the N first variables at the first time, thereby obtaining N Calculate the first updated value of .

第1のFX演算部51-1は、第1のFY加算部54-1が算出したN個の第1更新値のそれぞれに対して、第1関数演算(FX(x))をすることにより、N個の第2微分値を算出する。第1のFX加算部52-1は、第1のFX演算部51-1が算出したN個の第2微分値と、第1加算部44が算出した更新されたN個の第2変数とを加算することにより、N個の第2更新値を算出する。 The first FX calculation unit 51-1 performs a first function calculation (FX(x i )) on each of the N first update values calculated by the first FY addition unit 54-1. to calculate N second differential values. The first FX adder 52-1 combines the N second differential values calculated by the first FX calculator 51-1 and the updated N second variables calculated by the first adder 44. N second update values are calculated by adding .

このような第2例の構成の関数演算部46は、第1実施形態におけるS16からS19までのループ処理を、S18→S17の順で、1回実行することができる。これにより、関数演算部46によれば、シンプレクティック・オイラー法と呼ばれる方法を用いて、第1時刻におけるN個の第1変数およびN個の第2変数を時間発展させて、第2時刻におけるN個の第1変数およびN個の第2変数を算出することができる。 The function calculation unit 46 having such a configuration of the second example can execute the loop processing from S16 to S19 in the first embodiment once in the order of S18→S17. As a result, the function computing unit 46 uses a method called the symplectic Euler method to time-evolve the N first variables and N second variables at the first time to obtain N first variables and N second variables in can be calculated.

さらに、第2例に係る関数演算部46は、パイプライン処理により演算を実現してもよい。この場合も、第2例に係る関数演算部46は、第1例と同一の構成要素を有するが、各構成要素の配置が異なる。 Furthermore, the function calculation unit 46 according to the second example may realize calculation by pipeline processing. In this case as well, the function calculator 46 according to the second example has the same components as those of the first example, but the arrangement of the components is different.

第1のFY演算部53-1は、クロックサイクル毎に、1段目のY転送レジスタ56-1に格納された、更新された第2変数YINに対して、第2関数演算を実行することにより、第1微分値を算出する。第1のFY加算部54-1は、クロックサイクル毎に、第1のFY演算部53-1が当該クロックサイクルにおいて算出した第1微分値と、1段目のX転送レジスタ55-1に格納された第1変数XINとを加算することにより、第1更新値Xを算出する。 The first FY calculation unit 53-1 executes a second function calculation on the updated second variable Y IN stored in the Y transfer register 56-1 of the first stage at each clock cycle. Thus, the first differential value is calculated. For each clock cycle, the first FY addition unit 54-1 stores the first differential value calculated in the clock cycle by the first FY calculation unit 53-1 in the X transfer register 55-1 of the first stage. The first update value X_1 is calculated by adding the first variable X_IN obtained.

2段目のX転送レジスタ55-2は、クロックサイクル毎に、第1のFY加算部54-1が直前のクロックサイクルにおいて算出した第1更新値Xを取得し、取得した第1更新値Xを1クロックサイクル期間保持する。2段目のY転送レジスタ56-2は、クロックサイクル毎に、直前のクロックサイクルにおいて1段目のY転送レジスタ56-1が保持していた第2変数YINを取得し、取得した第2変数YINを、1クロックサイクル期間保持する。 The second-stage X transfer register 55-2 acquires the first update value X1 calculated in the immediately preceding clock cycle by the first FY addition unit 54-1 for each clock cycle, and stores the acquired first update value Hold X1 for one clock cycle. The second-stage Y transfer register 56-2 acquires the second variable Y_IN held by the first-stage Y transfer register 56-1 in the immediately preceding clock cycle, and stores the acquired second variable Y_IN in each clock cycle. The variable Y_IN is held for one clock cycle period.

第1のFX演算部51-1は、クロックサイクル毎に、2段目のX転送レジスタ55-2に格納された第1更新値Xに対して、第1関数演算を実行することにより、第2微分値を算出する。第1のFX加算部52-1は、クロックサイクル毎に、第1のFX演算部51-1が当該クロックサイクルにおいて算出した第1微分値と、2段目のY転送レジスタ56-2に格納された第2変数YINとを加算することにより、第2更新値Yを算出する。 The first FX calculation unit 51-1 executes the first function calculation on the first update value X1 stored in the second-stage X transfer register 55-2 at each clock cycle. A second differential value is calculated. For each clock cycle, the first FX addition unit 52-1 stores the first differential value calculated in the clock cycle by the first FX calculation unit 51-1 in the second-stage Y transfer register 56-2. The second update value Y_1 is calculated by adding the second variable Y_IN .

このようなパイプライン処理を実行することにより、第2例に係る関数演算部46は、クロックサイクル毎に、下記のような演算を実行することができる。 By executing such pipeline processing, the function calculation unit 46 according to the second example can execute the following calculation for each clock cycle.

=FY(YIN)+XIN
=FX(X)+YIN
OUT=X
OUT=Y
X1 =FY( YIN )+ XIN
Y1 =FX( X1 )+ YIN
X OUT =X 1
Y OUT = Y 1

このような第2例に係る関数演算部46は、同一のインデックスiの1つの第1変数XINおよび1つの第2変数YINを含む変数ペアに対して、第2関数演算→FY加算→第1関数演算→FX加算の一連の演算セットを、1回実行することができる。さらに、第2例に係る関数演算部46は、パイプライン処理を実行するので、複数の変数ペアに対して並列して演算を実行することができる。これにより、第2例に係る関数演算部46は、N個の変数ペアに対する演算を、短時間で完了させることができる。 The function operation unit 46 according to such a second example performs second function operation→FY addition→for variable pairs including one first variable X IN and one second variable Y IN of the same index i. A series of operation sets of first function operation→FX addition can be executed once. Furthermore, since the function calculation unit 46 according to the second example executes pipeline processing, it is possible to execute calculations in parallel on a plurality of variable pairs. As a result, the function calculation unit 46 according to the second example can complete calculations for N variable pairs in a short period of time.

図7は、関数演算部46の構成の第3例を示す図である。関数演算部46は、図7に示すような、第3例の構成であってもよい。第3例に係る関数演算部46は、第1例と略同一の構成を有する。第3例を説明するに当たり、第1例と同一の動作をする構成要素については、同一の符号を付けて相違点を除き詳細な説明を省略する。 FIG. 7 is a diagram showing a third example of the configuration of the function calculator 46. As shown in FIG. The function calculator 46 may have a configuration of a third example as shown in FIG. The function calculator 46 according to the third example has substantially the same configuration as that of the first example. In describing the third example, components that operate in the same manner as in the first example are denoted by the same reference numerals, and detailed description thereof will be omitted except for differences.

第3例に係る関数演算部46は、第1例の構成に加えて、第2から第M(Mは2以上の整数)までの(M-1)個のFX演算部51-2~51-Mと、第2から第Mまでの(M-1)個のFX加算部52-2~52-Mと、第2から第Mまでの(M-1)個のFY演算部53-2~53-Mと、第2から第Mまでの(M-1)個のFY加算部54-2~54-Mと、をさらに有する。 In addition to the configuration of the first example, the function calculation unit 46 according to the third example includes (M−1) FX calculation units 51-2 to 51 from second to Mth (M is an integer of 2 or more) -M, second to M-th (M-1) FX addition units 52-2 to 52-M, and second to M-th (M-1) FY operation units 53-2 53-M, and (M-1) second to M-th FY adders 54-2 to 54-M.

第mのFX演算部51-m(mは、2からMまでの任意の整数)は、第(m-1)のFY加算部54-(m-1)が算出したN個の第1更新値のそれぞれに対して第1関数演算をすることにより、N個の第2微分値を算出する。第mのFX加算部52-mは、第mのFX演算部51-mが算出したN個の第2微分値と第(m-1)のFX加算部52-(m-1)が算出したN個の第2更新値とを加算することにより、新たなN個の第2更新値を算出する。 The m-th FX calculation unit 51-m (m is an arbitrary integer from 2 to M) calculates N first updates calculated by the (m-1)-th FY addition unit 54-(m-1) N second differential values are calculated by performing a first functional operation on each of the values. The m-th FX addition unit 52-m calculates the N second differential values calculated by the m-th FX calculation unit 51-m and the (m−1)th FX addition unit 52-(m−1) New N second update values are calculated by adding the N second update values.

第mのFY演算部53-mは、第mのFX加算部52-mが算出したN個の第2更新値のそれぞれに対して第2関数演算をすることにより、N個の第1微分値を算出する。第mのFY加算部54-mは、第mのFY演算部53-mが算出したN個の第1微分値と第(m-1)のFY加算部54-(m-1)が算出したN個の第1更新値とを加算することにより、新たなN個の第1更新値を算出する。 The m-th FY calculation unit 53-m performs the second function calculation on each of the N second update values calculated by the m-th FX addition unit 52-m to obtain N first differential Calculate the value. The m-th FY addition unit 54-m calculates the N first differential values calculated by the m-th FY calculation unit 53-m and the (m−1)th FY addition unit 54-(m−1). New N first update values are calculated by adding the calculated N first update values.

そして、関数演算部46は、第MのFY加算部54-Mが算出したN個の第1更新値を第1変数メモリ40に与える。第1変数メモリ40は、第MのFY加算部54-Mが算出したN個の第1更新値を、第2時刻におけるN個の第1変数として記憶する。 Then, the function calculator 46 provides the first variable memory 40 with the N first update values calculated by the Mth FY adder 54-M. The first variable memory 40 stores the N first update values calculated by the M-th FY adding section 54-M as the N first variables at the second time.

また、関数演算部46は、第MのFX加算部52-Mが算出したN個の第2更新値を第2変数メモリ42に与える。第2変数メモリ42は、第MのFX加算部52-Mが算出したN個の第2更新値を、第2時刻におけるN個の第2変数として記憶する。 Also, the function calculation unit 46 provides the second variable memory 42 with the N second update values calculated by the Mth FX addition unit 52-M. The second variable memory 42 stores the N second update values calculated by the M-th FX addition unit 52-M as N second variables at the second time.

このような第3例の構成の関数演算部46は、第1実施形態におけるS16からS19までのループ処理を、S17→S18の順で、M回実行することができる。これにより、関数演算部46によれば、シンプレクティック・オイラー法と呼ばれる方法を用いて、第1時刻におけるN個の第1変数およびN個の第2変数を時間発展させて、第2時刻におけるN個の第1変数およびN個の第2変数を算出することができる。 The function calculation unit 46 having such a configuration of the third example can execute the loop processing from S16 to S19 in the first embodiment M times in the order of S17→S18. As a result, the function computing unit 46 uses a method called the symplectic Euler method to time-evolve the N first variables and N second variables at the first time to obtain N first variables and N second variables in can be calculated.

さらに、第3例に係る関数演算部46は、パイプライン処理により演算を実現してもよい。この場合、関数演算部46は、2M段のX転送レジスタ55-1~55-2Mと、2M段のY転送レジスタ56-1~56-2Mと、1つのX出力レジスタ57と、1つのY出力レジスタ58とを、さらに有する。なお、これらの構成のうちの第1例で示した構成は、X出力レジスタ57およびY出力レジスタ58を除いて第1例と同様の動作をする。 Furthermore, the function calculation unit 46 according to the third example may realize calculation by pipeline processing. In this case, the function operation unit 46 includes 2M stages of X transfer registers 55-1 to 55-2M, 2M stages of Y transfer registers 56-1 to 56-2M, one X output register 57, and one Y and an output register 58 . Of these configurations, the configuration shown in the first example operates in the same manner as the first example except for the X output register 57 and the Y output register 58. FIG.

(2m-1)段目のX転送レジスタ55-(2m-1)は、クロックサイクル毎に、第(m-1)のFY加算部54-(m-1)が直前のクロックサイクルにおいて算出した第1更新値Xm-1を取得し、取得した第1更新値Xm-1を1クロックサイクル期間保持する。(2m-1)段目のY転送レジスタ56-(2m-1)は、クロックサイクル毎に、直前のクロックサイクルにおいて(2m-2)段目のY転送レジスタ56-(2m-2)が保持していた第2更新値Ym-1を取得し、取得した1つの第2更新値Ym-1を、1クロックサイクル期間保持する。 The (2m−1)th stage X transfer register 55-(2m−1) is calculated in the immediately preceding clock cycle by the (m−1)th FY addition unit 54-(m−1) every clock cycle. A first update value X m−1 is obtained, and the obtained first update value X m−1 is held for one clock cycle. The (2m-1)th stage Y transfer register 56-(2m-1) is held by the (2m-2)th stage Y transfer register 56-(2m-2) in the immediately preceding clock cycle. The obtained second update value Y m−1 is held for one clock cycle period.

第mのFX演算部51-mは、クロックサイクル毎に、(2m-1)段目のX転送レジスタ55-(2m-1)に格納された第1更新値Xm-1に対して、第1関数演算を実行することにより、第2微分値を算出する。第mのFX加算部52-mは、クロックサイクル毎に、第mのFX演算部51-mが当該クロックサイクルにおいて算出した第2微分値と、(2m-1)段目のY転送レジスタ56-(2m-1)に格納された第2更新値Ym-1とを加算することにより、新たな第2更新値Yを算出する。 For each clock cycle, the m-th FX calculation unit 51 - m performs A second differential value is calculated by executing the first function operation. For each clock cycle, the m-th FX addition unit 52-m combines the second differential value calculated in the clock cycle by the m-th FX calculation unit 51-m with the (2m-1)th Y transfer register 56 A new second update value Ym is calculated by adding the second update value Ym-1 stored in -(2m-1).

2m段目のX転送レジスタ55-2mは、クロックサイクル毎に、直前のクロックサイクルにおいて(2m-1)段目のX転送レジスタ55-(2m-1)が保持していた第1更新値Xm-1を取得し、取得した1つの第1更新値Xm-1を、1クロックサイクル期間保持する。2m段目のY転送レジスタ56-2mは、クロックサイクル毎に、第mのFX加算部52-mが直前のクロックサイクルにおいて算出した第2更新値Yを取得し、取得した第2更新値Yを1クロックサイクル期間保持する。 The 2m-th stage X transfer register 55-2m updates the first update value X held by the (2m−1)th stage X transfer register 55-(2m−1) in the immediately preceding clock cycle. m−1 , and holds one acquired first update value X m−1 for one clock cycle period. The Y transfer register 56-2m of the 2mth stage acquires the second update value Ym calculated in the immediately preceding clock cycle by the mth FX addition unit 52-m for each clock cycle, and stores the acquired second update value Hold Ym for one clock cycle.

第mのFY演算部53-mは、クロックサイクル毎に、2m段目のY転送レジスタ56-2mに格納された第2更新値Yに対して、第2関数演算を実行することにより、第1微分値を算出する。第mのFY加算部54-mは、クロックサイクル毎に、第mのFY演算部53-mが当該クロックサイクルにおいて算出した第1微分値と、2m段目のX転送レジスタ55-2mに格納された第1更新値Xm-1とを加算することにより、新たな第1更新値Xを算出する。 The m-th FY calculation unit 53-m executes the second function calculation on the second update value Ym stored in the 2m-th stage Y transfer register 56-2m for each clock cycle, A first differential value is calculated. The m-th FY addition unit 54-m stores the first differential value calculated in the clock cycle by the m-th FY calculation unit 53-m in the 2m-th stage X transfer register 55-2m for each clock cycle. A new first update value X m is calculated by adding the calculated first update value X m −1 .

X出力レジスタ57は、クロックサイクル毎に、第MのFY加算部54-Mが直前のクロックサイクルにおいて算出した第1更新値Xを取得し、取得した第1更新値Xを第2時刻における1つの第1変数XOUTとして第1変数メモリ40に記憶させる。 For each clock cycle, the X output register 57 acquires the first update value X M calculated by the M-th FY addition unit 54-M in the immediately preceding clock cycle, and stores the acquired first update value X M at the second time. is stored in the first variable memory 40 as one first variable X OUT in .

Y出力レジスタ58は、クロックサイクル毎に、第2M段目のY転送レジスタ56-2Mに格納された第2更新値Yを取得し、取得した第2更新値Yを第2時刻における1つの第2変数YOUTとして第2変数メモリ42に記憶させる。 The Y output register 58 acquires the second update value YM stored in the Y transfer register 56-2M at the 2Mth stage every clock cycle, and converts the acquired second update value YM to 1 at the second time. are stored in the second variable memory 42 as two second variables Y OUT .

このようなパイプライン処理を実行することにより、第3例に係る関数演算部46は、クロックサイクル毎に、下記のような演算を実行することができる。 By executing such pipeline processing, the function calculation unit 46 according to the third example can execute the following calculations in each clock cycle.

=FX(XIN)+YIN
=FY(Y)+XIN

=FX(Xm-1)+Ym-1
=FY(Y)+Xm-1

=FX(XM-1)+YM-1
=FY(Y)+XM-1
OUT=Y
OUT=X
Y1 =FX( XIN )+ YIN
X1 =FY( Y1 )+ XIN

Y m =FX(X m−1 )+Y m−1
Xm = FY( Ym ) + Xm -1

Y M =FX(X M−1 )+Y M−1
XM = FY( YM ) + XM -1
YOUT = YM
X OUT =X M

このような第3例に係る関数演算部46は、同一のインデックスiの1つの第1変数XINおよび1つの第2変数YINを含む変数ペアに対して、第1関数演算→FX加算→第2関数演算→FY加算の一連の演算セットを、M回実行することができる。さらに、第3例に係る関数演算部46は、パイプライン処理により実行するので、複数の変数ペアに対して並列して演算を実行することができる。これにより、第3例に係る関数演算部46は、N個の変数ペアに対する演算を、短時間で完了させることができる。 The function operation unit 46 according to such a third example performs first function operation→FX addition→for variable pairs including one first variable X IN and one second variable Y IN of the same index i. A series of operation sets of second function operation→FY addition can be executed M times. Furthermore, since the function calculation unit 46 according to the third example executes by pipeline processing, it is possible to execute calculations in parallel on a plurality of variable pairs. As a result, the function calculation unit 46 according to the third example can complete calculations for N variable pairs in a short period of time.

図8は、関数演算部46の構成の第4例を示す図である。関数演算部46は、図8に示すような、第4例の構成であってもよい。第4例に係る関数演算部46は、第2例と略同一の構成を有する。第4例を説明するに当たり、第2例と同一の動作をする構成要素については、同一の符号を付けて相違点を除き詳細な説明を省略する。 FIG. 8 is a diagram showing a fourth example of the configuration of the function calculator 46. As shown in FIG. The function calculator 46 may have the configuration of the fourth example as shown in FIG. The function calculator 46 according to the fourth example has substantially the same configuration as that of the second example. In describing the fourth example, components that operate in the same manner as in the second example are denoted by the same reference numerals, and detailed description thereof will be omitted except for differences.

第mのFY演算部53-m(mは、2からMまでの任意の整数)は、第(m-1)のFX加算部52-(m-1)が算出したN個の第2更新値のそれぞれに対して第2関数演算をすることにより、N個の第1微分値を算出する。第mのFY加算部54-mは、第mのFY演算部53-mが算出したN個の第1微分値と第(m-1)のFY加算部54-mが算出したN個の第1更新値とを加算することにより、新たなN個の第1更新値を算出する。 The m-th FY calculation unit 53-m (m is an arbitrary integer from 2 to M) calculates N second updates calculated by the (m-1)-th FX addition unit 52-(m-1) N first differential values are calculated by performing a second function operation on each of the values. The m-th FY addition unit 54-m combines the N first differential values calculated by the m-th FY calculation unit 53-m with the N values calculated by the (m−1)th FY addition unit 54-m. N new first update values are calculated by adding the first update values.

第mのFX演算部51-mは、第mのFY加算部54-mが算出したN個の第1更新値のそれぞれに対して第1関数演算をすることにより、N個の第2微分値を算出する。第mのFX加算部52-mは、第mのFX演算部51-mが算出したN個の第2微分値と第(m-1)のFX加算部52-(m-1)が算出したN個の第2更新値とを加算することにより、新たなN個の第2更新値を算出する。 The m-th FX calculation unit 51-m performs the first function calculation on each of the N first update values calculated by the m-th FY addition unit 54-m, thereby obtaining N second differential Calculate the value. The m-th FX addition unit 52-m calculates the N second differential values calculated by the m-th FX calculation unit 51-m and the (m−1)th FX addition unit 52-(m−1) New N second update values are calculated by adding the N second update values.

このような第4例の構成の関数演算部46は、第1実施形態におけるS16からS19までのループ処理を、S18→S17の順で、M回実行することができる。これにより、関数演算部46によれば、シンプレクティック・オイラー法と呼ばれる方法を用いて、第1時刻におけるN個の第1変数およびN個の第2変数を時間発展させて、第2時刻におけるN個の第1変数およびN個の第2変数を算出することができる。 The function calculation unit 46 having such a configuration of the fourth example can execute the loop processing from S16 to S19 in the first embodiment M times in the order of S18→S17. As a result, the function computing unit 46 uses a method called the symplectic Euler method to time-evolve the N first variables and N second variables at the first time to obtain N first variables and N second variables in can be calculated.

さらに、第4例に係る関数演算部46は、パイプライン処理により演算を実現してもよい。この場合も、関数演算部46は、2M段のX転送レジスタ55-1~55-2Mと、2M段のY転送レジスタ56-1~56-2Mと、1つのX出力レジスタ57と、1つのY出力レジスタ58とを、さらに有する。なお、これらの構成のうちの第2例で示した構成は、X出力レジスタ57およびY出力レジスタ58を除いて第2例と同様の動作をする。 Furthermore, the function computing unit 46 according to the fourth example may implement computation by pipeline processing. Also in this case, the function operation unit 46 includes 2M stages of X transfer registers 55-1 to 55-2M, 2M stages of Y transfer registers 56-1 to 56-2M, one X output register 57, and one and a Y output register 58 . Of these configurations, the configuration shown in the second example operates in the same manner as the second example except for the X output register 57 and the Y output register 58. FIG.

(2m-1)段目のX転送レジスタ55-(2m-1)は、クロックサイクル毎に、直前のクロックサイクルにおいて(2m-2)段目のX転送レジスタ55-(2m-2)が保持していた第1更新値Xm-1を取得し、取得した1つの第1更新値Xm-1を、1クロックサイクル期間保持する。(2m-1)段目のY転送レジスタ56-(2m-1)は、クロックサイクル毎に、第(m-1)のFX加算部52-(m-1)が直前のクロックサイクルにおいて算出した第2更新値Ym-1を取得し、取得した第2更新値Ym-1を1クロックサイクル期間保持する。 The (2m-1)th stage X transfer register 55-(2m-1) is held by the (2m-2)th stage X transfer register 55-(2m-2) in the immediately preceding clock cycle. The first update value X m−1 that has been stored is acquired, and one acquired first update value X m−1 is held for one clock cycle period. The (2m-1)th stage Y transfer register 56-(2m-1) calculates the A second update value Y m−1 is acquired, and the acquired second update value Y m−1 is held for one clock cycle.

第mのFY演算部53-mは、クロックサイクル毎に、(2m-1)段目のY転送レジスタ56-(2m-1)に格納された第2更新値Ym-1に対して、第2関数演算を実行することにより、第1微分値を算出する。第mのFY加算部54-mは、クロックサイクル毎に、第mのFY演算部53-mが当該クロックサイクルにおいて算出した第1微分値と、(2m-1)段目のX転送レジスタ55-(2m-1)に格納された第1更新値Xm-1とを加算することにより、新たな第1更新値Xを算出する。 For each clock cycle, the m-th FY calculation unit 53 - m performs A first differential value is calculated by executing the second function operation. For each clock cycle, the m-th FY addition unit 54-m adds the first differential value calculated in the clock cycle by the m-th FY calculation unit 53-m to the X transfer register 55 of the (2m−1) stage A new first update value X m is calculated by adding the first update value X m−1 stored in −(2m−1).

2m段目のX転送レジスタ55-2mは、クロックサイクル毎に、第mのFY加算部54-mが直前のクロックサイクルにおいて算出した第1更新値Xを取得し、取得した第1更新値Xを1クロックサイクル期間保持する。2m段目のY転送レジスタ56-2mは、クロックサイクル毎に、直前のクロックサイクルにおいて(2m-1)段目のY転送レジスタ56-(2m-1)が保持していた第2更新値Ym-1を取得し、取得した1つの第2更新値Ym-1を、1クロックサイクル期間保持する。 The 2m-th stage X transfer register 55-2m acquires the first update value Xm calculated in the immediately preceding clock cycle by the m-th FY addition unit 54-m, and stores the acquired first update value Xm in each clock cycle. Hold Xm for one clock cycle. The 2m-th stage Y transfer register 56-2m updates the second update value Y held by the (2m−1)th stage Y transfer register 56-(2m−1) in the immediately preceding clock cycle. m−1 , and holds one acquired second update value Y m−1 for one clock cycle period.

第mのFX演算部51-mは、クロックサイクル毎に、2m段目のX転送レジスタ55-2mに格納された第1更新値Xに対して、第1関数演算を実行することにより、第2微分値を算出する。第mのFX加算部52-mは、クロックサイクル毎に、第mのFX演算部51-mが当該クロックサイクルにおいて算出した第2微分値と、2m段目のY転送レジスタ56-2mに格納された第2更新値Ym-1とを加算することにより、新たな第2更新値Yを算出する。 The m-th FX calculation unit 51-m executes the first function calculation on the first update value Xm stored in the 2m-th stage X transfer register 55-2m for each clock cycle, A second differential value is calculated. For each clock cycle, the m-th FX addition unit 52-m stores the second differential value calculated in the clock cycle by the m-th FX calculation unit 51-m in the Y transfer register 56-2m of the 2mth stage. A new second update value Y m is calculated by adding the calculated second update value Y m−1 .

X出力レジスタ57は、クロックサイクル毎に、第2M段目のX転送レジスタ55-2Mに格納された第1更新値Xを取得し、取得した第1更新値Xを第2時刻における1つの第1変数XOUTとして第1変数メモリ40に記憶させる。 The X output register 57 acquires the first update value XM stored in the X transfer register 55-2M of the 2Mth stage every clock cycle, and converts the acquired first update value XM to 1 at the second time. stored in the first variable memory 40 as two first variables X OUT .

Y出力レジスタ58は、クロックサイクル毎に、第MのFX加算部52-Mが直前のクロックサイクルにおいて算出した第2更新値Yを取得し、取得した第2更新値Yを第2時刻における1つの第2変数YOUTとして第2変数メモリ42に記憶させる。 The Y output register 58 acquires the second update value YM calculated in the immediately preceding clock cycle by the M-th FX addition unit 52-M for each clock cycle, and stores the acquired second update value YM at the second time. is stored in the second variable memory 42 as one second variable Y OUT in .

このようなパイプライン処理を実行することにより、第4例に係る関数演算部46は、クロックサイクル毎に、下記のような演算を実行することができる。 By executing such pipeline processing, the function calculation unit 46 according to the fourth example can execute the following calculations in each clock cycle.

=FY(YIN)+XIN
=FX(X)+YIN

=FY(Ym-1)+Xm-1
=FX(X)+Ym-1

=FY(YM-1)+XM-1
=FX(X)+YM-1
OUT=X
OUT=Y
X1 =FY( YIN )+ XIN
Y1 =FX( X1 )+ YIN

X m = FY(Y m−1 )+X m−1
Ym = FX( Xm ) + Ym-1

X M = FY(Y M−1 )+X M−1
Y M =FX(X M )+Y M−1
X OUT =X M
YOUT = YM

このような第4例に係る関数演算部46は、同一のインデックスiの1つの第1変数XINおよび1つの第2変数YINを含む変数ペアに対して、第2関数演算→FY加算→第1関数演算→FX加算の一連の演算セットを、M回実行することができる。さらに、第4例に係る関数演算部46は、パイプライン処理により実行するので、複数の変数ペアに対して並列して演算を実行することができる。これにより、第4例に係る関数演算部46は、N個の変数ペアに対する演算を、短時間で完了させることができる。 The function calculation unit 46 according to such a fourth example performs second function calculation→FY addition→for variable pairs including one first variable X IN and one second variable Y IN of the same index i. A series of operation sets of first function operation→FX addition can be executed M times. Furthermore, since the function calculation unit 46 according to the fourth example executes by pipeline processing, it is possible to execute calculations on a plurality of variable pairs in parallel. As a result, the function calculation unit 46 according to the fourth example can complete calculations for N variable pairs in a short period of time.

(第3実施形態)
第3実施形態に係る計算装置10について説明する。
(Third embodiment)
A computing device 10 according to the third embodiment will be described.

図9は、第3実施形態でのN個の第1中間変数x´、係数行列JおよびN個の第2中間変数bの関係を示す図である。 FIG. 9 is a diagram showing the relationship among the N first intermediate variables x i ', the coefficient matrix J, and the N second intermediate variables b i in the third embodiment.

係数行列Jは、Pr3個の分割行列(JG0,JG1,…JGk,…,JGPr3-1)に分割される。Pr3個の分割行列のそれぞれは、(N/Pr3)行×N列の係数Ji,jを含む。Pr3は、Nの約数である。また、kは、0からPr3-1までの任意の整数である。 The coefficient matrix J is divided into Pr3 divided matrices (JG0, JG1, . . . JGk, . . . , JGPr3-1). Each of the P r3 partition matrices contains (N/P r3 ) rows by N columns of coefficients J i,j . Pr3 is a divisor of N. Also, k is an arbitrary integer from 0 to P r3 −1.

また、N個の第2中間変数bは、Pr3個のブロック(BG0,BG1,…BGk,…,BGPr3-1)に分割される。Pr3個のブロックのそれぞれは、(N/Pr3)個の第2中間変数bを含む。さらに、Pr3個のブロックは、Pr3個の分割行列に一対一で対応付けられる。例えば、k番目のブロックBGkは、k番目の分割行列JGkに対応する。 Also, the N second intermediate variables b i are divided into Pr3 blocks (BG0, BG1, . . . BGk, . . . , BGPr3-1). Each of the P r3 blocks contains (N/P r3 ) second intermediate variables b i . Furthermore, the Pr3 blocks are mapped one-to-one to the Pr3 partitioning matrices. For example, the kth block BGk corresponds to the kth partition matrix JGk.

第3実施形態において、行列乗算部28は、N個の第1中間変数x´と、Pr3個の分割行列のそれぞれとを別個に行列乗算することにより、Pr3個のブロックを算出する。 In the third embodiment, the matrix multiplication unit 28 calculates P r 3 blocks by matrix-multiplying the N first intermediate variables x i ' and each of the Pr 3 split matrices separately. .

図10は、第3実施形態に係る行列乗算部28の構成を、時間発展部30とともに示す図である。 FIG. 10 is a diagram showing the configuration of the matrix multiplication section 28 according to the third embodiment together with the time evolution section 30. As shown in FIG.

行列乗算部28は、Pr3個の分割行列に一対一で対応付けられたPr3個の分割行列乗算部60を有する。Pr3個の分割行列乗算部60のそれぞれは、N個の第1中間変数x´と、対応する分割行列とを行列乗算することにより、対応するブロックに含まれる(N/Pr3)個の第2中間変数bを算出する。 The matrix multiplication unit 28 has P r 3 partitioned matrix multiplication units 60 that are associated one-to-one with the P r 3 partitioned matrices. Each of the P r3 partitioning matrix multiplication units 60 performs matrix multiplication of the N first intermediate variables x i ′ and the corresponding partitioning matrix to obtain (N/P r3 ) pieces included in the corresponding block. A second intermediate variable b i of is calculated.

r3個の分割行列乗算部60は、同一の構成を有する。Pr3個の分割行列乗算部60は、例えば、互いに異なる半導体装置に実装された回路であってよい。 The Pr 3 split matrix multipliers 60 have the same configuration. The Pr 3 split matrix multiplication units 60 may be, for example, circuits implemented in different semiconductor devices.

r3個の分割行列乗算部60のそれぞれは、N個の第1中間変数x´をストリーム化した第1中間ストリームX´およびN個の第2中間変数bをストリーム化した第2中間ストリームBを受信する。また、Pr3個の分割行列乗算部60のそれぞれは、第1中間ストリームX´および第2中間ストリームBを送信する。 Each of the Pr3 split matrix multiplication units 60 generates a first intermediate stream X′ in which N first intermediate variables x i ′ are streamed and a second intermediate stream X′ in which N second intermediate variables b i are streamed. Receive stream B. Also, each of the Pr3 split matrix multipliers 60 transmits the first intermediate stream X′ and the second intermediate stream B. FIG.

r3個の分割行列乗算部60は、直列に接続される。先頭の分割行列乗算部60は、時間発展部30から第1中間ストリームX´を受信する。また、先頭の分割行列乗算部60は、第2中間ストリームBとして、ダミーデータを受信する。なお、ダミーデータは、どのブロックから送信されてもよい。先頭以外の分割行列乗算部60は、直前段の分割行列乗算部60から送信された第1中間ストリームX´および第2中間ストリームBを受信する。 The Pr 3 division matrix multipliers 60 are connected in series. The division matrix multiplier 60 at the top receives the first intermediate stream X′ from the time evolution unit 30 . Also, the division matrix multiplier 60 at the head receives dummy data as the second intermediate stream B. FIG. Dummy data may be transmitted from any block. The split matrix multipliers 60 other than the leading one receive the first intermediate stream X' and the second intermediate stream B transmitted from the split matrix multiplier 60 of the previous stage.

末尾以外の分割行列乗算部60は、直後段の分割行列乗算部60へ第1中間ストリームX´および第2中間ストリームBを送信する。末尾の分割行列乗算部60は、第2中間ストリームBを時間発展部30へと送信する。末尾の分割行列乗算部60から送信された第1中間ストリームX´は、廃棄される。なお、末尾の分割行列乗算部60から送信された第1中間ストリームX´は、時間発展部30に受信された後、時間発展部30内で廃棄されてもよい。 The split matrix multipliers 60 other than the last one transmit the first intermediate stream X' and the second intermediate stream B to the split matrix multiplier 60 in the immediately following stage. The division matrix multiplier 60 at the end transmits the second intermediate stream B to the time evolution unit 30 . The first intermediate stream X' transmitted from the last split matrix multiplier 60 is discarded. Note that the first intermediate stream X′ transmitted from the last division matrix multiplier 60 may be discarded in the time evolution section 30 after being received by the time evolution section 30 .

r3個の分割行列乗算部60のそれぞれは、バッファ部62と、分割行列メモリ64と、実行部66と、セレクタ68とを有する。 Each of the Pr3 split matrix multiplication units 60 has a buffer unit 62 , a split matrix memory 64 , an execution unit 66 and a selector 68 .

先頭の分割行列乗算部60のバッファ部62は、時間発展部30から出力された第1中間ストリームX´を取得し、取得した第1中間ストリームX´を一定時間記憶して出力する。先頭以外の分割行列乗算部60のバッファ部62は、直前段の分割行列乗算部60から出力された第1中間ストリームX´を取得し、取得した第1中間ストリームX´を一定時間記憶して出力する。 The buffer unit 62 of the division matrix multiplication unit 60 at the head acquires the first intermediate stream X' output from the time evolution unit 30, stores the acquired first intermediate stream X' for a certain period of time, and outputs it. The buffer units 62 of the division matrix multiplication units 60 other than the head obtain the first intermediate stream X' output from the division matrix multiplication unit 60 of the immediately preceding stage, and store the obtained first intermediate stream X' for a certain period of time. Output.

分割行列メモリ64は、対応する分割行列に含まれる(N/Pr3)行×N列の係数Ji,jを記憶する。実行部66は、バッファ部62に記憶された第1中間ストリームX´および分割行列メモリ64に記憶された分割行列に基づき、対応するブロックに含まれる(N/Pr3)個の第2中間変数bを算出する。 The partitioning matrix memory 64 stores coefficients J i,j of (N/P r3 ) rows×N columns included in the corresponding partitioning matrix. Based on the first intermediate stream X′ stored in the buffer unit 62 and the partitioning matrix stored in the partitioning matrix memory 64, the execution unit 66 extracts (N/P r3 ) second intermediate variables included in the corresponding block. Calculate b i .

ここで、実行部66は、対応するブロックに含まれる(N/Pr3)個の第2中間変数bを、1クロックサイクルにPr1個の第2中間変数bを含む第2中間ストリームBとして出力する。Pr1は、Nの約数である。 Here, the execution unit 66 converts the (N/P r3 ) second intermediate variables b i included in the corresponding block to a second intermediate stream containing P r1 second intermediate variables b i in one clock cycle. Output as B. Pr1 is a divisor of N.

さらに、実行部66は、他の分割行列乗算部60に含まれる実行部66とは異なるクロックサイクルにおいて、第2中間ストリームBを出力する。従って、第2中間ストリームBは、同一のクロックサイクルに、複数の分割行列乗算部60から出力されることはない。 Furthermore, the execution unit 66 outputs the second intermediate stream B in a clock cycle different from that of the execution units 66 included in the other split matrix multiplication units 60 . Therefore, the second intermediate stream B is never output from a plurality of split matrix multipliers 60 in the same clock cycle.

先頭の分割行列乗算部60のセレクタ68は、先頭の分割行列乗算部60の実行部66が第2中間ストリームBを出力したクロックサイクルにおいて、先頭の分割行列乗算部60の実行部66が出力した第2中間ストリームBを選択して出力する。また、先頭の分割行列乗算部60のセレクタ68は、先頭の分割行列乗算部60の実行部66が第2中間ストリームBを出力していないクロックサイクルにおいて、ダミーデータを選択して出力する。 The selector 68 of the top split matrix multiplication unit 60 outputs the second intermediate stream B from the execution unit 66 of the top split matrix multiplication unit 60 in the clock cycle in which the execution unit 66 of the top split matrix multiplication unit 60 outputs the second intermediate stream B. A second intermediate stream B is selected for output. Also, the selector 68 of the top split matrix multiplication unit 60 selects and outputs dummy data in the clock cycle when the execution unit 66 of the top split matrix multiplication unit 60 does not output the second intermediate stream B.

また、先頭を除いたk番目の分割行列乗算部60のセレクタ68は、k番目の分割行列乗算部60の実行部66が第2中間ストリームBを出力したクロックサイクルにおいて、k番目の分割行列乗算部60の実行部66が出力した第2中間ストリームBを選択して出力する。また、k番目の分割行列乗算部60の実行部66が第2中間ストリームBを出力していないクロックサイクルにおいて、前段の分割行列乗算部60のセレクタ68が出力した第2中間ストリームBを選択して出力する。 In addition, the selector 68 of the k-th divided matrix multiplication unit 60 excluding the head performs the k-th divided matrix multiplication in the clock cycle in which the execution unit 66 of the k-th divided matrix multiplication unit 60 outputs the second intermediate stream B. The second intermediate stream B output by the execution unit 66 of the unit 60 is selected and output. Further, in a clock cycle in which the execution unit 66 of the k-th divided matrix multiplication unit 60 does not output the second intermediate stream B, the second intermediate stream B output by the selector 68 of the preceding divided matrix multiplication unit 60 is selected. output.

図11は、第3実施形態に係る行列乗算部28および時間発展部30の実装例を示す図である。 FIG. 11 is a diagram showing an implementation example of the matrix multiplier 28 and the time evolution unit 30 according to the third embodiment.

第3実施形態に係るPr3個の行列乗算部28および時間発展部30は、例えば、それぞれが独立した半導体チップである、(Pr3+1)個のチップ70-1~70-(Pr3+1)に実装することができる。 The P r 3 matrix multiplication units 28 and the time evolution unit 30 according to the third embodiment are, for example, (P r3 +1) chips 70-1 to 70-(P r3 +1), each of which is an independent semiconductor chip. ) can be implemented.

第1から第Pr3のチップ70-1~70-Pr3のそれぞれは、分割行列乗算部60を含む。第(Pr3+1)のチップ70-(Pr3+1)は、時間発展部30を含む。 Each of the first to P r3 -th chips 70 - 1 to 70 -P r3 includes a split matrix multiplier 60 . The (P r3 +1)th chip 70 −(P r3 +1) includes the time evolution section 30 .

また、それぞれのチップ70は、受信部74および送信部76を含む。受信部74は、データ受信用のリンクポートである。送信部76は、データ送信用のリンクポートである。受信部74および送信部76は、全二重通信をする送受信部であってもよい。また、それぞれのチップ70は、さらなる通信ポートを含んでもよい。例えば、それぞれのチップ70は、2つの独立な受信用リンクポートおよび2つの独立な送信用リンクポートを含んでもよい。 Each chip 70 also includes a receiver portion 74 and a transmitter portion 76 . The receiver 74 is a link port for data reception. The transmission unit 76 is a link port for data transmission. The receiving unit 74 and the transmitting unit 76 may be transmitting/receiving units that perform full-duplex communication. Each chip 70 may also include additional communication ports. For example, each chip 70 may include two independent receive link ports and two independent transmit link ports.

送信部76は、1クロックサイクル分の第1中間変数x´および第2中間変数bを合成して、合成ストリームとして出力する。第1中間ストリームX´のビット幅がWx´であり、第2中間ストリームBのビット幅がWbとした場合、合成ストリームは、Wx´+Wb以上のビット幅を有する。 The transmission unit 76 synthesizes the first intermediate variable x i ' and the second intermediate variable b i for one clock cycle, and outputs a synthesized stream. If the bit width of the first intermediate stream X' is Wx' and the bit width of the second intermediate stream B is Wb, the composite stream has a bit width of Wx'+Wb or more.

受信部74および送信部76のそれぞれは、例えば、FIFOメモリを含む。送信部76は、第1中間ストリームX´および第2中間ストリームBを合成して、FIFOに書き込む。そして、送信部76は、FIFOに格納された合成ストリームを順次に送信する。また、受信部74は、受信した合成ストリームをFIFOに書き込む。そして、受信部74は、FIFOから合成ストリームを順に読み出して、第1中間ストリームX´および第2中間ストリームBに分離する。 Each of the receiver 74 and transmitter 76 includes, for example, a FIFO memory. The transmitter 76 combines the first intermediate stream X' and the second intermediate stream B and writes them into the FIFO. Then, the transmission unit 76 sequentially transmits the composite stream stored in the FIFO. Also, the receiving unit 74 writes the received composite stream into the FIFO. Then, the receiving unit 74 sequentially reads the combined stream from the FIFO and separates it into the first intermediate stream X' and the second intermediate stream B. FIG.

2つのチップ70の間は、通信リンク72を介して接続される。第1のチップ70-1の出力端子は、第2のチップ70-2の入力端子に、第1の通信リンク72-1を介して接続される。第kのチップ70-kの出力端子は、第(k+1)のチップ70-(k+1)の入力端子に、第kの通信リンク72-kを介して接続される。そして、第(Pr3+1)のチップ70-(Pr3+1)の出力端子は、第1のチップ70-1の入力端子に、第(Pr3+1)の通信リンク72-(Pr3+1)を介して接続される。このように、(Pr3+1)個のチップ70-1~70-(Pr3+1)は、リングトポロジの態様で相互接続される。 A connection is made between the two chips 70 via a communication link 72 . Output terminals of the first chip 70-1 are connected to input terminals of the second chip 70-2 via a first communication link 72-1. The output terminal of the kth chip 70-k is connected to the input terminal of the (k+1)th chip 70-(k+1) via the kth communication link 72-k. Then, the output terminal of the (P r3 +1)th chip 70-(P r3 +1) is connected to the input terminal of the first chip 70-1 to the (P r3 +1)th communication link 72-(P r3 +1) connected via Thus, the (P r3 +1) chips 70-1 to 70-(P r3 +1) are interconnected in a ring topology manner.

例えば、チップ70の入力端子および出力端子は、QSFP(Quad Small Form-factor Pluggable)ポートであってよい。また、通信リンク72は、QSFP対応光学ケーブルまたはQSFP対応メタルケーブルであってよい。また、2つのチップ70の間の通信リンク72は、高速シリアルリンク,イーサーネットリンクまたはpeer-to-peerリンクであってもよい。 For example, the input and output terminals of chip 70 may be QSFP (Quad Small Form-factor Pluggable) ports. Also, the communication link 72 may be a QSFP compliant optical cable or a QSFP compliant metal cable. Also, the communication link 72 between the two chips 70 may be a high speed serial link, an Ethernet link or a peer-to-peer link.

なお、本実施形態では、それぞれのチップ70は、合成ストリームを送受信しているが、第1中間ストリームX´および第2中間ストリームBをそれぞれ別個に送受信してもよい。この場合、(Pr3+1)個のチップ70-1~70-(Pr3+1)は、2系統のリングトポロジの態様で相互接続される。 In this embodiment, each chip 70 transmits/receives a composite stream, but the first intermediate stream X' and the second intermediate stream B may be transmitted/received separately. In this case, (P r3 +1) chips 70-1 to 70-(P r3 +1) are interconnected in a two-system ring topology.

このような第3実施形態に係る計算装置10は、最適化問題により決定すべき第1変数xの個数が変更しても、分割行列乗算部60の個数を変更することにより、対応することができる。従って、計算装置10は、最適化問題により決定すべき第1変数xの個数が大幅に増加した場合、例えば、同一の構成のチップ70の数を増加させれば、対応することができる。また、計算装置10は、複数の分割行列乗算部60により並列的に行列演算が実行されるので、最適化問題を短時間で完了させることができる。 Even if the number of the first variables x i to be determined by the optimization problem is changed, the computing device 10 according to the third embodiment can cope with the change by changing the number of the partitioned matrix multipliers 60. can be done. Therefore, if the number of first variables x i to be determined by the optimization problem increases significantly, the computing device 10 can cope with the problem by increasing the number of chips 70 having the same configuration, for example. Further, in the computing device 10, matrix operations are executed in parallel by a plurality of divided matrix multiplication units 60, so the optimization problem can be completed in a short period of time.

(第4実施形態)
第4実施形態に係る計算装置10について説明する。
(Fourth embodiment)
A computing device 10 according to the fourth embodiment will be described.

図12は、第4実施形態でのN個の第1中間変数x´、係数行列JおよびN個の第2中間変数bの関係を示す図である。第4実施形態において、N個の第1中間変数x´、係数行列JおよびN個の第2中間変数bは、第3実施形態と同様の関係に加えて、さらに、図12に示すような関係がある。 FIG. 12 is a diagram showing the relationship among the N first intermediate variables x i ', the coefficient matrix J, and the N second intermediate variables b i in the fourth embodiment. In the fourth embodiment, the N first intermediate variables x i ', the coefficient matrix J and the N second intermediate variables b i have the same relationship as in the third embodiment, and furthermore, shown in FIG. There is a relationship like

N個の第1中間変数x´は、N個のデータセットに分割される。N個のデータセットのそれぞれは、P個の第1中間変数x´を含む。NおよびPは、Nの約数である。例えば、N個の第1中間変数x´は、x´b0、x´b1、…、x´bNsのN個のデータセットに分割される。 The N first intermediate variables x i ' are divided into N s data sets. Each of the N s data sets contains P c first intermediate variables x i ′. N s and P c are divisors of N. For example, N first intermediate variables x i ' are divided into N s data sets of x'b0, x'b1, ..., x'bNs.

r3個の分割行列のそれぞれは、Pr2個のサブ行列に分割される。Pr2個のサブ行列のそれぞれは、Pr1行×N列の係数Ji,jを含む。例えば、JG0の分割行列は、jb0、jb1、…、jbs、…、jbPr2-1のPr2個のサブ行列に分割される。 Each of the P r3 partitioned matrices is partitioned into P r2 sub-matrices. Each of the P r2 sub-matrices contains P r1 rows by N columns of coefficients J i,j . For example, the partitioning matrix of JG0 is partitioned into Pr2 sub-matrices jb0, jb1, . . . , jbs, .

r1およびPr2は、Nの約数であり、Pr1×Pr2×Pr3は、Nとなる。sは、0からPr2-1までの任意の整数である。 P r1 and P r2 are divisors of N, and P r1 ×P r2 ×P r3 is N. s is any integer from 0 to P r2 −1.

N個の第2中間変数bに含まれるPr3個のブロックのそれぞれは、Pr2個のサブブロックに分割される。Pr2個のサブブロックのそれぞれは、Pr1個の第2中間変数bを含む。例えば、BG0のブロックは、bb0、bb1、…、bbs、…、bbPr2-1のPr2個のサブブロックに分割される。 Each of the Pr3 blocks contained in the N second intermediate variables b i is divided into Pr2 sub-blocks. Each of the P r2 sub-blocks contains P r1 second intermediate variables b i . For example, a block of BG0 is divided into Pr2 sub-blocks of bb0, bb1, . . . bbs, .

そして、k番目のブロックに含まれるPr2個のサブブロックは、k番目の分割行列に含まれるPr2個のサブ行列に一対一で対応付けられる。例えば、k番目のブロックBGkに含まれるs番目のサブブロックは、k番目の分割行列JGkに含まれるs番目のサブ行列jbsに対応する。 The Pr2 sub-blocks included in the k-th block are in one-to-one correspondence with the Pr2 sub-matrices included in the k-th partition matrix. For example, the s-th sub-block included in the k-th block BGk corresponds to the s-th sub-matrix jbs included in the k-th partition matrix JGk.

第4実施形態において、分割行列乗算部60は、対応する分割行列に含まれるサブ行列毎に、N個の第1中間変数x´との行列乗算を実行する。例えば、k番目の分割行列乗算部60は、N個の第1中間変数x´と、k番目の分割行列JGkに含まれるPr2個のサブ行列のそれぞれとを別個に行列乗算をすることにより、k番目のブロックBGkに含まれるPr2個のサブブロックを算出する。 In the fourth embodiment, the split matrix multiplication unit 60 performs matrix multiplication with the N first intermediate variables x i ' for each sub-matrix included in the corresponding split matrix. For example, the k-th division matrix multiplication unit 60 separately performs matrix multiplication between the N first intermediate variables x i ' and each of the Pr2 sub-matrices included in the k-th division matrix JGk. Pr2 sub-blocks included in the k-th block BGk are calculated.

図13は、第4実施形態に係る分割行列乗算部60の構成を示す図である。分割行列乗算部60に含まれる実行部66は、Pr2個のサブ行列乗算部80と、多重化部82とを含む。 FIG. 13 is a diagram showing the configuration of the split matrix multiplier 60 according to the fourth embodiment. The execution unit 66 included in the split matrix multiplication unit 60 includes a Pr2 sub-matrix multiplication unit 80 and a multiplexing unit 82 .

r2個のサブ行列乗算部80は、対応する分割行列に含まれるPr2個のサブ行列に一対一で対応付けられる。例えば、k番目の分割行列に対応付けられた分割行列乗算部60に含まれるPr2個のサブ行列乗算部80は、k番目の分割行列に含まれるPr2個のサブ行列に一対一で対応付けられる。 The P r 2 sub-matrix multiplication units 80 are associated one-to-one with the P r 2 sub-matrices included in the corresponding divided matrix. For example, the Pr2 sub-matrix multipliers 80 included in the partitioned matrix multiplier 60 associated with the k-th partitioned matrix correspond to the Pr2 sub-matrices included in the k-th partitioned matrix on a one-to-one basis. Attached.

第k番目の分割行列乗算部60に含まれるPr2個のサブ行列乗算部80のそれぞれは、N個の第1中間変数x´と、対応するサブ行列とを行列乗算することにより、対応するサブブロックに含まれるPr1個の第2中間変数bを算出する。 Each of the two P r sub-matrix multiplication units 80 included in the k-th split matrix multiplication unit 60 performs matrix multiplication of the N first intermediate variables x i ' and the corresponding sub-matrices to obtain the corresponding Pr1 second intermediate variables b i included in the sub-block to be calculated.

また、Pr2個のサブ行列乗算部80のそれぞれは、対応するサブブロックに含まれるPr1個の第2中間変数bを1クロックサイクルで並列に出力する。例えば、k番目の分割行列乗算部60に含まれるs番目のサブ行列乗算部80は、k番目のブロックに含まれるs番目のサブブロックに含まれるPr1個の第2中間変数bを、同一のクロックサイクルに出力する。 Also, each of the Pr2 sub-matrix multiplication units 80 outputs the Pr1 second intermediate variables b i included in the corresponding sub-block in parallel in one clock cycle. For example, the s-th sub-matrix multiplication unit 80 included in the k-th split matrix multiplication unit 60 converts Pr1 second intermediate variables b i included in the s-th sub-block included in the k-th block to output on the same clock cycle.

さらに、Pr2個のサブ行列乗算部80のそれぞれは、他のサブ行列乗算部80とは異なるクロックサイクルにおいて、Pr1個の第2中間変数bを出力する。つまり、第2中間変数bは、同一のクロックサイクルに、複数のサブ行列乗算部80から出力されることはない。 Furthermore, each of the Pr2 sub-matrix multipliers 80 outputs the Pr1 second intermediate variables b i in a different clock cycle than the other sub-matrix multipliers 80 . In other words, the second intermediate variable b i is never output from a plurality of sub-matrix multipliers 80 in the same clock cycle.

多重化部82は、Pr2個のサブ行列乗算部80のそれぞれから出力されたPr1個の第2中間変数bのセットを多重化することにより、1クロックサイクルにPr1個の第2中間変数bを含む第2中間ストリームBを生成する。例えば、k番目の分割行列乗算部60に含まれる多重化部82は、k番目のブロックに含まれるPr2個のサブブロックを含む第2中間ストリームBを、Pr2クロックサイクルで出力する。 The multiplexing unit 82 multiplexes the set of Pr1 second intermediate variables b i output from each of the Pr2 sub-matrix multipliers 80, thereby generating Pr1 second intermediate variables b i in one clock cycle. Generate a second intermediate stream B containing intermediate variables b i . For example, the multiplexer 82 included in the k-th split matrix multiplier 60 outputs the second intermediate stream B including Pr2 sub-blocks included in the k-th block in Pr2 clock cycles.

分割行列乗算部60に含まれるバッファ部62は、シフトレジスタとして機能するPr2段のレジスタ84と、バッファ内受信部86と、バッファ内送信部88とを含む。 The buffer unit 62 included in the partitioned matrix multiplying unit 60 includes a Pr 2- stage register 84 functioning as a shift register, an intra-buffer receiving unit 86 and an intra-buffer transmitting unit 88 .

r2段のレジスタ84は、Pr2個のサブ行列乗算部80に一対一に対応付けられる。Pr2段のレジスタ84のそれぞれは、P個の第1中間変数x´を含むデータセットを1クロックサイクル記憶する。Pr2段のレジスタ84のそれぞれは、次のクロックサイクルにおいて、記憶しているP個の第1中間変数x´を含むデータセットを次段のレジスタ84に並列に転送する。 The Pr 2- stage registers 84 are associated one-to-one with the Pr 2 sub-matrix multipliers 80 . Each of the P r two- stage registers 84 stores a data set containing P c first intermediate variables x i ′ for one clock cycle. Each of the P r two -stage registers 84 transfers the stored data set containing the P c first intermediate variables x i ′ in parallel to the next-stage register 84 in the next clock cycle.

バッファ内受信部86は、第1中間ストリームX´を受信し、受信した第1中間ストリームX´をP個のワード幅のストリームに変換する。そして、バッファ内受信部86は、1クロックサイクル毎に、P個の第1中間変数x´を含むデータセットを先頭のレジスタ84に書き込む。 An in-buffer receiver 86 receives the first intermediate stream X' and converts the received first intermediate stream X' into a stream of Pc words wide. Then, the intra-buffer receiving unit 86 writes a data set including P c first intermediate variables x i ′ to the head register 84 every clock cycle.

バッファ内送信部88は、1クロックサイクル毎に、最終段のレジスタ84からP個の第1中間変数x´を含むデータセットを読み出し、第1中間ストリームX´に変換する。そして、バッファ内送信部88は、第1中間ストリームX´を送信する。 The intra-buffer transmission unit 88 reads out a data set including P c first intermediate variables x i ′ from the last-stage register 84 every clock cycle, and converts it into a first intermediate stream X′. Then, the intra-buffer transmission unit 88 transmits the first intermediate stream X'.

r2個のサブ行列乗算部80のそれぞれは、対応するレジスタ84に格納されているP個の第1中間変数x´を含むデータセットを1クロックサイクル毎に読み出す。Pr2個のサブ行列乗算部80のそれぞれは、1クロックサイクル毎に、読み出したP個の第1中間変数x´のそれぞれと、対応するサブ行列における対応する列の係数Ji,jと乗算する。そして、Pr2個のサブ行列乗算部80のそれぞれは、対応するサブ行列に含まれる行毎に、第1中間変数x´と係数Ji,jとの乗算結果を累積加算する。これにより、Pr2個のサブ行列乗算部80のそれぞれは、対応するサブブロックに含まれるPr1個の第2中間変数bを算出することができる。 Each of the P r 2 sub-matrix multipliers 80 reads out the data set containing the P c first intermediate variables x i ' stored in the corresponding register 84 every clock cycle. Each of the two P r sub-matrix multiplication units 80 each of the read P c first intermediate variables x i ′ and the coefficient J i,j of the corresponding column in the corresponding sub-matrix each clock cycle. Multiply with Each of the two P r sub-matrix multiplication units 80 cumulatively adds the multiplication results of the first intermediate variable x i ' and the coefficient J i,j for each row included in the corresponding sub-matrix. As a result, each of the Pr2 sub-matrix multipliers 80 can calculate the Pr1 second intermediate variables b i included in the corresponding sub-block.

ここで、Pr2個のサブ行列乗算部80のそれぞれは、対応するレジスタ84に、N個の第1中間変数x´のうちの先頭の第1中間変数x´から末尾の第1中間変数xN-1´が格納される前の期間、乗算および累積加算を実行する。そして、Pr2個のサブ行列乗算部80のそれぞれは、対応するレジスタ84に末尾の第1中間変数xN-1´が格納されたクロックサイクルから所定数のクロックサイクル経過後に、対応するサブブロックに含まれるPr1個の第2中間変数bを出力する。従って、Pr2個のサブ行列乗算部80のそれぞれは、互いに異なるクロックサイクルに、対応するサブブロックに含まれるPr1個の第2中間変数bを出力することができる。 Here, each of the Pr2 sub-matrix multiplication units 80 stores the first intermediate variable x 0 ′ to the last intermediate variable x 0 ′ among the N first intermediate variables x i ′ in the corresponding register 84 . During the period before the variable x N-1 ' is stored, multiplication and cumulative addition are performed. Then, each of the P r2 sub-matrix multiplication units 80 performs the corresponding sub-block after a predetermined number of clock cycles have passed since the clock cycle when the last intermediate variable x N−1 ′ was stored in the corresponding register 84. output Pr1 second intermediate variables b i contained in . Therefore, each of the Pr2 sub-matrix multipliers 80 can output the Pr1 second intermediate variables b i included in the corresponding sub-block in different clock cycles.

このような構成の第4実施形態に係る計算装置10は、Pr3×Pr2の並列度で行列乗算をすることができる。これにより、第4実施形態に係る計算装置10によれば、行列乗算を高速に実行することができる。 The computing device 10 having such a configuration according to the fourth embodiment can perform matrix multiplication with a degree of parallelism of P r3 ×P r2 . As a result, the computing device 10 according to the fourth embodiment can execute matrix multiplication at high speed.

(第5実施形態)
第5実施形態に係る計算装置10について説明する。
(Fifth embodiment)
A computing device 10 according to the fifth embodiment will be described.

図14は、第5実施形態でのN個の第1中間変数x´、係数行列JおよびN個の第2中間変数bの関係を示す図である。第5実施形態において、N個の第1中間変数x´、係数行列JおよびN個の第2中間変数bは、第4実施形態と同様の関係に加えて、さらに、図14に示すような関係がある。 FIG. 14 is a diagram showing the relationship among the N first intermediate variables x i ', the coefficient matrix J, and the N second intermediate variables b i in the fifth embodiment. In the fifth embodiment, the N first intermediate variables x i ', the coefficient matrix J and the N second intermediate variables b i have the same relationship as in the fourth embodiment, and furthermore, shown in FIG. There is a relationship like

r3個の分割行列のそれぞれは、Pr2個のサブ行列に分割される。さらに、Pr2個のサブ行列のそれぞれは、P個の列単位で、N個の係数セットに分割される。それぞれの係数セットは、Pr1行×P列の係数Ji,jを含む。例えば、JG0の分割行列に含まれるjb0のサブ行列は、jb0(0)、jb0(1)、…、jb0(N-1)のN個の係数セットに分割される。 Each of the P r3 partitioned matrices is partitioned into P r2 sub-matrices. Further, each of the P r2 sub-matrices is divided into N s coefficient sets by P c columns. Each coefficient set contains Pr1 rows by Pc columns of coefficients J i,j . For example, the sub-matrix of jb0 contained in the partitioning matrix of JG0 is partitioned into N s coefficient sets jb0(0), jb0(1), . . . , jb0(N s −1).

また、N個の係数セットは、N個の第1中間変数x´をP個毎に分割したN個のデータセットに一対一に対応する。 Also, the N s coefficient sets correspond one-to-one to the N s data sets obtained by dividing the N first intermediate variables x i ′ into P c pieces.

第5実施形態において、サブ行列乗算部80は、1つの係数セットに含まれるPr1個の行のそれぞれについて、P個の係数Ji,jと対応するP個の第1中間変数x´との乗累算値を算出する。そして、サブ行列乗算部80は、Pr1個の行毎に、N個の係数セットのそれぞれについて算出した全ての乗累算値を加算する。これにより、サブ行列乗算部80は、Pr1個の行のそれぞれについて、N個の係数Ji,jとN個の第1中間変数x´とを乗累算することができる。 In the fifth embodiment, the sub-matrix multiplication unit 80 calculates P c first intermediate variables x corresponding to P c coefficients J i,j for each of P r1 rows included in one coefficient set. A multiplication accumulation value with i ' is calculated. The sub-matrix multiplication unit 80 then adds all multiplication-accumulated values calculated for each of the N s coefficient sets for each Pr1 row. Thus, the sub-matrix multiplier 80 can multiply and accumulate the N coefficients J i,j and the N first intermediate variables x i ' for each of the Pr1 rows.

図15は、第6実施形態に係るサブ行列乗算部80の構成を、対応するレジスタ84とともに示す図である。それぞれのサブ行列乗算部80は、Pr1個の乗累算部90を含む。 FIG. 15 is a diagram showing the configuration of the sub-matrix multiplier 80 according to the sixth embodiment together with the corresponding register 84. As shown in FIG. Each sub-matrix multiplier 80 includes Pr1 multiply-accumulate units 90 .

r1個の乗累算部90は、対応するサブ行列に含まれるPr1個の行に一対一で対応付けられる。例えば、k番目の分割行列に対応付けられた分割行列乗算部60に含まれるs番目のサブ行列に対応付けられたPr1個の乗累算部90は、k番目の分割行列に含まれるs番目のサブ行列に含まれるPr1個の行に一対一で対応付けられる。 The Pr1 multiply-accumulate units 90 are associated one-to-one with the Pr1 rows contained in the corresponding sub-matrices. For example, the Pr1 multiply-accumulate unit 90 associated with the s-th sub-matrix included in the partitioned matrix multiplier 60 associated with the k-th partitioned matrix is s Pr1 rows included in the th sub-matrix are associated one-to-one.

r1個の乗累算部90は、全て同一の構成である。Pr1個の乗累算部90のそれぞれは、係数行列Jにおける対応する行と、N個の第1中間変数x´とを乗累算することにより、対応するサブブロックに含まれる対応する位置の第2中間変数bを算出する。Pr1個の乗累算部90は、第2中間変数bを並行に算出して、同一のクロックサイクルに出力する。 All of the Pr1 multiply-accumulate units 90 have the same configuration. Each of the Pr1 multiply-accumulate units 90 multiply-accumulates the corresponding row in the coefficient matrix J with the N first intermediate variables x i ' to obtain the corresponding Calculate a second intermediate variable b i of the position. The Pr1 multiply-accumulate units 90 compute the second intermediate variables bi in parallel and output them in the same clock cycle.

より詳しくは、Pr1個の乗累算部90のそれぞれは、Pr2段のレジスタ84のうちの対応するレジスタ84に順次に記憶される、第1中間ストリームX´の先頭の第1中間変数x´から末尾のN個の第1中間変数xN-1´までを、クロックサイクル毎に取得する。この場合、Pr1個の乗累算部90のそれぞれは、1クロックサイクルに、P個の第1中間変数x´を含むデータセットを取得する。そして、Pr1個の乗累算部90のそれぞれは、データセットの取得をN(N=N/P)クロックサイクルに渡って実行することにより、N個のデータセットを取得する。また、Pr1個の乗累算部90のうちのp番目(pは、0からPr1-1までの任意の整数)の乗累算部90は、1クロックサイクルに、取得したデータセットに対応する係数セットに含まれる、p番目に対応する行に含まれるP個の係数((jp,s0)~(jp,SPc-1))を取得する。そして、Pr1個の乗累算部90のそれぞれは、係数セットに含まれる対応するP個の係数を、Nクロックサイクルに渡って取得する。Pr1個の乗累算部90のそれぞれは、1クロックサイクル毎に、P個の第1中間変数x´と、対応する行に含まれる対応するP個の係数Ji,jとを乗累算する。そして、Pr1個の乗累算部90のそれぞれは、乗累算結果を、Nクロックサイクルに渡って累積加算することにより、第2中間変数bを算出する。 More specifically, each of the Pr1 multiply-accumulate units 90 stores the first intermediate variable at the beginning of the first intermediate stream X′ sequentially in the corresponding register 84 of the Pr2- stage registers 84. From x 0 ' to the last N first intermediate variables x N-1 ' are obtained every clock cycle. In this case, each of the P r1 multiply-accumulate units 90 acquires a data set containing P c first intermediate variables x i ′ in one clock cycle. Then, each of the P r1 multiply-accumulate units 90 acquires N s data sets by executing the acquisition of data sets over N s (N s =N/P c ) clock cycles. . In addition, the p-th (p is an arbitrary integer from 0 to P r1 −1) of the P r1 multiply-accumulate units 90 converts the obtained data set into Obtain P c coefficients ((jp, s0) to (jp, SPc-1)) contained in the p-th corresponding row contained in the corresponding coefficient set. Each of the P r1 multiply-accumulate units 90 then acquires the corresponding P c coefficients in the coefficient set over N s clock cycles. Each of the Pr1 multiply-accumulate units 90 generates Pc first intermediate variables x i ' and corresponding Pc coefficients J i,j contained in the corresponding row at each clock cycle. multiply and accumulate. Then, each of the Pr1 multiply-accumulate units 90 calculates the second intermediate variable bi by cumulatively adding the multiply-accumulate results over Ns clock cycles.

図16は、分割行列メモリ64に記憶された分割行列を示す図である。分割行列メモリ64は、分割行列をPr2個のサブ行列に分割して記憶する。Pr2個のサブ行列のそれぞれは、対応するサブ行列乗算部80へと並列に出力される。 FIG. 16 is a diagram showing the partitioning matrix stored in the partitioning matrix memory 64. As shown in FIG. The divided matrix memory 64 divides the divided matrix into Pr2 sub-matrices and stores them. Each of the Pr2 sub-matrices is output in parallel to the corresponding sub-matrix multiplier 80 .

r2個のサブ行列のそれぞれは、N個の係数セットを含む。N個の係数セットのそれぞれは、P×Pr1個の係数を含む。分割行列メモリ64は、Pr2個のサブ行列のそれぞれについて、1クロックサイクルにおいて、1つの係数セットに含まれるP×Pr1個の係数を並列に出力することが可能となっている。 Each of the P r2 sub-matrices contains N s coefficient sets. Each of the N s coefficient sets contains P c ×P r1 coefficients. The split matrix memory 64 is capable of outputting in parallel P c ×P r1 coefficients included in one coefficient set for each of the P r2 sub-matrices in one clock cycle.

図17は、1つのサブ行列乗算部80に含まれるPr1個の乗累算部90と、そのサブ行列乗算部80に送信されるサブ行列を示す図である。 FIG. 17 is a diagram showing Pr1 multiply-accumulate units 90 included in one sub-matrix multiplying unit 80 and the sub-matrices transmitted to the sub-matrix multiplying units 80 .

1つのサブ行列乗算部80に含まれるPr1個の乗累算部90のそれぞれには、1クロックサイクル毎に、対応するレジスタ84に格納されたP個の第1中間変数x´を含むデータセットがブロードキャストされる。 Each of the P r1 multiplication/accumulation units 90 included in one sub-matrix multiplication unit 80 receives P c first intermediate variables x i ' stored in the corresponding register 84 every clock cycle. The containing dataset is broadcast.

分割行列メモリ64は、それぞれのサブ行列について、N個の係数セットを含む。分割行列メモリ64は、1クロックサイクル毎に、それぞれのサブ行列に含まれる1つの係数セットが、ポインタにより特定される。より具体的には、分割行列メモリ64は、そのサブ行列に対応するレジスタ84に格納されたデータセットに対応する係数セットが、特定される。 Partitioned matrix memory 64 contains N s coefficient sets for each sub-matrix. In the divided matrix memory 64, one coefficient set included in each sub-matrix is specified by a pointer every clock cycle. More specifically, partitioned matrix memory 64 identifies the coefficient set corresponding to the data set stored in register 84 corresponding to that sub-matrix.

分割行列メモリ64は、クロックサイクル毎に、ポインタにより特定された係数セットに含まれるP×Pr1個の係数を並列に出力する。係数セットに含まれるP×Pr1個の係数のそれぞれは、出力先の乗累算部90が予め定められている。分割行列メモリ64は、1つの係数セットに含まれるP×Pr1個の係数のそれぞれを、予め定められた乗累算部90へと出力する。例えば、係数セットにおける先頭からP番目までのP個の係数は、1番目の乗累算部90に出力される。また、例えば、(P+1)番目から(2×P)個目までのP個の係数は、2番目の乗累算部90に出力される。また、(Pr1-P)番目からPr1番目までのP個の係数は、Pr1番目の乗累算部90に出力される。 The split matrix memory 64 outputs in parallel P c ×P r1 coefficients included in the coefficient set specified by the pointer every clock cycle. Each of the P c ×P r1 coefficients included in the coefficient set has a predetermined multiplication-accumulation unit 90 as an output destination. The split matrix memory 64 outputs each of P c ×P r1 coefficients included in one coefficient set to a predetermined multiply-accumulate unit 90 . For example, P c coefficients from the top to the P c th coefficient in the coefficient set are output to the first multiply-accumulate unit 90 . Also, for example, P c coefficients from (P c +1) to (2×P c ) are output to the second multiply-accumulate unit 90 . Also, the P c coefficients from the (P r1 −P c )-th to the P r1 -th are output to the P r1 -th multiply-accumulate unit 90 .

図18は、乗累算部90の構成を示す図である。乗累算部90は、P個の乗算器92と、加算器94と、累加算器96とを含む。乗累算部90は、クロックサイクル毎に、P個の第1中間変数x´を含むデータセットと、P個の係数Ji,jを含む係数セットとを取得する。 FIG. 18 is a diagram showing the configuration of the multiply-accumulate unit 90. As shown in FIG. Multiply-accumulate unit 90 includes P c multipliers 92 , an adder 94 , and an accumulator 96 . The multiply-accumulate unit 90 acquires a data set containing P c first intermediate variables x i ′ and a coefficient set containing P c coefficients J i,j for each clock cycle.

データセットに含まれるP個の第1中間変数x´と、係数セットに含まれるP個の係数Ji,jとは、一対一で対応する。また、P個の乗算器92は、データセットに含まれるP個の第1中間変数x´、および、係数セットに含まれるP個の係数Ji,jに一対一で対応する。P個の乗算器92のそれぞれは、データセットに含まれる対応する1つの第1中間変数x´と、係数セットに含まれる対応する1つの係数Ji,jとを乗算することにより、乗算値を出力する。P個の乗算器92のそれぞれは、クロックサイクル毎に、乗算値を出力する。 There is a one-to-one correspondence between the P c first intermediate variables x i ' included in the data set and the P c coefficients J i,j included in the coefficient set. Also, the P c multipliers 92 correspond one-to-one to the P c first intermediate variables x i ' included in the data set and the P c coefficients J i,j included in the coefficient set. . Each of the P c multipliers 92 multiplies a corresponding one first intermediate variable x i ' contained in the data set with a corresponding one coefficient J i,j contained in the coefficient set to Output the multiplied value. Each of the P c multipliers 92 outputs a multiplied value every clock cycle.

加算器94は、クロックサイクル毎に、P個の乗算器92から出力されたP個の乗算値を加算することにより、乗累算値を算出する。累加算器96は、クロックサイクル毎に、加算器94から出力された乗累算値を累積加算する。また、累加算器96は、対応するレジスタ84に、第1中間ストリームX´における先頭の第1中間変数x´が格納されたタイミング(S0=0)において、累積加算値を0にリセットする。 The adder 94 calculates a multiplication-accumulated value by adding the P c multiplied values output from the P c multipliers 92 in each clock cycle. The accumulator 96 accumulatively adds the multiplication-accumulated values output from the adder 94 every clock cycle. Further, the accumulator 96 resets the cumulative addition value to 0 at the timing (S0=0) at which the leading first intermediate variable x 0 ′ in the first intermediate stream X′ is stored in the corresponding register 84 . .

このような構成の乗累算部90は、Pr2段のレジスタ84のうちの対応するレジスタ84に順次に記憶される、第1中間ストリームX´の先頭の第1中間変数x´から末尾の第1中間変数xN-1´までのN個の第1中間変数x´を、クロックサイクル毎に取得する。さらに、乗累算部90は、取得したそれぞれの第1中間変数x´と、係数行列Jにおける対応する行に含まれる、取得した第1中間変数x´に対応する列の係数Ji,jとを乗算する。そして、乗累算部90は、第1中間変数x´と係数Ji,jとの乗算結果を、第1中間ストリームX´の先頭の第1中間変数x´から末尾の第1中間変数xN-1´まで累積加算する。このような処理により、乗累算部90は、対応するサブブロックに含まれる対応する位置の第2中間変数bを算出することができる。 The multiply-accumulate unit 90 having such a configuration sequentially stores the first intermediate variable x 0 ′ to the last intermediate variable x 0 ′ of the first intermediate stream X′, which are sequentially stored in the corresponding registers 84 of the Pr 2- stage registers 84 . N first intermediate variables x i ' up to the first intermediate variable x N-1 ' of are acquired every clock cycle. Further, the multiply-accumulate unit 90 calculates each of the obtained first intermediate variables x i ' and the coefficients J i of the columns corresponding to the obtained first intermediate variables x i ' included in the corresponding rows in the coefficient matrix J , j . Then, the multiply-accumulate unit 90 multiplies the result of multiplication between the first intermediate variable x i ' and the coefficient J i,j from the first intermediate variable x 0 ′ at the beginning of the first intermediate stream X′ to the first intermediate variable at the end. Cumulatively add up to the variable x N-1 '. Through such processing, the multiply-accumulate unit 90 can calculate the second intermediate variable bi at the corresponding position included in the corresponding sub-block.

図19は、第5実施形態におけるパラメータの具体的な値の一例、および、処理タイミングの一例を示す図である。 FIG. 19 is a diagram showing an example of specific values of parameters and an example of processing timings in the fifth embodiment.

図19の例において、N=16384である。また、図19の例において、P=4、N=4096である。また、図19の例において、Pr1=8、Pr2=256、Pr3=8である。また、図19において、t0、t1、t2、…、t6143は、クロックサイクルの順序を表す。 In the example of FIG. 19, N=16384. Also, in the example of FIG. 19, P c =4 and N S =4096. Also, in the example of FIG. 19, P r1 =8, P r2 =256, and P r3 =8. 19, t0, t1, t2, . . . , t6143 represent the order of clock cycles.

N個の第1中間変数x´における先頭のデータセットは、t0に、先頭の行列乗算部28における先頭のレジスタ84に格納される。従って、JG0の分割行列におけるjb0のサブ行列における先頭の係数セットは、t0に読み出される。 The head data set in the N first intermediate variables x i ' is stored in the head register 84 in the head matrix multiplier 28 at t0. Therefore, the leading coefficient set in the jb0 sub-matrix in the JG0 partition matrix is read at t0.

また、N個の第1中間変数x´における末尾のデータセットは、t4095に、先頭の行列乗算部28における先頭のレジスタ84に格納される。従って、JG0の分割行列におけるjb0のサブ行列における末尾の係数セットは、t4095に読み出される。 The data set at the end of the N first intermediate variables x i ' is stored in the head register 84 in the head matrix multiplier 28 at t4095. Therefore, the last coefficient set in the jb0 sub-matrix in the JG0 partition matrix is read at t4095.

そして、N個の第2中間変数bにおける先頭のブロックは、JG0の分割行列におけるjb0のサブ行列における末尾の係数セットの乗累算が完了したクロックサイクル(t4095)以後に、出力可能となる。従って、第2中間変数bにおける先頭のブロックは、t4095+α(αは、所定の遅延時間)に出力される。 Then, the first block in the N second intermediate variables b i can be output after the clock cycle (t4095) when the multiplication and accumulation of the last coefficient set in the jb0 submatrix in the JG0 division matrix is completed. . Therefore, the top block in the second intermediate variable b i is output at t4095+α (α is a predetermined delay time).

N個の第1中間変数x´における先頭のデータセットは、t0から(Pr1×Pr3=2048)クロックサイクル遅延された後に、最後の行列乗算部28における最後のレジスタ84に格納される。従って、JGPr3-1の分割行列におけるjbPr2-1のサブ行列における先頭の係数セットは、t2047に読み出される。 The leading data set in the N first intermediate variables x i ' is stored in the last register 84 in the last matrix multiplier 28 after being delayed (P r1 ×P r3 =2048) clock cycles from t0. . Therefore, the leading coefficient set in the sub-matrix of jbPr2-1 in the division matrix of JGPr3-1 is read at t2047.

また、N個の第1中間変数x´における末尾のデータセットは、t4095から(Pr1×Pr3=2048)クロックサイクル遅延された後に、最後の行列乗算部28における最後のレジスタ84に格納される。従って、JGPr3-1の分割行列におけるjbPr2-1のサブ行列における末尾の係数セットは、t6143に読み出される。 Also, the last data set in the N first intermediate variables x i ' is stored in the last register 84 in the last matrix multiplier 28 after being delayed (P r1 ×P r3 =2048) clock cycles from t4095. be done. Therefore, the last coefficient set in the jbPr2-1 sub-matrix in the JGPr3-1 partition matrix is read at t6143.

そして、N個の第2中間変数bにおける末尾のブロックは、JGPr3-1の分割行列におけるjbPr2-1のサブ行列における末尾の係数セットの乗累算が完了したクロックサイクル(t6143)以後に、出力可能となる。従って、第2中間変数bにおける末尾のブロックは、t6143+αにおいて、出力される。 Then, after the clock cycle (t6143) when the multiplication and accumulation of the last coefficient set in the submatrix of jbPr2-1 in the division matrix of JGPr3-1 is completed, the last block in the N second intermediate variables b i is Output is possible. Therefore, the last block in the second intermediate variable b i is output at t6143+α.

このような構成の第5実施形態に係る計算装置10は、Pr3×Pr2×Pr1の並列度で行列乗算をすることができる。これにより、第5実施形態に係る計算装置10によれば、行列乗算を高速に実行することができる。 The computing device 10 having such a configuration according to the fifth embodiment can perform matrix multiplication with a degree of parallelism of Pr3 × Pr2 × Pr1 . As a result, the computing device 10 according to the fifth embodiment can perform matrix multiplication at high speed.

(第6実施形態)
第6実施形態に係る計算装置10について説明する。
(Sixth embodiment)
A computing device 10 according to the sixth embodiment will be described.

図20は、第6実施形態に係る時間発展部30の構成を、複数の行列乗算部28とともに示す図である。第6実施形態において、それぞれの行列乗算部28は、1クロックサイクルにPr1個の第2中間変数bを含む第2中間ストリームBを出力する。そして、第6実施形態において、時間発展部30は、1クロックサイクルにPr1個の第2中間変数bを含む第2中間ストリームBを受信する。 FIG. 20 is a diagram showing the configuration of the time evolution section 30 according to the sixth embodiment together with a plurality of matrix multiplication sections 28. As shown in FIG. In the sixth embodiment, each matrix multiplier 28 outputs a second intermediate stream B containing Pr1 second intermediate variables b i in one clock cycle. Then, in the sixth embodiment, the time evolution unit 30 receives the second intermediate stream B containing Pr1 second intermediate variables b i in one clock cycle.

そして、第6実施形態に係る時間発展部30は、Pr1個の第1変数メモリ40と、Pr1個の第2変数メモリ42と、Pr1個の第1加算部44と、Pr1個の関数演算部46と、Pr1個の第1乗算部48と、1個の第1中間変数メモリ50とを有する。 The time evolution unit 30 according to the sixth embodiment includes Pr1 first variable memories 40, Pr1 second variable memories 42, Pr1 first addition units 44, and Pr1 , Pr1 first multipliers 48 and one first intermediate variable memory 50 .

r1個の第1変数メモリ40、Pr1個の第2変数メモリ42、Pr1個の第1加算部44、Pr1個の関数演算部46およびPr1個の第1乗算部48は、1クロックサイクルに含まれるPr1個の第2中間変数bに一対一で対応する。 Pr 1 first variable memories 40, Pr 1 second variable memories 42, Pr 1 first addition units 44, Pr 1 function operation units 46, and Pr 1 first multiplication units 48 are There is a one-to-one correspondence with Pr1 second intermediate variables b i included in one clock cycle.

そして、Pr1個の第1加算部44のそれぞれおよびPr1個の関数演算部46のそれぞれは、1クロックサイクルに含まれるPr1個の第2中間変数bのうち対応する1つの第2中間変数bについての演算処理を実行する。また、Pr1個の第1変数メモリ40のそれぞれおよびPr1個の第2変数メモリ42のそれぞれは、1クロックサイクルに含まれるPr1個の第2中間変数bのうち対応する1つの第2中間変数bを用いて算出された第1変数xおよび第2変数yを記憶する。また、Pr1個の第1乗算部48のそれぞれは、1クロックサイクルに含まれるPr1個の第2中間変数bのうち対応する1つの第2中間変数bを用いて算出された第1変数xに対する演算処理を実行する。 Then, each of the Pr1 first addition units 44 and each of the Pr1 function operation units 46 selects a corresponding one of the Pr1 second intermediate variables b i included in one clock cycle. Arithmetic processing is executed for the intermediate variable b i . In addition, each of the Pr1 first variable memories 40 and each of the Pr1 second variable memories 42 correspond to one of the Pr1 second intermediate variables b i included in one clock cycle. A first variable x i and a second variable y i calculated using the two intermediate variables b i are stored. In addition, each of the Pr1 first multipliers 48 is calculated using a corresponding one of the Pr1 second intermediate variables b i included in one clock cycle. Arithmetic processing is executed for one variable x i .

このように、第6実施形態に係る時間発展部30は、1クロックサイクルに含まれるPr1個の第2中間変数bに対して、N個の第1変数xおよびN個の第2変数yの算出処理を、Pr1の並列度で実行する。これにより、第6実施形態に係る計算装置10は、N個の第1変数xおよびN個の第2変数yの算出処理を高速に実行することができる。 In this way, the time evolution unit 30 according to the sixth embodiment provides N first variables x i and N second variables x i for Pr1 second intermediate variables b i included in one clock cycle. The calculation process of the variable yi is executed with the degree of parallelism of Pr1 . Thereby, the computing device 10 according to the sixth embodiment can execute the calculation process of the N first variables x i and the N second variables y i at high speed.

図21は、第1中間変数x´および第2中間変数bの出力タイミングを示す図である。より詳しくは、図21の(A)は、時間発展部30から先頭の行列乗算部28に第1中間変数x´が出力されるタイミングを示す。図21の(B)は、末尾の行列乗算部28から時間発展部30へ第2中間変数bが出力されるタイミングを示す。図21の(C)は、時間発展部30による第1中間変数x´の算出タイミングを示す。 FIG. 21 is a diagram showing output timings of the first intermediate variable x i ' and the second intermediate variable b i . More specifically, (A) of FIG. 21 shows the timing at which the first intermediate variable x i ' is output from the time evolution section 30 to the matrix multiplication section 28 at the top. (B) of FIG. 21 shows the timing at which the second intermediate variable bi is output from the matrix multiplication unit 28 at the end to the time evolution unit 30 . (C) of FIG. 21 shows the calculation timing of the first intermediate variable x i ' by the time evolution unit 30 .

第1中間変数x´は、P個の並列度で転送がされる。従って、図21の(A)に示すように、第1時刻における第1中間変数(x´b0~x´b4095(t))の転送期間は、N(=N/P)クロックサイクルとなる。 The first intermediate variable x i ' is transferred with P c parallel degrees. Therefore, as shown in FIG. 21A, the transfer period of the first intermediate variables (x'b0 to x'b4095(t 1 )) at the first time is N S (=N/P c ) clock cycles. becomes.

また、第2中間変数bは、Pr1個の並列度で転送がされる。従って、図21の(B)に示すように、第1時刻における第2中間変数(bb0~bb2047(t))の転送期間は、N/Pr1クロックサイクルとなる。 Also, the second intermediate variable b i is transferred with Pr1 parallelism. Therefore, as shown in FIG. 21B, the transfer period of the second intermediate variables (bb0 to bb2047(t 1 )) at the first time is N/P r1 clock cycles.

また、時間発展部30は、Pr1個の並列度で処理が実行される。従って、図21の(C)に示すように、第2時刻における第2中間変数(bb0~bb2047(t))の演算期間は、N/Pr1クロックサイクルとなる。 In addition, the time evolution unit 30 executes processing with a degree of parallelism of Pr1 . Therefore, as shown in FIG. 21C, the calculation period of the second intermediate variables (bb0 to bb2047(t 2 )) at the second time is N/P r1 clock cycles.

ここで、Lは、第1時刻における最後の第1中間変数(x´b4095(t))の出力が完了してから、第1時刻における最初の第2中間変数(bb0(t))の出力が開始するまでの遅延時間である。Lは、第1時刻における最初の第2中間変数(bb0(t))の出力が開始してから、第2時刻における最初の第1中間変数(x´b0(t))が算出されるまでの遅延時間である。Lは、第2時刻における最初の第1中間変数(x´b0(t))が算出されてから、第2時刻における最初の第1中間変数(x´b0(t))が出力されるまでの遅延時間である。 Here , L a is the first second intermediate variable (bb0(t 1 ) ) is the delay time until the output of L b is calculated by the first intermediate variable (x′b0(t 2 )) at the second time after the output of the first second intermediate variable (bb0(t 1 )) at the first time starts. is the delay time until L c is the output of the first intermediate variable (x′b0(t 2 )) at the second time after the first intermediate variable (x′b0(t 2 )) at the second time is calculated. is the delay time until

ここで、あるループ処理の開始から次のループ処理の開始までの期間(1ループ期間)は、N+L+L+Lとなる。計算装置10は、(L+L)を、第1時刻における第2中間変数(bb0~bb2047(t))の転送期間(N/Pr1)より短くすることができる。従って、計算装置10では、第1時刻における第2中間変数(bb0~bb2047(t))の出力が完了する前に、第2時刻における第1中間変数(x´b0~x´b4095(t))の出力が開始される。すなわち、計算装置10は、ループ処理のオーバラップを実現している。計算装置10によれば、このようなオーバラップの実現により、高速に処理を実行することができる。 Here, the period from the start of one loop process to the start of the next loop process (one loop period) is N S +L a +L b +L c . The computing device 10 can make (L b +L c ) shorter than the transfer period (N/P r1 ) of the second intermediate variables (bb0 to bb2047(t 1 )) at the first time. Therefore, in the computing device 10, the first intermediate variables (x'b0 to x'b4095 (t 2 )) is started to be output. That is, the computing device 10 realizes overlapping loop processing. According to the computing device 10, by realizing such overlap, it is possible to execute processing at high speed.

また、Nが大きい場合、N>>L+L+Lとなる。従って、Nが大きい場合、L+L+Lが全体の実行時間に対して無視できる程度に短くなる。この場合、計算装置10での行列乗算時間は、N(=N/P)クロックサイクルとみなすことができる。 Also, when N is large, NS >>L a +L b +L c . Therefore, when N is large, L a +L b +L becomes negligibly small relative to the overall execution time. In this case, the matrix multiplication time in computing device 10 can be considered as N S (=N/P c ) clock cycles.

例えば、シングルコアのプロセッサによるサイズがNの行列演算時間は、(N×N)クロックサイクルである。シングルコアのプロセッサによる行列乗算時間に対する、計算装置10での行列乗算時間は、(N/P)/N×Nである。従って、計算装置10は、シングルコアのプロセッサに対して、1/(P×N)の時間で行列乗算を実行することができる。 For example, the matrix computation time of size N by a single-core processor is (N×N) clock cycles. The matrix multiplication time on computing device 10 relative to the matrix multiplication time on a single-core processor is (N/P c )/N×N. Therefore, computing device 10 can perform matrix multiplication in 1/(P c ×N) time for a single-core processor.

本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。 While several embodiments of the invention have been described, these embodiments have been presented by way of example and are not intended to limit the scope of the invention. These novel embodiments can be implemented in various other forms, and various omissions, replacements, and modifications can be made without departing from the scope of the invention. These embodiments and their modifications are included in the scope and gist of the invention, and are included in the scope of the invention described in the claims and equivalents thereof.

10 計算装置
20 演算部
22 入力部
24 出力部
26 設定部
28 行列乗算部
30 時間発展部
32 管理部
36 係数行列メモリ
38 行列乗算実行部
40 第1変数メモリ
42 第2変数メモリ
44 第1加算部
46 関数演算部
48 第1乗算部
50 第1中間変数メモリ
60 分割行列乗算部
62 バッファ部
64 分割行列メモリ
66 実行部
68 セレクタ
80 サブ行列乗算部
82 多重化部
84 レジスタ
86 バッファ内受信部
88 バッファ内送信部
90 乗累算部
92 乗算器
94 加算器
96 累加算器
10 calculation device 20 calculation unit 22 input unit 24 output unit 26 setting unit 28 matrix multiplication unit 30 time evolution unit 32 management unit 36 coefficient matrix memory 38 matrix multiplication execution unit 40 first variable memory 42 second variable memory 44 first addition unit 46 function operation unit 48 first multiplication unit 50 first intermediate variable memory 60 division matrix multiplication unit 62 buffer unit 64 division matrix memory 66 execution unit 68 selector 80 sub-matrix multiplication unit 82 multiplexing unit 84 register 86 buffer internal reception unit 88 buffer Inner transmitter 90 Multiply accumulator 92 Multiplier 94 Adder 96 Accumulator

Claims (29)

ハードウェア記述言語により記載された、回路の構成を表す回路情報であって、
前記回路を、イジングモデルを用いた最適化問題を解く計算装置として機能させ、
前記計算装置は、
第1変数メモリと、
第2変数メモリと、
第1時刻におけるN個(Nは2以上の整数)の第1中間変数と、予め設定されたN行×N列の係数を含む係数行列とを行列乗算することにより、前記第1時刻におけるN個の第2中間変数を算出する行列乗算部と、
前記第1時刻における前記N個の第2中間変数に基づき、前記第1時刻から1サンプリング期間後の第2時刻におけるN個の第1変数および前記第2時刻におけるN個の第2変数を算出し、前記第2時刻におけるN個の第1変数を前記第1変数メモリに書き込み、前記第2時刻におけるN個の第2変数を前記第2変数メモリに書き込む時間発展部と、
開始時刻からサンプリング期間毎で時刻を増加させ、それぞれの時刻に対する処理を前記行列乗算部および前記時間発展部に実行させる管理部と、
予め設定された終了時刻におけるN個の第1変数を出力する出力部と、
を備え、
前記N個の第1変数は、前記イジングモデルにおけるN個のスピンに対応し
前記N個の第2変数は、前記N個のスピンに対応し
前記N個のスピンは、N個の点に対応し、
前記N個の第1変数のそれぞれは、前記N個の点のうちの対応するスピンに対応する点の位置を表し、
前記N個の第2変数のそれぞれは、前記N個の点のうちの対応するスピンに対応する点の運動量を表し、
前記N個の第1中間変数は、前記N個の第1変数に対応し、前記N個の第1中間変数のそれぞれは、前記N個の第1変数のうちの対応する第1変数または前記対応する第1変数に予め設定された係数を乗じた値であり、
前記N個の第2中間変数は、前記N個の第2変数に対応する
回路情報。
Circuit information representing the configuration of a circuit described in a hardware description language,
causing the circuit to function as a computing device that solves an optimization problem using the Ising model;
The computing device
a first variable memory;
a second variable memory;
N (N is an integer of 2 or more) first intermediate variables at a first time and a coefficient matrix containing preset N rows×N columns of coefficients are multiplied by a matrix to obtain N at the first time a matrix multiplication unit that calculates second intermediate variables;
Calculate N first variables at a second time after one sampling period from the first time and N second variables at the second time based on the N second intermediate variables at the first time a time evolution unit that writes N first variables at the second time to the first variable memory and writes N second variables at the second time to the second variable memory;
a management unit that increments the time for each sampling period from the start time and causes the matrix multiplication unit and the time evolution unit to execute processing for each time;
an output unit that outputs N first variables at a preset end time;
with
The N first variables correspond to N spins in the Ising model ,
The N second variables correspond to the N spins ,
the N spins correspond to N points;
each of the N first variables represents the position of a point corresponding to a corresponding spin among the N points;
each of the N second variables represents the momentum of a point corresponding to the corresponding spin among the N points;
The N first intermediate variables correspond to the N first variables, and each of the N first intermediate variables is a corresponding first variable of the N first variables or the A value obtained by multiplying the corresponding first variable by a preset coefficient,
The N second intermediate variables correspond to the N second variables. Circuit information.
再構成可能な半導体装置を動作させるために、前記再構成可能な半導体装置に書き込まれる回路情報であって、
前記再構成可能な半導体装置を、イジングモデルを用いた最適化問題を解く計算装置として機能させ、
前記計算装置は、
第1変数メモリと、
第2変数メモリと、
第1時刻におけるN個(Nは2以上の整数)の第1中間変数と、予め設定されたN行×N列の係数を含む係数行列とを行列乗算することにより、前記第1時刻におけるN個の第2中間変数を算出する行列乗算部と、
前記第1時刻における前記N個の第2中間変数に基づき、前記第1時刻から1サンプリング期間後の第2時刻におけるN個の第1変数および前記第2時刻におけるN個の第2変数を算出し、前記第2時刻におけるN個の第1変数を前記第1変数メモリに書き込み、前記第2時刻におけるN個の第2変数を前記第2変数メモリに書き込む時間発展部と、
開始時刻からサンプリング期間毎で時刻を増加させ、それぞれの時刻に対する処理を前記行列乗算部および前記時間発展部に実行させる管理部と、
予め設定された終了時刻におけるN個の第1変数を出力する出力部と、
を備え、
前記N個の第1変数は、前記イジングモデルにおけるN個のスピンに対応し
前記N個の第2変数は、前記N個のスピンに対応し
前記N個のスピンは、N個の点に対応し、
前記N個の第1変数のそれぞれは、前記N個の点のうちの対応するスピンに対応する点の位置を表し、
前記N個の第2変数のそれぞれは、前記N個の点のうちの対応するスピンに対応する点の運動量を表し、
前記N個の第1中間変数は、前記N個の第1変数に対応し、前記N個の第1中間変数のそれぞれは、前記N個の第1変数のうちの対応する第1変数または前記対応する第1変数に予め設定された係数を乗じた値であり、
前記N個の第2中間変数は、前記N個の第2変数に対応する
回路情報。
Circuit information written to the reconfigurable semiconductor device to operate the reconfigurable semiconductor device,
causing the reconfigurable semiconductor device to function as a computing device that solves an optimization problem using an Ising model;
The computing device
a first variable memory;
a second variable memory;
N (N is an integer of 2 or more) first intermediate variables at a first time and a coefficient matrix containing preset N rows×N columns of coefficients are multiplied by a matrix to obtain N at the first time a matrix multiplication unit that calculates second intermediate variables;
Calculate N first variables at a second time after one sampling period from the first time and N second variables at the second time based on the N second intermediate variables at the first time a time evolution unit that writes N first variables at the second time to the first variable memory and writes N second variables at the second time to the second variable memory;
a management unit that increments the time for each sampling period from the start time and causes the matrix multiplication unit and the time evolution unit to execute processing for each time;
an output unit that outputs N first variables at a preset end time;
with
The N first variables correspond to N spins in the Ising model ,
The N second variables correspond to the N spins ,
the N spins correspond to N points;
each of the N first variables represents the position of a point corresponding to a corresponding spin among the N points;
each of the N second variables represents the momentum of a point corresponding to the corresponding spin among the N points;
The N first intermediate variables correspond to the N first variables, and each of the N first intermediate variables is a corresponding first variable of the N first variables or the A value obtained by multiplying the corresponding first variable by a preset coefficient,
The N second intermediate variables correspond to the N second variables. Circuit information.
前記時間発展部は、前記第2時刻における前記N個の第1変数に基づき、前記第2時刻における前記N個の第2中間変数をさらに算出する
請求項1または2に記載の回路情報。
3. The circuit information according to claim 1, wherein the time evolution unit further calculates the N second intermediate variables at the second time based on the N first variables at the second time.
前記時間発展部は、前記第1時刻におけるN個の第2変数に、前記第1時刻における前記N個の第2中間変数を加算することにより、前記第1時刻におけるN個の第2変数を更新する第1加算部を有する
請求項3に記載の回路情報。
The time evolution unit calculates N second variables at the first time by adding the N second intermediate variables at the first time to the N second variables at the first time. 4. The circuit information according to claim 3, comprising an updating first addition unit.
前記時間発展部は、
第1のFX演算部と、
第1のFX加算部と、
第1のFY演算部と、
第1のFY加算部と、
をさらに有し、
前記第1のFX演算部は、前記第1時刻におけるN個の第1変数のそれぞれに対して第1関数演算をすることにより、N個の第2微分値を算出し、
前記第1のFX加算部は、前記第1のFX演算部が算出した前記N個の第2微分値と前記第1加算部が算出した更新された前記N個の第2変数とを加算することにより、N個の第2更新値を算出し、
前記第1のFY演算部は、前記第1のFX加算部が算出した前記N個の第2更新値のそれぞれに対して第2関数演算をすることにより、N個の第1微分値を算出し、
前記第1のFY加算部は、前記第1のFY演算部が算出した前記N個の第1微分値と前記第1時刻における前記N個の第1変数とを加算することにより、N個の第1更新値を算出する
請求項4に記載の回路情報。
The time evolution unit
a first FX calculation unit;
a first FX adder;
a first FY calculation unit;
a first FY adder;
further having
The first FX calculation unit calculates N second differential values by performing a first function calculation on each of the N first variables at the first time,
The first FX addition unit adds the N second differential values calculated by the first FX operation unit and the updated N second variables calculated by the first addition unit. By calculating N second update values,
The first FY calculation unit calculates N first differential values by performing a second function calculation on each of the N second update values calculated by the first FX addition unit. death,
The first FY addition unit adds the N first differential values calculated by the first FY calculation unit and the N first variables at the first time to obtain N 5. The circuit information according to claim 4, wherein a first update value is calculated.
前記時間発展部は、
第1のFY演算部と、
第1のFY加算部と、
第1のFX演算部と、
第1のFX加算部と、
をさらに有し、
前記第1のFY演算部は、前記第1加算部が算出した更新された前記N個の第2変数のそれぞれに対して第2関数演算をすることにより、N個の第1微分値を算出し、
前記第1のFY加算部は、前記第1のFY演算部が算出した前記N個の第1微分値と前記第1時刻におけるN個の第1変数とを加算することにより、N個の第1更新値を算出し、
前記第1のFX演算部は、前記第1のFY加算部が算出した前記N個の第1更新値のそれぞれに対して第1関数演算をすることにより、N個の第2微分値を算出し、
前記第1のFX加算部は、前記第1のFX演算部が算出した前記N個の第2微分値と前記第1加算部が算出した更新された前記N個の第2変数とを加算することにより、N個の第2更新値を算出する
請求項4に記載の回路情報。
The time evolution unit
a first FY calculation unit;
a first FY adder;
a first FX calculation unit;
a first FX adder;
further having
The first FY operation unit calculates N first differential values by performing a second function operation on each of the N updated second variables calculated by the first addition unit. death,
The first FY addition unit adds the N first differential values calculated by the first FY calculation unit and the N first variables at the first time to obtain N first 1 calculate the update value,
The first FX calculation unit calculates N second differential values by performing a first function calculation on each of the N first update values calculated by the first FY addition unit. death,
The first FX addition unit adds the N second differential values calculated by the first FX operation unit and the updated N second variables calculated by the first addition unit. 5. The circuit information according to claim 4, wherein N second update values are calculated.
前記時間発展部は、
第2から第M(Mは2以上の整数)までの(M-1)個のFX演算部と、
第2から第Mまでの(M-1)個のFX加算部と、
第2から第Mまでの(M-1)個のFY演算部と、
第2から第Mまでの(M-1)個のFY加算部と、
をさらに有し、
第m(mは2からMまでの整数)のFX演算部は、第(m-1)のFY加算部が算出したN個の第1更新値のそれぞれに対して前記第1関数演算をすることにより、N個の第2微分値を算出し、
第mのFX加算部は、前記第mのFX演算部が算出した前記N個の第2微分値と第(m-1)のFX加算部が算出したN個の第2更新値とを加算することにより、新たなN個の第2更新値を算出し、
第mのFY演算部は、前記第mのFX加算部が算出した前記N個の第2更新値のそれぞれに対して前記第2関数演算をすることにより、N個の第1微分値を算出し、
第mのFY加算部は、前記第mのFY演算部が算出した前記N個の第1微分値と第(m-1)のFY加算部が算出したN個の第1更新値とを加算することにより、新たなN個の第1更新値を算出する
請求項5に記載の回路情報。
The time evolution unit
(M-1) FX operation units from the second to the Mth (M is an integer of 2 or more);
second to M-th (M-1) FX addition units;
(M−1) FY calculation units from the second to the Mth,
(M−1) FY addition units from the second to the Mth;
further having
The m-th (m is an integer from 2 to M) FX calculation unit performs the first function calculation on each of the N first update values calculated by the (m-1)th FY addition unit By calculating N second differential values,
The m-th FX addition unit adds the N second differential values calculated by the m-th FX calculation unit and the N second update values calculated by the (m−1)th FX addition unit. to calculate new N second update values,
The m-th FY calculation unit calculates N first differential values by performing the second function calculation on each of the N second update values calculated by the m-th FX addition unit. death,
The m-th FY addition unit adds the N first differential values calculated by the m-th FY calculation unit and the N first update values calculated by the (m−1)th FY addition unit. 6. The circuit information according to claim 5, wherein new N first update values are calculated by:
前記時間発展部は、
第2から第M(Mは2以上の整数)までの(M-1)個のFY演算部と、
第2から第Mまでの(M-1)個のFY加算部と、
第2から第Mまでの(M-1)個のFX演算部と、
第2から第Mまでの(M-1)個のFX加算部と、
をさらに有し、
第m(mは2からMまでの整数)のFY演算部は、第(m-1)のFX加算部が算出した前記N個の第2更新値のそれぞれに対して前記第2関数演算をすることにより、N個の第1微分値を算出し、
第mのFY加算部は、第mのFY演算部が算出した前記N個の第1微分値と第(m-1)のFY加算部が算出したN個の第1更新値とを加算することにより、新たなN個の第1更新値を算出し、
第mのFX演算部は、前記第mのFY加算部が算出した前記N個の第1更新値のそれぞれに対して前記第1関数演算をすることにより、N個の第2微分値を算出し、
第mのFX加算部は、前記第mのFX演算部が算出した前記N個の第2微分値と第(m-1)のFX加算部が算出したN個の第2更新値とを加算することにより、新たなN個の第2更新値を算出する
請求項6に記載の回路情報。
The time evolution unit
(M−1) FY calculation units from the second to the Mth (M is an integer of 2 or more);
(M−1) FY addition units from the second to the Mth;
(M-1) FX operation units from the second to the Mth,
second to M-th (M-1) FX addition units;
further having
The m-th (m is an integer from 2 to M) FY operation unit performs the second function operation on each of the N second update values calculated by the (m-1)th FX addition unit. By calculating N first differential values,
The m-th FY addition unit adds the N first differential values calculated by the m-th FY calculation unit and the N first update values calculated by the (m−1)th FY addition unit. By calculating new N first update values,
The m-th FX calculation unit calculates N second differential values by performing the first function calculation on each of the N first update values calculated by the m-th FY addition unit. death,
The m-th FX addition unit adds the N second differential values calculated by the m-th FX calculation unit and the N second update values calculated by the (m−1)th FX addition unit. 7. The circuit information according to claim 6, wherein N new second update values are calculated by:
前記第1関数演算は、
dt´×[{-D+p-Kx }x-c×h×a]…(101)
であり、
前記第2関数演算は、
dt´×D×y…(102)
であり、
は、前記第1時刻における前記N個の第1変数のうちのi番目の第1変数、または、前記N個の第1更新値のうちのi番目の第1更新値であり、
は、前記第1加算部が算出した更新された前記N個の第2変数のうちのi番目の更新された第2変数、または、前記N個の第2更新値のうちのi番目の第2更新値であり、
dt´は、予め設定された微小時間であり、
D、c、Kは、予め設定された定数であり、
は、i毎に設定された係数であり、
pおよびaは、予め定められた演算式に従って時刻毎に増加する値である
請求項5からの何れか1項に記載の回路情報。
The first functional operation is
dt′×[{−D+p−Kx i 2 }x i −c×h i ×a] (101)
and
The second function operation is
dt′×D× yi (102)
and
x i is the i-th first variable among the N first variables at the first time, or the i-th first update value among the N first update values;
y i is the i-th updated second variable among the N updated second variables calculated by the first adder or the i-th updated value among the N second updated values; is the second updated value of
dt' is a minute time set in advance,
D, c, K are preset constants,
h i is a coefficient set for each i,
The circuit information according to any one of claims 5 to 8 , wherein p and a are values that increase with time according to a predetermined arithmetic expression.
前記第1関数演算は、
dt´×{[(-D+p)(1+x )-Kx n+2]x-c×h×a}…(103)
であり、
前記第2関数演算は、
dt´×D×y…(104)
であり、
は、前記第1時刻における前記N個の第1変数のうちのi番目の第1変数、または、前記N個の第1更新値のうちのi番目の第1更新値であり、
は、前記第1加算部が算出した更新された前記N個の第2変数のうちのi番目の更新された第2変数、または、前記N個の第2更新値のうちのi番目の第2更新値であり、
dt´は、予め設定された微小時間であり、
D、c、Kは、予め設定された係数であり、
は、i毎に設定された係数であり、
pおよびaは、予め定められた演算式に従って時刻毎に増加する値である
請求項5からの何れか1項に記載の回路情報。
The first functional operation is
dt′×{[(−D+p)(1+x i n )−K x i n+2 ]x i −c×h i ×a} (103)
and
The second function operation is
dt′×D× yi (104)
and
x i is the i-th first variable among the N first variables at the first time, or the i-th first update value among the N first update values;
y i is the i-th updated second variable among the N updated second variables calculated by the first adder or the i-th updated value among the N second updated values; is the second updated value of
dt' is a minute time set in advance,
D, c, K are preset coefficients,
h i is a coefficient set for each i,
The circuit information according to any one of claims 5 to 8 , wherein p and a are values that increase with time according to a predetermined arithmetic expression.
前記時間発展部は、
前記第2時刻における前記N個の第1変数のそれぞれに予め設定された値を乗じることにより、前記第2時刻における前記N個の第1中間変数を算出する第1乗算部と、
前記第1乗算部が算出した前記第2時刻における前記N個の第1中間変数を記憶する第1中間変数メモリと、
をさらに有する請求項4から10の何れか1項に記載の回路情報。
The time evolution unit
a first multiplier that calculates the N first intermediate variables at the second time by multiplying each of the N first variables at the second time by a preset value;
a first intermediate variable memory for storing the N first intermediate variables at the second time calculated by the first multiplier;
11. The circuit information according to any one of claims 4 to 10 , further comprising:
前記時間発展部は、
前記第2時刻における前記N個の第1変数を、前記第2時刻における前記N個の第1中間変数として記憶する第1中間変数メモリと、
前記行列乗算部から出力された前記第1時刻における前記N個の第2中間変数のそれぞれに予め設定された値を乗じる第1乗算部と、
をさらに有し、
前記第1加算部は、前記第1時刻における前記N個の第2変数に、前記第1乗算部が予め設定された値を乗じた前記第1時刻における前記N個の第2中間変数を加算することにより、前記第1時刻における前記N個の第2変数を更新する
をさらに有する請求項4から10の何れか1項に記載の回路情報。
The time evolution unit
a first intermediate variable memory that stores the N first variables at the second time as the N first intermediate variables at the second time;
a first multiplier that multiplies each of the N second intermediate variables at the first time output from the matrix multiplier by a preset value;
further having
The first adder adds the N second intermediate variables at the first time obtained by multiplying the N second variables at the first time by a value preset by the first multiplier. 11. The circuit information according to any one of claims 4 to 10 , further comprising: updating said N second variables at said first time by:
前記開始時刻におけるN個の第1変数を取得する入力部をさらに備える
請求項1から12の何れか1項に記載の回路情報。
The circuit information according to any one of claims 1 to 12 , further comprising an input unit that acquires N first variables at the start time.
前記時間発展部は、前記第1時刻における前記N個の第1中間変数を、1クロックサイクルに第1数の第1中間変数を含む第1中間ストリームとして前記行列乗算部へと出力し、
前記行列乗算部は、前記第1時刻における前記N個の第2中間変数を、1クロックサイクルに第2数の第2中間変数を含む第2中間ストリームとして前記時間発展部へと出力する
請求項1から13の何れか1項に記載の回路情報。
The time evolution unit outputs the N first intermediate variables at the first time to the matrix multiplication unit as a first intermediate stream containing a first number of first intermediate variables in one clock cycle;
The matrix multiplication unit outputs the N second intermediate variables at the first time to the time evolution unit as a second intermediate stream containing a second number of second intermediate variables in one clock cycle. 14. The circuit information according to any one of 1 to 13 .
前記係数行列は、それぞれが(N/Pr3)行(Pr3は、Nの約数)×N列の係数を含むPr3個の分割行列に分割され、
前記N個の第2中間変数は、それぞれが(N/Pr3)個の第2中間変数を含むPr3個のブロックに分割され、
前記Pr3個のブロックは、前記Pr3個の分割行列に一対一で対応付けられ、
前記行列乗算部は、前記Pr3個の分割行列に一対一で対応付けられたPr3個の分割行列乗算部を有し、
前記Pr3個の分割行列乗算部のそれぞれは、前記第1中間変数と、対応する分割行列とを行列乗算することにより、対応するブロックに含まれる(N/Pr3)個の第2中間変数を算出する
請求項14に記載の回路情報。
The coefficient matrix is divided into P r3 partition matrices each including (N / P r3 ) rows (P r3 is a divisor of N)×N columns of coefficients;
the N second intermediate variables are divided into P r3 blocks each containing (N/P r3 ) second intermediate variables;
The P r3 blocks are associated one-to-one with the P r3 partitioning matrices;
The matrix multiplication unit has Pr 3 partitioned matrix multiplication units that are associated one-to-one with the Pr 3 partitioned matrices,
Each of the P r3 split matrix multiplication units performs matrix multiplication of the first intermediate variable and the corresponding split matrix to obtain (N/P r3 ) second intermediate variables included in the corresponding block 15. The circuit information according to claim 14 , wherein:
前記Pr3個の分割行列乗算部は、直列に接続され、
前記Pr3個の分割行列乗算部のそれぞれは、バッファ部を含み、
先頭の分割行列乗算部の前記バッファ部は、前記時間発展部から出力された前記第1中間ストリームを取得し、取得した前記第1中間ストリームを一定時間記憶して出力し、
先頭以外の分割行列乗算部の前記バッファ部は、直前段の分割行列乗算部から出力された前記第1中間ストリームを取得し、取得した前記第1中間ストリームを一定時間記憶して出力する
請求項15に記載の回路情報。
The Pr 3 split matrix multiplication units are connected in series,
each of the Pr3 split matrix multiplication units includes a buffer unit;
the buffer unit of the head division matrix multiplication unit acquires the first intermediate stream output from the time evolution unit, stores the acquired first intermediate stream for a certain period of time, and outputs the acquired first intermediate stream;
The buffer units of the dividing matrix multiplication units other than the first one acquire the first intermediate stream output from the immediately preceding stage dividing matrix multiplication unit, store the acquired first intermediate stream for a certain period of time, and output the acquired first intermediate stream. 15 circuit information.
前記Pr3個の分割行列乗算部および前記時間発展部は、それぞれが独立した(Pr3+1個)のチップに含まれる
請求項15または16に記載の回路情報。
17. The circuit information according to claim 15 or 16 , wherein the P r3 partitioned matrix multiplication units and the time evolution unit are each included in independent ( Pr3 + 1) chips.
前記第1中間ストリームおよび前記第2中間ストリームを伝送する(Pr3+1個)の通信リンクをさらに備え、
前記(Pr3+1個)のチップのうちの第k(kは、1以上、Pr3以下の整数)のチップの出力端子は、第(k+1)のチップの入力端子に、前記(Pr3+1個)の通信リンクのうちの第kの通信リンクを介して接続され、
第(Pr3+1)のチップの出力端子は、第1のチップの入力端子に、第(Pr3+1)の通信リンクを介して接続される
請求項17に記載の回路情報。
further comprising ( Pr3 + 1) communication links for transmitting the first intermediate stream and the second intermediate stream;
The output terminal of the k - th chip (k is an integer of 1 or more and Pr3 or less) among the (P r3 +1) chips is connected to the input terminal of the ( k +1)-th chip. ) communication links via the k-th communication link,
18. Circuit information according to claim 17 , wherein the output terminal of the (P r3 +1) th chip is connected to the input terminal of the first chip via the (P r3 +1) th communication link.
前記Pr3個の分割行列のそれぞれは、それぞれがPr1行×N列の係数を含むPr2個のサブ行列に分割され、Pr1およびPr2は、Nの約数であり、Pr1×Pr2×Pr3=Nであり、
前記Pr3個のブロックのそれぞれは、それぞれがPr1個の第2中間変数を含むPr2個のサブブロックに分割され、
k番目(kは、1以上、Pr3以下の整数)のブロックに含まれる前記Pr2個のサブブロックは、k番目の分割行列に含まれるPr2個のサブ行列に一対一で対応付けられ、
前記Pr3個の分割行列乗算部のそれぞれは、対応する分割行列に含まれる前記Pr2個のサブ行列に一対一で対応付けられたPr2個のサブ行列乗算部をさらに含み、
第k番目の分割行列乗算部に含まれる前記Pr2個のサブ行列乗算部のそれぞれは、前記N個の第1中間変数と、対応するサブ行列とを行列乗算することにより、対応するサブブロックに含まれるPr1個の第2中間変数を算出する
請求項16に記載の回路情報。
Each of the P r3 partitioned matrices is partitioned into P r2 sub-matrices each containing P r1 rows by N columns of coefficients, where P r1 and P r2 are divisors of N and P r1 × P r2 ×P r3 =N, and
each of said P r3 blocks is divided into P r2 sub-blocks each containing P r1 second intermediate variables;
The Pr2 sub-blocks included in the k-th block (k is an integer equal to or greater than 1 and Pr3 or less) are associated one-to-one with the Pr2 sub-matrices included in the k-th partition matrix. ,
Each of the Pr3 partitioned matrix multipliers further includes Pr2 submatrix multipliers that are associated one-to-one with the Pr2 submatrices included in the corresponding partitioned matrix,
Each of the Pr2 sub-matrix multiplication units included in the k-th split matrix multiplication unit performs matrix multiplication of the N first intermediate variables and the corresponding sub-matrix to obtain the corresponding sub-block 17. The circuit information according to claim 16 , wherein P r1 second intermediate variables included in are calculated.
前記バッファ部は、シフトレジスタとして機能するPr2段のレジスタを含み、
前記Pr2段のレジスタは、前記Pr2個のサブ行列乗算部に一対一に対応付けられ、
前記Pr2段のレジスタのそれぞれは、P個(Pは、Nの約数)の第1中間変数を並列に1クロックサイクル記憶し、次のクロックサイクルにおいて、記憶している前記P個の第1中間変数を次段のレジスタに並列に転送する
請求項19に記載の回路情報。
The buffer unit includes a Pr two- stage register functioning as a shift register,
The Pr 2- stage registers are associated one-to-one with the Pr 2 sub-matrix multiplication units,
Each of the P r two- stage registers stores P c (P c is a divisor of N) first intermediate variables in parallel for one clock cycle, and in the next clock cycle, the stored P c 20. The circuit information according to claim 19 , wherein the first intermediate variables are transferred in parallel to the next-stage register.
前記Pr2個のサブ行列乗算部のそれぞれは、対応するサブ行列に含まれるPr1個の行に一対一で対応付けられたPr1個の乗累算部を含み、
前記Pr1個の乗累算部のそれぞれは、
前記Pr2段のレジスタのうちの対応するレジスタに順次に記憶される、前記第1中間ストリームの先頭から末尾までのN個の前記第1中間変数を、クロックサイクル毎に取得し、
取得したそれぞれの第1変数と、前記係数行列における対応する行に含まれる、前記取得した第1中間変数に対応する列の係数とを乗算し、
前記第1中間変数と前記係数との乗算結果を、前記第1中間ストリームの先頭の前記第1中間変数から末尾の第1中間変数まで累積加算することにより、
対応するサブブロックに含まれる対応する位置の第2中間変数を算出する
請求項20に記載の回路情報。
each of the Pr2 sub-matrix multiplication units includes Pr1 multiply-accumulate units that are associated one-to-one with the Pr1 rows included in the corresponding sub-matrix;
Each of the Pr1 multiply-accumulate units:
acquiring N first intermediate variables from the beginning to the end of the first intermediate stream sequentially stored in corresponding registers of the Pr two-stage registers for each clock cycle;
multiplying each obtained first variable by the coefficient of the column corresponding to the obtained first intermediate variable contained in the corresponding row in the coefficient matrix;
By cumulatively adding the multiplication result of the first intermediate variable and the coefficient from the first intermediate variable at the beginning of the first intermediate stream to the first intermediate variable at the end,
21. The circuit information according to claim 20 , wherein a second intermediate variable for a corresponding position included in a corresponding sub-block is calculated.
前記Pr2個のサブ行列乗算部のそれぞれは、対応するサブブロックに含まれる前記Pr1個の第2中間変数を1クロックサイクルで並列に出力し、且つ、他のサブ行列乗算部とは異なるクロックサイクルにおいて前記Pr1個の第2中間変数を出力する
請求項19から21の何れか1項に記載の回路情報。
Each of the Pr2 sub-matrix multiplication units outputs the Pr1 second intermediate variables included in the corresponding sub-block in parallel in one clock cycle, and is different from the other sub-matrix multiplication units. 22. Circuit information according to any one of claims 19 to 21 , wherein said P r1 second intermediate variables are output in a clock cycle.
前記Pr3個の分割行列乗算部のそれぞれは、前記Pr2個のサブ行列乗算部のそれぞれから出力された前記Pr1個の第2中間変数を多重化することにより、1クロックサイクルにPr1個の第2中間変数を含む前記第2中間ストリームを生成する多重化部をさらに含む
請求項22に記載の回路情報。
Each of the Pr3 split matrix multipliers multiplexes the Pr1 second intermediate variables output from each of the Pr2 sub-matrix multipliers, thereby performing Pr1 in one clock cycle. 23. The circuit information according to claim 22 , further comprising a multiplexing unit for generating said second intermediate stream containing second intermediate variables.
前記Pr3個の分割行列乗算部のそれぞれは、前記バッファ部に記憶された前記第1中間ストリームに基づき、対応するブロックに含まれる(N/Pr3)個の第2中間変数を算出する実行部をさらに含み、
前記実行部は、
対応するブロックに含まれる(N/Pr3)個の第2中間変数を、1クロックサイクルにPr1個(Pr1は、Nの約数)の第2中間変数を含む前記第2中間ストリームとして出力し、且つ、他の分割行列乗算部とは異なるクロックサイクルにおいて前記第2中間ストリームを出力する
請求項19から23の何れか1項に記載の回路情報。
Each of the P r3 split matrix multiplication units calculates (N/P r3 ) second intermediate variables included in the corresponding block based on the first intermediate stream stored in the buffer unit. further comprising
The execution unit
(N/P r3 ) second intermediate variables included in the corresponding block as the second intermediate stream including P r1 (P r1 is a divisor of N) second intermediate variables in one clock cycle 24. Circuit information according to any one of claims 19 to 23 , outputting and outputting the second intermediate stream in a different clock cycle than other split matrix multipliers.
前記Pr3個の分割行列乗算部のそれぞれは、セレクタを含み、
先頭の分割行列乗算部の前記セレクタは、
前記先頭の分割行列乗算部の前記実行部が前記第2中間ストリームを出力したクロックサイクルにおいて、前記先頭の分割行列乗算部の前記実行部が出力した前記第2中間ストリームを選択して出力し、
先頭を除いた前記k番目の分割行列乗算部の前記セレクタは、
前記k番目の分割行列乗算部の前記実行部が前記第2中間ストリームを出力したクロックサイクルにおいて、前記k番目の分割行列乗算部の前記実行部が出力した前記第2中間ストリームを選択して出力し、
前記k番目の分割行列乗算部の前記実行部が前記第2中間ストリームを出力していないクロックサイクルにおいて、前段の分割行列乗算部の前記セレクタが出力した前記第2中間ストリームを選択して出力する
請求項24に記載の回路情報。
each of the Pr3 split matrix multipliers includes a selector;
The selector of the leading split matrix multiplication unit,
selecting and outputting the second intermediate stream output by the execution unit of the top split matrix multiplication unit in the clock cycle in which the execution unit of the top split matrix multiplication unit outputs the second intermediate stream;
The selector of the k-th split matrix multiplication unit excluding the head,
selecting and outputting the second intermediate stream output by the execution unit of the k-th partitioned matrix multiplication unit in a clock cycle in which the execution unit of the k-th partitioned matrix multiplication unit outputs the second intermediate stream; death,
selecting and outputting the second intermediate stream output by the selector of the preceding divided matrix multiplication unit in a clock cycle in which the execution unit of the k-th divided matrix multiplication unit does not output the second intermediate stream. Circuit information according to claim 24 .
前記時間発展部は、1クロックサイクルに含まれるPr1個の第2中間変数に対して、前記N個の第1変数の算出処理を、Pr1の並列度で実行する
請求項24または25に記載の回路情報。
26. The time evolution unit according to claim 24 or 25 , for Pr1 second intermediate variables included in one clock cycle, performs the calculation process of the N first variables with a degree of parallelism of Pr1 . Circuit information listed.
イジングモデルを用いた最適化問題を解く計算装置であって、A computing device that solves an optimization problem using an Ising model,
第1変数メモリと、a first variable memory;
第2変数メモリと、a second variable memory;
第1時刻におけるN個(Nは2以上の整数)の第1中間変数と、予め設定されたN行×N列の係数を含む係数行列とを行列乗算することにより、前記第1時刻におけるN個の第2中間変数を算出する行列乗算部と、N (N is an integer of 2 or more) first intermediate variables at a first time and a coefficient matrix containing preset N rows×N columns of coefficients are multiplied by a matrix to obtain N at the first time a matrix multiplication unit that calculates second intermediate variables;
前記第1時刻における前記N個の第2中間変数に基づき、前記第1時刻から1サンプリング期間後の第2時刻におけるN個の第1変数および前記第2時刻におけるN個の第2変数を算出し、前記第2時刻におけるN個の第1変数を前記第1変数メモリに書き込み、前記第2時刻におけるN個の第2変数を前記第2変数メモリに書き込む時間発展部と、Calculate N first variables at a second time after one sampling period from the first time and N second variables at the second time based on the N second intermediate variables at the first time a time evolution unit that writes N first variables at the second time to the first variable memory and writes N second variables at the second time to the second variable memory;
開始時刻からサンプリング期間毎で時刻を増加させ、それぞれの時刻に対する処理を前記行列乗算部および前記時間発展部に実行させる管理部と、a management unit that increments the time for each sampling period from the start time and causes the matrix multiplication unit and the time evolution unit to execute processing for each time;
予め設定された終了時刻におけるN個の第1変数を出力する出力部と、an output unit that outputs N first variables at a preset end time;
を備え、with
前記N個の第1変数は、前記イジングモデルにおけるN個のスピンに対応し、The N first variables correspond to N spins in the Ising model,
前記N個の第2変数は、前記N個のスピンに対応し、The N second variables correspond to the N spins,
前記N個のスピンは、N個の点に対応し、the N spins correspond to N points;
前記N個の第1変数のそれぞれは、前記N個の点のうちの対応するスピンに対応する点の位置を表し、each of the N first variables represents the position of a point corresponding to a corresponding spin among the N points;
前記N個の第2変数のそれぞれは、前記N個の点のうちの対応するスピンに対応する点の運動量を表し、each of the N second variables represents the momentum of a point corresponding to the corresponding spin among the N points;
前記N個の第1中間変数は、前記N個の第1変数に対応し、前記N個の第1中間変数のそれぞれは、前記N個の第1変数のうちの対応する第1変数または前記対応する第1変数に予め設定された係数を乗じた値であり、The N first intermediate variables correspond to the N first variables, and each of the N first intermediate variables is a corresponding first variable of the N first variables or the A value obtained by multiplying the corresponding first variable by a preset coefficient,
前記N個の第2中間変数は、前記N個の第2変数に対応するThe N second intermediate variables correspond to the N second variables
計算装置。computing device.
情報処理装置によりイジングモデルを用いた最適化問題を解く計算方法であって、A calculation method for solving an optimization problem using an Ising model by an information processing device,
前記情報処理装置は、The information processing device is
第1変数メモリと、a first variable memory;
第2変数メモリと、a second variable memory;
を備え、with
前記情報処理装置の行列乗算部が、第1時刻におけるN個(Nは2以上の整数)の第1中間変数と、予め設定されたN行×N列の係数を含む係数行列とを行列乗算することにより、前記第1時刻におけるN個の第2中間変数を算出し、A matrix multiplication unit of the information processing device performs matrix multiplication of N first intermediate variables (N is an integer equal to or greater than 2) at a first time and a coefficient matrix containing preset N rows×N columns of coefficients. to calculate N second intermediate variables at the first time,
前記情報処理装置の時間発展部が、前記第1時刻における前記N個の第2中間変数に基づき、前記第1時刻から1サンプリング期間後の第2時刻におけるN個の第1変数および前記第2時刻におけるN個の第2変数を算出し、前記第2時刻におけるN個の第1変数を前記第1変数メモリに書き込み、前記第2時刻におけるN個の第2変数を前記第2変数メモリに書き込み、The time evolution unit of the information processing device generates the N first variables and the second calculating N second variables at the time, writing the N first variables at the second time to the first variable memory, and writing the N second variables at the second time to the second variable memory write in,
前記情報処理装置の管理部が、開始時刻からサンプリング期間毎で時刻を増加させ、それぞれの時刻に対する処理を前記行列乗算部および前記時間発展部に実行させ、The management unit of the information processing device increases the time for each sampling period from the start time, and causes the matrix multiplication unit and the time evolution unit to perform processing for each time,
前記情報処理装置の出力部が、予め設定された終了時刻におけるN個の第1変数を出力し、The output unit of the information processing device outputs N first variables at a preset end time,
前記N個の第1変数は、前記イジングモデルにおけるN個のスピンに対応し、The N first variables correspond to N spins in the Ising model,
前記N個の第2変数は、前記N個のスピンに対応し、The N second variables correspond to the N spins,
前記N個のスピンは、N個の点に対応し、the N spins correspond to N points;
前記N個の第1変数のそれぞれは、前記N個の点のうちの対応するスピンに対応する点の位置を表し、each of the N first variables represents the position of a point corresponding to a corresponding spin among the N points;
前記N個の第2変数のそれぞれは、前記N個の点のうちの対応するスピンに対応する点の運動量を表し、each of the N second variables represents the momentum of a point corresponding to the corresponding spin among the N points;
前記N個の第1中間変数は、前記N個の第1変数に対応し、前記N個の第1中間変数のそれぞれは、前記N個の第1変数のうちの対応する第1変数または前記対応する第1変数に予め設定された係数を乗じた値であり、The N first intermediate variables correspond to the N first variables, and each of the N first intermediate variables is a corresponding first variable of the N first variables or the A value obtained by multiplying the corresponding first variable by a preset coefficient,
前記N個の第2中間変数は、前記N個の第2変数に対応するThe N second intermediate variables correspond to the N second variables
計算方法。Method of calculation.
情報処理装置を、イジングモデルを用いた最適化問題を解く計算装置として機能させるためのプログラムであって、A program for causing an information processing device to function as a computing device that solves an optimization problem using an Ising model,
前記情報処理装置は、The information processing device is
第1変数メモリと、a first variable memory;
第2変数メモリと、a second variable memory;
を備え、with
前記情報処理装置を、the information processing device,
第1時刻におけるN個(Nは2以上の整数)の第1中間変数と、予め設定されたN行×N列の係数を含む係数行列とを行列乗算することにより、前記第1時刻におけるN個の第2中間変数を算出する行列乗算部と、N (N is an integer of 2 or more) first intermediate variables at a first time and a coefficient matrix containing preset N rows×N columns of coefficients are multiplied by a matrix to obtain N at the first time a matrix multiplication unit that calculates second intermediate variables;
前記第1時刻における前記N個の第2中間変数に基づき、前記第1時刻から1サンプリング期間後の第2時刻におけるN個の第1変数および前記第2時刻におけるN個の第2変数を算出し、前記第2時刻におけるN個の第1変数を前記第1変数メモリに書き込み、前記第2時刻におけるN個の第2変数を前記第2変数メモリに書き込む時間発展部と、Calculate N first variables at a second time after one sampling period from the first time and N second variables at the second time based on the N second intermediate variables at the first time a time evolution unit that writes N first variables at the second time to the first variable memory and writes N second variables at the second time to the second variable memory;
開始時刻からサンプリング期間毎で時刻を増加させ、それぞれの時刻に対する処理を前記行列乗算部および前記時間発展部に実行させる管理部と、a management unit that increments the time for each sampling period from the start time and causes the matrix multiplication unit and the time evolution unit to execute processing for each time;
予め設定された終了時刻におけるN個の第1変数を出力する出力部と、an output unit that outputs N first variables at a preset end time;
して機能させ、to make it work,
前記N個の第1変数は、前記イジングモデルにおけるN個のスピンに対応し、The N first variables correspond to N spins in the Ising model,
前記N個の第2変数は、前記N個のスピンに対応し、The N second variables correspond to the N spins,
前記N個のスピンは、N個の点に対応し、the N spins correspond to N points;
前記N個の第1変数のそれぞれは、前記N個の点のうちの対応するスピンに対応する点の位置を表し、each of the N first variables represents the position of a point corresponding to a corresponding spin among the N points;
前記N個の第2変数のそれぞれは、前記N個の点のうちの対応するスピンに対応する点の運動量を表し、each of the N second variables represents the momentum of a point corresponding to the corresponding spin among the N points;
前記N個の第1中間変数は、前記N個の第1変数に対応し、前記N個の第1中間変数のそれぞれは、前記N個の第1変数のうちの対応する第1変数または前記対応する第1変数に予め設定された係数を乗じた値であり、The N first intermediate variables correspond to the N first variables, and each of the N first intermediate variables is a corresponding first variable of the N first variables or the A value obtained by multiplying the corresponding first variable by a preset coefficient,
前記N個の第2中間変数は、前記N個の第2変数に対応するThe N second intermediate variables correspond to the N second variables
プログラム。program.
JP2023014423A 2018-09-18 2023-02-02 Circuit information, computing device, computing method and program Active JP7322308B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2023014423A JP7322308B2 (en) 2018-09-18 2023-02-02 Circuit information, computing device, computing method and program
JP2023121420A JP7551863B2 (en) 2018-09-18 2023-07-26 Circuit information, calculation method and program

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2018174270A JP6964056B2 (en) 2018-09-18 2018-09-18 Arithmetic logic unit
JP2021169023A JP7273922B2 (en) 2018-09-18 2021-10-14 computing device
JP2023014423A JP7322308B2 (en) 2018-09-18 2023-02-02 Circuit information, computing device, computing method and program

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2021169023A Division JP7273922B2 (en) 2018-09-18 2021-10-14 computing device

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2023121420A Division JP7551863B2 (en) 2018-09-18 2023-07-26 Circuit information, calculation method and program

Publications (2)

Publication Number Publication Date
JP2023052843A JP2023052843A (en) 2023-04-12
JP7322308B2 true JP7322308B2 (en) 2023-08-07

Family

ID=87761008

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2023014423A Active JP7322308B2 (en) 2018-09-18 2023-02-02 Circuit information, computing device, computing method and program
JP2023121420A Active JP7551863B2 (en) 2018-09-18 2023-07-26 Circuit information, calculation method and program

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2023121420A Active JP7551863B2 (en) 2018-09-18 2023-07-26 Circuit information, calculation method and program

Country Status (1)

Country Link
JP (2) JP7322308B2 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005115497A (en) 2003-10-03 2005-04-28 Nec Corp Computing machine and method for repetitively finding solution to simultaneous linear equation
US20150127310A1 (en) 2013-11-01 2015-05-07 University Of East Anglia Optimization system and method
JP2017073106A (en) 2015-10-07 2017-04-13 株式会社東芝 Quantum computing device and method
JP2020046887A (en) 2018-09-18 2020-03-26 株式会社東芝 Computer

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018174270A (en) * 2017-03-31 2018-11-08 日立化成株式会社 Composition for passivation layer formation, passivation layer-attached semiconductor substrate, method for manufacturing passivation layer-attached semiconductor substrate, solar battery element, method for manufacturing solar battery element, and solar battery

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005115497A (en) 2003-10-03 2005-04-28 Nec Corp Computing machine and method for repetitively finding solution to simultaneous linear equation
US20150127310A1 (en) 2013-11-01 2015-05-07 University Of East Anglia Optimization system and method
JP2017073106A (en) 2015-10-07 2017-04-13 株式会社東芝 Quantum computing device and method
JP2020046887A (en) 2018-09-18 2020-03-26 株式会社東芝 Computer

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
佐伯 美枝 他,2値量子化された熱層上で決定論的に発展する動的イジングモデル,電子情報通信学会技術研究報告,社団法人電子情報通信学会,2005年06月16日,第105巻 第125号,第7頁-第12頁

Also Published As

Publication number Publication date
JP2023052843A (en) 2023-04-12
JP7551863B2 (en) 2024-09-17
JP2023156349A (en) 2023-10-24

Similar Documents

Publication Publication Date Title
JP7273922B2 (en) computing device
JP7175548B2 (en) Systems and Methods for Massively Parallel Neural Inference Computing
US10698657B2 (en) Hardware accelerator for compressed RNN on FPGA
CN108139889B (en) Generation of pseudo-random number sequences by non-linear mixing of a plurality of auxiliary pseudo-random number generators
CN107704916A (en) A kind of hardware accelerator and method that RNN neutral nets are realized based on FPGA
EP3803636B1 (en) Ntt processor including a plurality of memory banks
CN115310037B (en) Matrix multiplication computing device, acceleration device, computing system and related method
JP7532323B2 (en) Computing Equipment
CN109284475A (en) A matrix convolution calculation module and matrix convolution calculation method
JP7322308B2 (en) Circuit information, computing device, computing method and program
WO2020012104A1 (en) Twiddle factor generating circuit for an ntt processor
KR102856047B1 (en) Dual momentum gradient optimization with reduced memory requirements
US10713332B2 (en) Hardware accelerated linear system solver
US20250348278A1 (en) Hardware accelerator with matrix block streaming
KR100552694B1 (en) Method and apparatus for multiplication in finite sieve
CN116402905A (en) A high-performance image data compression system and method based on FPGA
US12130886B1 (en) Tensor automatic differentiation
CN112712168A (en) Method and system for realizing high-efficiency calculation of neural network
Ghosh et al. FPGA implementation of MAC unit for double base ternary number system (DBTNS) and its performance analysis
CN109558638A (en) Fft processor
US20250291876A1 (en) Accelerator and operation method using the same
RU2190874C2 (en) Arithmetic device for calculating fast fourier transformation
Sriram et al. A high throughput area time efficient pseudo uniform random number generator based on the TT800 algorithm
KR20250177302A (en) Method for quantizing a neural network model fine-tuned for performing multi-tasking and apparatus performing the same
KR940007569B1 (en) Matrix multiplication circuit

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230202

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20230202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230418

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230614

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230627

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230726

R151 Written notification of patent or utility model registration

Ref document number: 7322308

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151