Data processing device, data processing method, and program

The data processing device efficiently switches between groups of state variables by reading and updating relevant weight coefficients, addressing storage capacity limitations and improving problem-solving efficiency in combinatorial optimization.

JP7886533B2Active Publication Date: 2026-07-08FUJITSU LTD

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
FUJITSU LTD
Filing Date
2022-10-25
Publication Date
2026-07-08

AI Technical Summary

Technical Problem

The increase in the number of state variables in combinatorial optimization problems leads to an increase in the number of weight coefficients, which may exceed the storage capacity of the memory unit, causing inefficiencies in updating and reading weight coefficients during problem solving.

Method used

A data processing device that efficiently switches between groups of state variables by reading and updating only the relevant weight coefficients based on change information, reducing the need for recalculating equations and minimizing storage requirements.

Benefits of technology

This approach enhances problem-solving performance by reducing overhead and time required for switching between subproblems, allowing for faster and more efficient solution finding with reduced storage capacity.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007886533000012
    Figure 0007886533000012
  • Figure 0007886533000013
    Figure 0007886533000013
  • Figure 0007886533000014
    Figure 0007886533000014
Patent Text Reader

Abstract

To efficiently switch between groups of state variables of a search target.SOLUTION: A processing unit 12 switches between a plurality of groups that divide the entire set of state variables of the Ising problem to search for a solution. The processing unit 12 reads from a storage device 20 to a storage unit 11, when switching a switching target to a first group, a first weighting coefficient corresponding to a pair of a state variable whose value changes after a previous search for the first group due to a search for another group and each of a plurality of first state variables included in the first group based on change information 31, and updates a local field for each of the first state variables based on the first weighting coefficient. The processing unit 12 reads from the storage device 20 to the storage unit 11 a second weighting coefficient corresponding to the pair of the first state variables, and executes a search for the first group using the second weighting coefficient and the local field for the first state variables. The processing unit 12 updates the change information 31 according to whether the value for the first state variables changes due to the current search to switch to a next group.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present invention relates to a data processing device, a data processing method, and a program. [Background technology]

[0002] Ising machines are computers that solve multivariable combinatorial optimization problems, which are difficult for von Neumann computers, by replacing them with the Ising model, which represents the behavior of magnetic spins. Ising machines are also called Boltzmann machines. Methods for solving problems replaced with the Ising model in a practical amount of time include simulated annealing (SA) and replica exchange methods, which are based on the Markov chain Monte Carlo (MCMC) method.

[0003] Combinatorial optimization problems are formulated using an energy function that includes multiple state variables. For example, an Ising machine searches for the ground state of an Ising model that minimizes the energy function by repeatedly trying state transitions by changing the values ​​of state variables using the MCMC method. The ground state corresponds to the optimal solution of the combinatorial optimization problem.

[0004] For example, there is a proposed optimization device that divides a combinatorial optimization problem into multiple subproblems, solves them, and then finds the overall solution based on the solutions to the subproblems. The proposed optimization device has multiple Ising devices, each of which searches for a solution to one of the multiple subproblems.

[0005] There is also a proposal for an information processing device having multiple Ising devices. In this proposal, each Ising device has multiple neuron circuits that process 1 bit, and it reflects the neuron state of other Ising devices obtained via a router into its own neuron circuit.

[0006] In addition, in a neuron circuit, there is also a proposal for an optimization device that reduces the capacity of the memory unit of the neuron circuit by retaining only the weight coefficients between the target neuron and the destination neurons that are connected to the target neuron, out of the entire set of weight coefficients indicating the strength of the connections between neurons.

[0007] Note that there is a proposal for a computing system that performs SA with a reverse annealing schedule on a sample output by an analog processor including qubits, and calculates the weights of the samples used for importance sampling using the history thereof.

Prior Art Documents

Patent Documents

[0008]

Patent Document 1

Patent Document 2

Patent Document 3

Patent Document 4

Summary of the Invention

Problems to be Solved by the Invention

[0009] In solving a problem replaced with an Ising model, weight coefficients representing the magnitude of the interaction between each state variable are used. When the number of state variables increases in accordance with an increase in the problem scale, the number of weight coefficients also increases. For this reason, there is a possibility that all the weight coefficients cannot be stored in the memory unit used as a cache by the arithmetic unit that executes the solution.

[0010] By dividing the problem into a plurality of sub-problems and solving the problem for a group of state variables corresponding to the sub-problem among all the state variables, the weight coefficients held in the storage unit can be reduced. Therefore, for example, a method is conceivable in which the entire weight coefficients are stored in a large-capacity storage device, information on the sub-problem is transferred from the storage device to a cache storage unit, and the sub-problems to be transferred are appropriately replaced for calculation. However, in this method, it takes time for the update of the local field used for the calculation of the change amount of the value of the energy function and the reading of the weight coefficients into the storage unit, which occur with the replacement of the sub-problems.

[0011] On one aspect, the present invention aims to efficiently switch a group of state variables to be searched.

Means for Solving the Problem

[0012] In one aspect, a data processing device is provided. The data processing device has a storage unit and a processing unit. The processing unit searches for a solution to a problem represented by an Ising model including a plurality of state variables by switching each of a plurality of groups obtained by dividing the plurality of state variables. When the processing unit switches the search target to a first group among the plurality of groups, based on change information indicating state variables whose values have changed due to the search for groups other than the first group after the previous search for the first group, the first weight coefficients corresponding to pairs of the state variables and each of the plurality of first state variables belonging to the first group are read from a storage device that stores the entire weight coefficients related to the plurality of state variables, and the read first weight coefficients are stored in the storage unit. The processing unit updates the local field of each of the plurality of first state variables based on the first weight coefficients stored in the storage unit. The processing unit reads the second weight coefficients corresponding to pairs of the first state variables in the plurality of first state variables from the storage device and stores the read second weight coefficients in the storage unit. The processing unit executes the search for the first group using the second weight coefficients stored in the storage unit and the local field of each of the plurality of first state variables. When the processing unit finishes the search for the first group, it updates the change information according to whether there is a change in the value of each of the plurality of first state variables due to the current search, and switches the search target to the next group.

[0013] In one embodiment, a data processing method is provided. In another embodiment, a program for a computer to execute is provided. [Effects of the Invention]

[0014] One aspect of this is that it allows for efficient switching between groups of state variables being searched. [Brief explanation of the drawing]

[0015] [Figure 1] This is a diagram illustrating a data processing device according to the first embodiment. [Figure 2] This figure shows an example of the hardware of an Ising machine according to the second embodiment. [Figure 3] This diagram shows an example of the functions of an Ising machine. [Figure 4] This figure shows an example of a search using an Ising machine. [Figure 5] This figure shows the first example of the weight coefficients to be read. [Figure 6] This figure shows a second example of the weight coefficients to be read. [Figure 7] This is a flowchart illustrating an example of the search process in an Ising machine. [Figure 8] This flowchart shows an example of a local field update process. [Figure 9] This flowchart shows an example of window-based search processing. [Figure 10] This flowchart shows an example of a state change detection process. [Figure 11] This figure shows an example where two windows overlap. [Figure 12] This figure shows an example of randomly switching windows. [Figure 13] This figure shows an example of randomly switching windows. [Figure 14] This figure shows an example of a state flag used for random switching. [Figure 15] This figure shows an example of a forward slide without overlap. [Figure 16] This figure shows an example of a forward slide with overlap. [Figure 17] The figure shows an example of random switching. [Figure 18] This figure shows an example of pipeline processing for local field updates across multiple replicas. [Figure 19] This figure shows an example of a memory map of weight coefficients on DRAM. [Figure 20] This figure shows an example of an information processing system. [Modes for carrying out the invention]

[0016] This embodiment will be described below with reference to the drawings. [First Embodiment] A first embodiment will be described.

[0017] Figure 1 is a diagram illustrating a data processing device according to the first embodiment. The data processing device 10 searches for solutions to combinatorial optimization problems using the MCMC method and outputs the found solutions. For example, the data processing device 10 uses methods such as the SA method and the parallel tempering (PT) method, which are based on the MCMC method, to search for solutions. The PT method is also called the replica exchange method. The data processing device 10 has a storage unit 11 and a processing unit 12. The data processing device 10 is also connected to the storage device 20.

[0018] The memory unit 11 is a cache memory that holds data used in calculations performed by the processing unit 12. The memory unit 11 is, for example, an SRAM (Static Random Access Memory). The memory unit 11 may also include electronic circuits such as registers. The memory unit 11 may also be an internal memory located inside the processing unit 12. The processing unit 12 is a processor such as a CPU (Central Processing Unit), GPU (Graphics Processing Unit), DSP (Digital Signal Processor), ASIC (Application Specific Integrated Circuit), or FPGA (Field Programmable Gate Array). The processing unit 12 may also be a processor that executes programs.

[0019] The storage device 20 is connected to the data processing device 10 and stores data used for processing by the data processing device 10. The storage capacity of the storage device 20 is greater than the storage capacity of the storage unit 11. The storage device 20 is, for example, DRAM (Dynamic Random Access Memory). An interface such as an HBM2 (High Bandwidth Memory) interface is used to connect the storage device 20 and the data processing device 10.

[0020] Here, the combinatorial optimization problem is formulated using an Ising-type energy function and can be replaced, for example, with the problem of minimizing the value of the energy function. The energy function is sometimes called the objective function or evaluation function. The energy function contains multiple state variables. The state variables are binary variables that take values ​​of 0 or 1. State variables can also be called bits. The solution to the combinatorial optimization problem is represented by the values ​​of the multiple state variables. The solution that minimizes the value of the energy function represents the ground state of the Ising model and corresponds to the optimal solution of the combinatorial optimization problem. The value of the energy function is simply called energy.

[0021] The Ising-type energy function is given by equation (1).

[0022]

Number

[0023] The state vector x consists of a plurality of state variables and represents the state of the Ising model. Equation (1) is an energy function formulated in the QUBO (Quadratic Unconstrained Binary Optimization) form. In the case of a problem of maximizing energy, the sign of the energy function may be reversed.

[0024] The first term on the right side of Equation (1) is the sum of the products of the values of two state variables and the weight coefficients for all combinations of two state variables that can be selected from all state variables, without omission or duplication. The subscripts i and j are the indices of the state variables. x i is the i-th state variable. x j is the j-th state variable. W ij is the weight between the i-th state variable and the j-th state variable, or the weight coefficient indicating the strength of the coupling. W ij = W ji and W ii = 0.

[0025] The second term on the right side of Equation (1) is the sum of the products of the bias of each state variable and the value of the state variable. b i indicates the bias for the i-th state variable. When the value of the state variable x i changes to 1 - x i , the increase in the state variable x i can be expressed as Δx i = (1 - x i ) - x i = 1 - 2x i . The neighboring state x i obtained by reversing the state variable x (i) from a certain state x is represented by Equation (2). The subscript "Tr" in Equation (2) indicates transposition.

[0026]

Number

[0027] For the energy function E(x), the state variable x i The change in energy ΔE associated with the change i This is expressed by equation (3).

[0028]

number

[0029] h i This is called a local field and is represented by equation (4). A local field is sometimes also called a local field (LF).

[0030]

number

[0031] State variable x j The local field h when it changes i Change Δh i (j) This is expressed by equation (5).

[0032]

number

[0033] The processing unit 12 processes the state variable x j When the value changes, the change Δh i (j) h i By adding to this, the h corresponding to the state after bit inversion is obtained. i Obtain the state variable x. j Local field h after the change in its value i This is expressed by equation (6).

[0034]

number

[0035] In the search for the ground state, a state transition in which the energy change is ΔE i , that is, whether to allow a change in the value of the state variable x i is determined using the Metropolis method or the Gibbs method. Specifically, in the neighborhood search for a transition from a certain state to another state with lower energy than that state, not only a state with decreasing energy but also a transition to a state with increasing energy is probabilistically allowed. For example, the probability A of accepting a change in the value of the state variable for an energy change ΔE is expressed by Equation (7).

[0036] <A

Equation

[0037] β is the reciprocal of the temperature value T (T > 0) (β = 1 / T) and is called the inverse temperature. The min operator indicates taking the minimum value among the arguments. The upper side of the right side of Equation (7) corresponds to the Metropolis method. The lower side of the right side of Equation (7) corresponds to the Gibbs method. The processing unit 12 compares a uniform random number u where 0 < u < 1 with A for a certain index i, and if u < A, it accepts the change in the value of the state variable x i and changes the value of the state variable x i . If u ≥ A, the processing unit 12 does not accept the change in the value of the state variable x i and does not change the value of the state variable x i . According to Equation (7), the larger the value of ΔE, the smaller A becomes. Also, the smaller β is, that is, the larger T is, the more likely a state transition with a large ΔE is to be allowed.<D

[0038] The processing unit 12 can speed up the solution search by determining the state variable whose value is to be changed by parallel trials for a plurality of state variables. For example, the processing unit 12 calculates ΔE in parallel for a plurality of state variables. Then, the processing unit 12 selects a state variable whose value is to be changed using a random number or the like from among the state variables that satisfy Equation (7). The processing unit 12 changes the value of the selected state variable and updates the local fields of other state variables in parallel according to the change.

[0039] Here, by dividing the combinatorial optimization problem into subproblems and switching the subproblems to cause the data processing device 10 to execute the solution, it is possible to reduce the size of the weight coefficients to be held by the storage unit 11 for the solution, and a large-scale problem can be processed. The weight coefficient information 21, which is the whole of the weight coefficients corresponding to the combinatorial optimization problem, is held in the storage device 20. For the total number N (N is an integer of 2 or more) of all state variables, the energy function of the combinatorial optimization problem is expressed by Equation (8).

[0040]

Number

[0041] On the other hand, the energy function of the subproblem dealing with a group of state variables of i = 1 to K (K < N), which is a part of the N state variables, is defined by the energy function E'(x) of Equation (9).

[0042]

Number

[0043] In Equation (9), each of b' i and c' is expressed as in Equation (10) and Equation (11).

[0044]

Number

[0045]

Number

[0046] When searching for the solution to the subproblem corresponding to the group of state variables where \(i = 1\) to \(K\) (\(K\lt N\)), the values of the state variables where \(i = K + 1\) to \(N\) are fixed. The second term on the right side of Equation (10) represents the contribution to the bias coefficient by the state variables with fixed values. The second and third terms on the right side of Equation (11) represent the contributions to the constant by the state variables with fixed values. In one example, \(N\) state variables are divided into \(n\) (where \(n\) is an integer greater than or equal to 2) groups of \(K\) each. The set of state variables belonging to one group is a subset of the entire set of state variables corresponding to the whole problem.

[0047] In FIG. 1, as an example, \(n = 4\), that is, the case where the entire set of state variables of the problem is divided into 4 non - overlapping parts is illustrated. In this case, the entire set of state variables is divided into groups #0, #1, #2, #3. For example, the entire set of weight coefficients is divided into \(W_{00},W_{10},W_{20},W_{30},W_{01},W_{11},W_{21},W_{31},W_{02},W_{12},W_{22},W_{32},W_{03},W_{13},W_{23},W_{33}\). Here, the numerical value after the underscore “_” of the weight coefficient sign indicates the following index range related to the state variables. “0” means \(1\) to \(K\). “1” means \(K + 1\) to \(2K\). “2” means \(2K+1\) to \(3K\). “3” means \(3K + 1\) to \(N\). For example, \(W_{00}\) is the part of the entire set of weight coefficients \(W\) where \(\{W ij \}(1\leq i\leq K,1\leq j\leq K)\). It should be noted that the whole problem can also be divided into a plurality of subproblems with overlapping state variables.

[0048] In this way, the processing unit 12 can switch the subproblem to be searched and search for the solution to the problem by dividing the problem represented by the Ising model, that is, the Ising problem, into a plurality of subproblems. The switching of the subproblem to be searched corresponds to the switching of the group of state variables to be searched. For example, when the processing unit 12 switches the search target to the first group among a plurality of groups, it executes the following processing.

[0049] First, the processing unit 12 acquires change information 31. The change information 31 indicates a state variable among several state variables corresponding to the entire problem whose value has changed since the previous search for the first group due to searches for other groups. The change information 31 may be stored in the memory device 20 or in the storage unit 11.

[0050] For example, if the first group is group #1, the change information 31 indicates the state variables belonging to groups #0, #2, and #3 whose values ​​have changed since the previous search for group #1. In this case, group #1 corresponds to the group of state variables being searched for in the current search. Groups #0, #2, and #3 are other groups besides group #1.

[0051] Based on the change information 31, the processing unit 12 reads from the storage device 20 the first weight coefficients corresponding to pairs of state variables from other groups whose values ​​have changed since the previous search of the first group, and each of the multiple first state variables included in the first group, and stores them in the storage unit 11.

[0052] For example, with respect to group #1, which is the target of this search, the processing unit 12 reads only the first weight coefficients from the weight coefficients W_01, W_21, and W_31 that relate to the state variables of other groups whose values ​​have changed since the previous search of the first group, based on the change information 31. In the change information 31 in Figure 1, the horizontal direction indicates the index, and the state variable is indicated by the vertical solid line at the index position corresponding to the state variable of another group whose value has changed since the previous search of the first group.

[0053] The processing unit 12 updates the local field of each of the multiple first state variables based on the first weight coefficients stored in the memory unit 11. For example, the processing unit 12 can update the local field of each of the multiple first state variables using equation (6) based on the first weight coefficients and the values ​​of the multiple state variables after the previous search for the first group, i.e., the values ​​of all N state variables and change information 31.

[0054] The processing unit 12 obtains the values ​​of multiple state variables for the first group after the previous search, based on the state information 32 corresponding to the first group. For example, the state information 32 is stored in the storage device 20 or storage unit 11 for each group of state variables. The state information 32 holds the total values ​​of the state variables for the relevant group after the previous search. The state information 32, together with the change information 31, is used to determine the direction of change in the state variable values, that is, whether it is a change from 0 to 1 or a change from 1 to 0. However, the storage unit 11 may hold the latest values ​​of all state variables, in which case the processing unit 12 may determine the direction of change of the state variables whose values ​​have changed since the previous search, based on the latest values ​​of all state variables and the change information 31.

[0055] Furthermore, the local field of each state variable is stored in local field information 33. The local field information 33 is stored in the storage device 20 or the storage unit 11. If the local field information 33 is stored in the storage device 20, the processing unit 12 only needs to read the local field of each of the multiple first state variables included in the first group from the storage device 20 and store it in the storage unit 11.

[0056] The processing unit 12 reads the second weight coefficients corresponding to pairs of first state variables in multiple first state variables from the storage device 20 and stores them in the memory unit 11. For example, the processing unit 12 reads the weight coefficient W_11 corresponding to the first state variable of group #1, which is the target of the search, from the storage device 20 into the memory unit 11.

[0057] The processing unit 12 uses the second weight coefficients stored in the memory unit 11 and the local fields of each of the multiple first state variables to perform a search for the first group. Then, the processing unit 12 finishes the search for the first group. The processing unit 12 then updates the change information 31 according to whether or not the values ​​of each of the multiple first state variables have changed as a result of this search, and performs a search based on the next group among the multiple groups. For example, the change information 31 now includes information indicating whether or not the value of each first state variable has changed as a result of this search for group #1, which was searched this time. The updated change information 31 is used to update the local fields of the state variables belonging to other groups before searching for those other groups, similar to the process described above for the first group.

[0058] Furthermore, when the processing unit 12 finishes searching for the first group, for example, it updates the state information 32 corresponding to the first group with the latest values ​​of all state variables after the current search and saves it to the storage device 20. The saved state information 32 is used when the next search for the first group is performed. Also, if local field information 33 is held in the storage device 20, the processing unit 12 reflects the local field of each of the multiple first state variables included in the first group in the local field information 33 in the storage device 20 and updates the local field information 33 to the latest state.

[0059] Thus, the processing unit 12 executes the SA method or the replica exchange method for a predetermined period of time while switching the group of state variables to be searched, and outputs the solution with the lowest energy obtained through the search.

[0060] As explained above, the data processing device 10 searches for a solution to a problem represented by an Ising model containing multiple state variables by switching between multiple groups into which the multiple state variables are divided. When switching the search target to the first group of the multiple groups, the following process is performed. Based on change information 31 indicating the state variables whose values ​​have changed due to searches on other groups other than the first group since the previous search on the first group, the first weight coefficients corresponding to pairs of the state variables and each of the multiple first state variables belonging to the first group are read from the storage device 20 which stores all the weight coefficients for the multiple state variables. The read first weight coefficients are stored in the storage unit 11. Based on the first weight coefficients stored in the storage unit 11, the local fields of each of the multiple first state variables are updated. The second weight coefficients corresponding to pairs of first state variables in the multiple first state variables are read from the storage device 20, and the read second weight coefficients are stored in the storage unit 11. Using the second weight coefficients stored in the storage unit 11 and the local fields of each of the multiple first state variables, a search for the first group is performed. Once the search for the first group is complete, the change information 31 is updated according to whether or not the values ​​of each of the multiple first state variables have changed as a result of this search, and the search target is switched to the next group.

[0061] This allows the data processing device 10 to efficiently switch between groups of state variables being searched. For example, based on the change information 31, the data processing device 10 can narrow down the weight coefficients to be read from the storage device 20 to the first weight coefficients related to state variables of other groups whose values ​​have changed since the previous search for the first group.

[0062] As a comparative example, one could also consider a method in which all the weight coefficients related to multiple first state variables belonging to the first group are read from the storage device 20 to the storage unit 11, and equations (10) and (11) are recalculated to switch subproblems. However, the comparative example method involves a large amount of weight coefficients to read and a large amount of computation due to the read weight coefficients, resulting in a large overhead during switching.

[0063] In contrast, the data processing device 10 reduces the amount of weight coefficients to be read from the storage device 20 to the storage unit 11 by narrowing down the weight coefficients to be read using the change information 31. Furthermore, the time required to read the weight coefficients from the storage device 20 to the storage unit 11 is reduced. Moreover, the data processing device 10 only needs to reflect the influence of the other group of state variables whose values ​​have changed according to equation (6) in the local field of the first state variable using the first weight coefficients read into the storage unit 11. Therefore, the time required to update the local field is reduced. In this way, the switching of groups of state variables under search, i.e., the switching of subproblems, is made more efficient.

[0064] Reducing the overhead associated with switching between subproblems improves the problem-solving performance of the data processing device 10. For example, the time required for problem solving can be shortened. It also increases the likelihood of obtaining a better solution in a relatively short time. Furthermore, the storage capacity required for the storage unit 11 can be reduced, allowing problem solving to be performed with relatively little storage capacity.

[0065] [Second Embodiment] Next, a second embodiment will be described. Figure 2 shows an example of the hardware of an Ising machine according to the second embodiment.

[0066] The Ising machine 100 has a processor 101, DRAM 102, and a connection interface 103. The processor 101 is an arithmetic unit that performs the solution of a combinatorial optimization problem. The processor 101 is, for example, a CPU, GPU, ASIC, and FPGA. The processor 101 is an example of the processing unit 12 of the first embodiment. The processor 101 has internal memory 110.

[0067] The internal memory 110 is used as cache memory in the processor 101. The internal memory 110 is, for example, SRAM. The internal memory 110 is an example of the storage unit 11 in the first embodiment.

[0068] DRAM 102 is the main memory of the Ising machine 100. DRAM 102 has a larger capacity than the internal memory 110 and holds information such as the total weight coefficients used in solving the problem. DRAM 102 is an example of the memory device 20 of the first embodiment.

[0069] The connection interface 103 is an interface used to connect the processor 101 and the DRAM 102 and for data transfer. For example, an HBM2 interface may be used for the connection interface 103.

[0070] The Ising machine 100 is an example of the data processing device 10 in the first embodiment. The processor 101 performs solution searching based on multiple subproblems obtained by dividing the combinatorial optimization problem. In this case, for example, the N state variables included in equation (8) of the Ising-type energy function are divided into n groups of K variables each. One subproblem corresponds to one group of state variables. The processor 101 switches subproblems, that is, switches the group to be searched, and performs a search for a solution for the group to be searched. The SA method and the replica exchange method are used for solution searching. Note that a group of state variables is a subset of the entire set of state variables and may also be called a subdomain.

[0071] Figure 3 shows an example of the functions of an Ising machine. The Ising machine 100 includes a data storage unit 120, a search unit 130, an overall control unit 140, a memory control unit 150, a data transfer control unit 160, and a state change detection unit 170. The data storage unit 120 uses the storage area of ​​a DRAM 102.

[0072] When the processor 101 is implemented using an ASIC or FPGA, the search unit 130, the overall control unit 140, the memory control unit 150, the data transfer control unit 160, and the state change detection unit 170 are implemented using electronic circuits such as an ASIC or FPGA. When the processor 101 is implemented using a GPU or CPU, these functions may be implemented, for example, by the CPU or GPU executing a program stored in the DRAM 102.

[0073] The data storage unit 120 stores all the weight coefficients used to solve the combinatorial optimization problem. The data storage unit 120 stores local field information that shows the local field of all state variables included in the energy function. For each group of state variables, the data storage unit 120 stores state information after the previous search based on that group. The state information shows the values ​​of N state variables. For each of the N state variables, the data storage unit 120 stores bit change information that indicates the change in value due to the latest search, i.e., whether or not there is a bit change. For example, the bit change information is represented by N bits of information corresponding to the index of the state variable, where 1 indicates a change and 0 indicates no change.

[0074] The search unit 130 searches for a solution to a combinatorial optimization problem using the SA method or the replica exchange method. The search unit 130 searches for a solution by switching between multiple groups of state variables to be searched. The search unit 130 includes a weight coefficient storage unit 131, a local field storage unit 132, a state storage unit 133, a local field update unit 134, a ΔE calculation unit 135, and a selection unit 136. The storage area of ​​the internal memory 110 is used for the weight coefficient storage unit 131, the local field storage unit 132, and the state storage unit 133.

[0075] The weight coefficient storage unit 131 stores a portion of the total weight coefficients stored in the data storage unit 120. The weight coefficients stored in the weight coefficient storage unit 131 are the weight coefficients used to update the local field of each state variable belonging to the current group.

[0076] The local field holding unit 132 holds the local fields of each state variable belonging to the current group, which have been read from the data storage unit 120. The state holding unit 133 holds the state information read from the data storage unit 120. The state information held in the state holding unit 133 is updated to the latest state in accordance with the local field update of each state variable by the local field update unit 134.

[0077] The local field update unit 134 updates the local field of each state variable belonging to the group to be searched according to equation (6), based on the weight coefficients stored in the weight coefficient storage unit 131. The local field update by the local field update unit 134 is performed immediately before and during the search for the group to be searched next. The local field update unit 134 can perform the local field update of each state variable in parallel.

[0078] In the local field update immediately before performing a search for the next group, the local field update unit 134 reflects the influence of state variables from other groups whose values ​​have changed since the last search into the local field of the state variables belonging to the next group. "Since the last search" refers to the period after the last search for the next group. The state variables of other groups whose values ​​have changed are identified by bit change information obtained from the data storage unit 120. Furthermore, the direction of the value change of the state variables of other groups whose values ​​have changed, i.e., whether it is a change from 0 to 1 or a change from 1 to 0, is identified by the state information and bit change information from after the last search, which are stored in the state holding unit 133.

[0079] During the local field update while searching for a solution for a target group, the local field update unit 134 updates the local field of each state variable belonging to the group in accordance with the change in the value of the state variable belonging to the group.

[0080] When the search is started, the ΔE calculation unit 135 calculates the energy change ΔE corresponding to the change in the value of each state variable in parallel based on equation (3) and outputs it to the selection unit 136. The selection unit 136 selects a state variable whose value is allowed to change based on the energy change ΔE of each state variable obtained from the ΔE calculation unit 135 and equation (7). If there are multiple state variables whose value is allowed to change, the selection unit 136 randomly selects one of them, for example, using a random number generator. The state variable selected by the selection unit 136 is called a flip bit.

[0081] The selection unit 136 outputs the flip bit information to the weight coefficient storage unit 131, and the weight coefficient corresponding to the flip bit is output from the weight coefficient storage unit 131 to the local field update unit 134. As a result, the local field update unit 134 updates the local field of each state variable. The selection unit 136 also updates the state based on the flip bit information. For example, the selection unit 136 updates the state held in the state holding unit 133 to the latest state.

[0082] The overall control unit 140 controls the search unit 130, the memory control unit 150, and the data transfer control unit 160. For example, the overall control unit 140 controls the switching of subproblems, i.e., the switching of groups of state variables to be searched, the data transfer between the data storage unit 120 and the search unit 130, and the search for solutions by the search unit 130.

[0083] The memory control unit 150 controls the transfer of weight coefficients from the data storage unit 120 to the weight coefficient storage unit 131 based on the control of the overall control unit 140. The memory control unit 150 also controls the transfer of local fields between the data storage unit 120 and the local field holding unit 132, and the transfer of state information between the data storage unit 120 and the state holding unit 133, based on the control of the overall control unit 140.

[0084] The data transfer control unit 160 acquires bit change information from the data storage unit 120 via the overall control unit 140 and the memory control unit 150, and identifies the weight coefficients to be read from the data storage unit 120 based on the bit change information. The data transfer control unit 160 instructs the memory control unit 150, via the overall control unit 140, to read the weight coefficients to be read, and has the weight coefficient storage unit 131 read the weight coefficients to be read.

[0085] The data transfer control unit 160 detects state variables whose values ​​have changed since the previous search for the next group to be searched. The data transfer control unit 160 then controls the data storage unit 120 of the DRAM 102 to read only the weight coefficients corresponding to the detected state variables, which are used as weight coefficients for local field updating. This reduces the amount of weight coefficient data transferred between the DRAM 102 and the processor 101. For example, if 10% of the state variables have changed, the data transfer control unit 160 only needs to read 10% of the weight coefficient data from the DRAM 102.

[0086] The weight coefficients loaded in this way are used only for local field updates before searching for the next group, so they may be erased from the internal memory 110 once the local field update is complete. However, there may be cases where the weight coefficients to be used for the local field update cannot be placed in the weight coefficient storage unit 131 of the internal memory 110 all at once. In that case, the local field update process is performed after storing the amount that can be placed at once, and after the local field update is completed, the remaining weight coefficients are overwritten in the weight coefficient storage unit 131, and the process of continuing the local field update is repeated.

[0087] Subsequently, the data transfer control unit 160 instructs the memory control unit 150, via the overall control unit 140, to read out the local field, state information, and weight coefficients to be used for the next search. Regarding the weight coefficients for the next search, all the weight coefficients necessary for the search are read into the weight coefficient storage unit 131.

[0088] Furthermore, once the search for the current group is complete, the data transfer control unit 160 instructs the memory control unit 150 to transfer the local field information corresponding to the searched group from the local field holding unit 132 to the data storage unit 120. Similarly, the data transfer control unit 160 instructs the memory control unit 150 to transfer the state information after the search from the state holding unit 133 to the data storage unit 120.

[0089] Furthermore, once the search for the current group is complete, the data transfer control unit 160 obtains information from the state change detection unit 170 regarding whether or not the values ​​of each state variable have changed as a result of the search, and updates the bit change information held in the data storage unit 120 based on the obtained information. The update of the bit change information by the data transfer control unit 160 is performed via the memory control unit 150.

[0090] The state change detection unit 170 compares the state at the start of the search for the current group (start state) with the state at the end of the search for the same group (end state) to determine whether or not there has been a change in the value of each state variable due to the current search. The state change detection unit 170 notifies the data transfer control unit 160 of the information indicating whether or not there has been a change in the value of each state variable.

[0091] Figure 4 shows an example of a search using an Ising machine. The weight coefficient matrix 200 represents the entirety of the weight coefficients corresponding to the combinatorial optimization problem. The weight coefficient matrix 200 is stored in the data storage unit 120 on the DRAM 102. In the example in Figure 4, the entirety of state variables is divided into eight regions. The numbers assigned to the rows and columns of the weight coefficient matrix 200 indicate region numbers that identify the regions of state variables. The number of state variables contained in each region is the same. The state variables are divided into region numbers #0 to #7 in index order.

[0092] There are four groups of state variables. Each group is formed by two regions. In the example in Figure 4, there is no overlap in the state variables included in each group, and the total number of groups is four. The group being searched is called a window. The region referred to here is a subgroup of state variables that can be the smallest granularity for window switching. When one group is called a subregion, one subgroup of the smallest granularity for window switching can be called a unit region. Hereafter, this unit region will simply be referred to as a "region".

[0093] For example, the first window is a combination of regions #0 and #1. The second window is a combination of regions #2 and #3. The third window is a combination of regions #4 and #5. The fourth window is a combination of regions #6 and #7. Note that, as will be explained later, some regions included in two windows may overlap. That is, windows may be formed such that some state variables belonging to one window also belong to another window.

[0094] The weight coefficient groups included in the weight coefficient matrix 200 are distinguished using region numbers #0 to #7. For example, the weight coefficient group corresponding to a pair of state variables in region #0 and region #1 is denoted as W_01. Note that with respect to the row p and column q related to the region number, W_pq = W_qp.

[0095] Here, let k be the number of state variables in one region. Then, the number of state variables in one window is K = 2k. The number after the underscore "_" of the weight coefficient indicates the next index range for the state variable. "0" is 1 to k. "1" is k+1 to 2k. "2" is 2k+1 to 3k. "3" is 3k+1 to 4k. "4" is 4k+1 to 5k. "5" is 5k+1 to 6k. "6" is 6k+1 to 7k. "7" is 7k+1 to 8k. For example, W_00 is {W ij This is the part where}(1≦i≦k,1≦j≦k).

[0096] In one example, window switching involves sliding the windows in the forward direction of the index; that is, forward sliding without window overlap. After exploring the last window, it returns to the first window.

[0097] The example in Figure 4 illustrates the case where the current window being searched is region #0, #1. In this case, the weight coefficients for the current window search loaded into internal memory 110 are W_00, W_10, W_01, and W_11. The next window will be region #2, #3.

[0098] The weight coefficients for the next window search are W_22, W_32, W_23, and W_33. The weight coefficients for local field updates corresponding to the next window are those from W_02, W_12, W_42, W_52, W_62, W_72, W_03, W_13, W_43, W_53, W_63, and W_73 that correspond to the state variables that have changed since the previous search.

[0099] Bit change information 300, state information 310, and local field information 320 are stored in the data storage unit 120. Here, the state information 310 is stored in the data storage unit 120 for each group or region of the state variables to be searched. The search unit 130 reads the local field of the state variables belonging to the current group from the local field information 320. The bit change information 300, state information 310, and local field information 320 are read from the DRAM 102 to the internal memory 110 as follows, depending on the switching of the subproblem.

[0100] First, once the search unit 130 has completed its search of the current window (region #0, #1), the memory control unit 150 outputs the state, local field, and bit changes after the search to the data storage unit 120. Then, the bit change information 300, the state information corresponding to the current window, and the local field information 320 held in the data storage unit 120 are updated (step ST1). Subsequently, data is read to the search unit 130 via the memory control unit 150.

[0101] Before performing a search on the next window (regions #2, #3), the search unit 130 reads the state, local field, and bit changes from the previous search on the next window from the data storage unit 120 (step ST2-1). The state on the previous search on the next window corresponds to the state information 310 saved immediately after the previous search on the next window. The bit change information 300 read from the data storage unit 120 is used by the data transfer control unit 160 to identify the weight coefficient to be read.

[0102] The search unit 130 reads the weight coefficients for updating the local field for the next window into the weight coefficient storage unit 131 and updates the local field of the state variables belonging to the next window based on equation (6) (step ST2-2). At this time, the search unit 130 reads the weight coefficients corresponding to the state variables whose values ​​have changed since the last search of the next window, based on the bit change information 300 and the state information 310, as the weight coefficients for updating the local field, and updates the local field. The weight coefficients for updating the local field read in step ST2-2 are the weight coefficients corresponding to the state variables whose values ​​have changed since the last search from among W_02, W_12, W_42, W_52, W_62, W_72, W_03, W_13, W_43, W_53, W_63, and W_73.

[0103] The search unit 130 reads the weight coefficients for the next window search (step ST2-3). The weight coefficients for the next window search are W_22, W_32, W_23, and W_33. The weight coefficients for local field updates that were stored in the weight coefficient storage unit 131 are overwritten.

[0104] The search unit 130 performs a search using the weight coefficients for the next window search stored in the weight coefficient storage unit 131 (step ST3). When the search is completed, the process returns to step ST1 and proceeds to the next window.

[0105] Figure 5 shows a first example of the weight coefficients to be read. The data transfer control unit 160 can identify state variables whose values ​​have changed since the last search of the next window, based on the bit change information 300. In the example in Figure 5, state variables whose values ​​have changed in the bit change information 300 are shown as black circles, and state variables whose values ​​have not changed are shown as white circles. Based on the bit change information 300, the data transfer control unit 160 reads only the rows of the weight coefficient matrix 200 that correspond to state variables whose values ​​have changed since the last search of the next window, from the group of weight coefficients related to the state variables of the next window, as weight coefficients for local field updates.

[0106] Figure 6 shows a second example of the weight coefficients to be read. Figure 6 illustrates a case where multiple replicas are used. A replica is a copy of the entire state. Each of the multiple replicas has N state variables and represents the state. The search unit 130 can, through pipeline processing, use the weight coefficients stored in the weight coefficient storage unit 131 to execute multiple solutions using the SA method in parallel for the multiple replicas, or it can execute the replica exchange method for the multiple replicas. The window processed in parallel for each replica is the same window.

[0107] In this case, the data storage unit 120 stores bit change information 301 for each replica, as well as bit change information 300a, which is the bitwise logical OR operation of the bit change information 301 for each replica. For example, when using four replicas #0 to #3, one bit change information 301 is stored for each replica, for a total of four. Bit change information 300a is the bitwise logical OR of the four bit change information 301.

[0108] The data transfer control unit 160 can identify state variables whose values ​​have changed since the last search of the next window across all replicas, based on the bit change information 300a. Based on the bit change information 300a, the data transfer control unit 160 reads only the rows of the weight coefficient matrix 200 corresponding to the state variables that have changed since the last search of the next window, from the group of weight coefficients related to the state variables of the next window, as weight coefficients for local field updates. In this case, the search unit 130 updates the local field for each replica based on the bit change information 301 of that replica and the state information after the last search related to the window being searched for that replica, according to the direction of change in the value of the changed state variable.

[0109] Next, we will describe the processing procedure performed by the Ising machine 100. The following example illustrates the case where the replica exchange method is used. Figure 7 is a flowchart showing an example of the search process of an Ising machine.

[0110] (S10) The overall control unit 140 initializes the search unit 130. (S11) The overall control unit 140 determines the next search area window. (S12) The data transfer control unit 160 uses the memory control unit 150 to perform data transfer for the search area window. The data transferred from the DRAM 102 to the internal memory 110 includes state information 310 for each replica, which indicates the values ​​of each state variable after the end of the previous search for the next search area window. The data also includes the local field of the state variables belonging to the search area window, and bit change information 300a, 301. In the example in Figure 6, the bit change information 301 is the bit change information for each of the four replicas. The bit change information 300a, 301 is stored, for example, in a register of the data transfer control unit 160.

[0111] (S13) Based on the bit change information 300a, the data transfer control unit 160 uses the memory control unit 150 to transfer the weight coefficients necessary for local field updates outside the search area window, i.e., the local field update weight coefficients, from the DRAM 102 to the internal memory 110.

[0112] (S14) The search unit 130 performs local field update processing. Details of the local field update processing will be described later. (S15) The search unit 130 determines whether or not the local field update is complete. If the local field update is complete, the process proceeds to step S16. If the local field update is not complete, the process proceeds to step S13. Here, the local field update weight coefficients may be read into the internal memory 110 multiple times for the local field update by the search unit 130. This is because the total size of the local field update weight coefficients may be larger than the available storage capacity of the weight coefficient storage unit 131 in the internal memory 110.

[0113] (S16) The data transfer control unit 160 uses the memory control unit 150 to transfer the weight coefficients of the search area window, i.e., the weight coefficients for the next window search, from the DRAM 102 to the internal memory 110.

[0114] (S17) The search unit 130 performs a search within the window. Details of the search within the window will be described later. (S18) The state change detection unit 170 performs state change detection processing. Details of the state change detection processing will be described later.

[0115] (S19) The data transfer control unit 160 uses the memory control unit 150 to transfer the search result data from the search unit 130 to the DRAM 102. As a result, the search result data is stored in the data storage unit 120. The search result data includes the latest state, local field, and bit change information 300a, 301 that reflect the current search results.

[0116] (S20) The overall control unit 140 determines whether the search is complete or not. If the search is complete, the search process ends. If the search is not complete, the process proceeds to step S11. For example, the overall control unit 140 determines that the search is complete after executing steps S11 to S19 a predetermined number of times or for a predetermined time. For example, when the search is complete, the overall control unit 140 outputs the solution with the minimum energy among the solutions obtained so far.

[0117] Figure 8 is a flowchart showing an example of a local field update process. The local field update process corresponds to step S14. (S30) The search unit 130 executes steps S31 to S34 for each replica. The number of replicas is R. As will be described later, the search unit 130 can execute steps S31 to S34 in a pipeline for each replica.

[0118] (S31) The search unit 130 obtains the bit change information 301 of the corresponding replica from the data transfer control unit 160. (S32) The search unit 130 determines whether the local field update process for all bit changes in the read area has been completed. If it has been completed, the process proceeds to step S35. If it has not been completed, the process proceeds to step S33.

[0119] (S33) The search unit 130 reads out the weight coefficients corresponding to the bit changes from the weight coefficient storage unit 131 based on the bit change information 301 of the corresponding replica. For example, the search unit 130 reads out one weight coefficient corresponding to the bit change in index order.

[0120] (S34) The search unit 130 performs a local field update calculation based on equation (6). The search unit 130 performs this local field update calculation in parallel for each state variable within the search region window. Then the process proceeds to step S32.

[0121] (S35) When the search unit 130 has completed updating the local field for all replicas, it terminates the local field update process. Figure 9 is a flowchart showing an example of window search processing.

[0122] The window search process corresponds to step S17. (S40) The overall control unit 140 sets the search parameters in the search unit 130. The search parameters include the temperature value used for the search and the total number of iterations T. Note that if step S40 is executed after step S50 described later, the temperature value has already been set, so it is not necessary to set the temperature value.

[0123] (S41) The search unit 130 repeatedly executes steps S42 to S48 for the number of iterations i. Here, the initial value of i is 0. i is incremented by 1 until the total number of iterations T is reached.

[0124] (S42) The search unit 130 executes steps S43 to S47 for each replica. The number of replicas is R. The search unit 130 can execute steps S43 to S47 in a pipeline for each replica.

[0125] (S43) The search unit 130 calculates ΔE for each state variable based on equation (3). The calculation of ΔE is performed in parallel for each state variable. (S44) The search unit 130 performs a bit acceptance determination based on equation (7).

[0126] (S45) The search unit 130 performs a flip bit selection based on the result of the bit acceptance determination. If there are multiple state variables that are allowed to change based on the result of the bit acceptance determination, the search unit 130 selects one of them, for example, using a random number.

[0127] (S46) The search unit 130 determines whether a bit flip is possible or not. If a bit flip is possible and a flip bit was selected in step S45, the process proceeds to step S47. If a bit flip is not possible, the process proceeds to step S48. For example, if there are no state variables that are allowed to change in the bit acceptance determination in step S44, the bit flip is not possible.

[0128] (S47) The search unit 130 performs a local field update. That is, the search unit 130 reflects the change in the value of the state variable to be flipped in the state, and updates the local field of the state variable in the current window using the weight coefficients for current window search stored in the weight coefficient storage unit 131.

[0129] (S48) Once the search unit 130 has completed processing the current iteration for all replicas, it proceeds to step S49. (S49) Once the search unit 130 has completed processing all iterations, it proceeds to step S50.

[0130] (S50) The search unit 130 performs a replica exchange process. This allows for the exchange of temperature values ​​or states between replicas, for example, based on a predetermined probability. (S51) The search unit 130 determines whether the window search process for the current window has finished. If the window search process for the current window has finished, the window search process ends. If the window search process for the current window has not finished, the process proceeds to step S40. For example, the search unit 130 determines that the window search process has finished after executing steps S40 to S50 a predetermined number of times or for a predetermined time.

[0131] Figure 10 is a flowchart showing an example of a state change detection process. The state change detection process corresponds to step S18. (S60) The state change detection unit 170 executes steps S61 and S62 for each replica. The number of replicas is R.

[0132] (S61) The state change detection unit 170 compares the state of the current window of the replica at the start of the search with the state at the end of the search. (S62) The state change detection unit 170 generates bit change information 301 for the corresponding replica according to the comparison result of step S61 and stores it in a predetermined storage area or register of the internal memory 110.

[0133] (S63) When the state change detection unit 170 has completed state change detection for all replicas, it terminates the state change detection process. (S64) The state change detection unit 170 generates bit change information 300a, which is the logical OR of the bit change information 301 of all replicas, and stores it in a predetermined storage area or register of the internal memory 110. Then the state change detection process ends.

[0134] In this way, the Ising machine 100 switches between multiple groups of state variables to be searched and performs a search using the replica exchange method for each group. When the SA method is executed in parallel with multiple replicas, in step S50, instead of the replica exchange process, a process to lower the temperature value is executed on each replica. Also, when the SA method is executed with a single replica, R=1 should be set in the procedure shown in Figures 8 to 10.

[0135] Furthermore, when executing the SA method, the processor 101 may perform a procedure from the initial temperature to the final temperature, where, after completing the search for all search area windows at a certain temperature, it lowers the temperature and sequentially performs the search for all search windows again.

[0136] Next, we will explain other examples of window switching. First, we will explain an example where two windows overlap. Figure 11 shows an example where two windows overlap.

[0137] When two windows overlap, the memory control unit 150 can omit outputting data to the data storage unit 120 for the overlapping area. For example, if the current window is area #0, #1 and the next window is area #1, #2, data is read from the DRAM 102 to the internal memory 110 as follows in response to the window switch. In the example in Figure 11, bit change information 300 is used. When switching windows, the windows are slid in the forward direction of the index. That is, it is forward sliding with window overlap. After searching the last window, it returns to the first window. The weight coefficients for searching the current window are W_00, W_10, W_01, W_11.

[0138] First, once the search unit 130 has completed its search of the current window (regions #0 and #1), the memory control unit 150 outputs the state, local field, and bit changes after the search to the data storage unit 120. At this time, the memory control unit 150 only needs to output the state, local field, and bit changes related to region #0, and can omit outputting the state, local field, and bit changes related to region #1. Then, the bit change information 300, the state information for each region corresponding to the current window, and the local field information 320 held in the data storage unit 120 are updated (step ST1a).

[0139] Before performing a search of the next window (regions #1 and #2), the search unit 130 reads the state, local field, and bit changes from the previous search of the next window from the data storage unit 120 (step ST2a-1). At this time, the search unit 130 already holds the latest values ​​of each state variable for region #1 included in the next window. Therefore, the search unit 130 can omit reading the local field for region #1.

[0140] The search unit 130 reads the weight coefficients for local field updates related to region #2 of the next window into the weight coefficient storage unit 131 and updates the local fields of the state variables belonging to region #2 of the next window based on equation (6) (step ST2a-2). At this time, the search unit 130 can update the local fields by reading the weight coefficients corresponding to the state variables whose values ​​have changed since the last search of the next window, based on the bit change information 300 and the state information 310. Also, since the local fields of the state variables in region #1 of the next window are already up to date, the search unit 130 can omit updating the local fields of the state variables in region #1. The weight coefficients for local field updates read in step ST2a-2 are the weight coefficients corresponding to the state variables whose values ​​have changed since the last search of region #1, from among W_02, W_32, W_42, W_52, W_62, and W_72.

[0141] The search unit 130 reads the weight coefficients for the next window search. The weight coefficients for the next window search are W_11, W_21, W_12, and W_22. The weight coefficients for local field updates that were stored in the weight coefficient storage unit 131 are overwritten. Then, based on the weight coefficients for the next window search, the search unit 130 updates the local field of the state variable of region #2 in accordance with the change in the value of the state variable of region #1 due to the previous search (step ST2a-3). The direction of the change in the value of the state variable of region #1 due to the previous search is determined based on the bit change of region #1 detected by the state change detection unit 170 after the previous search and the state information of the previous search corresponding to region #2.

[0142] The search unit 130 performs a search using the weight coefficients for the next window search stored in the weight coefficient storage unit 131 (step ST3a). When the search is completed, the process returns to step ST1a and proceeds to the next window.

[0143] In this way, when windows overlap, the search unit 130 updates the local field using the weight coefficient for the next window search in step ST2a-3. This local field update is performed in step S16 of the flowchart in Figure 7. Alternatively, this local field update can be performed using the same procedure as in the flowchart in Figure 8.

[0144] Next, we will explain an example of randomly switching windows. Figure 12 shows an example of randomly switching windows. For example, if the current window is region #0,#1 and the randomly selected next window is region #4,#5, data is read from DRAM 102 to internal memory 110 as follows in response to the window switch. In the example in Figure 12, bit change information 300 is used. The weight coefficients for searching the current window are W_00, W_10, W_01, and W_11. Furthermore, before searching the current window (region #0,#1), the search is performed by sliding the window in the forward direction of the index from the first index to the last index, as shown in Figure 4.

[0145] First, once the search unit 130 has completed searching the current window, the memory control unit 150 outputs the state, local field, and bit changes after the search to the data storage unit 120. Then, the bit change information 300, state information for each region corresponding to the current window, and local field information 320 held in the data storage unit 120 are updated (step ST1b).

[0146] Before performing a search on the next window, the search unit 130 reads the state, local field, and bit changes of the next window (regions #4, #5) from the data storage unit 120 (step ST2b-1). The state of the next window at the time of the previous search corresponds to the state information 310 saved for the next window immediately after the previous search.

[0147] The search unit 130 reads the weight coefficients for local field updates for the next window into the weight coefficient storage unit 131 and updates the local fields of the state variables belonging to the next window based on equation (6) (step ST2b-2). At this time, the search unit 130 can update the local fields by reading the weight coefficients corresponding to the state variables whose values ​​have changed since the last search in regions #4 and #5 of the next window, based on the bit change information 300 and the state information 310, as the weight coefficients for local field updates. In the example in Figure 12, the state variables in regions #2 and #3 have not changed since the last search in the next window (regions #4 and #5), so the reading of the weight coefficients related to the state variables in regions #2 and #3 can be omitted. The weight coefficients for local field updates read in step ST2b-2 are the weight coefficients corresponding to the state variables whose values ​​have changed since the last search from among W_04, W_14, W_64, W_74, W_05, W_15, W_65, and W_75.

[0148] Here, as will be described later, the regions containing state variables whose values ​​have changed since the last search in regions #4 and #5 of the next window are managed by a predetermined flag (state flag). The search unit 130 reads the weight coefficients for the next window search (step ST2b-3). The weight coefficients for the next window search are W_44, W_54, W_45, and W_55. The weight coefficients for local field updates that were stored in the weight coefficient storage unit 131 are overwritten.

[0149] The search unit 130 performs a search using the weight coefficients for the next window search stored in the weight coefficient storage unit 131 (step ST3b). When the search is completed, the process returns to step ST1b and proceeds to the next window.

[0150] Next, we will explain an example of switching from area #4 and #5, which are the current windows, to the next windows corresponding to area #3 and #4. Figure 13 shows an example of randomly switching windows.

[0151] First, once the search unit 130 has completed its search of the current window (regions #4 and #5), the memory control unit 150 outputs the state, local field, and bit changes after the search to the data storage unit 120. At this time, the memory control unit 150 only needs to output the state, local field, and bit changes related to region #5, and can omit outputting the state, local field, and bit changes related to region #4, which overlaps with the next window (regions #3 and #4). Then, the bit change information 300, the state information for each region corresponding to the current window, and the local field information 320 held in the data storage unit 120 are updated (step ST1c).

[0152] Before performing a search of the next window (regions #3 and #4), the search unit 130 reads the state, local field, and bit changes from the previous search of the next window from the data storage unit 120 (step ST2c-1). At this time, the search unit 130 already holds the latest values ​​of each state variable for region #4 included in the next window. Therefore, the search unit 130 can omit reading the local field for region #4.

[0153] The search unit 130 reads the weight coefficients for local field updates related to region #3 of the next window into the weight coefficient storage unit 131 and updates the local fields of the state variables belonging to region #3 of the next window based on equation (6) (step ST2c-2). At this time, the search unit 130 can update the local fields by reading the weight coefficients corresponding to the state variables whose values ​​have changed since the last search in region #3 of the next window, based on the bit change information 300 and the state information 310. Furthermore, since the local fields of the state variables in region #4 of the next window are already up to date, the search unit 130 can omit updating the local fields of the state variables in region #4. The weight coefficients for local field updates read in step ST2c-2 are the weight coefficients corresponding to the state variables whose values ​​have changed since the last search from among W_03, W_13, W_23, W_53, W_63, and W_73.

[0154] Here, as will be described later, the region containing a state variable whose value has changed since the last search in region #3 of the next window is identified by a predetermined flag (state flag). The search unit 130 reads the weight coefficients for the next window search. The weight coefficients for the next window search are W_33, W_43, W_34, and W_44. The weight coefficients for local field updates that were stored in the weight coefficient storage unit 131 are overwritten. Then, based on the weight coefficients for the next window search, the search unit 130 updates the local field of the state variable of region #3 in accordance with the change in the value of the state variable of region #4 due to the previous search (step ST2c-3). The direction of the change in the value of the state variable of region #4 due to the previous search is determined based on the bit change of region #4 detected by the state change detection unit 170 after the previous search and the state information of the previous search corresponding to region #3.

[0155] The search unit 130 performs a search using the weight coefficients for the next window search stored in the weight coefficient storage unit 131 (step ST3c). When the search is completed, it returns to step ST1c and proceeds to the processing of the next window.

[0156] Thus, the search unit 130 may randomly switch windows, and the windows before and after the switch may overlap. In the random switching process shown in Figures 12 and 13, a state flag is used to manage other regions that have undergone bit changes since the last search of a given region. Next, the state flag will be explained.

[0157] Figure 14 shows an example of a state flag used for random switching. A status flag is provided for each region and is held in a predetermined storage area or register of the internal memory 110. The status flag is updated, for example, by the state change detection unit 170 and used by the data transfer control unit 160 to identify the weight coefficient of the data to be read.

[0158] The status flags include the current status flag 500 and other area status flags 600, 601, 602, 603, 604, 605, 606, and 607. The current state flag 500 holds a count value indicating the number of times each region #0 to #7 has been explored. The other region state flags 600 to 607 hold a count value indicating the number of times each region #0 to #7 has been explored immediately after the previous exploration of the corresponding region.

[0159] Other-domain status flag 600 corresponds to domain #0. Other-domain status flag 601 corresponds to domain #1. Other-domain status flag 602 corresponds to domain #2. Other-domain status flag 603 corresponds to domain #3. Other-domain status flag 604 corresponds to domain #4. Other-domain status flag 605 corresponds to domain #5. Other-domain status flag 606 corresponds to domain #6. Other-domain status flag 607 corresponds to domain #7.

[0160] The numbers "0" through "7" listed in the current state flag 500 and other region state flags 600 to 607 represent region numbers. In the example of current state flag 500 and other region state flags 600 to 607 in Figure 14, the count value of the region corresponding to the hatched area with diagonal lines is the smallest. The count value of the region corresponding to the white area is the count value of the hatched area with diagonal lines plus 1. The count value of the region corresponding to the hatched area with dots is the count value of the white area plus 1.

[0161] Figure 14 shows the current state flag 500 and the other region state flags 600-607 when switching from region #0, #1 to region #4, #5 as exemplified in Figure 12. In the example in Figure 12, as mentioned above, before searching the current window (region #0, #1), the search was performed by sliding the window in the forward direction of the index from the first index to the last index, as shown in Figure 4.

[0162] When switching from regions #0 and #1 to regions #4 and #5, the other-region status flags 600 and 601 of regions #0 and #1 will match the current status flag 500. For example, the count value of regions #0 and #1 will be "2", and the count value of regions #2 through #7 will be "1". On the other hand, the other-region status flags 604 and 605 of regions #4 and #5 will show that the count value of regions #0 through #5 will be "1", and the count value of regions #6 and #7 will be "0".

[0163] When the data transfer control unit 160 selects regions #4 and #5 as the next window, it compares the current state flag 500 with the state flags 604 and 605 of other regions to identify regions where the count value of the current state flag 500 is greater than the count values ​​of the state flags 604 and 605 of other regions. The data transfer control unit 160 then controls the memory control unit 150 via the overall control unit 140 to read the weight coefficients corresponding to the identified regions from the DRAM 102. When switching from regions #0 and #1 to regions #4 and #5, it is sufficient to read the weight coefficients corresponding to the state variables whose values ​​have changed since the last search of regions #4 and #5, from among the weight coefficients corresponding to regions #0, #1, #6, and #7.

[0164] Next, Figure 14 shows the current state flag 500 and the other region state flags 600-607 when switching from regions #4 and #5 to regions #3 and #4, as illustrated in Figure 13. When switching from areas #4 and #5 to areas #3 and #4, the current state flag 500 increments the count values ​​of areas #4 and #5 by 1, and the state flags 604 and 605 of other areas become the same as the current state flag 500. Specifically, the count values ​​of areas #0, #1, #4, and #5 become "2", and the count values ​​of areas #2, #3, #6, and #7 become "1".

[0165] On the other hand, in the other-domain state flag 603 of region #3, the count value for regions #0 to #3 becomes "1", and the count value for regions #4 to #7 becomes "0". When switching from regions #4 and #5 to regions #3 and #4, the data transfer control unit 160 compares the current state flag 500 with the other-domain state flag 603. The data transfer control unit 160 then reads the weight coefficients corresponding to the state variables in region #3 whose values ​​have changed since the last search, from among the weight coefficients corresponding to regions #0, #1, #5, #6, and #7. The weight coefficients corresponding to regions #0, #1, #5, #6, and #7 are used to update the local field of the state variables in region #3. As for region #4, the search unit 130 already holds the latest local field, so the update of that local field can be omitted. Furthermore, when the search unit 130 reads the weight coefficients corresponding to regions #3 and #4 as weight coefficients for the next window search, it updates the local field of the state variable in region #3 according to the bit changes in the previous search of region #4, and starts searching the next window (regions #3 and #4).

[0166] Next, we will explain examples of local field updates using each of the window switching methods described above. Figure 15 shows an example of a forward slide without overlap. In the example in Figure 15, one region corresponds to one window. In this case, for example, when searching region #0, based on the bit change information 300 and the state information 310 corresponding to region #0, the bits that have changed in regions #1 to #7 since the previous search of region #0, i.e., the weight coefficients corresponding to the state variables, are read into the internal memory 110. Then, the local field corresponding to region #0 is updated according to the changed bits. After that, the weight coefficients related to region #0 are read into the internal memory 110, and the search for region #0 is performed. Note that of the local field information 320 held in the data storage unit 120, only the local field related to region #0 is read into the internal memory 110. When searching for other regions thereafter, only the local field related to the region being searched is read into the internal memory 110.

[0167] Next, during the search for region #1, based on the bit change information 300 and the state information 310 corresponding to region #1, weight coefficients corresponding to the bits that have changed in regions #0, #2 to #7 since the last search for region #1 are loaded into the internal memory 110. Then, the local field corresponding to region #1 is updated according to the changed bits. After that, the weight coefficients related to region #1 are loaded into the internal memory 110, and the search for region #1 is performed.

[0168] From this point onward, the window slides in a similar manner, and the search is performed. For example, when searching for region #5, based on the bit change information 300 and the state information 310 corresponding to region #5, the weight coefficients corresponding to the bits that have changed in regions #0 to #4, #6, and #7 since the previous search for region #5 are loaded into the internal memory 110. Then, the local field corresponding to region #5 is updated according to the changed bits. After that, the weight coefficients related to region #5 are loaded into the internal memory 110, and the search for region #5 is performed.

[0169] Figure 16 shows an example of a forward slide with overlap. In Figure 16, two adjacent regions, such as region #0 / 1, correspond to one window. Here, the notation region #0 / 1 indicates a combination of regions #0 and #1. Region #7 / 0 also constitutes one window. One region overlaps between a given window and the next window created by forward sliding.

[0170] For example, during a search of region #0 / 1, based on the bit change information 300 and the state information 310 corresponding to region #1, weight coefficients corresponding to the bits that have changed in regions #2 to #7 since the last search of region #1 are loaded into the internal memory 110. Then, the local field corresponding to region #1 is updated according to the changed bits. Furthermore, once the weight coefficients for the search of region #0 / 1 are loaded into the internal memory 110, the local field related to region #1 is updated according to the bit changes in region #0 in the previous search. That is, the changes from the previous search are reflected in the local field of region #1, which is an additional region. After that, the search of region #0 / 1 is performed.

[0171] Next, during the search of region #1 / 2, based on the bit change information 300 and the state information 310 corresponding to region #2, weight coefficients corresponding to the bits that have changed in region #2 since the previous search among regions #0, #3 to #7 are loaded into the internal memory 110. Then, the local field corresponding to region #2 is updated according to the changed bits. Furthermore, once the weight coefficients for the search of region #1 / 2 are loaded into the internal memory 110, the local field related to region #2 is updated according to the bit changes in region #1 in the previous search. After that, the search of region #1 / 2 is performed.

[0172] Next, during the search of region #2 / 3, based on the bit change information 300 and the state information 310 corresponding to region #3, weight coefficients corresponding to the bits that have changed in region #3 since the previous search among regions #0, #1, #4~#7 are loaded into the internal memory 110. Then, the local field corresponding to region #3 is updated according to the changed bits. Furthermore, once the weight coefficients for the search of region #2 / 3 are loaded into the internal memory 110, the local field related to region #3 is updated according to the bit changes in region #2 in the previous search. After that, the search of region #2 / 3 is performed.

[0173] From this point onward, the window slides in a similar manner, and the search continues. Figure 17 shows an example of random switching. In the example in Figure 17, one region corresponds to one window. Furthermore, it is assumed that a forward sliding search was performed on regions #0 through #7 before reaching region #0 in Figure 17. Then, region #0 is searched again, followed by a random switching of the search regions.

[0174] In this case, when searching for region #0, regions #1 to #7 that have changed since the last search for region #0 are identified based on a comparison of the current state flag 500 and the state flags 600 of other regions. Then, based on the bit change information 300 and the state information 310 corresponding to region #0, weight coefficients corresponding to the bits that have changed in regions #1 to #7 since the last search for region #0 are loaded into the internal memory 110. Furthermore, the local field corresponding to region #0 is updated according to the changed bits. After that, the weight coefficients related to region #0 are loaded into the internal memory 110, and the search for region #0 is performed.

[0175] Next, the search target area shifts to area #3. During the search of area #3, areas #0, #4~#7 that have changed since the last search of area #3 are identified based on a comparison of the current state flag 500 and the state flags 603 of other areas. Then, based on the bit change information 300 and the state information 310 corresponding to area #3, the weight coefficients corresponding to the bits that have changed in areas #0, #4~#7 since the last search of area #3 are loaded into the internal memory 110. Furthermore, the local field corresponding to area #3 is updated according to the changed bits. After that, the weight coefficients related to area #3 are loaded into the internal memory 110, and the search of area #3 is performed.

[0176] Next, the search target area shifts to area #2. During the search of area #2, areas #0, #3 to #7 that have changed since the last search of area #2 are identified based on a comparison of the current state flag 500 and the state flags 602 of other areas. Then, based on the bit change information 300 and the state information 310 corresponding to area #2, the weight coefficients corresponding to the bits that have changed in areas #0, #3 to #7 since the last search of area #2 are loaded into the internal memory 110. Furthermore, the local field corresponding to area #2 is updated according to the changed bits. After that, the weight coefficients related to area #2 are loaded into the internal memory 110, and the search of area #2 is performed.

[0177] From this point onward, the window, or the area being searched, is randomly switched, and the search continues. Next, we will explain an example of performing the local field update shown in Figure 8 on multiple replicas using a pipeline.

[0178] Figure 18 shows an example of pipeline processing for local field updates of multiple replicas. The time chart 700 shows an example of pipeline processing the local field update procedure in Figure 8 using R replicas. In the local field update, weight coefficients for state variables that have changed since the previous update are read into the internal memory 110, and as shown in equation (6), W is applied to the local field h. ij Δx j The update of h is performed by adding this value. Normally, the number of state variables that have changed varies depending on the replica, so the number of cycles required for the local field update process, i.e., the number of repetitions of steps S32 to S34, varies for each replica.

[0179] Time Chart 700 shows an example where, for simplicity, the pipeline delay has 4 stages, and the acquisition of the local field in the 3rd stage is processed at the same time as the reading of the weight coefficients in the 2nd stage. The generation of the weight coefficient memory address in the 1st stage is the process of calculating the address of the weight coefficient to be read from the bit change information 300. The reading of the weight coefficient in the 2nd stage is the process of obtaining the weight coefficient from the internal memory 110 based on the calculated address. The reading of the local field in the 3rd stage is the process of obtaining the local field of the corresponding replica from the internal memory 110. The local field update in the 4th stage is the process of applying W to the acquired local field. ij Δx j This process updates the local field by adding to it. The fifth stage of writing to the local field is the process of writing the updated local field to the internal memory 110.

[0180] In each stage of the pipeline, the search unit 130 moves on to processing the next replica after completing processing for a given replica. In this way, the local field updates of multiple replicas are accelerated. Next, we will explain an example of a memory map of weight coefficients in DRAM102.

[0181] Figure 19 shows an example of a memory map of weight coefficients on DRAM. Figure 19(A) shows a two-dimensional logical image of the weight coefficient matrix 200. Figure 19(B) shows the memory map 800 of DRAM 102. In the example in Figure 19, one data point for the weight coefficient is 4 bytes, and the problem size, i.e., the total number of state variables, is 8K (kilo) bits.

[0182] For example, if the minimum granularity of the sliding window processing is set to 1Kbits, the area unit of the 2D logical image of the weight coefficients will be treated as 1K × 1K. The weight coefficient data required for local field updates consists of one row of data from the weight coefficient matrix 200 that corresponds to the changed state variable. Therefore, one row of data from the smallest granularity of 1K×1K, i.e., 4Bytes×1024=4KBytes, is arranged on the memory map 800 so that it can be read in bursts.

[0183] The (x,y) notation in the memory map 800 represents the x,y coordinate index in the 1K×1K units of the weight coefficient matrix 200. For example, to read 2K bits of weight coefficients consisting of 0s and 1s, the necessary data is read from the region (0,0)+(0,1),(1,0)+(1,1),...,(7,0)+(7,1). This memory map 800 makes it possible to efficiently read only the weight coefficients necessary for updating the local field from the DRAM 102.

[0184] Incidentally, the Ising machine 100 can be incorporated into and used in an information processing system. Next, an example of an information processing system having the Ising machine 100 will be described. Figure 20 shows an example of an information processing system.

[0185] The information processing system 900 includes a CPU 901, DRAM 902, HDD 903, GPU 904, input interface 905, media reader 906, communication interface 907, and Ising machine 100. These units of the information processing system 900 are connected to a bus inside the information processing system 900.

[0186] The CPU 901 is a processor that executes program instructions. The CPU 901 loads at least a portion of the programs and data stored in the HDD 903 into the DRAM 902 and executes the program. The CPU 901 may include multiple processor cores. The information processing system 900 may also have multiple processors. The processes described below may be executed in parallel using multiple processors or processor cores. A collection of multiple processors is sometimes referred to as a "multiprocessor" or simply a "processor."

[0187] DRAM902 is a volatile semiconductor memory that temporarily stores programs executed by the CPU901 and data used by the CPU901 for calculations. The information processing system 900 may also be equipped with other types of memory, and may be equipped with multiple types of memory.

[0188] HDD903 is a non-volatile storage device that stores software programs such as the OS (Operating System), middleware, and application software, as well as data. The information processing system 900 may also be equipped with other types of storage devices such as flash memory or SSDs (Solid State Drives), and may be equipped with multiple non-volatile storage devices.

[0189] The GPU 904 outputs an image to the display 911 connected to the information processing system 900, according to instructions from the CPU 901. Any type of display can be used as the display 911, such as a CRT (Cathode Ray Tube) display, an LCD (Liquid Crystal Display), a plasma display, or an organic electro-luminescence (OEL) display.

[0190] The input interface 905 acquires input signals from the input device 912 connected to the information processing system 900 and outputs them to the CPU 901. The input device 912 can be a pointing device such as a mouse, touch panel, touchpad, or trackball, as well as a keyboard, remote controller, or button switch. Furthermore, multiple types of input devices may be connected to the information processing system 900.

[0191] The media reader 906 is a reading device that reads programs and data recorded on the recording medium 913. The recording medium 913 can be, for example, a magnetic disk, an optical disk, a magneto-optical disk (MO), or semiconductor memory. Magnetic disks include flexible disks (FD) and HDDs. Optical disks include CDs (Compact Discs) and DVDs (Digital Versatile Discs).

[0192] The media reader 906 copies programs and data read from the recording medium 913 to other recording media such as DRAM 902 or HDD 903. The read programs are executed by the CPU 901, for example. The recording medium 913 may be a portable recording medium and may be used for distributing programs and data. The recording medium 913 and HDD 903 are sometimes referred to as computer-readable recording media.

[0193] The communication interface 907 is connected to the network 914 and communicates with other information processing devices via the network 914. The communication interface 907 may be a wired communication interface connected to a wired communication device such as a switch or router, or a wireless communication interface connected to a wireless communication device such as a base station or access point.

[0194] In the information processing system 900, the Ising machine 100 is used as an accelerator that performs high-speed solution of combinatorial optimization problems according to instructions from the CPU 901. However, the CPU 901 may perform the same function as the Ising machine 100 by executing a program stored in the DRAM 902. In this case, for example, the cache memory of the CPU 901 may be used as internal memory, and the DRAM 902 may be used as a storage device that holds the entire set of weight coefficients.

[0195] For example, the information processing system 900 may be considered an example of the data processing device 10 of the first embodiment. Alternatively, when the processing of the Ising machine 100 of the second embodiment is executed by the CPU 901, the information processing device having the CPU 901, the CPU 901's cache memory and DRAM 902 can also be considered an example of the data processing device 10 of the first embodiment.

[0196] As described above, the Ising machine 100 of the second embodiment allows only the minimum data necessary for local field updates to be read when switching windows, thereby suppressing the overhead of data transfer and local field updates. Furthermore, by reusing the internal memory 110 for storing the weight coefficients of the search area, local field updates during window switching become possible without increasing the internal memory 110. In addition, it becomes possible to process multiple replicas efficiently in batches.

[0197] The Ising machine 100 in the second embodiment can also be said to perform the following processes. The processor 101 searches for a solution to a problem represented by an Ising model containing multiple state variables by switching between multiple groups into which the multiple state variables are divided. When the processor 101 switches the search target to the first group of the multiple groups, it obtains bit change information 300 indicating the state variables whose values ​​have changed since the previous search for the first group due to searches for other groups other than the first group. Based on the bit change information 300, the processor 101 reads the first weight coefficients corresponding to the pair of the state variable and each of the multiple first state variables belonging to the first group from the DRAM 102 which stores all the weight coefficients for the multiple state variables, and stores the read first weight coefficients in the internal memory 110. Based on the first weight coefficients stored in the internal memory 110, the processor 101 updates the local field for each of the multiple first state variables. The processor 101 reads the second weight coefficients corresponding to the pair of first state variables in the multiple first state variables from the DRAM 102 and stores the read second weight coefficients in the internal memory 110. The processor 101 uses the second weight coefficients stored in the internal memory 110 and the local fields of each of the multiple first state variables to perform a search on the first group. When the processor 101 finishes the search on the first group, it updates the change information according to whether or not the values ​​of each of the multiple first state variables have changed as a result of this search, and switches the search target to the next group.

[0198] This allows for efficient switching of the group of state variables being searched. For example, without using bit change information 300, switching subproblems, i.e., switching the group being searched, would require reading a relatively large number of weight coefficients for the calculation of equations (10) and (11). On the other hand, by using bit change information 300, only the minimum weight coefficients necessary for local field updating can be read from DRAM 102 at the time of the switch, reducing the overhead of reading weight coefficients and updating local field associated with switching the group being searched. As a result, the problem-solving performance of the Ising machine 100 is improved. For example, the time required for solving can be shortened. Also, the possibility of obtaining a better solution in a relatively short time can be increased. Furthermore, by reusing the weight coefficient storage area of ​​the internal memory 110, i.e., the weight coefficient storage unit 131, local field updates during switching can be performed without increasing the size of the internal memory 110.

[0199] Note that the processor 101 is an example of the processing unit 12. The internal memory 110 is an example of the storage unit 11. The DRAM 102 is an example of the storage device 20. The bit change information 300 is an example of the change information 31.

[0200] Furthermore, some state variables belonging to the first group and the second group, which was explored immediately before the first group, may overlap. In this case, the processor 101 stores the second weight coefficient in the internal memory 110, and then updates the local field of some other state variables in the first group that do not overlap with those in the second group, based on the second weight coefficient stored in the internal memory 110 and the changes in the values ​​of the state variables included in the previous exploration of some state variables in the second group.

[0201] This allows for the appropriate updating of local fields corresponding to the portion of the multiple first state variables that does not overlap with the multiple second state variables. Furthermore, it enables flexible configuration of the groups targeted for solution search.

[0202] Furthermore, the processor 101 may select the next group of targets to be searched in a predetermined order or randomly. This allows for flexible configuration of the groups to be searched for. In this case, for example, information including bit change information 300, current state flag 500, and other region state flags 600-607 can be considered an example of change information 31. The predetermined order is, for example, an order corresponding to the index of the state variable, such as ascending or descending order. The number of groups to be searched at one time may be one or two or more.

[0203] Furthermore, DRAM 102 may store bit change information 300, the local field of each of the multiple state variables, and state information 310 indicating the values ​​of the multiple first state variables after the previous search for the first group. In this case, when the processor 101 performs a search for the first group, it reads the bit change information 300, the local field of each of the multiple first state variables, and the state information 310 from DRAM 102 into the internal memory 110. Based on the direction of change of the state variable values ​​identified from the bit change information 300 and state information 310, and the direction of change of the state variables of other groups whose values ​​have changed since the previous search for the first group, and the first weight coefficient, the processor 101 updates the local field of each of the multiple first state variables. When the processor 101 finishes the search for the first group, it updates the bit change information 300 stored in DRAM 102 according to whether or not the values ​​of each of the multiple first state variables have changed as a result of this search. Furthermore, the processor 101 stores the local fields of each of the multiple first state variables after the current search, as well as the state information 310 after the current search, in the DRAM 102. The state information 310 after the current search is the latest value of the multiple state variables that reflect the results of the current search.

[0204] This reduces the amount of data stored in the internal memory 110. In particular, it eliminates the need to store state information from the previous search corresponding to the local field and the entire search target region for all state variables in the internal memory 110, thereby saving storage capacity in the internal memory 110.

[0205] Furthermore, when the processor 101 performs a search for the first group against multiple replicas, each of which represents multiple state variables, it may determine the first weight coefficient to read from the DRAM 102 based on the logical OR of the bit change information 301 of each of the multiple replicas. The logical OR of the bit change information 301 corresponds to the bit change information 300a.

[0206] This improves the efficiency of reading the first weight coefficient from DRAM102 for multiple replicas. For example, it can speed up the reading process compared to reading the first weight coefficient individually for each replica.

[0207] The information processing in the first embodiment may be implemented by having the processing unit 12 execute a program. The information processing in the second embodiment may also be implemented by having the CPU 901 execute a program. The program can be recorded on a computer-readable recording medium 913.

[0208] For example, a program can be distributed by distributing a recording medium 913 on which the program is stored. Alternatively, the program may be stored on another computer and distributed via a network. A computer may, for example, store (install) a program stored on the recording medium 913 or a program received from another computer into a storage device such as a DRAM 902 or HDD 903, and then read and execute the program from that storage device. [Explanation of Symbols]

[0209] 10 Data Processing Devices 11 Storage section 12 Processing Units 20 Storage device 21. Weighting coefficient information 31 Change Information 32 State Information 33 Local Field Information

Claims

1. Memory unit and, The system includes a processing unit that searches for a solution to a problem represented by an Ising model containing multiple state variables by switching between multiple groups into which the multiple state variables are divided, The aforementioned processing unit, When switching the search target to the first group among the multiple groups, Based on change information indicating that the value of a state variable has changed due to the search for other groups other than the first group after the previous search for the first group, a first weight coefficient corresponding to each pair of the state variable and each of the multiple first state variables belonging to the first group is read from the storage device that stores all of the weight coefficients for the multiple state variables, and the read first weight coefficient is stored in the storage unit. Based on the first weight coefficients stored in the memory unit, the local fields of each of the plurality of first state variables are updated. The second weight coefficients corresponding to pairs of the first state variables in the plurality of first state variables are read from the storage device, and the read second weight coefficients are stored in the storage unit. Using the second weight coefficients stored in the memory unit and the local fields of each of the plurality of first state variables, the search for the first group is performed. When the search for the first group is completed, Depending on whether or not the values ​​of each of the multiple first state variables have changed as a result of the current search, the change information is updated and the search target is switched to the next group. Data processing device.

2. Some of the state variables belonging to the first group and the second group, which was searched immediately before the first group, overlap. When the processing unit stores the second weight coefficient in the storage unit, it updates the local field of some of the state variables in the first group that do not overlap with the second group, based on the second weight coefficient stored in the storage unit and the change in the value of the state variables included in the some of the state variables in the previous search for the second group. The data processing device according to claim 1.

3. The processing unit selects the next group of search targets in a predetermined order or randomly. The data processing device according to claim 1.

4. The storage device stores the change information, the local field of each of the plurality of state variables, and state information indicating the values ​​of the plurality of state variables after the previous search for the first group. The aforementioned processing unit, When performing the search for the first group, the change information, the local field of each of the plurality of first state variables, and the state information are read from the storage device to the storage unit, and the local field of each of the plurality of first state variables is updated based on the direction of change of the values ​​of the state variables of the other group and the first weight coefficient, which are identified from the change information and the state information. When the search for the first group is completed, the change information stored in the storage device is updated according to whether or not the value of each of the multiple first state variables has changed as a result of the search, and the local fields of each of the multiple first state variables after the search and the state information after the search are stored in the storage device. The data processing device according to claim 1.

5. When the processing unit performs the search for the first group on a plurality of replicas, each of which represents the plurality of state variables, it identifies the first weight coefficient to be read from the storage device based on the logical OR of the change information of each of the plurality of replicas. The data processing device according to claim 1.

6. The data processing device When searching for a solution to a problem represented by an Ising model that includes multiple state variables, by switching between multiple groups into which the multiple state variables are divided, when switching the target of the search to the first group among the multiple groups, Based on change information indicating that the value of a state variable has changed due to the search for other groups other than the first group after the previous search for the first group, the first weight coefficient corresponding to each pair of the state variable and each of the multiple first state variables belonging to the first group is read from the storage device that stores all of the weight coefficients for the multiple state variables, and the read first weight coefficient is stored in the storage unit. Based on the first weight coefficients stored in the memory unit, the local fields of each of the plurality of first state variables are updated. The second weight coefficients corresponding to pairs of the first state variables in the plurality of first state variables are read from the storage device, and the read second weight coefficients are stored in the storage unit. Using the second weight coefficients stored in the memory unit and the local fields of each of the plurality of first state variables, the search for the first group is performed. When the search for the first group is completed, Depending on whether or not the values ​​of each of the multiple first state variables have changed as a result of the current search, the change information is updated and the search target is switched to the next group. Data processing method.

7. On the computer, When searching for a solution to a problem represented by an Ising model that includes multiple state variables, by switching between multiple groups into which the multiple state variables are divided, when switching the target of the search to the first group among the multiple groups, Based on change information indicating that the value of a state variable has changed due to the search for other groups other than the first group after the previous search for the first group, the first weight coefficient corresponding to each pair of the state variable and each of the multiple first state variables belonging to the first group is read from the storage device that stores all of the weight coefficients for the multiple state variables, and the read first weight coefficient is stored in the storage unit. Based on the first weight coefficients stored in the memory unit, the local fields of each of the plurality of first state variables are updated. The second weight coefficients corresponding to pairs of the first state variables in the plurality of first state variables are read from the storage device, and the read second weight coefficients are stored in the storage unit. Using the second weight coefficients stored in the memory unit and the local fields of each of the plurality of first state variables, the search for the first group is performed. When the search for the first group is completed, Depending on whether or not the values ​​of each of the multiple first state variables have changed as a result of the current search, the change information is updated and the search target is switched to the next group. A program that executes a process.