JP7322308B2 - Circuit information, computing device, computing method and program - Google Patents
Circuit information, computing device, computing method and program Download PDFInfo
- 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
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.
発明が解決しようとする課題は、簡易な構成で最適化問題を解くことである。 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.
以下、図面を参照しながら実施形態に係る計算装置10について詳細に説明する。実施形態に係る計算装置10は、イジングモデルを用いた最適化問題を解くことを目的とする。
Hereinafter, the
(前提)
まず、計算装置10において実行される処理の前提について説明する。
(Premise)
First, the premise of the processing executed in the
イジングモデルのエネルギーEIsingは、下記の式(1)により表される。
式(1)において、Nはスピンの数を表す。siは、i番目のスピンの状態を表す。例えば、si=±1である。sjは、j番目のスピンの状態を表す。例えば、sj=±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は、例えば実対称行列である。実対称行列は、対角成分(対角要素)が全てゼロである行列である。hiは、N個の係数配列に含まれるi番目の係数である。hiは、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).
式(2)、式(3)および式(4)において、Nは、質点の数を表し、2以上の整数である。Nは、スピンの数に対応する。xiは、i番目の質点の位置を表す実数である。yiは、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は、例えば実対称行列である。hiは、予め定められたN個の係数配列に含まれるi番目の係数である。式(2)、式(3)および式(4)において、hiの項は、無くてもよい。 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)により表される。
古典分岐マシンは、tをゼロから十分大きな値へ微小時間ずつ増加させて、t毎に、式(2)および式(3)を用いてxiおよびyiを更新する。そして、古典分岐マシンは、tを十分に大きくした場合のxiの最終値の符号(±1)を、siの最適解として出力する。このように、古典分岐マシンは、イジングモデルを、式(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を用いた行列乗算を、xiおよびyiの両者の算出のために、実行しなければならなかった。また、古典分岐マシンは、式(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
式(6)、式(7)および式(8)において、N、xi、yi、i、j、Ji,j、hi、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)を用いてxiおよびyiを更新する。そして、実施形態に係る計算装置10は、tを十分に大きくした場合のxiの最終値の符号(±1)を、siの最適解として出力する。このように、実施形態に係る計算装置10は、イジング問題を、式(8)のHをハミルトニアンとしたハミルトン力学系の時間発展をシミュレートすることで解く。
The
式(6)、式(7)および式(8)において、最も計算量が大きい係数行列Jに対する行列乗算は、式(7)には含まれるが、式(6)には含まれない。従って、実施形態に係る計算装置10は、最も計算量が大きい係数行列Jに対する行列乗算を、yiの更新のためにのみ実行すればよく、xiの更新のためには実行しなくてよい。また、xiの時間微分値(dxi/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
また、xiの時間微分値(dxi/dt)を算出するための式(6)は、yiを含むが、xiを含まない。また、yiの時間微分値(dyi/dt)を算出するための式(7)は、xiを含むが、yiを含まない。 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)を用いる場合、ハミルトニアンにおいて、xiとyiとは、互いに分離されている。従って、実施形態に係る計算装置10は、計算量が小さく安定な離散解法を適用して、xiおよびyiを更新することが可能となる。例えば、実施形態に係る計算装置10は、シンプレクティック・オイラー法等を適用して、xiおよびyiを更新する。従って、実施形態に係る計算装置10は、簡易な演算および簡易な構成で、イジングモデルを用いた最適化問題の最適解を算出することができる。
That is, when using equations (6) and (7), x i and y i are separated from each other in the Hamiltonian. Therefore, the
また、実施形態に係る計算装置10は、下記の式(9)および式(10)に示す新規な連立常微分方程式で表された運動方程式を用いて、式(1)の最適解を算出してもよい。
Further, the
式(9)および式(10)において、N、xi、yi、i、j、Ji,j、hi、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)を用いてxiおよびyiを更新する。そして、実施形態に係る計算装置10は、tを十分に大きくした場合のxiの最終値の符号(±1)を、siの最適解として出力する。
In this case, the
ここで、最も計算量が大きい係数行列Jに対する行列乗算は、式(9)に含まれ、式(10)には含まれない。従って、式(9)および式(10)を用いる場合も、実施形態に係る計算装置10は、最も計算量が大きい係数行列Jに対する行列乗算を、yiの更新のためにのみ実行すればよく、xiの更新のためには実行しなくてよい。また、xiの時間微分値(dxi/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
また、xiの時間微分値(dxi/dt)を算出するための式(9)は、yiを含むが、xiを含まない。また、yiの時間微分値(dyi/dt)を算出するための式(10)は、xiを含むが、yiを含まない。 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)を用いる場合も、ハミルトニアンにおいて、xiとyiとは、互いに分離されている。従って、式(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
(第1実施形態)
第1実施形態に係る計算装置10について説明する。なお、各実施形態の説明において、それまでに説明した装置、ブロックまたは回路等と、略同一の機能および構成を有する装置、ブロックまたは回路には同一の符号を付けて、相違点を除き詳細な説明を省略する。
(First embodiment)
A
図1は、第1実施形態に係る計算装置10の構成を示す図である。計算装置10は、式(7)および式(8)に示した連立常微分方程式、または、式(9)および式(10)に示した連立常微分方程式を用いて、イジングモデルを用いた最適化問題を解く装置である。
FIG. 1 is a diagram showing the configuration of a
計算装置10は、演算部20と、入力部22と、出力部24と、設定部26とを備える。
The
演算部20は、例えば1または複数のCPU(Central Processing Unit)等のプロセッサおよびメモリを備える演算処理装置である。また、演算部20は、第2実施形態以降の回路であってもよい。
The
演算部20は、サンプリング時刻を表すパラメータであるtを開始時刻(例えば0)から微小時間(dt)ずつ増加させる。演算部20は、それぞれのサンプリング時刻毎に、式(6)および式(7)に示した連立常微分方程式、または、式(9)および式(10)に示した連立常微分方程式を用いて、N個の第1変数xiおよびN個の第2変数yiを更新する。そして、演算部20は、予め定められたサンプリング時刻である終了時刻TにおけるN個の第1変数xiを出力する。
The
入力部22は、演算部20による演算処理に先だって、開始時刻におけるN個の第1変数xiおよびN個の第2変数yiを取得して、演算部20に与える。開始時刻におけるN個の第1変数xiおよびN個の第2変数yiは、例えば、乱数により発生された値であってもよいし、予め設定された値(例えば、全て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
出力部24は、演算部20による演算処理の終了後に、終了時刻TにおけるN個の第1変数xiを取得する。そして、出力部24は、終了時刻TにおけるN個の第1変数xiの符号を表す値(例えば、+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
設定部26は、演算部20による演算処理に先だって、式(6)および式(7)に示した連立常微分方程式、および、式(9)および式(10)に示した連立常微分方程式に用いられる各パラメータを演算部20に対して設定する。より具体的には、設定部26は、N、J、h、D、c、K、p(t)およびa(t)を設定する。
Before the arithmetic processing by the
Nは、第1変数および第2変数の数を表す2以上の整数である。
Jは、N行×N列の係数行列である。Ji,jは、係数行列Jに含まれるi行、j列の係数である。
hは、N個の係数を含む係数配列である。hiは、係数配列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
まず、S11において、演算部20は、t、pおよびaを初期化する。例えば、演算部20は、t、pおよびaを全て0にする。tは、サンプリング時刻を表すパラメータである。pは、時刻tにおけるp(t)の値を表すパラメータである。aは、時刻tにおけるa(t)の値を表すパラメータである。
First, in S11, the
続いて、演算部20は、tが予め設定された終了時刻T以上となるまでS13からS20までの処理を繰り返す(S12とS21との間のループ処理)。なお、a(t)が増加関数である場合、演算部20は、aが予め定められた値以上となるまで、S13からS20までの間の処理を繰り返してもよい。
Subsequently, the
S13において、演算部20は、N個の第1変数xiのそれぞれに、サンプリング期間(微小時間)dtと、予め設定された係数cとを乗じることにより、N個の第1中間変数xi´を算出する。すなわち、S13において、演算部20は、下記の式(21)の演算を実行する。
xi´=dt×c×xi…(21)
In S13, the
x i ′=dt×c×x i (21)
続いて、S14において、演算部20は、N個の第1中間変数xi´と、予め設定されたN行×N列の係数を含む係数行列Jとを行列乗算することにより、N個の第2中間変数biを算出する。すなわち、S14において、演算部20は、下記の式(22)の演算を実行する。
なお、演算部20は、S14の処理を実行した後、S13の処理を実行してもよい。この場合、S14において、演算部20は、N個の第1変数xiと係数行列Jとを行列乗算することにより、N個の値を算出する。続いて、S13において、演算部20は、S14で算出したN個の値のそれぞれに、(dt×c)を乗じることにより、N個の第2中間変数biを算出する。
Note that the
続いて、S15において、演算部20は、N個の第2変数yiのそれぞれに、対応する第2中間変数biを加算することにより、N個の第2変数yiを更新する。すなわち、S15において、演算部20は、下記の式(23)の演算を実行する。
yi+=bi…(23)
Subsequently, in S15, the
y i +=b i (23)
続いて、演算部20は、S17からS18までの処理を、M回繰り返して実行する(S16とS19との間のループ処理)。なお、Mは、1以上の整数である。
Subsequently, the
S17において、演算部20は、式(7)または式(10)に従った演算を実行することにより、第2変数yiを更新する。例えば、S17において、演算部20は、式(7)に従った演算を実行する場合、下記の式(24)の演算を実行する。
yi+=dt´×[(-D+p-Kxi
2)xi-c×hi×a]…(24)
In S17, the
y i +=dt′×[(−D+p−Kx i 2 )x i −c×h i ×a] (24)
また、例えば、S17において、演算部20は、式(10)に従った演算を実行する場合、下記の式(25)の演算を実行する。なお、式(25)において、nは、2以上の偶数である。
yi+=dt´×{[(-D+p)(1+xi
n)-Kxi
n+2]xi-c×hi×a}…(25)
Further, for example, in S17, the
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変数xiを更新する。なお、式(6)および式(9)は、同一の式である。例えば、S18において、演算部20は、式(6)または式(9)に従った演算を実行する場合、下記の式(26)の演算を実行する。
xi+=dt´×D×yi…(26)
Subsequently, in S18, the
x i +=dt′×D×y i (26)
S16からS19までのループ処理は、シンプレクティック・オイラー法における繰り返し演算に対応する。なお、演算部20は、S17の処理とS18の処理を逆に実行してもよい。すなわち、演算部20は、第1変数xiを更新した後に、第2変数yiを更新してもよい。
The loop processing from S16 to S19 corresponds to repeated calculations in the symplectic Euler method. Note that the
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
S20の処理を実行した後、演算部20は、tがT以上となったか否かを判断する。演算部20は、tがTより小さい場合には、処理をS13に戻して、S13から処理を繰り返す。tがT以上となった場合には、演算部20は、本フローを終了する。
After executing the process of S20, the
以上のような処理を実行することにより、第1実施形態に係る計算装置10は、式(6)および式(7)に示す連立常微分方程式、または、式(9)および式(10)に示す連立常微分方程式を用いて、最適化問題を解くことができる。第1実施形態に係る計算装置10によれば、第1変数xiおよび第2変数yiを簡単な演算または簡単な構成で、高速に更新することができる。従って、第1実施形態に係る計算装置10によれば、小さいコストで、高速に最適化問題の最適解を算出することができる。
By executing the processing as described above, the
(第2実施形態)
第2実施形態に係る計算装置10について説明する。
(Second embodiment)
A
図3は、第2実施形態に係る演算部20の構成を示す図である。第2実施形態において、計算装置10は、1または複数の半導体装置により実現された回路である。計算装置10は、例えば、FPGA(Field Programmable Gate Array)、ゲートアレイまたは特定用途向け集積回路(ASIC)等であってもよい。また、計算装置10は、一部にプロセッサを含んでもよい。
FIG. 3 is a diagram showing the configuration of the
第2実施形態に係る演算部20は、行列乗算部28と、時間発展部30と、管理部32とを備える。
The
行列乗算部28は、任意のサンプリング時刻を表す第1時刻t1におけるN個の第1中間変数xi´(t1)を時間発展部30から取得する。行列乗算部28は、第1時刻t1におけるN個の第1中間変数xi´(t1)と、係数行列Jとを行列乗算することにより、第1時刻t1におけるN個の第2中間変数bi(t1)を算出する。
The
例えば、行列乗算部28は、係数行列メモリ36と、行列乗算実行部38とを有する。係数行列メモリ36は、係数行列Jを記憶する。行列乗算実行部38は、第1時刻t1におけるN個の第1中間変数xi´(t1)と、係数行列Jとを行列乗算する。
For example, the
時間発展部30は、第1時刻t1におけるN個の第2中間変数bi(t1)を行列乗算部28から取得する。時間発展部30は、第1時刻t1におけるN個の第2中間変数bi(t1)に基づき、第1時刻t1から1サンプリング期間後のサンプリング時刻を表す第2時刻t2におけるN個の第1変数xi(t2)、第2時刻t2におけるN個の第2変数yi(t2)および第2時刻t2におけるN個の第1中間変数xi´(t2)を算出する。
The
管理部32は、開始時刻からサンプリング期間毎にサンプリング時刻を増加させる。そして、管理部32は、それぞれのサンプリング時刻に対する処理を、行列乗算部28および時間発展部30に実行させる。
The
すなわち、管理部32は、例えば、行列乗算部28に、第1時刻t1におけるN個の第2中間変数bi(t1)を算出させる。続いて、管理部32は、時間発展部30に、第2時刻t2におけるN個の第1変数xi(t2)、N個の第2変数yi(t2)およびN個の第1中間変数xi´(t2)を算出させる。続いて、管理部32は、行列乗算部28に、第2時刻t2におけるN個の第2中間変数bi(t2)を算出させる。続いて、管理部32は、時間発展部30に、第2時刻t2から1サンプリング期間後のサンプリング時刻を表す第3時刻t3におけるN個の第1変数xi(t3)、N個の第2変数yi(t3)およびN個の第1中間変数xi´(t3)を算出させる。このように、管理部32は、サンプリング時刻を増加させながら、行列乗算部28および時間発展部30に交互に処理を実行させる。
That is, the
なお、開始時刻(例えば、t0)におけるN個の第1変数xi(t0)およびN個の第2変数yi(t0)は、例えば、演算処理に先だって、入力部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
第1変数メモリ40は、第1時刻t1におけるN個の第1変数xi(t1)を記憶する。第2変数メモリ42は、第1時刻t1におけるN個の第2変数yi(t1)を記憶する。
The first
第1加算部44は、行列乗算部28が算出した第1時刻t1におけるN個の第2中間変数bi(t1)を取得する。第1加算部44は、第2変数メモリ42に記憶された第1時刻t1におけるN個の第2変数yi(t1)に、第1時刻t1におけるN個の第2中間変数bi(t1)を加算することにより、第1時刻t1におけるN個の第2変数yi(t1)を更新する。例えば、第1加算部44は、先頭のインデックス(i=0)の第2変数y0(t1)から、最後のインデックス(i=N-1)の第2変数yN-1(t1)まで、インデックス順に、N個の第2変数yi(t1)を更新する。
The
なお、実施形態において、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時刻t1におけるN個の第1変数xi(t1)、および、第1加算部44が算出した第1時刻t1における更新されたN個の第2変数yi(t1)に基づき、第2時刻t2におけるN個の第1変数xi(t2)および第2時刻t2におけるN個の第2変数yi(t2)を算出する。例えば、関数演算部46は、先頭のインデックス(i=0)の第1変数x0(t2)および第2変数y0(t2)から、最後のインデックス(i=N-1)の第1変数xN-1(t2)および第2変数yN-1(t2)まで、インデックス順に、N個の第1変数xi(t2)およびN個の第2変数yi(t2)を算出する。
The
関数演算部46は、第2時刻t2におけるN個の第1変数xi(t2)を第1変数メモリ40に書き込む。例えば、関数演算部46は、第2時刻t2におけるN個の第1変数xi(t2)のそれぞれを、先頭のインデックス(i=0)の第1変数x0(t2)から順次に第1変数メモリ40に書き込む。第1変数メモリ40は、例えば、デュアルポートメモリであり、あるアドレスのデータの読み出しをしながら、他のアドレスにデータを書き込むことができる。第1変数メモリ40がデュアルポートメモリである場合、関数演算部46は、第2時刻t2におけるN個の第1変数xi(t2)を、第1時刻t1におけるN個の第1変数xi(t1)が記憶されていたアドレスに上書きすることができる。
The
関数演算部46は、第2時刻t2におけるN個の第2変数yi(t2)を第2変数メモリ42に書き込む。例えば、関数演算部46は、第2時刻t2におけるN個の第2変数yi(t2)のそれぞれを、先頭のインデックスの第2変数y0(t2)から順次に第2変数メモリ42に書き込む。第2変数メモリ42は、例えば、デュアルポートメモリである。第2変数メモリ42がデュアルポートメモリである場合、関数演算部46は、第2時刻t2におけるN個の第2変数yi(t2)を、第1時刻t1におけるN個の第2変数yi(t1)が記憶されていたアドレスに上書きすることができる。
The
第1乗算部48は、第2時刻t2におけるN個の第1変数xi(t2)のそれぞれに、予め設定された値(本実施形態においては、(dt×c))を乗じることにより、第2時刻t2におけるN個の第1中間変数xi
´(t2)を算出する。第1中間変数メモリ50は、第1乗算部48が算出した第2時刻t2におけるN個の第1中間変数xi´(t2)を記憶する。なお、第2時刻t2におけるN個の第1中間変数xi´(t2)は、第1中間変数メモリ50に一時的に記憶された後に、行列乗算部28に送信される。第1中間変数メモリ50は、第2時刻t2におけるN個の第1中間変数xi´(t2)のそれぞれを、第1乗算部48により生成されてから、行列乗算部28へと送信されるまでの期間保持する。第1中間変数メモリ50は、例えば、FIFO(First IN First Out)メモリを含んでいてもよい。
The
このような構成において、行列乗算部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
なお、第1乗算部48は、第1中間変数メモリ50の前段に代えて、第1加算部44の前段に設けられてもよい。この配置の変更は、第1実施形態のS13とS14との処理を逆にした処理に対応する。ただし、第2時刻t2におけるN個の第1変数xi(t2)のそれぞれに乗算する値(本実施形態においては(dt×c))が1より小さい場合には、第1乗算部48は、第1中間変数メモリ50の前段に設けられている方がよい。これにより、第1乗算部48は、第2時刻t2におけるN個の第1中間変数xi´(t2)の桁数を小さくして、行列乗算部28でのオーバフローの確率を少なくすることができる。
Note that the
第1乗算部48が第1加算部44の前段に設けられた場合、第1中間変数メモリ50は、第2時刻t2におけるN個の第1変数xi(t2)を、第2時刻t2におけるN個の第1中間変数xi´(t2)として記憶する。また、この場合、第1乗算部48は、行列乗算部28から出力された第1時刻t1におけるN個の第2中間変数bi(t1)のそれぞれに、予め設定された値(dt×c)を乗じる。そして、この場合、第1加算部44は、第1時刻t1におけるN個の第2変数yi(t1)に、第1乗算部48が予め設定された値(dt×c)を乗じた第1時刻t1におけるN個の第2中間変数bi(t1)を加算することにより、第1時刻t1におけるN個の第2変数yi(t1)を更新する。
When the
また、時間発展部30は、第1時刻t1におけるN個の第1中間変数xi´(t1)を、1クロックサイクルに第1数(第1数は1以上の整数)の第1中間変数xi´(t1)を含む第1中間ストリームX´として行列乗算部28へと出力してもよい。また、行列乗算部28は、第1時刻t1におけるN個の第2中間変数bi(t1)を、1クロックサイクルに第2数(第2数は1以上の整数)の第2中間変数bi(t1)を含む第2中間ストリームBとして時間発展部30へと出力してもよい。
Also, the
ここで、ストリームとは、時系列データをいう。より具体的には、ストリームとは、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
図4は、第2実施形態でのN個の第1中間変数xi´、係数行列JおよびN個の第2中間変数biの関係を示す図である。行列乗算部28は、サンプリング時刻毎に、N個の第1中間変数(x0´,x1´,x2´,…,xi´,…,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
そして、行列乗算部28は、N個の第1中間変数(x0´,x1´,x2´,…,xi´,…,xN-1´)と、係数行列(J0,0,J0,1,J0,2,…,Ji,j,…,JN-1,N-1)とを行列乗算することにより、N個の第2中間変数(b0,b1,b2,…,bi,…,bN-1)を算出する。
Then, the
第2実施形態において、行列乗算部28は、どのような処理により行列乗算を実行してもよい。また、第2実施形態において、行列乗算部28は、例えば内部にプロセッサ等を含み、プログラムにより行列乗算を実行してもよい。
In the second embodiment, the
図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
第1のFX演算部51-1は、第1時刻におけるN個の第1変数のそれぞれに対して、第1関数演算(FX(xi))をすることにより、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
第1のFY演算部53-1は、第1のFX加算部52-1が算出したN個の第2更新値のそれぞれに対して第2関数演算(FY(yi))をすることにより、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
また、関数演算部46は、第1のFX加算部52-1が算出したN個の第2更新値を第2変数メモリ42に与える。第2変数メモリ42は、第1のFX加算部52-1が算出したN個の第2更新値を、第2時刻におけるN個の第2変数として記憶する。
Also, the
ここで、第1関数演算は、下記の式(31)の演算である。
FX(xi)=dt´×[(-D+p-Kxi
2)xi-c×hi×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(yi)=dt´×D×yi…(32)
Also, the second function is the calculation of the following equation (32).
FY(y i )=dt′×D×y i (32)
また、第1関数演算は、下記の式(33)の演算であってもよい。
FX(xi)=dt´×{[(-D+p)(1+xi
n)-Kxi
n+2]xi-c×hi×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)において、xiは、第1時刻におけるN個の第1変数のうちのi番目の第1変数、または、N個の第1更新値のうちのi番目の第1更新値である。yiは、第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
dt´は、予め設定された微小時間である。D、c、Kは、予め設定された定数である。hiは、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
さらに、第1例に係る関数演算部46は、パイプライン処理により演算を実現してもよい。パイプライン処理を実行する場合、例えば、関数演算部46は、第1変数XINおよび第2変数YINを含む1つの変数ペアを、クロックサイクル毎にインデックス順に受け取る。そして、関数演算部46は、受け取った変数ペアに対して演算を実行することにより、演算処理後の第1変数XOUTおよび第2変数YOUTを含む1つの変数ペアを算出する。
Furthermore, the
具体的には、パイプライン処理を実行する場合、関数演算部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
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
第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更新値Y1を算出する。 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更新値Y1を取得し、取得した第2更新値Y1を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更新値Y1に対して、第2関数演算を実行することにより、第1微分値を算出する。第1のFY加算部54-1は、クロックサイクル毎に、第1のFY演算部53-1が当該クロックサイクルにおいて算出した第1微分値と、2段目のX転送レジスタ55-2に格納された第1変数XINとを加算することにより、第1更新値X1を算出する。 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更新値X1を取得し、取得した第1更新値X1を第2時刻における1つの第1変数XOUTとして第1変数メモリ40に記憶させる。
For each clock cycle, the
Y出力レジスタ58は、クロックサイクル毎に、第2段目のY転送レジスタ56-2に格納された第2更新値Y1を取得し、取得した第2更新値Y1を第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
このようなパイプライン処理を実行することにより、第1例に係る関数演算部46は、クロックサイクル毎に、下記のような演算を実行することができる。
By executing such pipeline processing, the
Y1=FX(XIN)+YIN
X1=FY(Y1)+XIN
YOUT=Y1
XOUT=X1
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
図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
第1のFY演算部53-1は、第1加算部44が算出した更新されたN個の第2変数のそれぞれに対して第2関数演算(FY(yi))をすることにより、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
第1のFX演算部51-1は、第1のFY加算部54-1が算出したN個の第1更新値のそれぞれに対して、第1関数演算(FX(xi))をすることにより、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
このような第2例の構成の関数演算部46は、第1実施形態におけるS16からS19までのループ処理を、S18→S17の順で、1回実行することができる。これにより、関数演算部46によれば、シンプレクティック・オイラー法と呼ばれる方法を用いて、第1時刻におけるN個の第1変数およびN個の第2変数を時間発展させて、第2時刻におけるN個の第1変数およびN個の第2変数を算出することができる。
The
さらに、第2例に係る関数演算部46は、パイプライン処理により演算を実現してもよい。この場合も、第2例に係る関数演算部46は、第1例と同一の構成要素を有するが、各構成要素の配置が異なる。
Furthermore, the
第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更新値X1を算出する。 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更新値X1を取得し、取得した第1更新値X1を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更新値X1に対して、第1関数演算を実行することにより、第2微分値を算出する。第1のFX加算部52-1は、クロックサイクル毎に、第1のFX演算部51-1が当該クロックサイクルにおいて算出した第1微分値と、2段目のY転送レジスタ56-2に格納された第2変数YINとを加算することにより、第2更新値Y1を算出する。 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
X1=FY(YIN)+XIN
Y1=FX(X1)+YIN
XOUT=X1
YOUT=Y1
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
図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
第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
第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
また、関数演算部46は、第MのFX加算部52-Mが算出したN個の第2更新値を第2変数メモリ42に与える。第2変数メモリ42は、第MのFX加算部52-Mが算出したN個の第2更新値を、第2時刻におけるN個の第2変数として記憶する。
Also, the
このような第3例の構成の関数演算部46は、第1実施形態におけるS16からS19までのループ処理を、S17→S18の順で、M回実行することができる。これにより、関数演算部46によれば、シンプレクティック・オイラー法と呼ばれる方法を用いて、第1時刻におけるN個の第1変数およびN個の第2変数を時間発展させて、第2時刻におけるN個の第1変数およびN個の第2変数を算出することができる。
The
さらに、第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
(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更新値Ymを算出する。 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更新値Ymを取得し、取得した第2更新値Ymを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更新値Ymに対して、第2関数演算を実行することにより、第1微分値を算出する。第mのFY加算部54-mは、クロックサイクル毎に、第mのFY演算部53-mが当該クロックサイクルにおいて算出した第1微分値と、2m段目のX転送レジスタ55-2mに格納された第1更新値Xm-1とを加算することにより、新たな第1更新値Xmを算出する。 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更新値XMを取得し、取得した第1更新値XMを第2時刻における1つの第1変数XOUTとして第1変数メモリ40に記憶させる。
For each clock cycle, the
Y出力レジスタ58は、クロックサイクル毎に、第2M段目のY転送レジスタ56-2Mに格納された第2更新値YMを取得し、取得した第2更新値YMを第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
このようなパイプライン処理を実行することにより、第3例に係る関数演算部46は、クロックサイクル毎に、下記のような演算を実行することができる。
By executing such pipeline processing, the
Y1=FX(XIN)+YIN
X1=FY(Y1)+XIN
…
Ym=FX(Xm-1)+Ym-1
Xm=FY(Ym)+Xm-1
…
YM=FX(XM-1)+YM-1
XM=FY(YM)+XM-1
YOUT=YM
XOUT=XM
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
図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
第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
さらに、第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
(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更新値Xmを算出する。 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更新値Xmを取得し、取得した第1更新値Xmを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更新値Xmに対して、第1関数演算を実行することにより、第2微分値を算出する。第mのFX加算部52-mは、クロックサイクル毎に、第mのFX演算部51-mが当該クロックサイクルにおいて算出した第2微分値と、2m段目のY転送レジスタ56-2mに格納された第2更新値Ym-1とを加算することにより、新たな第2更新値Ymを算出する。 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更新値XMを取得し、取得した第1更新値XMを第2時刻における1つの第1変数XOUTとして第1変数メモリ40に記憶させる。
The
Y出力レジスタ58は、クロックサイクル毎に、第MのFX加算部52-Mが直前のクロックサイクルにおいて算出した第2更新値YMを取得し、取得した第2更新値YMを第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
このようなパイプライン処理を実行することにより、第4例に係る関数演算部46は、クロックサイクル毎に、下記のような演算を実行することができる。
By executing such pipeline processing, the
X1=FY(YIN)+XIN
Y1=FX(X1)+YIN
…
Xm=FY(Ym-1)+Xm-1
Ym=FX(Xm)+Ym-1
…
XM=FY(YM-1)+XM-1
YM=FX(XM)+YM-1
XOUT=XM
YOUT=YM
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
(第3実施形態)
第3実施形態に係る計算装置10について説明する。
(Third embodiment)
A
図9は、第3実施形態でのN個の第1中間変数xi´、係数行列JおよびN個の第2中間変数biの関係を示す図である。 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中間変数biは、Pr3個のブロック(BG0,BG1,…BGk,…,BGPr3-1)に分割される。Pr3個のブロックのそれぞれは、(N/Pr3)個の第2中間変数biを含む。さらに、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中間変数xi´と、Pr3個の分割行列のそれぞれとを別個に行列乗算することにより、Pr3個のブロックを算出する。
In the third embodiment, the
図10は、第3実施形態に係る行列乗算部28の構成を、時間発展部30とともに示す図である。
FIG. 10 is a diagram showing the configuration of the
行列乗算部28は、Pr3個の分割行列に一対一で対応付けられたPr3個の分割行列乗算部60を有する。Pr3個の分割行列乗算部60のそれぞれは、N個の第1中間変数xi´と、対応する分割行列とを行列乗算することにより、対応するブロックに含まれる(N/Pr3)個の第2中間変数biを算出する。
The
Pr3個の分割行列乗算部60は、同一の構成を有する。Pr3個の分割行列乗算部60は、例えば、互いに異なる半導体装置に実装された回路であってよい。
The Pr 3 split
Pr3個の分割行列乗算部60のそれぞれは、N個の第1中間変数xi´をストリーム化した第1中間ストリームX´およびN個の第2中間変数biをストリーム化した第2中間ストリームBを受信する。また、Pr3個の分割行列乗算部60のそれぞれは、第1中間ストリームX´および第2中間ストリームBを送信する。
Each of the Pr3 split
Pr3個の分割行列乗算部60は、直列に接続される。先頭の分割行列乗算部60は、時間発展部30から第1中間ストリームX´を受信する。また、先頭の分割行列乗算部60は、第2中間ストリームBとして、ダミーデータを受信する。なお、ダミーデータは、どのブロックから送信されてもよい。先頭以外の分割行列乗算部60は、直前段の分割行列乗算部60から送信された第1中間ストリームX´および第2中間ストリームBを受信する。
The Pr 3
末尾以外の分割行列乗算部60は、直後段の分割行列乗算部60へ第1中間ストリームX´および第2中間ストリームBを送信する。末尾の分割行列乗算部60は、第2中間ストリームBを時間発展部30へと送信する。末尾の分割行列乗算部60から送信された第1中間ストリームX´は、廃棄される。なお、末尾の分割行列乗算部60から送信された第1中間ストリームX´は、時間発展部30に受信された後、時間発展部30内で廃棄されてもよい。
The
Pr3個の分割行列乗算部60のそれぞれは、バッファ部62と、分割行列メモリ64と、実行部66と、セレクタ68とを有する。
Each of the Pr3 split
先頭の分割行列乗算部60のバッファ部62は、時間発展部30から出力された第1中間ストリームX´を取得し、取得した第1中間ストリームX´を一定時間記憶して出力する。先頭以外の分割行列乗算部60のバッファ部62は、直前段の分割行列乗算部60から出力された第1中間ストリームX´を取得し、取得した第1中間ストリームX´を一定時間記憶して出力する。
The
分割行列メモリ64は、対応する分割行列に含まれる(N/Pr3)行×N列の係数Ji,jを記憶する。実行部66は、バッファ部62に記憶された第1中間ストリームX´および分割行列メモリ64に記憶された分割行列に基づき、対応するブロックに含まれる(N/Pr3)個の第2中間変数biを算出する。
The
ここで、実行部66は、対応するブロックに含まれる(N/Pr3)個の第2中間変数biを、1クロックサイクルにPr1個の第2中間変数biを含む第2中間ストリームBとして出力する。Pr1は、Nの約数である。
Here, the
さらに、実行部66は、他の分割行列乗算部60に含まれる実行部66とは異なるクロックサイクルにおいて、第2中間ストリームBを出力する。従って、第2中間ストリームBは、同一のクロックサイクルに、複数の分割行列乗算部60から出力されることはない。
Furthermore, the
先頭の分割行列乗算部60のセレクタ68は、先頭の分割行列乗算部60の実行部66が第2中間ストリームBを出力したクロックサイクルにおいて、先頭の分割行列乗算部60の実行部66が出力した第2中間ストリームBを選択して出力する。また、先頭の分割行列乗算部60のセレクタ68は、先頭の分割行列乗算部60の実行部66が第2中間ストリームBを出力していないクロックサイクルにおいて、ダミーデータを選択して出力する。
The
また、先頭を除いた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
図11は、第3実施形態に係る行列乗算部28および時間発展部30の実装例を示す図である。
FIG. 11 is a diagram showing an implementation example of the
第3実施形態に係るPr3個の行列乗算部28および時間発展部30は、例えば、それぞれが独立した半導体チップである、(Pr3+1)個のチップ70-1~70-(Pr3+1)に実装することができる。
The P r 3
第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
また、それぞれのチップ70は、受信部74および送信部76を含む。受信部74は、データ受信用のリンクポートである。送信部76は、データ送信用のリンクポートである。受信部74および送信部76は、全二重通信をする送受信部であってもよい。また、それぞれのチップ70は、さらなる通信ポートを含んでもよい。例えば、それぞれのチップ70は、2つの独立な受信用リンクポートおよび2つの独立な送信用リンクポートを含んでもよい。
Each
送信部76は、1クロックサイクル分の第1中間変数xi´および第2中間変数biを合成して、合成ストリームとして出力する。第1中間ストリームX´のビット幅がWx´であり、第2中間ストリームBのビット幅がWbとした場合、合成ストリームは、Wx´+Wb以上のビット幅を有する。
The
受信部74および送信部76のそれぞれは、例えば、FIFOメモリを含む。送信部76は、第1中間ストリームX´および第2中間ストリームBを合成して、FIFOに書き込む。そして、送信部76は、FIFOに格納された合成ストリームを順次に送信する。また、受信部74は、受信した合成ストリームをFIFOに書き込む。そして、受信部74は、FIFOから合成ストリームを順に読み出して、第1中間ストリームX´および第2中間ストリームBに分離する。
Each of the
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
例えば、チップ70の入力端子および出力端子は、QSFP(Quad Small Form-factor Pluggable)ポートであってよい。また、通信リンク72は、QSFP対応光学ケーブルまたはQSFP対応メタルケーブルであってよい。また、2つのチップ70の間の通信リンク72は、高速シリアルリンク,イーサーネットリンクまたはpeer-to-peerリンクであってもよい。
For example, the input and output terminals of
なお、本実施形態では、それぞれのチップ70は、合成ストリームを送受信しているが、第1中間ストリームX´および第2中間ストリームBをそれぞれ別個に送受信してもよい。この場合、(Pr3+1)個のチップ70-1~70-(Pr3+1)は、2系統のリングトポロジの態様で相互接続される。
In this embodiment, each
このような第3実施形態に係る計算装置10は、最適化問題により決定すべき第1変数xiの個数が変更しても、分割行列乗算部60の個数を変更することにより、対応することができる。従って、計算装置10は、最適化問題により決定すべき第1変数xiの個数が大幅に増加した場合、例えば、同一の構成のチップ70の数を増加させれば、対応することができる。また、計算装置10は、複数の分割行列乗算部60により並列的に行列演算が実行されるので、最適化問題を短時間で完了させることができる。
Even if the number of the first variables x i to be determined by the optimization problem is changed, the
(第4実施形態)
第4実施形態に係る計算装置10について説明する。
(Fourth embodiment)
A
図12は、第4実施形態でのN個の第1中間変数xi´、係数行列JおよびN個の第2中間変数biの関係を示す図である。第4実施形態において、N個の第1中間変数xi´、係数行列JおよびN個の第2中間変数biは、第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中間変数xi´は、Ns個のデータセットに分割される。Ns個のデータセットのそれぞれは、Pc個の第1中間変数xi´を含む。NsおよびPcは、Nの約数である。例えば、N個の第1中間変数xi´は、x´b0、x´b1、…、x´bNsのNs個のデータセットに分割される。 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.
Pr3個の分割行列のそれぞれは、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, .
Pr1および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中間変数biに含まれるPr3個のブロックのそれぞれは、Pr2個のサブブロックに分割される。Pr2個のサブブロックのそれぞれは、Pr1個の第2中間変数biを含む。例えば、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中間変数xi´との行列乗算を実行する。例えば、k番目の分割行列乗算部60は、N個の第1中間変数xi´と、k番目の分割行列JGkに含まれるPr2個のサブ行列のそれぞれとを別個に行列乗算をすることにより、k番目のブロックBGkに含まれるPr2個のサブブロックを算出する。
In the fourth embodiment, the split
図13は、第4実施形態に係る分割行列乗算部60の構成を示す図である。分割行列乗算部60に含まれる実行部66は、Pr2個のサブ行列乗算部80と、多重化部82とを含む。
FIG. 13 is a diagram showing the configuration of the
Pr2個のサブ行列乗算部80は、対応する分割行列に含まれるPr2個のサブ行列に一対一で対応付けられる。例えば、k番目の分割行列に対応付けられた分割行列乗算部60に含まれるPr2個のサブ行列乗算部80は、k番目の分割行列に含まれるPr2個のサブ行列に一対一で対応付けられる。
The
第k番目の分割行列乗算部60に含まれるPr2個のサブ行列乗算部80のそれぞれは、N個の第1中間変数xi´と、対応するサブ行列とを行列乗算することにより、対応するサブブロックに含まれるPr1個の第2中間変数biを算出する。
Each of the two P r
また、Pr2個のサブ行列乗算部80のそれぞれは、対応するサブブロックに含まれるPr1個の第2中間変数biを1クロックサイクルで並列に出力する。例えば、k番目の分割行列乗算部60に含まれるs番目のサブ行列乗算部80は、k番目のブロックに含まれるs番目のサブブロックに含まれるPr1個の第2中間変数biを、同一のクロックサイクルに出力する。
Also, each of the Pr2
さらに、Pr2個のサブ行列乗算部80のそれぞれは、他のサブ行列乗算部80とは異なるクロックサイクルにおいて、Pr1個の第2中間変数biを出力する。つまり、第2中間変数biは、同一のクロックサイクルに、複数のサブ行列乗算部80から出力されることはない。
Furthermore, each of the Pr2
多重化部82は、Pr2個のサブ行列乗算部80のそれぞれから出力されたPr1個の第2中間変数biのセットを多重化することにより、1クロックサイクルにPr1個の第2中間変数biを含む第2中間ストリームBを生成する。例えば、k番目の分割行列乗算部60に含まれる多重化部82は、k番目のブロックに含まれるPr2個のサブブロックを含む第2中間ストリームBを、Pr2クロックサイクルで出力する。
The multiplexing
分割行列乗算部60に含まれるバッファ部62は、シフトレジスタとして機能するPr2段のレジスタ84と、バッファ内受信部86と、バッファ内送信部88とを含む。
The
Pr2段のレジスタ84は、Pr2個のサブ行列乗算部80に一対一に対応付けられる。Pr2段のレジスタ84のそれぞれは、Pc個の第1中間変数xi´を含むデータセットを1クロックサイクル記憶する。Pr2段のレジスタ84のそれぞれは、次のクロックサイクルにおいて、記憶しているPc個の第1中間変数xi´を含むデータセットを次段のレジスタ84に並列に転送する。
The Pr 2- stage registers 84 are associated one-to-one with the Pr 2
バッファ内受信部86は、第1中間ストリームX´を受信し、受信した第1中間ストリームX´をPc個のワード幅のストリームに変換する。そして、バッファ内受信部86は、1クロックサイクル毎に、Pc個の第1中間変数xi´を含むデータセットを先頭のレジスタ84に書き込む。
An in-
バッファ内送信部88は、1クロックサイクル毎に、最終段のレジスタ84からPc個の第1中間変数xi´を含むデータセットを読み出し、第1中間ストリームX´に変換する。そして、バッファ内送信部88は、第1中間ストリームX´を送信する。
The
Pr2個のサブ行列乗算部80のそれぞれは、対応するレジスタ84に格納されているPc個の第1中間変数xi´を含むデータセットを1クロックサイクル毎に読み出す。Pr2個のサブ行列乗算部80のそれぞれは、1クロックサイクル毎に、読み出したPc個の第1中間変数xi´のそれぞれと、対応するサブ行列における対応する列の係数Ji,jと乗算する。そして、Pr2個のサブ行列乗算部80のそれぞれは、対応するサブ行列に含まれる行毎に、第1中間変数xi´と係数Ji,jとの乗算結果を累積加算する。これにより、Pr2個のサブ行列乗算部80のそれぞれは、対応するサブブロックに含まれるPr1個の第2中間変数biを算出することができる。
Each of the
ここで、Pr2個のサブ行列乗算部80のそれぞれは、対応するレジスタ84に、N個の第1中間変数xi´のうちの先頭の第1中間変数x0´から末尾の第1中間変数xN-1´が格納される前の期間、乗算および累積加算を実行する。そして、Pr2個のサブ行列乗算部80のそれぞれは、対応するレジスタ84に末尾の第1中間変数xN-1´が格納されたクロックサイクルから所定数のクロックサイクル経過後に、対応するサブブロックに含まれるPr1個の第2中間変数biを出力する。従って、Pr2個のサブ行列乗算部80のそれぞれは、互いに異なるクロックサイクルに、対応するサブブロックに含まれるPr1個の第2中間変数biを出力することができる。
Here, each of the Pr2
このような構成の第4実施形態に係る計算装置10は、Pr3×Pr2の並列度で行列乗算をすることができる。これにより、第4実施形態に係る計算装置10によれば、行列乗算を高速に実行することができる。
The
(第5実施形態)
第5実施形態に係る計算装置10について説明する。
(Fifth embodiment)
A
図14は、第5実施形態でのN個の第1中間変数xi´、係数行列JおよびN個の第2中間変数biの関係を示す図である。第5実施形態において、N個の第1中間変数xi´、係数行列JおよびN個の第2中間変数biは、第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
Pr3個の分割行列のそれぞれは、Pr2個のサブ行列に分割される。さらに、Pr2個のサブ行列のそれぞれは、Pc個の列単位で、Ns個の係数セットに分割される。それぞれの係数セットは、Pr1行×Pc列の係数Ji,jを含む。例えば、JG0の分割行列に含まれるjb0のサブ行列は、jb0(0)、jb0(1)、…、jb0(Ns-1)のNs個の係数セットに分割される。 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).
また、Ns個の係数セットは、N個の第1中間変数xi´をPc個毎に分割したNs個のデータセットに一対一に対応する。 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個の行のそれぞれについて、Pc個の係数Ji,jと対応するPc個の第1中間変数xi´との乗累算値を算出する。そして、サブ行列乗算部80は、Pr1個の行毎に、Ns個の係数セットのそれぞれについて算出した全ての乗累算値を加算する。これにより、サブ行列乗算部80は、Pr1個の行のそれぞれについて、N個の係数Ji,jとN個の第1中間変数xi´とを乗累算することができる。
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
図15は、第6実施形態に係るサブ行列乗算部80の構成を、対応するレジスタ84とともに示す図である。それぞれのサブ行列乗算部80は、Pr1個の乗累算部90を含む。
FIG. 15 is a diagram showing the configuration of the
Pr1個の乗累算部90は、対応するサブ行列に含まれるPr1個の行に一対一で対応付けられる。例えば、k番目の分割行列に対応付けられた分割行列乗算部60に含まれるs番目のサブ行列に対応付けられたPr1個の乗累算部90は、k番目の分割行列に含まれるs番目のサブ行列に含まれるPr1個の行に一対一で対応付けられる。
The Pr1 multiply-accumulate
Pr1個の乗累算部90は、全て同一の構成である。Pr1個の乗累算部90のそれぞれは、係数行列Jにおける対応する行と、N個の第1中間変数xi´とを乗累算することにより、対応するサブブロックに含まれる対応する位置の第2中間変数biを算出する。Pr1個の乗累算部90は、第2中間変数biを並行に算出して、同一のクロックサイクルに出力する。
All of the Pr1 multiply-accumulate
より詳しくは、Pr1個の乗累算部90のそれぞれは、Pr2段のレジスタ84のうちの対応するレジスタ84に順次に記憶される、第1中間ストリームX´の先頭の第1中間変数x0´から末尾のN個の第1中間変数xN-1´までを、クロックサイクル毎に取得する。この場合、Pr1個の乗累算部90のそれぞれは、1クロックサイクルに、Pc個の第1中間変数xi´を含むデータセットを取得する。そして、Pr1個の乗累算部90のそれぞれは、データセットの取得をNs(Ns=N/Pc)クロックサイクルに渡って実行することにより、Ns個のデータセットを取得する。また、Pr1個の乗累算部90のうちのp番目(pは、0からPr1-1までの任意の整数)の乗累算部90は、1クロックサイクルに、取得したデータセットに対応する係数セットに含まれる、p番目に対応する行に含まれるPc個の係数((jp,s0)~(jp,SPc-1))を取得する。そして、Pr1個の乗累算部90のそれぞれは、係数セットに含まれる対応するPc個の係数を、Nsクロックサイクルに渡って取得する。Pr1個の乗累算部90のそれぞれは、1クロックサイクル毎に、Pc個の第1中間変数xi´と、対応する行に含まれる対応するPc個の係数Ji,jとを乗累算する。そして、Pr1個の乗累算部90のそれぞれは、乗累算結果を、Nsクロックサイクルに渡って累積加算することにより、第2中間変数biを算出する。
More specifically, each of the Pr1 multiply-accumulate
図16は、分割行列メモリ64に記憶された分割行列を示す図である。分割行列メモリ64は、分割行列をPr2個のサブ行列に分割して記憶する。Pr2個のサブ行列のそれぞれは、対応するサブ行列乗算部80へと並列に出力される。
FIG. 16 is a diagram showing the partitioning matrix stored in the
Pr2個のサブ行列のそれぞれは、Ns個の係数セットを含む。Ns個の係数セットのそれぞれは、Pc×Pr1個の係数を含む。分割行列メモリ64は、Pr2個のサブ行列のそれぞれについて、1クロックサイクルにおいて、1つの係数セットに含まれるPc×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
図17は、1つのサブ行列乗算部80に含まれるPr1個の乗累算部90と、そのサブ行列乗算部80に送信されるサブ行列を示す図である。
FIG. 17 is a diagram showing Pr1 multiply-accumulate
1つのサブ行列乗算部80に含まれるPr1個の乗累算部90のそれぞれには、1クロックサイクル毎に、対応するレジスタ84に格納されたPc個の第1中間変数xi´を含むデータセットがブロードキャストされる。
Each of the P r1 multiplication/
分割行列メモリ64は、それぞれのサブ行列について、Ns個の係数セットを含む。分割行列メモリ64は、1クロックサイクル毎に、それぞれのサブ行列に含まれる1つの係数セットが、ポインタにより特定される。より具体的には、分割行列メモリ64は、そのサブ行列に対応するレジスタ84に格納されたデータセットに対応する係数セットが、特定される。
分割行列メモリ64は、クロックサイクル毎に、ポインタにより特定された係数セットに含まれるPc×Pr1個の係数を並列に出力する。係数セットに含まれるPc×Pr1個の係数のそれぞれは、出力先の乗累算部90が予め定められている。分割行列メモリ64は、1つの係数セットに含まれるPc×Pr1個の係数のそれぞれを、予め定められた乗累算部90へと出力する。例えば、係数セットにおける先頭からPc番目までのPc個の係数は、1番目の乗累算部90に出力される。また、例えば、(Pc+1)番目から(2×Pc)個目までのPc個の係数は、2番目の乗累算部90に出力される。また、(Pr1-Pc)番目からPr1番目までのPc個の係数は、Pr1番目の乗累算部90に出力される。
The
図18は、乗累算部90の構成を示す図である。乗累算部90は、Pc個の乗算器92と、加算器94と、累加算器96とを含む。乗累算部90は、クロックサイクル毎に、Pc個の第1中間変数xi´を含むデータセットと、Pc個の係数Ji,jを含む係数セットとを取得する。
FIG. 18 is a diagram showing the configuration of the multiply-accumulate
データセットに含まれるPc個の第1中間変数xi´と、係数セットに含まれるPc個の係数Ji,jとは、一対一で対応する。また、Pc個の乗算器92は、データセットに含まれるPc個の第1中間変数xi´、および、係数セットに含まれるPc個の係数Ji,jに一対一で対応する。Pc個の乗算器92のそれぞれは、データセットに含まれる対応する1つの第1中間変数xi´と、係数セットに含まれる対応する1つの係数Ji,jとを乗算することにより、乗算値を出力する。Pc個の乗算器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は、クロックサイクル毎に、Pc個の乗算器92から出力されたPc個の乗算値を加算することにより、乗累算値を算出する。累加算器96は、クロックサイクル毎に、加算器94から出力された乗累算値を累積加算する。また、累加算器96は、対応するレジスタ84に、第1中間ストリームX´における先頭の第1中間変数x0´が格納されたタイミング(S0=0)において、累積加算値を0にリセットする。
The
このような構成の乗累算部90は、Pr2段のレジスタ84のうちの対応するレジスタ84に順次に記憶される、第1中間ストリームX´の先頭の第1中間変数x0´から末尾の第1中間変数xN-1´までのN個の第1中間変数xi´を、クロックサイクル毎に取得する。さらに、乗累算部90は、取得したそれぞれの第1中間変数xi´と、係数行列Jにおける対応する行に含まれる、取得した第1中間変数xi´に対応する列の係数Ji,jとを乗算する。そして、乗累算部90は、第1中間変数xi´と係数Ji,jとの乗算結果を、第1中間ストリームX´の先頭の第1中間変数x0´から末尾の第1中間変数xN-1´まで累積加算する。このような処理により、乗累算部90は、対応するサブブロックに含まれる対応する位置の第2中間変数biを算出することができる。
The multiply-accumulate
図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の例において、Pc=4、NS=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中間変数xi´における先頭のデータセットは、t0に、先頭の行列乗算部28における先頭のレジスタ84に格納される。従って、JG0の分割行列におけるjb0のサブ行列における先頭の係数セットは、t0に読み出される。
The head data set in the N first intermediate variables x i ' is stored in the
また、N個の第1中間変数xi´における末尾のデータセットは、t4095に、先頭の行列乗算部28における先頭のレジスタ84に格納される。従って、JG0の分割行列におけるjb0のサブ行列における末尾の係数セットは、t4095に読み出される。
The data set at the end of the N first intermediate variables x i ' is stored in the
そして、N個の第2中間変数biにおける先頭のブロックは、JG0の分割行列におけるjb0のサブ行列における末尾の係数セットの乗累算が完了したクロックサイクル(t4095)以後に、出力可能となる。従って、第2中間変数biにおける先頭のブロックは、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中間変数xi´における先頭のデータセットは、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
また、N個の第1中間変数xi´における末尾のデータセットは、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
そして、N個の第2中間変数biにおける末尾のブロックは、JGPr3-1の分割行列におけるjbPr2-1のサブ行列における末尾の係数セットの乗累算が完了したクロックサイクル(t6143)以後に、出力可能となる。従って、第2中間変数biにおける末尾のブロックは、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
(第6実施形態)
第6実施形態に係る計算装置10について説明する。
(Sixth embodiment)
A
図20は、第6実施形態に係る時間発展部30の構成を、複数の行列乗算部28とともに示す図である。第6実施形態において、それぞれの行列乗算部28は、1クロックサイクルにPr1個の第2中間変数biを含む第2中間ストリームBを出力する。そして、第6実施形態において、時間発展部30は、1クロックサイクルにPr1個の第2中間変数biを含む第2中間ストリームBを受信する。
FIG. 20 is a diagram showing the configuration of the
そして、第6実施形態に係る時間発展部30は、Pr1個の第1変数メモリ40と、Pr1個の第2変数メモリ42と、Pr1個の第1加算部44と、Pr1個の関数演算部46と、Pr1個の第1乗算部48と、1個の第1中間変数メモリ50とを有する。
The
Pr1個の第1変数メモリ40、Pr1個の第2変数メモリ42、Pr1個の第1加算部44、Pr1個の関数演算部46およびPr1個の第1乗算部48は、1クロックサイクルに含まれるPr1個の第2中間変数biに一対一で対応する。
Pr 1 first
そして、Pr1個の第1加算部44のそれぞれおよびPr1個の関数演算部46のそれぞれは、1クロックサイクルに含まれるPr1個の第2中間変数biのうち対応する1つの第2中間変数biについての演算処理を実行する。また、Pr1個の第1変数メモリ40のそれぞれおよびPr1個の第2変数メモリ42のそれぞれは、1クロックサイクルに含まれるPr1個の第2中間変数biのうち対応する1つの第2中間変数biを用いて算出された第1変数xiおよび第2変数yiを記憶する。また、Pr1個の第1乗算部48のそれぞれは、1クロックサイクルに含まれるPr1個の第2中間変数biのうち対応する1つの第2中間変数biを用いて算出された第1変数xiに対する演算処理を実行する。
Then, each of the Pr1
このように、第6実施形態に係る時間発展部30は、1クロックサイクルに含まれるPr1個の第2中間変数biに対して、N個の第1変数xiおよびN個の第2変数yiの算出処理を、Pr1の並列度で実行する。これにより、第6実施形態に係る計算装置10は、N個の第1変数xiおよびN個の第2変数yiの算出処理を高速に実行することができる。
In this way, the
図21は、第1中間変数xi´および第2中間変数biの出力タイミングを示す図である。より詳しくは、図21の(A)は、時間発展部30から先頭の行列乗算部28に第1中間変数xi´が出力されるタイミングを示す。図21の(B)は、末尾の行列乗算部28から時間発展部30へ第2中間変数biが出力されるタイミングを示す。図21の(C)は、時間発展部30による第1中間変数xi´の算出タイミングを示す。
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
第1中間変数xi´は、Pc個の並列度で転送がされる。従って、図21の(A)に示すように、第1時刻における第1中間変数(x´b0~x´b4095(t1))の転送期間は、NS(=N/Pc)クロックサイクルとなる。 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中間変数biは、Pr1個の並列度で転送がされる。従って、図21の(B)に示すように、第1時刻における第2中間変数(bb0~bb2047(t1))の転送期間は、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(t2))の演算期間は、N/Pr1クロックサイクルとなる。
In addition, the
ここで、Laは、第1時刻における最後の第1中間変数(x´b4095(t1))の出力が完了してから、第1時刻における最初の第2中間変数(bb0(t1))の出力が開始するまでの遅延時間である。Lbは、第1時刻における最初の第2中間変数(bb0(t1))の出力が開始してから、第2時刻における最初の第1中間変数(x´b0(t2))が算出されるまでの遅延時間である。Lcは、第2時刻における最初の第1中間変数(x´b0(t2))が算出されてから、第2時刻における最初の第1中間変数(x´b0(t2))が出力されるまでの遅延時間である。 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ループ期間)は、NS+La+Lb+Lcとなる。計算装置10は、(Lb+Lc)を、第1時刻における第2中間変数(bb0~bb2047(t1))の転送期間(N/Pr1)より短くすることができる。従って、計算装置10では、第1時刻における第2中間変数(bb0~bb2047(t1))の出力が完了する前に、第2時刻における第1中間変数(x´b0~x´b4095(t2))の出力が開始される。すなわち、計算装置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
また、Nが大きい場合、NS>>La+Lb+Lcとなる。従って、Nが大きい場合、La+Lb+Lが全体の実行時間に対して無視できる程度に短くなる。この場合、計算装置10での行列乗算時間は、NS(=N/Pc)クロックサイクルとみなすことができる。
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
例えば、シングルコアのプロセッサによるサイズがNの行列演算時間は、(N×N)クロックサイクルである。シングルコアのプロセッサによる行列乗算時間に対する、計算装置10での行列乗算時間は、(N/Pc)/N×Nである。従って、計算装置10は、シングルコアのプロセッサに対して、1/(Pc×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
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。 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
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.
請求項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.
請求項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:
dt´×[{-D+p-Kxi 2}xi-c×hi×a]…(101)
であり、
前記第2関数演算は、
dt´×D×yi…(102)
であり、
xiは、前記第1時刻における前記N個の第1変数のうちのi番目の第1変数、または、前記N個の第1更新値のうちのi番目の第1更新値であり、
yiは、前記第1加算部が算出した更新された前記N個の第2変数のうちのi番目の更新された第2変数、または、前記N個の第2更新値のうちのi番目の第2更新値であり、
dt´は、予め設定された微小時間であり、
D、c、Kは、予め設定された定数であり、
hiは、i毎に設定された係数であり、
pおよびaは、予め定められた演算式に従って時刻毎に増加する値である
請求項5から8の何れか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.
dt´×{[(-D+p)(1+xi n)-Kxi n+2]xi-c×hi×a}…(103)
であり、
前記第2関数演算は、
dt´×D×yi…(104)
であり、
xiは、前記第1時刻における前記N個の第1変数のうちのi番目の第1変数、または、前記N個の第1更新値のうちのi番目の第1更新値であり、
yiは、前記第1加算部が算出した更新された前記N個の第2変数のうちのi番目の更新された第2変数、または、前記N個の第2更新値のうちのi番目の第2更新値であり、
dt´は、予め設定された微小時間であり、
D、c、Kは、予め設定された係数であり、
hiは、i毎に設定された係数であり、
pおよびaは、予め定められた演算式に従って時刻毎に増加する値である
請求項5から8の何れか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:
請求項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個の第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個の第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個の分割行列乗算部のそれぞれは、バッファ部を含み、
先頭の分割行列乗算部の前記バッファ部は、前記時間発展部から出力された前記第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.
請求項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.
前記(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個の第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段のレジスタのそれぞれは、Pc個(Pcは、Nの約数)の第1中間変数を並列に1クロックサイクル記憶し、次のクロックサイクルにおいて、記憶している前記Pc個の第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.
前記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.
請求項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.
請求項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.
前記実行部は、
対応するブロックに含まれる(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.
先頭の分割行列乗算部の前記セレクタは、
前記先頭の分割行列乗算部の前記実行部が前記第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 .
請求項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.
第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.
前記情報処理装置は、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.
前記情報処理装置は、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.
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)
| 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)
| 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 |
-
2023
- 2023-02-02 JP JP2023014423A patent/JP7322308B2/en active Active
- 2023-07-26 JP JP2023121420A patent/JP7551863B2/en active Active
Patent Citations (4)
| 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)
| 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 |