WO2020054061A1 - 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム - Google Patents

最適化装置、最適化装置の制御方法および最適化装置の制御プログラム Download PDF

Info

Publication number
WO2020054061A1
WO2020054061A1 PCT/JP2018/034233 JP2018034233W WO2020054061A1 WO 2020054061 A1 WO2020054061 A1 WO 2020054061A1 JP 2018034233 W JP2018034233 W JP 2018034233W WO 2020054061 A1 WO2020054061 A1 WO 2020054061A1
Authority
WO
WIPO (PCT)
Prior art keywords
bit
bits
unit
scale
optimization device
Prior art date
Application number
PCT/JP2018/034233
Other languages
English (en)
French (fr)
Inventor
健 三品
義政 谷
聡 松浦
Original Assignee
富士通株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to JP2020546656A priority Critical patent/JP7004937B2/ja
Priority to EP18933180.4A priority patent/EP3852028A4/en
Priority to CA3109735A priority patent/CA3109735A1/en
Priority to PCT/JP2018/034233 priority patent/WO2020054061A1/ja
Publication of WO2020054061A1 publication Critical patent/WO2020054061A1/ja
Priority to US17/179,458 priority patent/US11886780B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/27Design optimisation, verification or simulation using machine learning, e.g. artificial intelligence, neural networks, support vector machines [SVM] or training a model
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/08Computing arrangements based on specific mathematical models using chaos models or non-linear system models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/06Power analysis or power optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Definitions

  • the present invention relates to an optimization device, a control method of the optimization device, and a control program of the optimization device.
  • an optimization device (sometimes called an Ising machine or a Boltzmann machine) using an Ising-type energy function.
  • the optimization device performs the calculation by replacing the problem to be calculated with an Ising model, which is a model representing the behavior of the spin of the magnetic material.
  • the optimization device can be modeled using, for example, a neural network.
  • each of a plurality of bits (spin bits) corresponding to a plurality of spins included in the Ising model includes a weight coefficient (also referred to as a coupling coefficient) indicating the magnitude of the interaction between the other bit and its own bit.
  • the optimizer uses, for example, a probabilistic search method such as simulated annealing to obtain the minimum value (referred to as energy) of the value of the energy function (also referred to as a cost function or an objective function). A combination of values is obtained as a solution.
  • the semiconductor system searches for a ground state of an Ising model using a semiconductor chip on which a plurality of unit elements corresponding to spins are mounted.
  • the semiconductor system when realizing a semiconductor chip that can cope with a large-scale problem, the semiconductor system is constructed using a plurality of semiconductor chips on which a certain number of unit elements are mounted.
  • the number of spin bits used (corresponding to the scale of the problem) and the number of bits of the weighting coefficient (corresponding to the accuracy of the conditional expression in the problem) can vary depending on the problem to be solved. For example, in some field problems, a relatively large number of spin bits may be used and a relatively small number of bits for the weighting factor may be required. On the other hand, in other fields, the number of spin bits may be relatively small, but the number of bits of the weight coefficient may be relatively large. However, it is inefficient to manufacture an optimization device having the number of spin bits and the number of bits of the weight coefficient suitable for each problem individually for each problem.
  • an object of the present invention is to provide an optimization device, a control method of the optimization device, and a control program of the optimization device that can change the scale and accuracy.
  • an optimization device includes a storage unit, a plurality of bit operation circuits, a selection circuit unit, and a setting change unit.
  • the storage unit stores a coefficient indicating a magnitude of interaction between bits in a bit string representing a state of the Ising model.
  • Each of the plurality of bit operation circuits calculates the energy change of the Ising model using a coefficient corresponding to the inverted bit read from the storage unit and the own bit when any bit of the bit string is inverted. Outputs a signal indicating whether or not the own bit can be inverted.
  • the selection circuit unit outputs a signal indicating a bit to be inverted in the bit string selected based on the signal indicating whether or not inversion is possible, which is output from each of the bit operation circuits having the first number of bits in the bit string among the plurality of bit operation circuits, Output to each of the bit operation circuits of the first number of bits.
  • the setting change unit changes the first number of bits for the selection circuit unit, and changes the second number of bits of the coefficient for each of the bit operation circuits of the first number of bits.
  • an optimization device has an input unit, a conversion unit, a control unit, and a display unit.
  • the input unit inputs a problem to be solved and operating conditions.
  • the conversion unit converts the input problem into a search problem for the ground state of the Ising model, scale information indicating the scale of the search problem, accuracy information indicating the accuracy of expression of the search problem, and an initial value of the energy of the search problem. Is generated, and scale accuracy mode information corresponding to scale and accuracy is generated.
  • the control unit inputs the scale information, the accuracy information, and the energy information, inputs the operation condition and the scale accuracy mode information, executes a calculation for searching for a ground state, and outputs a solution.
  • the display unit displays a solution obtained as a result of the search for the ground state by the control unit.
  • a control method for an optimization device is provided.
  • a control program for an optimization device is provided.
  • FIG. 14 is a diagram illustrating an example of an information processing system according to a second embodiment.
  • FIG. 3 is a block diagram illustrating an example of hardware of an information processing device.
  • FIG. 3 is a diagram illustrating an example of a hardware relationship in the information processing system.
  • FIG. 3 is a block diagram illustrating a hardware example of a control unit. It is a figure showing an example of a combination optimization problem. It is a figure showing the example of search of the binary value used as the minimum energy. It is a figure showing the example of circuit composition of an optimization device.
  • FIG. 3 is a diagram illustrating a circuit configuration example of a random selector unit.
  • FIG. 6 is a diagram illustrating an example of a trade-off relationship between scale and accuracy. It is a figure showing the example (the 1) of storage of a weight coefficient. It is a figure showing the example (the 2) of storage of a weight coefficient. It is a figure showing the example (the 3) of storage of a weight coefficient. It is a figure showing the example (the 4) of storage of a weight coefficient.
  • 9 is a flowchart illustrating an example of an initialization process. It is a flowchart which shows the example of a calculation process. It is a figure showing the example (the 5) of storing of a coupling coefficient.
  • FIG. 14 is a diagram illustrating an example of an optimization device according to a third embodiment. FIG.
  • FIG 3 is a diagram illustrating a circuit configuration example of an LFB. It is a figure showing the example of circuit composition of a scale combination circuit. It is a figure which shows the example of the required range of the scale / accuracy for every problem. It is a figure showing an example of a selectable range of scale accuracy. It is a figure showing an example of a use pattern of LFE. It is a figure showing an example of a utilization flow of an optimization device.
  • FIG. 1 is a diagram illustrating the optimization device according to the first embodiment.
  • the optimization apparatus 1 has a minimum energy function among combinations (states) of values of a plurality of bits (spin bits) corresponding to a plurality of spins included in the Ising model obtained by converting the problem to be calculated. The value of each bit at that time (ground state) is searched.
  • the Ising-type energy function E (x) is defined, for example, by the following equation (1).
  • the first term on the right-hand side is the product of the product of the two-bit value (0 or 1) and the coupling coefficient for all combinations of two bits that can be selected from all bits included in the Ising model, without omission and duplication. It is.
  • the total number of bits included in the Ising model is K (K is an integer of 2 or more). Further, each of i and j is an integer of 0 or more and K-1 or less.
  • x i is a variable representing the i-th value of the bit (also referred to as state variables).
  • x j is a variable representing the value of the j-th bit.
  • the second term on the right-hand side is the sum of the products of the bias coefficients of all the bits and the values of the bits.
  • b i represents the bias coefficient of the i-th bit.
  • h i is called a local field (local field), the formula (3).
  • the optimization device 1 is, for example, a one-chip semiconductor integrated circuit, and is realized using an FPGA (Field Programmable Gate Array) or the like.
  • the optimization apparatus 1 includes bit operation circuits 1a1,..., 1aK,..., 1aN (a plurality of bit operation circuits), a selection circuit unit 2, a threshold value generation unit 3, a random number generation unit 4, a setting change unit 5, and a control unit 6.
  • N is the total number of bit operation circuits included in the optimization device 1.
  • N is an integer equal to or greater than K.
  • the bit operation circuits 1a1,..., 1aK,..., 1aN are unit elements that provide one bit included in a bit string representing the state of the Ising model.
  • the bit sequence may be called a spin bit sequence, a state vector, or the like.
  • Each of the bit operation circuits 1a1,..., 1aK,..., 1aN stores a weight coefficient between the own bit and another bit, and determines whether or not the own bit can be inverted according to the inversion of the other bit based on the weight coefficient. , Outputs a signal indicating whether or not its own bit can be inverted to the selection circuit unit 2.
  • the selection circuit unit 2 selects a bit (inversion bit) to be inverted from the spin bit string. Specifically, the selection circuit unit 2 outputs from each of the bit operation circuits 1a1,..., 1aK used for searching the ground state of the Ising model among the bit operation circuits 1a1,. The received signal indicating whether or not the inversion is possible is received. The selection circuit unit 2 preferentially selects one of the bit operation circuits 1a1,..., 1aK corresponding to the bit operation circuit that has output the invertible signal, and sets the selected bit as an inverted bit. For example, the selection circuit unit 2 selects the inverted bit based on the random number bit output from the random number generation unit 4.
  • the selection circuit unit 2 outputs a signal indicating the selected inverted bit to the bit operation circuits 1a1,..., 1aK.
  • the threshold generation unit 3 generates a threshold for each of the bit operation circuits 1a1,..., 1aK,. A signal indicating the threshold value is output to each of the bit operation circuits 1a1,..., 1aK,. As described later, the threshold generation unit 3 uses a parameter (temperature parameter) T indicating a temperature and a random number to generate the threshold.
  • the threshold generation unit 3 has a random number generator that generates the random number. It is preferable that the threshold generation unit 3 has a random number generator for each of the bit operation circuits 1a1,..., 1aK,..., 1aN, and individually generates and supplies a threshold. However, the threshold value generation unit 3 may share a random number generator with a predetermined number of bit operation circuits.
  • the random number generation unit 4 generates a random number bit and outputs it to the selection circuit unit 2.
  • the random number bits generated by the random number generation unit 4 are used by the selection circuit unit 2 to select an inverted bit.
  • the setting change unit 5 changes the first bit number (spin bit number) of the bit string (spin bit string) representing the state of the Ising model to be calculated among the bit operation circuits 1a1,..., 1aK,. . Further, the setting change unit 5 changes the second bit number of the weight coefficient for each of the bit operation circuits having the first bit number.
  • the control unit 6 sets the temperature parameter T and the weight coefficient for each of the storage units of the bit operation circuits 1a1,..., 1aN, and controls the start and end of the operation by the bit operation circuits 1a1,.
  • the control unit 6 outputs a calculation result. For example, when the operation using the bit operation circuits 1a1,..., 1aK ends, the control unit 6 reads and outputs the spin bit strings held in the bit operation circuits 1a1,.
  • the other bit operation circuits are also realized by the same circuit configuration (for example, the X-th (X is an integer of 1 or more and N or less) bit operation circuit).
  • index X-1
  • the bit operation circuit 1a1 includes a storage unit 11, an accuracy switching circuit 12, an inversion determination unit 13, a bit holding unit 14, an energy change calculation unit 15, and a state transition determination unit 16.
  • the storage unit 11 is, for example, a register or an SRAM (Static Random Access Memory).
  • the total number of weighting coefficients is K 2 with respect to the number of spin bits (first bit number) K.
  • the storage unit 11 requires K ⁇ L bits to store the weighting coefficients. Note that the storage unit 11 may be provided outside the bit operation circuit 1a1 and inside the optimization device 1 (the storage units of other bit operation circuits are the same).
  • the precision switching circuit 12 When any bit of the spin bit string is inverted, the precision switching circuit 12 reads a weight coefficient for the inverted bit from its own storage unit 11 (of the bit operation circuit 1a1), and outputs the read weight coefficient to an energy change calculation unit. 15 is output. That is, the precision switching circuit 12 receives the identification information of the inversion bit from the selection circuit unit 2, reads out the weight coefficient corresponding to the set of the inversion bit and the own bit from the storage unit 11, and outputs the weight coefficient to the energy change calculation unit 15. .
  • the precision switching circuit 12 reads the weight coefficient represented by the second number of bits set by the setting change unit 5.
  • the precision switching circuit 12 changes the second number of bits of the coefficient read from the storage unit 11 according to the change of the second number of bits by the setting change unit 5.
  • the precision switching circuit 12 has a selector that reads a bit string of a predetermined number of bits from the storage unit 11. If the predetermined number of bits read by the selector is larger than the second number of bits, the precision switching circuit 12 reads the unit bit string including the weight coefficient corresponding to the inverted bit by the selector, and reads the second bit from the read unit bit string. Extract a weighting factor represented by a number. Alternatively, when the predetermined number of bits read by the selector is smaller than the second number of bits, the precision switching circuit 12 combines the plurality of bit strings read by the selector and expresses the second bit number. Weighting coefficients may be extracted from the storage unit 11.
  • the inversion determining unit 13 inverts the bit stored in the bit holding unit 14. . That is, when the bit held in the bit holding unit 14 is 0, the bit is changed to 1. When the bit held in the bit holding unit 14 is 1, the bit is changed to 0.
  • the bit holding unit 14 is a register that holds one bit.
  • the bit holding unit 14 outputs the held bits to the energy change calculation unit 15 and the selection circuit unit 2.
  • the energy change calculation unit 15 calculates the energy change value ⁇ E 0 of the Ising model using the weight coefficient read from the storage unit 11 and outputs the calculated value to the state transition determination unit 16. Specifically, the energy change calculation unit 15 receives the value of the inverted bit (the value before the current inversion) from the selection circuit unit 2 and inverts the inverted bit from 1 to 0 or from 0 to 1.
  • ⁇ h 0 is calculated according to equation (4) according to the following equation.
  • the energy change calculator 15 has a register that holds h 0, and holds the updated h 0 using the register.
  • the energy change calculation unit 15 receives the current own bit from the bit holding unit 14, and changes the value from 0 to 1 if the own bit is 0, and from 1 to 0 if the own bit is 1,
  • the energy change value ⁇ E 0 of the model is calculated by equation (2).
  • the energy change calculation unit 15 outputs the calculated energy change value ⁇ E 0 to the state transition determination unit 16.
  • the state transition determination unit 16 outputs a signal flg 0 indicating whether or not its own bit can be inverted to the selection circuit unit 2 in accordance with the calculation of the energy change by the energy change calculation unit 15. Specifically, the state transition determination unit 16 receives the energy change value ⁇ E 0 calculated by the energy change calculation unit 15, and determines whether or not to invert its own bit according to comparison with the threshold generated by the threshold generation unit 3. Is a comparator for determining. Here, the determination by the state transition determination unit 16 will be described.
  • T is the aforementioned temperature parameter T.
  • Equation (6) (Metropolis method) or Equation (7) (Gibbs method) is used as the function f.
  • the temperature parameter T is represented by, for example, Expression (8). That is, the temperature parameter T is given by a function that decreases logarithmically with the number of iterations t. For example, the constant c is determined according to the problem.
  • T 0 is an initial temperature value, and is desirably set to be sufficiently large depending on the problem.
  • p ( ⁇ E, T) expressed by the equation (5) if a steady state is reached after sufficient repetition of state transition at a certain temperature, the state is generated according to the Boltzmann distribution. That is, the occupancy probability of each state follows the Boltzmann distribution for the thermal equilibrium state in thermodynamics. Therefore, a state according to the Boltzmann distribution is generated at a certain temperature, and then a state according to the Boltzmann distribution is generated at a temperature lower than the temperature, and by gradually lowering the temperature, for example, at each temperature, The state following the Boltzmann distribution can be tracked.
  • the state of the lowest energy is realized with high probability by the Boltzmann distribution at the temperature of 0.
  • This method is called simulated annealing because the state is very similar to the state change when the material is annealed.
  • the state transition in which the energy rises stochastically corresponds to thermal excitation in physics.
  • a comparator that outputs a value corresponding to a comparison with the uniform random number u taking the value of ()).
  • f (- ⁇ E / T) f as a monotonically increasing function to act on (- ⁇ E / T) inverse function of f -1 (- ⁇ E / T), f -1 as a monotonically increasing function to act on the uniform random number u F ⁇ 1 (u) where ⁇ E / T of ( ⁇ E / T) is u can be used.
  • the threshold generation unit 3 generates a uniform random number u and outputs the value of f ⁇ 1 (u) using the above conversion table for converting the value to f ⁇ 1 (u).
  • f ⁇ 1 (u) is given by equation (9).
  • f ⁇ 1 (u) is given by Expression (10).
  • the conversion table is stored in a memory (not shown) such as a RAM (Random Access Memory) or a flash memory connected to the threshold value generation unit 3, for example.
  • Threshold generating unit 3 outputs a temperature parameter T, the product of f -1 (u) (T ⁇ f -1 (u)) as a threshold.
  • T ⁇ f ⁇ 1 (u) corresponds to thermal excitation energy.
  • the state transition determination unit 16 When flg j is input from the selection circuit unit 2 to the state transition determination unit 16 and indicates that the flg j does not permit state transition (that is, when state transition does not occur), the state transition determination unit 16 After adding the offset value to ⁇ E 0 , the comparison with the threshold value may be performed. In addition, the state transition determination unit 16 may increase the offset value to be added when the state transition does not occur. On the other hand, the state transition determination unit 16 sets the offset value to 0 when flg j indicates that the state transition is permitted (that is, when a state transition occurs). Addition of an offset value to - ⁇ E 0 or an increase in the offset value facilitates state transition, and when the current state is in a local solution, escape from the local solution is promoted.
  • the temperature parameter T is gradually set smaller.
  • the bit operation circuit 1a1, .., 1aK when the value of the temperature parameter T is reduced by a predetermined number of times (or when the temperature parameter T reaches the minimum value), the bit operation circuit 1a1, .., 1aK.
  • the optimization device 1 outputs a spin bit string as a solution when the value of the temperature parameter T is reduced by a predetermined number of times (or when the temperature parameter T reaches the minimum value).
  • the setting change unit 5 can change the number of spin bits (first number of bits) of the Ising model and the number of bits (second number of bits) of the weight coefficient between bits.
  • the number of spin bits corresponds to the scale of the circuit that realizes the Ising model (the scale of the problem). The larger the scale, the more the optimization device 1 can be applied to the combination optimization problem having a larger number of combination candidates.
  • the number of bits of the weight coefficient corresponds to the precision of the expression of the mutual relationship between bits (the precision of the conditional expression in the problem). As the accuracy is higher, the condition for the energy change ⁇ E during spin inversion can be set in more detail.
  • the number of spin bits is large and the number of bits representing the weighting factor is small.
  • another problem may be that the number of spin bits is small and the number of bits representing the weight coefficient is large.
  • it is inefficient to individually manufacture an optimization device suitable for each problem according to the problem.
  • the setting change unit 5 enables the setting of the number of spin bits representing the state of the Ising model and the number of bits of the weighting coefficient, thereby making the scale and accuracy variable.
  • a single optimization device 1 can achieve a scale and an accuracy suitable for the problem.
  • each of the bit operation circuits 1a1,..., 1aK,..., 1aN has an accuracy switching circuit, and according to the setting of the setting changing unit 5, the bit operation circuits 1a1,.
  • the bit length of the weight coefficient to be read is switched.
  • the selection circuit unit 2 inputs a signal indicating an inverted bit to a number (for example, K) of bit operation circuits corresponding to the number of spin bits set by the setting change unit 5, and the number (K) ) Of the bit operation circuits.
  • the storage unit included in each of the bit operation circuits 1a1,..., 1aN is realized by a storage device having a relatively small capacity such as an SRAM. Therefore, when the number of spin bits increases, the capacity of the storage unit may be insufficient depending on the number of bits of the weight coefficient.
  • the scale and accuracy can be set by the setting change unit 5 so as to satisfy the limitation of the capacity of the storage unit. Specifically, it is conceivable that the setting change unit 5 performs setting so that the number of bits of the weight coefficient decreases as the number of spin bits increases. It is also conceivable that the setting change unit 5 sets so as to decrease the number of spin bits as the number of bits of the weight coefficient increases.
  • K of the N bit operation circuits are used for the Ising model.
  • the optimization device 1 may not use the remaining NK bit operation circuits.
  • the selection circuit unit 2 forcibly sets all the flags flg output from the remaining NK bit operation circuits to 0, and sets the bits corresponding to the remaining NK bit operation circuits. May not be selected as a reversal candidate.
  • the optimization device 1 realizes the same Ising model as the above-described Ising model by using K bit operation circuits among the remaining NK bit operation circuits.
  • the Ising model may be used to increase the degree of parallelism of the same problem processing to speed up the calculation.
  • the optimizing device 1 realizes another Ising model corresponding to another problem by using a part of the remaining NK bit operation circuits, and solves the problem represented by the aforementioned Ising model.
  • the calculation of the other problem may be performed in parallel with the above.
  • FIG. 2 is a diagram illustrating an example of the information processing system according to the second embodiment.
  • the information processing system according to the second embodiment includes an information processing device 20 and a client 30.
  • the information processing device 20 and the client 30 are connected to a network 40.
  • the network 40 may be, for example, a LAN (Local Area Network), a WAN (Wide Area Network), the Internet, or the like.
  • the information processing device 20 provides a function of replacing the combination optimization problem with an Ising model and quickly solving the combination optimization problem by searching for the ground state of the Ising model.
  • the client 30 is a client computer used by the user, and is used to input a problem to be solved by the user to the information processing device 20.
  • FIG. 3 is a block diagram illustrating an example of hardware of the information processing apparatus.
  • the information processing device 20 includes a CPU (Central Processing Unit) 21, a DRAM (Dynamic Random Access Memory) 22, a storage device 23, a NIC (Network Interface Card) 24, an optimization device 25, and a medium reader 28.
  • CPU Central Processing Unit
  • DRAM Dynamic Random Access Memory
  • storage device 23 a storage device
  • NIC Network Interface Card
  • the CPU 21, the DRAM 22, the storage device 23, the NIC 24, the optimization device 25, and the medium reader 28 are connected to the bus 29 of the information processing device 20.
  • the bus 29 is, for example, a PCIe (Peripheral Component Interconnect Interconnect Express) bus.
  • the CPU 21 is a processor that executes instructions of a program stored in the DRAM 22.
  • the CPU 21 loads at least a part of the programs and data stored in the storage device 23 into the DRAM 22, and executes the programs.
  • the CPU 21 controls the setting and the operation of the optimization device 25 by a function exhibited by executing the program.
  • the DRAM 22 is a main storage device of the information processing device 20, and temporarily stores a program executed by the CPU 21, data set in the optimization device 25, and the like.
  • the storage device 23 is an auxiliary storage device of the information processing device 20, and stores a program executed by the CPU 21, data set in the optimization device 25, and the like.
  • the storage device 23 is, for example, a solid state drive (SSD) or a hard disk drive (HDD).
  • the NIC 24 is a communication interface that is connected to the network 40 and communicates with the client 30 via the network 40.
  • the NIC 24 is connected to a communication device such as a switch or a router belonging to the network 40 by a cable, for example.
  • the optimization device 25 searches for the ground state of the Ising model under the control of the CPU 21.
  • the optimization device 25 is, for example, a one-chip semiconductor integrated circuit, and is realized by an FPGA or the like.
  • the optimization device 25 is an example of the optimization device 1 according to the first embodiment.
  • the medium reader 28 is a reading device that reads programs and data recorded on the recording medium 41.
  • the recording medium 41 for example, a magnetic disk, an optical disk, a magneto-optical disk (MO: Magneto-Optical disk), a semiconductor memory, or the like can be used.
  • the magnetic disk includes a flexible disk (FD: Flexible @ Disk) and an HDD.
  • the optical disc includes a CD (Compact Disc) and a DVD (Digital Versatile Disc).
  • the medium reader 28 copies, for example, a program or data read from the recording medium 41 to another recording medium such as the DRAM 22 or the storage device 23.
  • the read program is executed by, for example, the CPU 21.
  • the recording medium 41 may be a portable recording medium, and may be used for distributing programs and data. Further, the recording medium 41 and the storage device 23 may be referred to as a computer-readable recording medium.
  • the client 30 has a CPU, a main storage device, an auxiliary storage device, an NIC, input devices such as a mouse and a keyboard, and a display.
  • FIG. 4 is a diagram illustrating an example of a hardware relationship in the information processing system.
  • the client 30 executes the user program 31.
  • the user program 31 inputs various data (for example, contents of a problem to be solved and operating conditions such as a use schedule of the optimizing device 25) to the information processing device 20, and displays a calculation result by the optimizing device 25. Do.
  • the client 30 and the NIC 24 notify the input unit for inputting various data to the information processing apparatus 20 and the solution obtained as a result of the ground state search as they are, or provide result information (for example, A display unit that displays the result as information on a display screen visualized as a graph) is realized.
  • the CPU 21 is a processor (arithmetic unit) that executes the library 21a and the driver 21b.
  • the program of the library 21a and the program of the driver 21b are stored in the storage device 23, and are loaded into the DRAM 22 when executed by the CPU 21.
  • the library 21a receives various data input by the user program 31, and converts a problem to be solved by the user into a problem for searching for the lowest energy state of the Ising model.
  • the library 21a provides the driver 21b with information (for example, the number of spin bits, the number of bits representing a weight coefficient, the value of a weight coefficient, the initial value of a temperature parameter, and the like) after the conversion.
  • the library 21a acquires the search result of the solution by the optimization device 25 from the driver 21b, converts the search result into result information that is easy for the user to understand, and provides the result information to the user program 31.
  • the driver 21b supplies the information provided from the library 21a to the optimization device 25. Further, the driver 21b acquires the search result of the solution based on the Ising model from the optimization device 25 and provides the result to the library 21a.
  • the optimization device 25 includes a control unit 25a and an LFB (Local Field Block) 50 as hardware.
  • the control unit 25a has a RAM that stores the operating conditions of the LFB 50 received from the driver 21b, and controls the calculation by the LFB 50 based on the operating conditions.
  • the control unit 25a performs setting of initial values in various registers included in the LFB 50, storage of weighting coefficients in the SRAM, reading of a spin bit string (search result) after completion of the operation, and the like.
  • the control unit 25a is realized by, for example, a circuit in an FPGA.
  • the $ LFB 50 has a plurality of LFEs (Local Field Elements).
  • LFE is a unit element corresponding to the spin bit.
  • One LFE corresponds to one spin bit.
  • the optimization device 25 may include a plurality of LFBs.
  • FIG. 5 is a block diagram illustrating an example of hardware of the control unit.
  • the control unit 25a includes a CPU input / output unit 25a1, a control register 25a2, an LFB transmission unit 25a3, and an LFB reception unit 25a4.
  • the CPU input / output unit 25a1 inputs the data received from the CPU 21 to the control register 25a2 or the LFB 50.
  • the CPU input / output unit 25a1 inputs, to the LFB 50 via the control register 25a2, setting data such as the scale, accuracy, initial values of parameters, coupling constants, and the like, and operation condition data of the LFB 50 input by the CPU 21. It can also be input to each register or RAM in the LFB 50.
  • the control register 25a2 holds various setting data for the LFB 50 by the CPU input / output unit 25a1, and outputs the data to the LFB transmitting unit 25a3.
  • the control register 25a2 holds the data received from the LFB 50 by the LFB receiving unit 25a4 and outputs the data to the CPU input / output unit 25a1.
  • the LFB transmission unit 25a3 transmits the setting data held in the control register 25a2 to the LFB 50.
  • the LFB receiving unit 25a4 receives data (data such as a calculation result) from the LFB 50 and stores the data in the control register 25a2.
  • FIG. 6 is a diagram illustrating an example of the combination optimization problem.
  • a route that travels through five cities A, B, C, D, and E at the minimum cost is obtained.
  • the graph 201 shows one route with a city as a node and movement between cities as an edge. This route is represented, for example, by a matrix 202 in which the rows are turned and the columns are associated with the cities.
  • the matrix 202 indicates that the vehicle goes around the city in which the bit “1” is set in ascending order of the row. Further, the matrix 202 can be converted into a binary value 203 corresponding to a spin bit sequence.
  • the number of bits of the binary value 203 increases as the number of cities to be visited increases. That is, as the scale of the combination optimization problem increases, more spin bits are required, and the number of bits (scale) of the spin bit string increases.
  • FIG. 7 is a diagram illustrating an example of searching for a binary value having the minimum energy.
  • E init be the energy before inverting one bit of the binary value 221 (before spin inversion).
  • the optimization device 25 calculates the energy change amount ⁇ E when any one bit of the binary value 221 is inverted.
  • the graph 211 exemplifies an energy change with respect to 1-bit inversion according to an energy function, with the horizontal axis representing a binary value and the vertical axis representing energy.
  • the optimizing device 25 obtains ⁇ E from Expression (2).
  • the optimization device 25 applies the above calculation to all bits of the binary value 221 and calculates the energy change amount ⁇ E for each bit inversion. For example, when the number of bits of the binary value 221 is N, the number of the inverted patterns 222 is N.
  • a graph 212 exemplifies a state of an energy change for each inversion pattern.
  • the optimization device 25 randomly selects one of the inversion patterns 222 satisfying the inversion condition (a predetermined condition for determining the threshold value and ⁇ E) based on ⁇ E for each inversion pattern.
  • the optimization device 25 adds and subtracts ⁇ E corresponding to the selected inversion pattern to and from E init before the spin inversion, and calculates an energy value E after the spin inversion.
  • the optimization apparatus sets the obtained energy value E as E init and repeats the above procedure using the binary value 223 after the spin inversion.
  • one element of W used in equations (2) and (3) is a weight coefficient of spin inversion indicating the magnitude of interaction between bits.
  • the number of bits representing the weight coefficient is called accuracy.
  • accuracy As the accuracy is higher, the conditions for the energy change ⁇ E during spin inversion can be set in more detail.
  • the total size of W is “accuracy ⁇ number of spin bits ⁇ number of spin bits” for all combinations of two bits included in the spin bit sequence.
  • the total size of W is “accuracy ⁇ 8k ⁇ 8k” bits.
  • FIG. 8 is a diagram illustrating a circuit configuration example of the optimization device.
  • the optimizing device 25 (or the LFB 50 of the optimizing device 25) includes LFEs 51a1, 51a2,..., 51an, a random selector 52, a threshold generator 53, a random number generator 54, a mode setting register 55, an adder 56, and E storage. It has a register 57.
  • Each of the LFEs 51a1, 51a2,..., 51an is used as one bit of a spin bit.
  • n is an integer of 2 or more and indicates the number of LFEs provided in the LFB 50.
  • the LFEs 51a1, 51a2, ..., 51an are examples of the bit operation circuits 1a1, ..., 1aN of the first embodiment.
  • the LFEs 51a2,..., 51an are also realized by the same circuit configuration as the LFE 51a1.
  • “a1” at the end of each element in the following description is replaced with “a2”,.
  • 60a1 ” may be replaced with“ 60an ”.
  • the suffix of each value such as h, q, ⁇ E, W, etc. may be replaced with the suffix corresponding to each of “a2”,.
  • the LFE 51a1 includes an SRAM 60a1, an accuracy switching circuit 61a1, a ⁇ h generation unit 62a1, an adder 63a1, an h storage register 64a1, an inversion determination unit 65a1, a bit storage register 66a1, a ⁇ E generation unit 67a1, and a determination unit 68a1.
  • the SRAM 60a1 stores the weight coefficient W.
  • the SRAM 60a1 corresponds to the storage unit 11 according to the first embodiment.
  • the SRAM 60a1 stores only the weight coefficient W of all the spin bits used in the LFE 51a1. For this reason, if the number of spin bits is K (K is an integer of 2 or more and n or less), the size of all weight coefficients stored in the SRAM 60a1 is “precision ⁇ K” bits.
  • the precision switching circuit 61a1 acquires the index, which is the identification information of the inversion bit, and the flag F indicating inversion possible from the random selector unit 52, and extracts the weight coefficient corresponding to the inversion bit from the SRAM 60a1.
  • the accuracy switching circuit 61a1 outputs the extracted weight coefficient to the ⁇ h generation unit 62a1.
  • the precision switching circuit 61a1 may acquire the index and the flag F stored in the SRAM 60a1 by the random selector 52 from the SRAM 60a1.
  • the precision switching circuit 61a1 may include a signal line that receives the supply of the index and the flag F from the random selector unit 52 (not shown).
  • the precision switching circuit 61a1 receives the setting of the bit number (precision) of the weight coefficient set in the mode setting register 55, and switches the bit number of the weight coefficient read from the SRAM 60a1 according to the setting.
  • the accuracy switching circuit 61a1 has a selector that reads a bit string (unit bit string) having a predetermined number of unit bits from the SRAM 60a1.
  • the precision switching circuit 61a1 reads out the unit bit string of the bit number r including the weight coefficient corresponding to the inverted bit by the selector. For example, when the number r of unit bits read by the selector is larger than the number z of bits of the weight coefficient, the precision switching circuit 12 adds a bit portion indicating the weight coefficient corresponding to the inverted bit to the LSB ( The weight coefficient is read by shifting to the Least (Significant Bit) side and substituting 0 for the other bits.
  • the accuracy switching circuit 61a1 may extract the weight coefficient at the set bit number z by combining a plurality of unit bit strings read by the selector.
  • the precision switching circuit 61a1 is also connected to the SRAM 60a2 provided in the LFE 51a2. As will be described later, the accuracy switching circuit 61a1 can also read a weight coefficient from the SRAM 60a2.
  • the ⁇ h generation unit 62a1 receives the current bit value of the inverted bit (the bit value before the current inversion) from the random selector unit 52, and uses the weighting factor obtained from the precision switching circuit 61a1 to calculate the local value according to Expression (4). to calculate the amount of change ⁇ h 0 of field h 0.
  • Delta] h generator 62a1 outputs the Delta] h 0 to the adder 63a1.
  • Adder 63a1 adds Delta] h 0 locally field h 0 stored in the h storage register 64a1, and outputs the h storage register 64a1.
  • h storage register 64a1 in synchronization with a clock signal (not shown) takes a value adder 63a1 outputs (local field h 0).
  • the h storage register 64a1 is, for example, a flip-flop.
  • the initial value of the local field h 0 that is stored in the h storage register 64a1 are biased coefficients b 0. The initial value is set by the control unit 25a.
  • the bit storage register 66a1 holds a spin bit corresponding to the LFE 51a1.
  • the bit storage register 66a1 is, for example, a flip-flop.
  • the spin bits stored in the bit storage register 66a1 are inverted by the inversion determining unit 65a1.
  • the bit storage register 66a1 outputs a spin bit to the ⁇ E generator 67a1 and the random selector 52.
  • the ⁇ E generation unit 67a1 calculates the energy change amount ⁇ E 0 of the Ising model according to the inversion of its own bit by using equation (2). I do. Delta] E generating unit 67a1 is a change in the energy Delta] E 0, and outputs to the determining unit 68a1 and a random selector unit 52.
  • f ⁇ 1 (u) is a function given by one of Expressions (9) and (10) according to the applicable law.
  • U is a uniform random number in the section [0, 1).
  • the random selector 52 receives the energy change amount, the flag indicating whether the spin bit can be inverted, and the spin bit from each of the LFEs 51a1, 51a2,... Select
  • the random selector 52 supplies the current bit value (bit q j ) of the selected inverted bit to the ⁇ h generators 62a1, 62a2,..., 62an provided in the LFEs 51a1, 51a2,.
  • the random selector unit 52 is an example of the selection circuit unit 2 according to the first embodiment.
  • the random selector 52 supplies ⁇ E j corresponding to the selected inverted bit to the adder 56.
  • the random selector unit 52 receives from the mode setting register 55 the setting of the number of spin bits in a certain Ising model (that is, the number of LFEs to be used). For example, the random selector unit 52 searches for a solution using LFEs of a number corresponding to the set number of spin bits in ascending order of the index. For example, when using K LFEs out of n LFEs, the random selector unit 52 selects an inversion bit from a spin bit sequence corresponding to the LFEs of the LFEs 51a1,..., LFE51aK. At this time, the random selector 52 may forcibly set the flag F output from each of the nK LFEs 51a (K-1),...
  • the threshold generation unit 53 generates and supplies a threshold used for comparison with the energy change amount ⁇ E to the determination units 68a1, 68a2,..., 68an provided in the LFEs 51a1, 51a2,. As described above, the threshold generation unit 53 uses the temperature parameter T, the uniform random number u in the section [0, 1), and f ⁇ 1 (u) represented by the equation (9) or (10). To generate a threshold.
  • the threshold generation unit 53 has, for example, a random number generator individually for each LFE, and generates a threshold using a random number u for each LFE. However, a random number generator may be shared by some LFEs.
  • the control unit 25a controls the initial value of the temperature parameter T, the decrease cycle and the decrease amount of the temperature parameter T in the simulated annealing, and the like.
  • the random number generator 54 generates a random number bit used for selecting the inverted bit in the random selector 52 and supplies the random number bit to the random selector 52.
  • the mode setting register 55 supplies a signal indicating the number of bits (that is, the precision) of the weight coefficient to the precision switching circuits 61a1, 61a2, and 61an included in the LFEs 51a1, 51a2,. Further, the mode setting register 55 supplies a signal indicating the number of spin bits (that is, the scale) to the random selector unit 52.
  • the setting of the number of spin bits and the number of bits of the weight coefficient in the mode setting register 55 is performed by the control unit 25a.
  • the mode setting register 55 is an example of the setting change unit 5 according to the first embodiment.
  • the adder 56 adds the energy change amount ⁇ E j output from the random selector unit 52 to the energy value E stored in the E storage register 57, and outputs the result to the E storage register 57.
  • the E storage register 57 takes in the energy value E output from the adder 56 in synchronization with a clock signal (not shown).
  • the E storage register 57 is, for example, a flip-flop. Note that the initial value of the energy value E is calculated by the control unit 25a using Expression (1), and is set in the E storage register 57.
  • FIG. 9 is a diagram illustrating a circuit configuration example of the random selector unit.
  • the random selector unit 52 includes a flag control unit 52a and a plurality of selection circuits connected in a tree shape over a plurality of stages.
  • the flag control unit 52a controls the value of the flag input to each of the first-stage selection circuits 52a1, 52a2, 52a3, 52a4,..., 52aq in accordance with the setting of the number of spin bits in the mode setting register 55.
  • FIG. 9 illustrates a partial circuit 52xn that controls the value of a flag for one input (corresponding to the output of the LFE 51an) of the selection circuit 52aq.
  • the flag setting unit 52yn of the partial circuit 52xn is a switch that forcibly sets the flag Fn output from the unused LFE 51an to 0.
  • Each of the first-stage selection circuits 52a1, 52a2, 52a3, 52a4,..., 52aq receives two sets of variables q i , F i, and ⁇ E i output from each of the LFEs 51a1, 51a2,. .
  • a set of variables q 0 , F 0 and ⁇ E 0 output from the LFE 51 a 1 and a set of variables q 1 , F 1 and ⁇ E 1 output from the LFE 51 a 2 are input to the selection circuit 52 a 1 .
  • the selection circuit 52a2 variables q 2 and set of by F 2 and set the variable q 3 by Delta] E 2 and F 3 and Delta] E 3 is input, the selection circuit 52a3, variable q 4 and F 4 and Delta] E 4 set by set and variables q 5 and F 5 and Delta] E 5 by is input.
  • a set of variables q 6 , F 6 and ⁇ E 6 and a set of variables q 7 , F 7 and ⁇ E 7 are input to the selection circuit 52 a 4, and the variables q n ⁇ 2 and F n ⁇ 2 and a set of ⁇ E n-2 and a set of variables q n ⁇ 1 , F n ⁇ 1 and ⁇ E n ⁇ 1 are input.
  • Each of the selection circuits 52a1,..., 52aq determines one of the variables q i , F i, and ⁇ E i based on the input two sets of variables q i , F i, and ⁇ E i, and the 1-bit random number output from the random number generation unit 54. i , F i and ⁇ E i are selected.
  • selection circuit 52a1, ..., each 52aq may select one of the set based on 1-bit random number when a set F i is 1 preferentially selected, both sets of 1 (The same applies to other selection circuits).
  • the random number generation unit 54 generates a 1-bit random number individually for each selection circuit, and supplies it to each selection circuit.
  • Each of the selection circuits 52a1,..., 52aq generates a 1-bit identification value indicating which set of the variables q i , F i and ⁇ E i have been selected, and selects the selected variables q i , F i and A signal (referred to as a state signal) including ⁇ E i and the identification value is output.
  • the number of first-stage selection circuits 52a1 to 52aq is ⁇ of the number of LFEs 51a1,..., 51an, that is, n / 2.
  • 52br are input to the second-stage selection circuits 52b1, 52b2,..., 52br, respectively, by two state signals output from the selection circuits 52a1,.
  • a state signal output from the selection circuits 52a1 and 52a2 is input to the selection circuit 52b1
  • a state signal output from the selection circuits 52a3 and 52a4 is input to the selection circuit 52b2.
  • Each of the selection circuits 52b1,..., 52br selects one of the two state signals based on the two state signals and the 1-bit random number output from the random number generation unit 54.
  • Each of the selection circuits 52b1,..., 52br adds and updates one bit so as to indicate which status signal is selected for the identification value included in the selected status signal, and outputs the selected status signal. I do.
  • the same processing is performed in the selection circuits of the third and subsequent stages, and the bit width of the identification value is increased by one bit in the selection circuits of each stage, and the output of the random selector 52 is output from the selection circuit 52p of the last stage. A certain state signal is output.
  • the identification value included in the status signal output from the random selector unit 52 is an index indicating an inverted bit expressed in a binary number.
  • the random selector unit 52 receives the index corresponding to the LFE together with the flag F from each LFE, and selects the index by each selection circuit in the same manner as the variables q i , F i and ⁇ E i , thereby inverting the inverted bit. May be output.
  • each LFE has a register for storing the index, and outputs the index to the random selector unit 52 from the register.
  • the random selector 52 determines whether or not the inversion is possible by the LFEs 51a (K + 1),..., 51an other than the LFEs 51a1,.
  • the signal shown is forcibly set to non-invertable.
  • the random selector 52 selects an inversion bit based on the signal indicating whether or not the inversion is possible, which is output from the LFEs 51a1,.
  • the random selector 52 outputs a signal indicating the inverted bit to the LFEs 51a (K + 1),..., 51an in addition to the LFEs 51a1,.
  • FIG. 10 is a diagram illustrating an example of a trade-off relationship between scale and accuracy.
  • the traveling salesman problem is an example of the combination optimization problem.
  • the traveling salesman problem is a problem of low accuracy if the number of traveling cities is large and traveling conditions (moving time, moving distance, traveling cost, etc.) are small, and if the traveling conditions are large, high accuracy is required.
  • Other optimization problems with relatively low accuracy include problems with certain conditions, such as the eight queen problem and the four-color problem.
  • the portfolio optimization problem since the portfolio optimization problem has many conditions such as the amount of money and the period, high accuracy is required.
  • a graph 300 shows a trade-off relationship between the scale and the accuracy when the upper limit of the capacity for storing the weight coefficient in the SRAM for each LFE is 128 k (kilo) bits.
  • 1k (kilo) 1024.
  • the accuracy is 128 bits at the maximum for a scale of 1 kbit.
  • the precision is 64 bits at the maximum for a scale of 2 k bits.
  • the precision is up to 32 bits.
  • the precision is a maximum of 16 bits.
  • the first mode is a mode with a scale of 1 kbit / accuracy of 128 bits.
  • the second mode is a mode with a scale of 2 k bits / a precision of 64 bits.
  • the third mode is a mode with a scale of 4 k bits / accuracy of 32 bits.
  • the fourth mode is a mode having a scale of 8 kbits / precision 16 bits.
  • FIG. 11 is a diagram illustrating an example (part 1) of storing a weight coefficient.
  • the weight coefficient W is expressed by Expression (11).
  • Data 1d1, 1d2,..., 1ds show an example of storing weighting factors for the SRAMs 60a1, 60a2,..., 60as when the above-described first mode (scale 1 k bits / accuracy 128 bits) is used.
  • s 1024.
  • the data 1d1, 1d2,..., 1ds are stored in the SRAMs 60a1, 60a2,.
  • LFEs 51a1,..., 51as may be represented as LFE0,..., LFE1023 using their respective identification numbers (the same applies to the following drawings).
  • Data 1d1 indicates W 0,0 to W 0,1023 stored in the SRAM 60a1 of the LFE 51a1 (LFE0).
  • Data 1d2 indicates W 1,0 to W 1,1023 stored in the SRAM 60a2 of the LFE 51a2 (LFE1).
  • Data 1ds indicates W 1023,0 to W 1023,1023 stored in the SRAM 60as of the LFE 51as (LFE 1023).
  • the number of bits of one weight coefficient W ij is 128 bits.
  • FIG. 12 is a diagram illustrating an example (part 2) of storing the weighting factors.
  • the weight coefficient W is represented by Expression (12).
  • Data 2d1, 2d2,..., 2dt show an example of storing weighting factors for the SRAMs 60a1, 60a2,..., 60at in the case of using the above-described second mode (scale 2 k bits / accuracy 64 bits).
  • t 2048.
  • Data 2d1 indicates W 0,0 to W 0,2047 stored in the SRAM 60a1 of the LFE 51a1 (LFE0).
  • Data 2d2 indicates W 1,0 to W 1,2047 stored in the SRAM 60a2 of the LFE 51a2 (LFE1).
  • Data 2dt indicates W 2047,0 to W 2047,2047 stored in the SRAM 60at of the LFE 51at (LFE 2047).
  • the number of bits of one weight coefficient W ij is 64 bits.
  • FIG. 13 is a diagram illustrating an example (part 3) of storing the weighting factors.
  • the weight coefficient W is expressed by Expression (13).
  • Data 3d1, 3d2,..., 3du are examples of storing weighting factors for the SRAMs 60a1, 60a2,..., 60au in the case of using the above-described third mode (scale 4 kbits / accuracy 32 bits).
  • u 4096.
  • Data 3d1 indicates W 0,0 to W 0,4095 stored in the SRAM 60a1 of the LFE 51a1 (LFE0).
  • Data 3d2 indicates W 1,0 to W 1,4095 stored in the SRAM 60a2 of the LFE 51a2 (LFE1).
  • Data 3du indicates W 4095,0 to W 4095 , 4095 stored in the SRAM 60au of the LFE 51au (LFE 4095).
  • the number of bits of one weight coefficient W ij is 32 bits.
  • FIG. 14 is a diagram illustrating an example (part 4) of storing the weighting coefficients.
  • the weight coefficient W is expressed by Expression (14).
  • Data 4d1, 4d2,..., 4dn show an example of storing weighting factors for the SRAMs 60a1, 60a2,..., 60an when the above-described fourth mode (scale 8 kbits / precision 16 bits) is used.
  • n 8192.
  • Data 4d1 indicates W 0,0 to W 0,8191 stored in the SRAM 60a1 of the LFE 51a1 (LFE0).
  • Data 4d2 indicates W 1,0 to W 1,8191 stored in the SRAM 60a2 of the LFE 51a2 (LFE1).
  • Data 4dn indicates W 8191,0 to W 8191,8191 stored in the SRAM 60an of the LFE 51an (LFE 8191).
  • the number of bits of one weight coefficient W ij is 16 bits.
  • FIG. 15 is a flowchart illustrating an example of the initialization processing.
  • the CPU 21 inputs the initial values and operating conditions according to the problem to the optimization device 25.
  • the initial value includes, for example, the energy value E, the local field h i, spin bits q i, the initial value and the weighting factor W of the temperature parameter T and the like.
  • the operating conditions include the number of times N1 of updating the state with one temperature parameter, the number of changes N2 of the temperature parameter, the decrease in the temperature parameter, and the like.
  • the control unit 25a sets the input initial value and weight coefficient in the register of each LFE and the SRAM described above. When there is an LFE that is not used, the control unit 25a sets, for example, all 0s as W in the SRAM of the LFE.
  • the weight coefficient W between the spin bits is represented by the number of bits corresponding to the precision according to the problem.
  • the CPU 21 inputs the number of spin bits (scale) and the number of bits (precision) of the weight coefficient according to the problem to the optimization device 25.
  • the control unit 25a receives the number of spin bits and the number of bits of the weight coefficient from the CPU 21 and inputs them to the mode setting register 55.
  • the number of bits of the weight coefficient input to the mode setting register 55 is input to the precision switching circuit of each LFE. Further, the number of spin bits input to the mode setting register 55 is input to the random selector unit 52.
  • the control unit 25a receives the input of the calculation start flag, and starts the calculation by the LFB 50. Thus, the initialization processing ends.
  • FIG. 16 is a flowchart illustrating an example of the arithmetic processing.
  • Each part included in the LFE 51ax is also described by adding “x” to the end of the reference numeral, for example, like the SRAM 60ax.
  • the operation by each of the LFEs 51a1,..., LFE51an is executed in parallel.
  • Equation (2) (S20) Delta] E generator 67ax the energy variation in the case where based on the local field h i bits q i where and stored in the bit storage register 66ax stored in h storage register 64Ax, inverts the bits q i Generate ⁇ E i . Equation (2) is used to generate ⁇ E i .
  • the unit bit string is a unit of a bit string that the selector of the precision switching circuit 61ax reads from the SRAM 60ax at a time.
  • the number of bits of the unit bit string (the number of unit bits) is, for example, 128 bits (other values may be used). In this case, in step S26, a 128-bit unit bit string is read from the SRAM 60ax.
  • the precision switching circuit 61ax counts from the unit bit string at the head (the head is 0th) of the SRAM 60ax.
  • the “Integer (j / a)” th unit bit string is read.
  • Integer (j / a) is a function that extracts an integer part from the value of (j / a).
  • the weighting factor (weighting factor corresponding to the inverted bit q j) of the number of bits according to the set mode selected by the mode setting register 55 W ij is extracted. For example, when extracting the z-bit bit string from the 128-bit unit bit string, the precision switching circuit 61ax shifts the z-bit range corresponding to the inverted bit to the LSB side as described above, and shifts the bit range to the other upper bits. By setting 0, a weight coefficient of z bits is extracted.
  • the precision switching circuit 61ax divides the unit bit string read in step S26 into sections having a bit length corresponding to the precision from the beginning, and determines the bit number corresponding to the inverted bit from the beginning (0th).
  • the bit range is specified depending on whether or not it corresponds to the section.
  • mod (u, v) is a function indicating the remainder when u is divided by v.
  • the “mod (j, 8)”-th section from the beginning of the read unit bit string of 128 bits is a bit range corresponding to the inverted bit.
  • the precision switching circuit 61ax uses the 128-bit unit bit string read in step S26 as a weight coefficient corresponding to the inverted bit.
  • the “mod (j, a)”-th unit bit string from the beginning of the 128-bit unit bit string read in step S26 is a bit range indicating a weight coefficient corresponding to an inverted bit.
  • the ⁇ h generation unit 62ax generates ⁇ h i based on the inversion direction of the inversion bit and the weight coefficient W ij extracted by the precision switching circuit 61ax.
  • the generation of Delta] h i, equation (4) is used.
  • the inversion direction of the inversion bit is determined by the inversion bit q j (the bit before the current inversion) output from the random selector unit 52.
  • (S29) adder 63ax is a Delta] h i generated by Delta] h generator 62Ax, by adding to the local field h i stored in the h storage register 64Ax, local field stored in the h storage register 64Ax h i To update.
  • the inversion determination unit 65ax inverts the spin bit stored in the bit storage register 66ax when the own bit is selected as the inverted bit, and inverts the spin bit of the bit storage register 66ax when the own bit is not selected as the inverted bit. To maintain.
  • the control unit 25a changes the temperature parameter T. Specifically, the control unit 25a decreases the value of the temperature parameter T by a reduction width corresponding to the operating condition (corresponding to lowering the temperature). Then, the process proceeds to step S20.
  • the control unit 25a reads the spin bits stored in the bit storage register 66ax, and outputs the result as an operation result. Specifically, the control unit 25a reads the spin bits stored in each of the bit storage registers 66a1,..., 66aK corresponding to the spin bit number K set by the mode setting register 55, and outputs the spin bits to the CPU 21. That is, the control unit 25a supplies the read spin bit sequence to the CPU 21. Then, the arithmetic processing ends.
  • step S24 the random selector unit 52 forcibly sets the value of F output by the unused LFE to 0 according to the setting of the mode setting register 55, thereby performing bit inversion of the unused LFE. Can be excluded from the candidates.
  • the number of spin bits indicating the state of the Ising model and the number of bits of the weighting coefficient can be set by the mode setting register 55. Accuracy can be realized.
  • the accuracy switching circuit 61ax switches the bit length of the weight coefficient read from the SRAM 60ax according to the setting of the mode setting register 55.
  • the precision switching circuit 61ax as shown in step S27, various precisions can be realized without changing the number of unit bits read from the SRAM 60ax by the selector of the precision switching circuit 61ax.
  • the accuracy can be varied without the need to reconfigure the signal lines for the unit number of bits from the SRAM 60ax by the selector of the accuracy switching circuit 61ax.
  • the random selector unit 52 inputs a signal indicating an inverted bit to the number (for example, K) of LFEs corresponding to the number of spin bits set by the mode setting register 55, and the number (K) Is selected from the bits corresponding to the LFE.
  • the random selector unit 52 also inputs a signal indicating an inversion bit to nK LFEs that are not used, but forcibly sets a flag F output from the nK LFEs to 0 (inversion is not possible). By doing so, unused LFEs are excluded from candidates for selecting inverted bits.
  • the optimization device 25 provides a fifth mode with a scale of 4 kbits / accuracy of 64 bits in addition to the above-described four types of modes by storing weighting factors in the SRAMs 60a1,..., 60an as follows. You can also.
  • FIG. 17 is a diagram illustrating an example (part 5) of storing coupling coefficients.
  • Data 5d1, 5d2,..., 5dn show an example of storing weighting factors for the SRAMs 60a1, 60a2,..., 60an when the above-described fifth mode (scale 4 k bits / accuracy 64 bits) is used.
  • n 8192.
  • the data 5d1, 5d2,..., 5dn are stored in the SRAMs 60a1, 60a2,.
  • Data 5d1 indicates W 0,0 to W 0,2047 stored in the SRAM 60a1 of the LFE 51a1 (LFE0).
  • Data 5d2 indicates W 0,2048 to W 0,4095 stored in the SRAM 60a2 of the LFE 51a2 (LFE1).
  • Data 5dn indicates W 4095,2048 to W 4095,4095 stored in the SRAM 60an of the LFE 51an (LFE 8191).
  • the number of bits of one weight coefficient W ij is 64 bits.
  • the accuracy switching circuit 61a1 of the LFE 51a1 can also obtain the weight coefficient from the SRAM 60a2 of the LFE 51a2. That is, for example, the accuracy switching circuit 61a1 can stop the functions other than the SRAM 60a2 of the LFE 51a2 by utilizing the read path from the SRAM 60a2 of the adjacent LFE 51a2, and lend the capacity of the SRAM 60a2 to the LFE 51a1.
  • an odd-numbered (leading first) LFE enables an even-numbered LFE SRAM (or an odd-numbered LFE SRAM is used by an even-numbered LFE if the leading is 0th). It can be said).
  • the accuracy switching circuits 61a1,..., 61an change a part of the weight coefficient relating to the own bit and another bit according to the change of the number of bits of the weight coefficient to another LFE not used as a spin bit.
  • the random selector unit 52 inverts a bit corresponding to the other LFE by forcibly setting a flag F output from another LFE not used as a spin bit to 0 (non-invertable).
  • the bits may be excluded from the selection candidates.
  • the fifth mode with a scale of 4 k bits / accuracy of 64 bits can be realized.
  • the scale and accuracy can be changed more flexibly according to the problem.
  • the third embodiment in addition to the functions of the second embodiment, a function for efficiently using the LFE is provided.
  • the device configuration of the information processing system and the hardware configuration of the information processing device 20 according to the third embodiment are the same as those in FIGS.
  • the optimization device of the third embodiment differs from the optimization device 25 of the second embodiment in part of the circuit configuration.
  • FIG. 18 is a diagram illustrating an example of the optimization device according to the third embodiment.
  • the optimization device 26 is, for example, a one-chip semiconductor integrated circuit, and is realized by an FPGA or the like.
  • the optimization device 26 is an example of the optimization device 1 according to the first embodiment.
  • the optimization device 26 has a plurality of LFBs.
  • the optimization device 26 has a control unit 25a that controls the plurality of LFBs (not shown).
  • the number of LFEs belonging to one LFB is set to m (m is an integer of 2 or more), and the optimization device 26 performs LFBs 70a, 70b, 70c, 70d, 70e, 70f, 70 g and 70 h.
  • the optimization device 26 has a total of 8 m LFEs, and can realize a maximum scale of 8 m bits.
  • the number of LFBs provided in the optimization device 26 is not limited to eight, and may be another number.
  • the LFEs included in the LFBs 70a,..., 70h are examples of the bit operation circuits 1a1,.
  • Each of the LFBs 70a,..., 70h can be said to be one group of LFEs including a predetermined number (m) of LFEs as elements.
  • 70h are assigned identification numbers # 0 to # 7.
  • the optimization device 26 further includes a scale coupling circuit 91, a mode setting register 92, adders 93a, 93b, 93c, 93d, 93e, 93f, 93g, 93h, and E storage registers 94a, 94b, 94c, 94d, 94e, 94f. , 94g, 94h.
  • the LFB 70a includes LFEs 71a1,..., LFE71am, a random selector 72, a threshold generator 73, a random number generator 74, and a mode setting register 75.
  • the LFEs 71a1,..., LFE71am, the random selector 72, the threshold generator 73, the random number generator 74, and the mode setting register 75 correspond to the hardware having the same name in the second embodiment described with reference to FIG. Omitted.
  • the random selector 72 outputs a set of the state signal (flag F x0 , spin bit q x0 and energy change ⁇ E x0 ) for the selected inverted bit to the scale coupling circuit 91.
  • the random selector section 72 does not need to have the flag control section 52a (however, it may have the flag control section 52a).
  • the random selector unit 72 two state signals from each LFE are input to each of the first-stage selection circuits of the random selector unit 72 without passing through the flag control unit 52a.
  • 70h have the same circuit configuration as the LFB 70a.
  • the scale coupling circuit 91 receives a state signal from each of the LFBs 70a,..., 70h, and selects an inverted bit based on the state signal.
  • the scale coupling circuit 91 supplies a signal related to the inverted bit to each of the LFEs of the LFBs 70a,.
  • the scale coupling circuit 91 outputs the energy change amount ⁇ E y0 to the adder 93a.
  • the energy change amount ⁇ E y1 is output to the adder 93b.
  • the scale coupling circuit 91 outputs the energy change amount ⁇ E y2 to the adder 93c.
  • the scale coupling circuit 91 outputs the energy change amount ⁇ E y3 to the adder 93d.
  • the scale coupling circuit 91 outputs the energy change amount ⁇ E y4 to the adder 93e.
  • the scale coupling circuit 91 outputs the energy change amount ⁇ E y5 to the adder 93f.
  • the scale coupling circuit 91 outputs the energy change amount ⁇ E y6 to the adder 93g.
  • the scale coupling circuit 91 outputs the energy change amount ⁇ E y7 to the adder 93h.
  • the random selector section (including the random selector section 72) and the scale coupling circuit 91 included in each of the LFBs 70a,..., 70h are examples of the selection circuit section 2 of the first embodiment.
  • the mode setting register 92 sets an operation mode for the scale coupling circuit 91.
  • the mode setting register 92 sets the same operation mode as that set in the LFEs 71 a 1,..., 71 am and the random selector 72 by the mode setting register 75 in the scale coupling circuit 91.
  • the details of the mode setting by the mode setting registers 75 and 92 will be described later.
  • the mode setting register (including the mode setting register 75) and the mode setting register 92 included in each of the LFBs 70a,..., 70h are an example of the setting change unit 5 of the first embodiment.
  • the adder 93a has a Delta] E y0, by adding to the energy value E 0 which is stored in the E storage register 94a, and updates the energy values E 0.
  • E storage register 94a is, for example, in synchronization with a clock signal (is not shown) (other E storage registers as well), captures the energy value E 0 which is calculated by the adder 93a.
  • the adder 93b is a Delta] E y1, by adding the energy value E 1 stored in the E storage register 94b, and updates the energy values E 1.
  • E storage register 94b captures the energy values E 1 calculated by the adder 93 b.
  • the adder 93c is the Delta] E y2, by adding to the energy value E 2 stored in the E storage register 94c, and updates the energy values E 2.
  • E storage register 94c captures the energy value E 2 calculated by the adder 93c.
  • the adder 93d is a Delta] E y3, by adding to the energy value E 3 stored in the E storage register 94d, and updates the energy values E 3.
  • E storage register 94d captures the energy values E 3 calculated by the adder 93d.
  • the adder 93e is a Delta] E y4, by adding the energy value E 4, which is stored in the E storage register 94e, updates the energy values E 4.
  • E storage register 94e fetches the energy value E 4 calculated by the adder 93e.
  • the adder 93f is a Delta] E y5, by adding the energy value E 5 stored in the E storage register 94f, and updates the energy values E 5.
  • E storage register 94f captures the energy values E 5 calculated by the adder 93f.
  • the adder 93g is the Delta] E y6, by adding the energy value E 6 stored in the E storage register 94 g, updates the energy values E 6.
  • E storage register 94g captures the energy values E 6 calculated by the adder 93 g.
  • the adder 93h is a Delta] E y7, by adding the energy value E 7 stored in the E storage register 94h, and updates the energy values E 7.
  • E storage register 94h captures the energy value E 7 calculated by the adder 93h.
  • Each of the E storage registers 94a,..., 94h is, for example, a flip-flop.
  • a circuit configuration example of the LFB 70a will be described.
  • 70h have the same circuit configuration as the LFB 70a.
  • FIG. 19 is a diagram illustrating a circuit configuration example of the LFB.
  • Each of the LFEs 71a1, 71a2,..., 71am is used as one bit of a spin bit.
  • the LFEs 71a2,..., 71am are also realized by the same circuit configuration as the LFE 71a1.
  • “a1” at the end of the reference numeral of each element in the following description is replaced with “a2”,.
  • the code of “80a1” may be replaced with “80am”.
  • the LFE 71a1 includes an SRAM 80a1, an accuracy switching circuit 81a1, a ⁇ h generation unit 82a1, an adder 83a1, an h storage register 84a1, an inversion determination unit 85a1, a bit storage register 86a1, a ⁇ E generation unit 87a1, and a determination unit 88a1.
  • the SRAM 80a1, the precision switching circuit 81a1, the ⁇ h generation unit 82a1, the adder 83a1, the h storage register 84a1, the inversion determination unit 85a1, the bit storage register 86a1, the ⁇ E generation unit 87a1, and the determination unit 88a1 are each described with reference to FIG. It has the same function as the hardware of the same name.
  • the SRAM80a1 (or precision switching circuit 81a1) and the inverted determination unit 85a1, the flag F y0 indicating the outputted index y0 and inverting whether the scale coupling circuit 91 is supplied.
  • the ⁇ h generator 82A1, inverted bit q y0 output by scale coupling circuit 91 is supplied.
  • the mode setting register 75 sets the number of bits (precision) of the weight coefficient for the precision switching circuits 81a1, 81a2,..., 81am.
  • the mode setting register 75 does not have a signal line for setting the random selector section 72 (however, the mode setting register 75 may have the signal line).
  • the mode setting register 75 may have the signal line.
  • the following five types of modes shown in the second embodiment can be used.
  • the first mode is a mode with a scale of 1 kbit / accuracy of 128 bits.
  • the mode with a scale of 1 kbit / accuracy of 128 bits uses one LFB. This mode can be realized by only one of the LFBs 70a,..., 70h.
  • the second mode is a mode with a scale of 2 k bits / accuracy of 64 bits.
  • the mode of 2 k bits in scale / 64 bits of accuracy uses two LFBs.
  • the mode can be realized by any one of a combination of LFBs 70a and 70b, a combination of LFBs 70c and 70d, a combination of LFBs 70e and 70f, and a combination of LFBs 70g and 70h.
  • the third mode is a mode with a scale of 4 kbits / accuracy of 32 bits.
  • a mode with a scale of 4 k bits / accuracy of 32 bits uses four LFBs.
  • the mode can be realized by any one of a combination of LFBs 70a, 70b, 70c, and 70d and a combination of LFBs 70e, 70f, 70g, and 70h.
  • the fourth mode is a mode with a scale of 4 k bits / a precision of 64 bits.
  • the mode of 4 k bits in scale / 64 bits of precision uses eight LFBs. This mode can be realized using a combination of LFBs 70a,..., 70h. However, as described in FIG. 17, the number of LFEs used in one LFB is half of the number of LFEs provided in one LFB.
  • the fifth mode is a mode with a scale of 8 kbits / accuracy of 16 bits.
  • a mode with a scale of 8 kbits / a precision of 16 bits uses eight LFBs. This mode can be realized using a combination of LFBs 70a,..., 70h.
  • the optimization device 26 combines the above-described mode of 1 kbit / 128 bits of accuracy, 2 kbit / 64 bits of accuracy, and 4 kbit / 32 bits of accuracy, Allows operations on the same problem or other problems to be performed in parallel.
  • the scale combining circuit 91 combines the LFBs with a plurality of LFBs (combinations of LFBs) according to the change in the number of spin bits by the mode setting register 92 so as to include the number of LFEs corresponding to the number of spin bits. Select the number (the number of groups to be combined).
  • the scale coupling circuit 91 has, for example, the following circuit configuration.
  • FIG. 20 is a diagram illustrating a circuit configuration example of the scale coupling circuit.
  • the scale coupling circuit 91 includes selection circuits 91a1, 91a2, 91a3, 91a4, 91b1, 91b2, 91c1 connected in a tree shape over a plurality of stages, a random number generation unit 91d, and mode selection circuits 91e1, 91e2, 91e3, 91e4, 91e5. , 91e6, 91e7, 91e8.
  • each of the selection circuits 91a1,..., 91a4 generates an identification value indicating which pair is selected based on the indexes included in both pairs, and selects the selected variables q i , F i , ⁇ E i , And outputting a status signal including the identification value.
  • the identification value output by each of the selection circuits 91a1,..., 91a4 is one bit larger than the input index.
  • Two state signals output from the selection circuits 91a1,..., 91a4 are input to each of the second-stage selection circuits 91b1, 91b2.
  • a state signal output from the selection circuits 91a1 and 91a2 is input to the selection circuit 91b1
  • a state signal output from the selection circuits 91a3 and 91a4 is input to the selection circuit 91b2.
  • Each of the selection circuits 91b1 and 91b2 selects one of the two state signals based on the two state signals and the 1-bit random number output from the random number generation unit 91d.
  • Each of the selection circuits 91b1 and 91b2 updates the identification value included in the selected status signal by adding one bit so as to indicate which status signal is selected, and outputs the selected status signal. .
  • Two state signals output from the selection circuits 91b1 and 91b2 are input to the selection circuit 91c1 at the last stage.
  • the selection circuit 91c1 selects one of the two state signals based on the two state signals and the 1-bit random number output from the random number generation unit 91d.
  • the selection circuit 91c1 updates the identification value included in the selected status signal by adding one bit so as to indicate which status signal has been selected, and outputs the selected status signal.
  • the identification value corresponds to the index.
  • the scale coupling circuit 91 outputs the index corresponding to the inverted bit by selecting the index input from each random selector unit by each selection circuit in the same manner as the variables q i , F i, and ⁇ E i. You may. In this case, each of the random selectors receives the index from each LFE together with the variable q and the flag F. It is conceivable that the control unit 25a sets an index corresponding to a combination of LFBs in a predetermined index storage register of each LFE.
  • Each of the mode selection circuits 91e1,..., 91e8 has an input terminal corresponding to a scale (that is, 1 k bits, 2 k bits, 4 k bits, and 8 k bits).
  • "1" shown in each of the mode selection circuits 91e1,..., 91e8 indicates an input terminal corresponding to a scale of 1 k bits.
  • “2” indicates an input terminal corresponding to a scale of 2 k bits.
  • "4" indicates an input terminal corresponding to a scale of 4 k bits (however, precision is 32 bits).
  • “8” indicates an input terminal corresponding to a scale of 8 k bits (or a scale of 4 k bits / accuracy of 64 bits).
  • the state signal output from the LFB 70a (# 0) is input to the 1 k-bit input terminal of the mode selection circuit 91e1.
  • a state signal output from the LFB 70b (# 1) is input to an input terminal having a 1 k-bit scale of the mode selection circuit 91e2.
  • the state signal output from the LFB 70c (# 2) is input to the 1 k-bit input terminal of the mode selection circuit 91e3.
  • the state signal output from the LFB 70d (# 3) is input to the 1 k-bit input terminal of the mode selection circuit 91e4.
  • a state signal output from the LFB 70e (# 4) is input to an input terminal having a 1 k-bit scale of the mode selection circuit 91e5.
  • the state signal output from the LFB 70f (# 5) is input to the 1 k-bit input terminal of the mode selection circuit 91e6.
  • the state signal output from the LFB 70g (# 6) is input to the 1 k-bit input terminal of the mode selection circuit 91e7.
  • the state signal output from the LFB 70h (# 7) is input to the 1 k-bit input terminal of the mode selection circuit 91e8.
  • the state signal output from the selection circuit 91a1 is input to the 2 k-bit input terminals of the mode selection circuits 91e1 and 91e2.
  • the state signals output by the selection circuit 91a2 are input to the input terminals of 2k bits in each of the mode selection circuits 91e3 and 91e4.
  • the state signals output from the selection circuit 91a3 are input to the input terminals of 2k bits in each of the mode selection circuits 91e5 and 91e6.
  • the state signal output from the selection circuit 91a4 is input to the 2 k-bit input terminals of the mode selection circuits 91e7 and 91e8.
  • the state signal output from the selection circuit 91b1 is input to the 4 k-bit input terminals of the mode selection circuits 91e1, 91e2, 91e3, and 91e4.
  • the state signal output from the selection circuit 91b2 is input to each of the 4 k-bit input terminals of the mode selection circuits 91e5, 91e6, 91e7, and 91e8.
  • Each of the mode selection circuits 91e1,..., 91e8 receives a state signal output from the selection circuit 91c1 at an input terminal of 8k bits.
  • Each of the mode selection circuits 91e1,..., 91e8 receives the setting of the scale (the number of spin bits) by the mode setting register 92.
  • the signal lines from the mode setting register 92 to each of the mode selection circuits 91e2,..., 91e8 are abbreviated as “.
  • the adder 93a updates the E 0 based on Delta] E y0.
  • the adder 93b updates the E 1 based on Delta] E y1.
  • the adder 93c updates the E 2 based on Delta] E y2.
  • the adder 93d updates the E 3 based on Delta] E y3.
  • the adder 93e updates the E 4 based on Delta] E y4.
  • the adder 93f updates the E 5 based on Delta] E y5.
  • the adder 93g updates the E 6 based on Delta] E y6.
  • the adder 93h updates the E 7 based on Delta] E y7.
  • the optimization device 26 selects one of the bits based on the signal indicating whether or not inversion is possible, which is output from each LFE belonging to a certain LFB (group), and outputs a signal indicating the selected bit. Is output to the scale coupling circuit 91 for each LFB.
  • the scale coupling circuit 91 combines one or more LFBs according to the change in the number of spin bits, and selects a bit to be inverted based on a signal indicating a bit selected by the random selector corresponding to each of the one or more LFBs. I do.
  • the scale coupling circuit 91 outputs a signal indicating a bit to be inverted to each LFE belonging to the one or more LFBs.
  • the mode setting register 92 individually sets the scale for the mode selection circuits 91e1,..., 91e8. However, in a mode of a certain scale, a common scale is set in the mode selection circuit corresponding to the LFB used in combination.
  • the mode setting register 92 sets the number of spin bits of the first spin bit string corresponding to the first combination of LFB and the number of spin bits of the second spin bit string corresponding to the second combination of LFB to the same bit. It may be set to a number or a different number of bits.
  • the mode setting register of each LFB including the mode setting register 75 stores the number of bits of the weight coefficient for the LFE belonging to the first combination of LFB and the number of bits of the weight coefficient for the LFE belonging to the second combination of LFB. The same number of bits or a different number of bits may be set.
  • a selection signal for selecting the mode of 2k bits is supplied from the mode setting register 92 to the mode selection circuits 91e1 and 91e2.
  • the optimization device 26 can execute the same problem as the operation by the LFBs 70a and 70b or another problem in parallel using the remaining six LFBs by setting the mode setting register 92.
  • the scale coupling circuit 91 may realize six 1k-bit scale modes in each of the six LFBs with respect to the remaining six LFBs. Further, the scale coupling circuit 91 may realize three 2k-bit modes by combining two of the six LFBs.
  • the scale coupling circuit 91 may realize a mode of a scale of 2 k bits by a combination of two LFBs out of the six LFBs, and may realize a mode of a scale of 4 k bits by a combination of the other four LFBs.
  • the mode combinations realized in parallel are not limited to the above-mentioned combinations. For example, eight combinations of 1 k-bit mode, four combinations of 2 k-bit mode, four combinations of 1 k-bit mode and 2 k-bit of scale Various combinations such as a combination of two modes are possible.
  • the scale coupling circuit 91 receives the setting of the number of spin bits for each of the plurality of spin bit strings by the mode setting register 92, and combines the number of LFBs (group Number) and combine LFB. Thereby, a plurality of Ising models can be realized on one optimization device 26.
  • a common energy is stored in the set of E storage registers corresponding to the set of LFBs used in combination.
  • E 0 and E 1 stored in the E storage registers 94a and 94b have the same value.
  • the control unit 25a when reading the energy value for the set of the LFBs 70a and 70b, the control unit 25a reads the energy value stored in one of the E storage registers 94a and 94b (for example, the E storage register 94a corresponding to the LFB 70a). You just have to read it.
  • the control unit 25a similarly reads the energy value for other combinations of LFB.
  • control unit 25a accepts an input from the CPU 21 of an initial value and an operating condition for each of the problems calculated in parallel as step S10 in FIG. Then, in step S11, the control unit 25a sets the scale / accuracy corresponding to each problem in the LFB mode setting register and the mode setting register 92 for each LFB group used for one problem.
  • the control unit 25a sets 2k bits / 64 bits of precision in the mode setting registers of the LFBs 70a and 70b, and sets the mode selection circuits 91e1 and 91e2 to output to the 2k bits of the scale. Set in register 92. Further, regarding the second problem, the control unit 25a sets 2k bits / 64 bits of precision in the mode setting registers of the LFBs 70c and 70d, and sets the mode selection circuits 91e3 and 91e4 so as to output to the 2k bits of the scale. Set in register 92.
  • the optimization device 26 can calculate two problems (or both problems may be the same problem) in parallel.
  • the control unit 25a controls each LFB so as to perform the procedure of the flowchart shown in FIG. 16 for the combination of LFBs corresponding to each problem.
  • the control unit 25a individually receives, for each problem, initial values of various parameters such as the temperature parameter T, weighting factors, the number of bit updates with a certain temperature parameter, the number of temperature changes, and the like.
  • the data is input to each LFB belonging to the combination of the LFBs for performing the calculation, and the calculation is executed in parallel by each combination of the LFBs.
  • the control unit 25a After completion of the calculation, the control unit 25a reads a spin bit sequence for the first problem from each LFE of the LFBs 70a and 70b, and determines the spin bit sequence as a solution to the first problem. After the calculation, the control unit 25a reads a spin bit string for the second problem from each LFE of the LFBs 70c and 70d, and determines the spin bit sequence as a solution to the second problem. Similarly, three or more problems can be calculated in parallel. As a result, calculations for a plurality of problems can be executed efficiently.
  • the control unit 25a may speed up the operation by a method called a replica exchange method, for example.
  • a replica exchange method a spin bit string is updated with a different temperature parameter in each set of LFBs (each replica), and after a predetermined number of updates, the temperature parameters are exchanged between LFB sets with a predetermined probability (that is, between replicas). To speed up the search for a solution.
  • control unit 25a can reduce the number of repetitions and speed up the operation by solving the same problem in parallel using a plurality of sets of LFBs.
  • optimization problems that can be calculated using the optimization devices 25 and 26 illustrated in the second and third embodiments may be problems in various fields.
  • the scale of the required problem and the accuracy of the expression of the problem may change depending on fields such as learning and business type.
  • FIG. 21 is a diagram illustrating an example of a required range of scale / accuracy for each problem.
  • the horizontal axis represents the scale ratio (the degree indicating the magnitude of the scale), and the vertical axis represents the accuracy ratio (the degree indicating the magnitude of the accuracy).
  • the scale ratio is a ratio of a scale value (the number of spin bits) actually required to a scale reference value serving as a scale reference.
  • the precision ratio is a ratio of the precision value (the number of bits of the coupling coefficient) actually required to the precision reference value serving as the precision reference.
  • a region 401 indicates a range of the scale ratio / accuracy ratio required for the problem in the power field.
  • An area 402 indicates a range of a scale ratio / accuracy ratio required for a problem in the financial field.
  • An area 403 indicates a range of a scale ratio / accuracy ratio required for a problem in the life science field.
  • a relatively high accuracy ratio is often required in the power field.
  • the scale ratio may be relatively small, but a relatively high accuracy ratio may be required.
  • the accuracy ratio may be relatively low, but a relatively large scale ratio may be required.
  • the scale ratio / accuracy ratio required in each field illustrated here is merely an example, and the range of the required scale ratio / accuracy ratio may change in accordance with problems to be dealt with in each field in the future.
  • the modes of various scales / accuracy can be realized by the one-chip optimizing devices 25 and 26, so that it is possible to cope with a combination optimization problem in various fields. become.
  • FIG. 22 is a diagram illustrating an example of a selectable range of the scale accuracy.
  • a graph 500 shows an example of a selectable range of scale accuracy that can be realized by the optimization devices 25 and 26.
  • the upper limit of the capacity reserved for storing the weight coefficient in the SRAM for each LFE is 128 kbits
  • the optimization devices 25 and 26 can realize, for example, five types of modes.
  • other scale / accuracy modes may be available within the range indicated by the hatched area in the graph 500.
  • FIG. 23 is a diagram illustrating an example of an LFE usage pattern.
  • FIG. 23A shows an example (No. 1) of use patterns of n LFEs that can be realized in the second and third embodiments.
  • the optimization device 26 implements the first Ising model X using an LFE group 710 including ⁇ LFEs (that is, a first combination of LFBs) among the n LFEs. Further, the optimization device 26 does not use the LFE group 720 including the remaining ⁇ LFEs. Similarly, the optimizing device 25 may realize the first Ising model X by the LFE group 710, and may not use the LFE group 720.
  • FIG. 23B shows an example (No. 2) of use patterns of n LFEs that can be realized in the third embodiment.
  • the optimization device 26 realizes the first Ising model X by using the LFE group 710 including ⁇ LFEs (that is, the first combination of LFBs) among the n LFEs.
  • the optimization device 26 realizes the first Ising model X by using the LFE group 730 including ⁇ LFEs (that is, the second combination of LFBs) among the remaining LFEs.
  • FIG. 23C shows an example (No. 3) of use patterns of n LFEs that can be realized in the third embodiment.
  • FIG. 24 is a diagram illustrating an example of a usage flow of the optimization device.
  • the CPU 21 receives data 601 indicating a problem that the user wants to solve from the client 30 via the NIC 24.
  • the client 30 and the NIC 24 realize an input unit for inputting various data to the information processing device 20 and a notification unit for notifying a user of a solution obtained as a result of the ground state search as result information that is easy to grasp for the user.
  • the CPU 21 converts the data 601 into a problem of searching for the ground state of the Ising model by the function of the library 21a.
  • the CPU 21 outputs the scale data 611 indicating the scale of the problem (the number of spin bits), the accuracy data 612 indicating the accuracy of the expression of the problem, the energy data 613 indicating the initial value of the energy, and the scale accuracy mode corresponding to the scale / accuracy.
  • the scale data 611 may be binary data indicating a spin bit string.
  • the precision data 612 may include a weight coefficient between spin bits represented by the corresponding precision.
  • the CPU 21 determines an appropriate scale accuracy mode from the problem and generates scale accuracy mode data 614.
  • the CPU 21 inputs the scale data 611, the accuracy data 612, and the energy data 613 to the control unit 25a as initial values.
  • the CPU 21 receives an input of the user-specified operation condition 602.
  • the user-specified operating condition 602 includes, for example, the number of state updates for a certain temperature parameter, the number of updates of the temperature parameter, the decrease in the temperature parameter, and the initial value of the temperature parameter. Further, the user-specified operation condition 602 may include the number of LFBs to be combined.
  • the CPU 21 includes the number of LFBs to be combined in the scale accuracy mode data 614.
  • the CPU 21 inputs the scale accuracy mode data 614 and the user-specified operating condition 602 to the control unit 25a as operating conditions.
  • the scale accuracy mode data 614 is set in the mode setting register 92 and the mode setting register 92 of each LFE including the mode setting register 75.
  • the CPU 21 Upon completion of steps S102 and S103, the CPU 21 instructs the control unit 25a to start execution of an operation for searching for a ground state.
  • the CPU 21 acquires the calculation result 615 from the optimization device 26 and converts it into result information (for example, information on a result display screen) that is easy for the user to grasp.
  • the CPU 21 transmits the converted result information to the client 30 as a solution 616 of the problem that the user wants to solve.
  • the CPU 21 determines the number of spin bits and the number of bits of the weight coefficient according to the problem input by the user.
  • the control unit 25a receives, from the CPU 21, information indicating the number of spin bits, the number of bits of the weight coefficient, and the weight coefficient.
  • the control unit 25a sets the number of spin bits and the number of bits of the weight coefficient in the mode setting register 55 (or the mode setting registers 75 and 92).
  • the control unit 25a stores the number of LFEs corresponding to the number of spin bits in each SRAM.
  • the user can execute the calculations by the optimization devices 25 and 26 with the scale / accuracy according to the problem he / she wants to solve.
  • the optimization device 26 can calculate the same problem by the same user or different problems in parallel. Further, the optimization device 26 can calculate different problems of different users in parallel. That is, by enabling calculation with an appropriate scale / accuracy according to the problem to be solved, it is possible to calculate other problems in parallel using the free LFB (or free LFE).
  • the optimization devices 25 and 26 of one chip can be shared by a plurality of users. Further, the optimization devices 25 and 26 of one chip can be shared for a plurality of problems.
  • an optimization device (or optimization system) having the functions exemplified above can be considered.
  • the optimization device (or the optimization system) includes an input unit, a conversion unit, a control unit, and a display unit.
  • the input unit inputs the problem to be solved and the operating conditions.
  • the input unit may be, for example, an input device such as a mouse or a keyboard, or may be realized by an NIC (for example, the NIC 24) and a client terminal (for example, the client 30).
  • the conversion unit converts the input problem into a search problem for the ground state of the Ising model, scale information indicating the scale of the search problem, accuracy information indicating the accuracy of expression of the search problem, and an initial value of the energy of the search problem. Is generated, and scale accuracy mode information corresponding to scale and accuracy is generated.
  • the conversion unit may be, for example, a processor such as a CPU (for example, CPU 21) that performs the functions of the library 21a and the driver 21b.
  • the conversion unit may be realized by a semiconductor integrated circuit such as an FPGA.
  • the control unit inputs the scale information, the accuracy information, and the energy information (or the initial value of the spin bit string, the initial value of the coupling coefficient, and the initial value of the energy according to the scale information, the accuracy information, and the energy information), and the operating condition.
  • the scale accuracy mode information is input, an operation for searching for a ground state is executed, and a solution is output.
  • the control unit for example, for the LFB 50 (or LFB 70a,..., 70h), the scale information, the accuracy information, and the energy information (or the initial value of the spin bit string corresponding to the scale information, the accuracy information, and the energy information
  • the control unit 25a may be configured to input an operating condition and scale accuracy mode information while inputting an initial value of a coupling coefficient and an energy, execute an operation for searching for a ground state using an LFB, and output a solution.
  • the control unit may be, for example, a semiconductor chip including the control unit 25a and the LFB 50 (or the LFB 70a,..., 70h), and may be a semiconductor chip that searches for the ground state of the Ising model.
  • the control unit performs the scale information, the accuracy information, and the energy information (or a spin bit string of the number of bits according to the scale information, the coupling coefficient of the number of bits according to the accuracy information, and the initial value of the energy according to the energy information.
  • a semiconductor chip that outputs a solution by executing an operation for searching for the ground state of the Ising model based on the operating conditions and the scale accuracy mode information.
  • the scale information may be represented by a scale ratio to a scale reference value serving as a scale reference.
  • the accuracy information may be represented by an accuracy ratio with respect to an accuracy reference value serving as a reference for accuracy.
  • the display unit displays the solution obtained as a result of the search for the ground state by the control unit.
  • the display unit may be a display, or may be realized by an NIC and a client terminal.
  • the conversion unit converts a solution obtained as a result of the ground state search into visualized display information.
  • the display unit displays the visualized display information.
  • the scale / accuracy can be made variable by the exemplified optimization device.
  • the user can execute the calculation by the optimization device with the scale / accuracy according to the problem to be solved.
  • the control of the optimization device 1 according to the first embodiment may be realized by a processor of a computer that controls the optimization device 1 executing a program.
  • the program is stored in a RAM included in the computer.
  • Control of the optimization devices 25 and 26 of the second and third embodiments may be realized by causing the CPU 21 to execute a program.
  • the program can be recorded on a computer-readable recording medium 41.
  • the program can be distributed.
  • the program may be stored in another computer, and the program may be distributed via a network.
  • the computer stores (installs) the program recorded on the recording medium 41 or the program received from another computer in the DRAM 22 or the storage device 23 and reads and executes the program from the DRAM 22 or the storage device 23. Good.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Geometry (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Nonlinear Science (AREA)
  • Computational Linguistics (AREA)
  • Medical Informatics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Complex Calculations (AREA)

Abstract

規模と精度とを可変にすること。 記憶部(11)は、イジングモデルの状態を表すスピンビット列のうちのビット間の相互作用の大きさを示す係数を記憶する。ビット演算回路(1a1~1aN)の各々は、スピンビット列のうちの何れかのビットが反転されると、記憶部から読み出した反転されたビットと自ビットとに対応する係数を用いたエネルギー変化の計算に応じて、自ビットの反転可否を示す信号を出力する。選択回路部(2)は、スピンビット列の第1のビット数(K)のビット演算回路(1a1~1aK)の各々から出力された反転可否を示す信号に基づいて選択した反転させるビットを示す信号をビット演算回路(1a1~1aK)の各々に出力する。設定変更部(5)は、選択回路部(2)に対する第1のビット数(K)の変更およびビット演算回路(1a1~1aK)に対する係数の第2のビット数の変更を行う。

Description

最適化装置、最適化装置の制御方法および最適化装置の制御プログラム
 本発明は最適化装置、最適化装置の制御方法および最適化装置の制御プログラムに関する。
 ノイマン型コンピュータが不得意とする多変数の最適化問題を解く方法として、イジング型のエネルギー関数を用いた最適化装置(イジングマシンまたはボルツマンマシンと呼ばれる場合もある)がある。最適化装置は、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する。
 最適化装置は、例えば、ニューラルネットワークを用いてモデル化することもできる。その場合、イジングモデルに含まれる複数のスピンに対応した複数のビット(スピンビット)のそれぞれが、他のビットと自身のビットとの相互作用の大きさを示す重み係数(結合係数とも呼ばれる)とに応じて0または1を出力するニューロンとして機能する。最適化装置は、例えば、シミュレーテッド・アニーリングなどの確率的探索法により、上記のようなエネルギー関数(コスト関数、目的関数とも呼ばれる)の値(エネルギーと言う)の最小値が得られる各ビットの値の組合せを、解として求める。
 例えば、スピンに対応する単位素子を複数搭載する半導体チップを用いてイジングモデルの基底状態を探索する半導体システムの提案がある。提案の半導体システムでは、大規模な問題に対応可能な半導体チップを実現するに際しては、ある程度の数の単位素子が搭載された半導体チップを複数使用して構築する。
国際公開第2017/037903号
 最適化装置では、解くべき問題に応じて、利用されるスピンビット数(問題の規模に相当)や重み係数のビット数(問題における条件表現の精度に相当)が変わり得る。例えば、ある分野の問題では、スピンビット数が比較的多く用いられ、重み係数のビット数が比較的少なくてよいことがある。一方、他の分野の問題では、スピンビット数が比較的少なくてよいが、重み係数のビット数が比較的多く用いられることがある。しかし、各問題に適合したスピンビット数と重み係数のビット数とを備えた最適化装置を、問題毎に個別に製造するのは非効率である。
 1つの側面では、本発明は、規模と精度とを可変にできる最適化装置、最適化装置の制御方法および最適化装置の制御プログラムを提供することを目的とする。
 1つの態様では、最適化装置が提供される。最適化装置は、記憶部と複数のビット演算回路と選択回路部と設定変更部とを有する。記憶部は、イジングモデルの状態を表すビット列のうちのビット間の相互作用の大きさを示す係数を記憶する。複数のビット演算回路の各々は、ビット列のうちの何れかのビットが反転されると、記憶部から読み出した反転されたビットと自ビットとに対応する係数を用いたイジングモデルのエネルギー変化の計算に応じて、自ビットの反転可否を示す信号を出力する。選択回路部は、複数のビット演算回路のうちビット列の第1のビット数のビット演算回路の各々から出力された反転可否を示す信号に基づいて選択したビット列のうち反転させるビットを示す信号を、第1のビット数のビット演算回路の各々に出力する。設定変更部は、選択回路部に対する第1のビット数の変更、および、第1のビット数のビット演算回路の各々に対する係数の第2のビット数の変更を行う。
 また、1つの態様では、最適化装置が提供される。最適化装置は、入力部と変換部と制御部と表示部とを有する。入力部は、解くべき問題と動作条件とを入力する。変換部は、入力した問題をイジングモデルの基底状態の探索問題に変換するとともに、探索問題の規模を示す規模情報と、探索問題の表現の精度を表す精度情報と、探索問題のエネルギーの初期値を表すエネルギー情報と、規模および精度に応じた規模精度モード情報とを生成する。制御部は、規模情報と、精度情報と、エネルギー情報を入力するとともに動作条件と規模精度モード情報とを入力し、基底状態の探索を行う演算を実行して解を出力する。表示部は、制御部による基底状態の探索の結果として得られた解を表示する。
 また、1つの態様では、最適化装置の制御方法が提供される。
 また、1つの態様では、最適化装置の制御プログラムが提供される。
 1つの側面では、規模と精度とを可変にできる。
 本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
第1の実施の形態の最適化装置を示す図である。 第2の実施の形態の情報処理システムの例を示す図である。 情報処理装置のハードウェア例を示すブロック図である。 情報処理システムにおけるハードウェアの関係の例を示す図である。 制御部のハードウェア例を示すブロック図である。 組合せ最適化問題の例を示す図である。 最少エネルギーとなるバイナリ値の探索例を示す図である。 最適化装置の回路構成例を示す図である。 ランダムセレクタ部の回路構成例を示す図である。 規模と精度とのトレードオフ関係の例を示す図である。 重み係数の格納例(その1)を示す図である。 重み係数の格納例(その2)を示す図である。 重み係数の格納例(その3)を示す図である。 重み係数の格納例(その4)を示す図である。 初期化処理の例を示すフローチャートである。 演算処理の例を示すフローチャートである。 結合係数の格納例(その5)を示す図である。 第3の実施の形態の最適化装置の例を示す図である。 LFBの回路構成例を示す図である。 規模結合回路の回路構成例を示す図である。 問題毎の規模/精度の必要範囲の例を示す図である。 規模精度の選択可能範囲の例を示す図である。 LFEの使用パターンの例を示す図である。 最適化装置の利用フローの例を示す図である。
 以下、本実施の形態について図面を参照して説明する。
 [第1の実施の形態]
 第1の実施の形態を説明する。
 図1は、第1の実施の形態の最適化装置を示す図である。
 最適化装置1は、計算対象の問題を変換したイジングモデルに含まれる複数のスピンに対応する複数のビット(スピンビット)のそれぞれの値の組合せ(状態)のうち、エネルギー関数が最小値となるときの各ビットの値(基底状態)を探索する。
 イジング型のエネルギー関数E(x)は、例えば、以下の式(1)で定義される。
Figure JPOXMLDOC01-appb-M000001
 右辺第1項は、イジングモデルに含まれる全ビットから選択可能な2つのビットの全組合せについて、漏れと重複なく、2つのビットの値(0または1)と結合係数との積を積算したものである。イジングモデルに含まれる全ビット数をK個(Kは2以上の整数)とする。また、i,jの各々を、0以上K-1以下の整数とする。xは、i番目のビットの値を表す変数(状態変数とも呼ばれる)である。xは、j番目のビットの値を表す変数である。Wijは、i番目とj番目のビットの相互作用の大きさを示す重み係数である。なお、Wii=0である。また、Wij=Wjiであることが多い(すなわち、重み係数による係数行列は対称行列である場合が多い)。
 右辺第2項は、全ビットのそれぞれのバイアス係数とビットの値との積の総和を求めたものである。bは、i番目のビットのバイアス係数を示している。
 また、変数xの値が変化して1-xとなると、変数xの増加分は、Δx=(1-x)-x=1-2xと表せる。したがって、スピン反転(値の変化)に伴うエネルギー変化ΔEは、以下の式(2)で表される。
Figure JPOXMLDOC01-appb-M000002
 hはローカルフィールド(局所場)と呼ばれ、式(3)で表される。
Figure JPOXMLDOC01-appb-M000003
 Δxに応じてローカルフィールドhに符号(+1または-1)を乗じたものがエネルギー変化ΔEとなる。ローカルフィールドhの変化分Δhは式(4)で表される。
Figure JPOXMLDOC01-appb-M000004
 ある変数xが変化したときのローカルフィールドhを更新する処理は並列に行われる。
 最適化装置1は、例えば、1チップの半導体集積回路であり、FPGA(Field Programmable Gate Array)などを用いて実現される。最適化装置1は、ビット演算回路1a1,…,1aK,…,1aN(複数のビット演算回路)、選択回路部2、閾値生成部3、乱数生成部4、設定変更部5および制御部6を有する。ここで、Nは、最適化装置1が備えるビット演算回路の総数である。Nは、K以上の整数である。ビット演算回路1a1,…,1aK,…,1aNの各々には、識別情報(index=0,…,K-1,…,N-1)が対応付けられている。
 ビット演算回路1a1,…,1aK,…,1aNは、イジングモデルの状態を表すビット列に含まれる1ビットを提供する単位素子である。当該ビット列は、スピンビット列や状態ベクトルなどと呼ばれてもよい。ビット演算回路1a1,…,1aK,…,1aNの各々は、自ビットと他ビットの間の重み係数を記憶し、重み係数に基づいて他ビットの反転に応じた自ビットの反転可否を判定し、自ビットの反転可否を示す信号を選択回路部2に出力する。
 選択回路部2は、スピンビット列のうち、反転させるビット(反転ビット)を選択する。具体的には、選択回路部2は、ビット演算回路1a1,…,1aK,…,1aNのうち、イジングモデルの基底状態の探索に用いられているビット演算回路1a1,…,1aKの各々から出力された反転可否の信号を受け付ける。選択回路部2は、ビット演算回路1a1,…,1aKのうち、反転可の信号を出力したビット演算回路に対応するビットを優先的に1つ選択し、反転ビットとする。例えば、選択回路部2は、乱数生成部4により出力される乱数ビットに基づいて当該反転ビットの選択を行う。選択回路部2は、選択した反転ビットを示す信号を、ビット演算回路1a1,…,1aKに出力する。反転ビットを示す信号は、反転ビットの識別情報(index=j)と、反転可否を示すフラグ(flg=1)と、反転ビットの現在の値q(今回の反転前の値)とを示す信号を含む。ただし、何れのビットも反転されないこともある。何れのビットも反転されない場合、選択回路部2は、flg=0を出力する。
 閾値生成部3は、ビット演算回路1a1,…,1aK,…,1aNの各々に対し、ビットの反転可否を判定する際に用いられる閾値を生成する。ビット演算回路1a1,…,1aK,…,1aNの各々に当該閾値を示す信号を出力する。後述するように、閾値生成部3は、閾値の生成に、温度を示すパラメータ(温度パラメータ)Tと乱数とを用いる。閾値生成部3は、当該乱数を発生させる乱数発生器を有する。閾値生成部3は、ビット演算回路1a1,…,1aK,…,1aNの各々に対して個別に乱数発生器を有し、個別に閾値の生成と供給とを行うことが好ましい。ただし、閾値生成部3は、所定数のビット演算回路で乱数発生器を共用してもよい。
 乱数生成部4は、乱数ビットを生成し、選択回路部2に出力する。乱数生成部4により生成された乱数ビットは、選択回路部2による反転ビットの選択に用いられる。
 設定変更部5は、ビット演算回路1a1,…,1aK,…,1aNのうち、計算対象のイジングモデルの状態を表すビット列(スピンビット列)の第1のビット数(スピンビット数)の変更を行う。また、設定変更部5は、第1のビット数のビット演算回路の各々に対する、重み係数の第2のビット数の変更を行う。
 制御部6は、温度パラメータTやビット演算回路1a1,…,1aNの各々の記憶部に対する重み係数の設定を行い、ビット演算回路1a1,…,1aNによる演算の開始や終了を制御する。制御部6は、演算結果の出力を行う。例えば、制御部6は、ビット演算回路1a1,…,1aKを用いた演算が終了すると、ビット演算回路1a1,…,1aKに保持されるスピンビット列を読み出して出力する。
 次に、ビット演算回路の回路構成を説明する。ビット演算回路1a1(index=0)を主に説明するが、他のビット演算回路も同様の回路構成で実現される(例えば、X番目(Xは1以上N以下の整数)のビット演算回路に対して、index=X-1とすればよい)。
 ビット演算回路1a1は、記憶部11、精度切替回路12、反転判定部13、ビット保持部14、エネルギー変化計算部15および状態遷移判定部16を有する。
 記憶部11は、例えば、レジスタやSRAM(Static Random Access Memory)などである。記憶部11は、スピンビット列のうちのビット間の相互作用の大きさを示す係数を記憶する。より具体的には、記憶部11は、自ビット(ここでは、index=0のビット)と他ビットとの間の重み係数を記憶する。ここで、スピンビット数(第1のビット数)Kに対して、重み係数の総数はKである。記憶部11には、index=0のビットに対して、K個の重み係数W00,W01,…,W0,K-1が記憶される。ここで、重み係数は第2のビット数Lで表される。したがって、記憶部11では重み係数を格納するために、K×Lビットが所要される。なお、記憶部11は、ビット演算回路1a1の外部であって、最適化装置1の内部に設けられてもよい(他のビット演算回路の記憶部も同様)。
 精度切替回路12は、スピンビット列の何れかのビットが反転されると反転されたビットに対する重み係数を自身の(ビット演算回路1a1の)記憶部11から読み出し、読み出した重み係数をエネルギー変化計算部15に出力する。すなわち、精度切替回路12は、選択回路部2から反転ビットの識別情報を受け付け、記憶部11から反転ビットと自ビットとの組に対応する重み係数を読み出して、エネルギー変化計算部15に出力する。
 このとき、精度切替回路12は、設定変更部5により設定された第2のビット数で表される重み係数の読み出しを行う。精度切替回路12は、設定変更部5による第2のビット数の変更に応じて、記憶部11から読み出す係数の第2のビット数を変更する。
 例えば、精度切替回路12は、記憶部11から所定ビット数のビット列を読み出すセレクタを有する。セレクタが読み出す所定ビット数が、第2のビット数よりも大きい場合、精度切替回路12は、当該セレクタにより反転ビットに対応する重み係数を含む単位ビット列を読み出し、読み出した単位ビット列から第2のビット数で表される重み係数を抽出する。あるいは、精度切替回路12は、セレクタが読み出す所定ビット数が、第2のビット数よりも小さい場合、当該セレクタにより読み出された複数のビット列を結合することで、第2のビット数で表される重み係数を記憶部11から抽出してもよい。
 反転判定部13は、選択回路部2により出力されたindex=jとflgとを示す信号を受け付け、当該信号に基づいて反転ビットとして自ビットが選択されたか否かを判定する。反転ビットとして自ビットが選択された場合(すなわち、index=jが自ビットを示し、flgが反転可を示す場合)、反転判定部13は、ビット保持部14に記憶されたビットを反転させる。すなわち、ビット保持部14に保持されたビットが0の場合、当該ビットを1に変更する。また、ビット保持部14に保持されたビットが1の場合、当該ビットを0に変更する。
 ビット保持部14は、1ビットを保持するレジスタである。ビット保持部14は、保持するビットをエネルギー変化計算部15および選択回路部2に出力する。
 エネルギー変化計算部15は、記憶部11から読み出した重み係数を用いたイジングモデルのエネルギー変化値ΔEを計算し、状態遷移判定部16に出力する。具体的には、エネルギー変化計算部15は、反転ビットの値(今回の反転前の値)を選択回路部2から受け付け、反転ビットが、1から0、または、0から1のどちらに反転するかに応じて、式(4)により、Δhを計算する。そして、エネルギー変化計算部15は、前回のhにΔhを加算することで、hを更新する。エネルギー変化計算部15は、hを保持するレジスタを有し、当該レジスタにより更新後のhを保持する。
 更に、エネルギー変化計算部15は、ビット保持部14より現在の自ビットを受け付け、自ビットが0であれば0から1へ、自ビットが1であれば1から0へ、反転する場合のイジングモデルのエネルギー変化値ΔEを式(2)により計算する。エネルギー変化計算部15は、計算したエネルギー変化値ΔEを、状態遷移判定部16に出力する。
 状態遷移判定部16は、エネルギー変化計算部15によるエネルギー変化の計算に応じて、自ビットの反転可否を示す信号flgを選択回路部2に出力する。具体的には、状態遷移判定部16は、エネルギー変化計算部15により計算されたエネルギー変化値ΔEを受け付け、閾値生成部3により生成された閾値との比較に応じて、自ビットの反転可否を判定する比較器である。ここで、状態遷移判定部16による判定について説明する。
 シミュレーテッド・アニーリングでは、あるエネルギー変化ΔEを引き起こす状態遷移の許容確率p(ΔE,T)を以下の式(5)のように決めれば、時刻(反復回数)無限大の極限で状態が最適解(基底状態)に到達することが知られている。
Figure JPOXMLDOC01-appb-M000005
 式(5)においてTは、前述の温度パラメータTである。ここで、関数fとして、式(6)(メトロポリス法)、または、式(7)(ギブス法)が用いられる。
Figure JPOXMLDOC01-appb-M000006
Figure JPOXMLDOC01-appb-M000007
 温度パラメータTは、例えば、式(8)で表される。すなわち、温度パラメータTは、反復回数tに対して対数的に減少する関数で与えられる。例えば、定数cは問題に応じて決定される。
Figure JPOXMLDOC01-appb-M000008
 ここで、Tは、初期温度値であり問題に応じて十分に大きくとることが望ましい。
 式(5)で表される許容確率p(ΔE,T)を用いた場合、ある温度における状態遷移の十分な反復後に定常状態に達したとすると、当該状態はボルツマン分布に従って生成される。すなわち、各状態の占有確率は熱力学における熱平衡状態に対するボルツマン分布に従う。よって、ある温度でボルツマン分布に従った状態を生成し、その後、当該温度よりも低い温度でボルツマン分布に従った状態を生成し、というように徐々に温度を下げていくことで、各温度におけるボルツマン分布に従った状態を追えることになる。そして、温度0としたときに、温度0でのボルツマン分布により最低エネルギーの状態(基底状態)が高確率で実現される。この様子が材料を焼き鈍したときの状態変化とよく似ているため、この方法はシミュレーテッド・アニーリングと呼ばれる。このとき、エネルギーが上がる状態遷移が確率的に起こることは、物理学における熱励起に相当する。
 例えば、許容確率p(ΔE,T)でエネルギー変化ΔEを引き起こす状態遷移を許容することを示すフラグ(flg=1)を出力する回路は、f(-ΔE/T)と、区間[0,1)の値をとる一様乱数uとの比較に応じた値を出力する比較器により実現できる。
 ただし、次のような変形を行っても同じ機能を実現可能である。2つの数に同じ単調増加関数を作用させても大小関係は変化しない。したがって、比較器の2つの入力に同じ単調増加関数を作用させても比較器の出力は変わらない。例えば、f(-ΔE/T)に作用させる単調増加関数としてf(-ΔE/T)の逆関数f-1(-ΔE/T)、一様乱数uに作用させる単調増加関数としてf-1(-ΔE/T)の-ΔE/Tをuとしたf-1(u)を用いることができる。その場合、上記の比較器と同様の機能を有する回路は、-ΔE/Tがf-1(u)より大きいとき1を出力する回路でよい。更に、温度パラメータTが正であることから、状態遷移判定部16は、-ΔEがT・f-1(u)より大きいとき(あるいは、ΔEが-(T・f-1(u))より小さいとき)、flg=1を出力する回路でよい。
 閾値生成部3は、一様乱数uを生成し、上記のf-1(u)の値に変換する変換テーブルを用いて、f-1(u)の値を出力する。メトロポリス法が適用される場合、f-1(u)は、式(9)で与えられる。また、ギブス法が適用される場合、f-1(u)は、式(10)で与えられる。
Figure JPOXMLDOC01-appb-M000009
Figure JPOXMLDOC01-appb-M000010
 変換テーブルは、例えば、閾値生成部3に接続されたRAM(Random Access Memory)、フラッシュメモリなどのメモリ(図示を省略している)に記憶される。閾値生成部3は、温度パラメータTと、f-1(u)との積(T・f-1(u))を閾値として出力する。ここで、T・f-1(u)は、熱励起エネルギーに相当する。
 なお、選択回路部2から状態遷移判定部16に対してflgを入力し、当該flgが状態遷移を許容しないことを示すとき(つまり状態遷移が生じないとき)、状態遷移判定部16により-ΔEにオフセット値を加算してから、閾値との比較を行ってもよい。また、状態遷移判定部16は、状態遷移が生じないことが継続する場合に、加算するオフセット値を増加させてもよい。一方、状態遷移判定部16は、flgが、状態遷移を許容することを示すとき(つまり状態遷移が生じるとき)には、オフセット値を0にする。-ΔEへのオフセット値の加算やオフセット値の増加により、状態遷移が許容されやすくなり、現在の状態が局所解にある場合、その局所解からの脱出が促進される。
 こうして、温度パラメータTが徐々に小さく設定され、例えば、温度パラメータTの値を所定回数、小さくした場合(または、温度パラメータTが最小値に達した場合)のスピンビット列が、ビット演算回路1a1,…,1aKに保持される。最適化装置1は、温度パラメータTの値を所定回数、小さくした場合(または、温度パラメータTが最小値に達した場合)のスピンビット列を解として出力する。
 最適化装置1では、前述の設定変更部5により、イジングモデルのスピンビット数(第1のビット数)と、ビット間の重み係数のビット数(第2のビット数)とを変更可能である。ここで、スピンビット数は、イジングモデルを実現する回路の規模(問題の規模)に相当する。規模が大きいほど、多数の組合せ候補をもつ組合せ最適化問題に最適化装置1を適用できる。また、重み係数のビット数は、ビット間の相互関係の表現の精度(問題における条件表現の精度)に相当する。精度が高いほど、スピン反転時のエネルギー変化ΔEに対する条件を詳細に設定できる。ある問題では、スピンビット数が大きく、重み係数を表すビット数が小さいことがある。あるいは、別の問題では、スピンビット数が小さく、重み係数を表すビット数が大きいこともある。一方、問題に応じて、各問題に適合した最適化装置を個別に製造することは非効率である。
 そこで、最適化装置1では、設定変更部5によりイジングモデルの状態を表すスピンビット数と重み係数のビット数との設定を可能とすることで、規模と精度とを可変にできる。その結果、1つの最適化装置1において、問題に合った規模および精度を実現できる。
 より具体的には、ビット演算回路1a1,…,1aK,…,1aNの各々は、精度切替回路を有し、当該精度切替回路によって、設定変更部5の設定に応じて、自身の記憶部から読み出す重み係数のビット長を切り替える。また、選択回路部2は、設定変更部5により設定されたスピンビット数に相当する数(例えば、K個)のビット演算回路に対して、反転ビットを示す信号を入力し、当該数(K個)のビット演算回路に対応するビットの中から反転ビットを選択する。これにより、問題に応じた規模および精度を備えた最適化装置を個別に製造しなくても、1つの最適化装置1によって、問題に応じた規模および精度でイジングモデルを実現できる。
 ここで、前述のように、ビット演算回路1a1,…,1aNの各々が備える記憶部は、SRAMなどの比較的小容量の記憶デバイスにより実現される。このため、スピンビット数が増えると、重み係数のビット数によっては、記憶部の容量が不足することも考えられる。一方、最適化装置1によれば、設定変更部5により、記憶部の容量の制限を満たすように、規模および精度を設定することも可能になる。具体的には、設定変更部5は、スピンビット数が増えるほど、重み係数のビット数を減らすように設定することが考えられる。また、設定変更部5は、重み係数のビット数が増えるほど、スピンビット数を減らすように設定することも考えられる。
 また、上記の例では、N個のビット演算回路のうちのK個を、イジングモデルに使用するものとした。最適化装置1は、残りのN-K個のビット演算回路を不使用としてもよい。その場合、選択回路部2は、残りのN-K個のビット演算回路により出力されるフラグflgを全て、強制的に0に設定し、残りのN-K個のビット演算回路に対応するビットが反転候補として選択されないようにしてもよい。
 あるいは、最適化装置1は、N-K≧Kの場合、残りのN-K個のビット演算回路のうちのK個のビット演算回路により、前述のイジングモデルと同じイジングモデルを実現し、両イジングモデルにより同一問題処理の並列度を高めて計算を高速化してもよい。
 更に、最適化装置1は、残りのN-K個のビット演算回路のうちの一部を用いて、他の問題に対応する他のイジングモデルを実現し、前述のイジングモデルで表される問題と並列に、当該他の問題の演算を行ってもよい。
 以下では、最適化装置1を用いる情報処理システムを例示し、最適化装置1の機能を更に詳細に説明する。
 [第2の実施の形態]
 次に、第2の実施の形態を説明する。
 図2は、第2の実施の形態の情報処理システムの例を示す図である。
 第2の実施の形態の情報処理システムは、情報処理装置20とクライアント30とを有する。情報処理装置20およびクライアント30は、ネットワーク40に接続されている。ネットワーク40は、例えば、LAN(Local Area Network)でもよいし、WAN(Wide Area Network)やインターネットなどでもよい。
 情報処理装置20は、組合せ最適化問題をイジングモデルに置き換え、イジングモデルの基底状態の探索により、組合せ最適化問題を高速に解く機能を提供する。
 クライアント30は、ユーザにより使用されるクライアントコンピュータであり、ユーザが解くべき問題の、情報処理装置20への入力に用いられる。
 図3は、情報処理装置のハードウェア例を示すブロック図である。
 情報処理装置20は、CPU(Central Processing Unit)21、DRAM(Dynamic Random Access Memory)22、記憶装置23、NIC(Network Interface Card)24、最適化装置25および媒体リーダ28を有する。
 CPU21、DRAM22、記憶装置23、NIC24、最適化装置25および媒体リーダ28は、情報処理装置20のバス29に接続されている。バス29は、例えば、PCIe(Peripheral Component Interconnect Express)バスである。
 CPU21は、DRAM22に格納されたプログラムの命令を実行するプロセッサである。CPU21は、記憶装置23に記憶されたプログラムやデータの少なくとも一部をDRAM22にロードし、プログラムを実行する。CPU21は、当該プログラムを実行することで発揮される機能により、最適化装置25に対する設定や動作の制御を行う。
 DRAM22は、情報処理装置20の主記憶装置であり、CPU21により実行されるプログラムや最適化装置25に設定されるデータなどを一時的に記憶する。
 記憶装置23は、情報処理装置20の補助記憶装置であり、CPU21により実行されるプログラムや最適化装置25に設定されるデータなどを記憶する。記憶装置23は、例えば、SSD(Solid State Drive)やHDD(Hard Disk Drive)などである。
 NIC24は、ネットワーク40に接続され、ネットワーク40を介してクライアント30と通信する通信インタフェースである。NIC24は、例えば、ネットワーク40に属するスイッチやルータなどの通信装置とケーブルで接続される。
 最適化装置25は、CPU21の制御により、イジングモデルの基底状態を探索する。最適化装置25は、例えば、1チップの半導体集積回路であり、FPGAなどにより実現される。最適化装置25は、第1の実施の形態の最適化装置1の一例である。
 媒体リーダ28は、記録媒体41に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体41として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
 媒体リーダ28は、例えば、記録媒体41から読み取ったプログラムやデータを、DRAM22や記憶装置23などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU21によって実行される。なお、記録媒体41は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体41や記憶装置23を、コンピュータ読み取り可能な記録媒体と言うことがある。
 なお、クライアント30はCPU、主記憶装置、補助記憶装置、NIC、マウスやキーボードなどの入力デバイスおよびディスプレイを有する。
 図4は、情報処理システムにおけるハードウェアの関係の例を示す図である。
 クライアント30は、ユーザプログラム31を実行する。ユーザプログラム31は、情報処理装置20への各種データ(例えば、解くべき問題の内容や最適化装置25の利用スケジュールなどの動作条件)の入力、および、最適化装置25による演算結果の表示などを行う。クライアント30と、NIC24とにより、情報処理装置20への各種データを入力する入力部および基底状態探索の結果として得られた解を、そのまま通知したり、或いは、ユーザに分かり易い結果情報(例えば、結果をグラフとして可視化した表示画面の情報)として表示する表示部が実現される。
 CPU21は、ライブラリ21aおよびドライバ21bを実行するプロセッサ(演算部)である。ライブラリ21aのプログラム、および、ドライバ21bのプログラムは、記憶装置23に格納されており、CPU21による実行時にDRAM22にロードされる。
 ライブラリ21aは、ユーザプログラム31により入力された各種データを受け付け、ユーザが解くべき問題を、イジングモデルの最低エネルギー状態を探索する問題に変換する。ライブラリ21aは、変換後の問題に関する情報(例えば、スピンビット数、重み係数を表すビット数、重み係数の値、温度パラメータの初期値など)を、ドライバ21bに提供する。また、ライブラリ21aは、最適化装置25による解の探索結果をドライバ21bから取得し、当該探索結果をユーザに分かり易い結果情報に変換して、ユーザプログラム31に提供する。
 ドライバ21bは、ライブラリ21aから提供された情報を最適化装置25に供給する。また、ドライバ21bは、イジングモデルによる解の探索結果を最適化装置25から取得し、ライブラリ21aに提供する。
 最適化装置25は、ハードウェアとして、制御部25aおよびLFB(Local Field Block)50を有する。
 制御部25aは、ドライバ21bから受け付けたLFB50の動作条件を記憶するRAMを有し、当該動作条件に基づいてLFB50による演算を制御する。また、制御部25aは、LFB50が備える各種のレジスタへの初期値の設定、SRAMへの重み係数の格納、および、演算終了後のスピンビット列(探索結果)の読み出しなどを行う。制御部25aは、例えば、FPGAにおける回路などによって実現される。
 LFB50は、複数のLFE(Local Field Element)を有する。LFEは、スピンビットに対応する単位素子である。1つのLFEは、1つのスピンビットに対応する。後述するように、最適化装置25は、複数のLFBを有してもよい。
 図5は、制御部のハードウェア例を示すブロック図である。
 制御部25aは、CPU入出力部25a1、制御レジスタ25a2、LFB送信部25a3およびLFB受信部25a4を有する。
 CPU入出力部25a1は、CPU21から受け付けたデータを、制御レジスタ25a2またはLFB50に入力する。例えば、CPU入出力部25a1は、CPU21により入力された規模や精度や各パラメータの初期値や結合定数などの設定データやLFB50の動作条件のデータを、制御レジスタ25a2を介してLFB50に入力することもできるし、LFB50内の各レジスタやRAMに入力することもできる。
 制御レジスタ25a2は、CPU入出力部25a1によるLFB50に対する各種の設定データを保持し、LFB送信部25a3に出力する。また、制御レジスタ25a2は、LFB受信部25a4によりLFB50から受信されたデータを保持し、CPU入出力部25a1に出力する。
 LFB送信部25a3は、制御レジスタ25a2に保持された設定データを、LFB50に送信する。
 LFB受信部25a4は、LFB50からデータ(演算結果などのデータ)を受信し、制御レジスタ25a2に格納する。
 図6は、組合せ最適化問題の例を示す図である。
 組合せ最適化問題の一例として、巡回セールスマン問題を考える。ここでは、簡単のため、A都市,B都市,C都市,D都市,E都市の5つの都市を、最少コスト(距離や料金など)で回る経路を求めるとする。グラフ201は、都市をノード、都市間の移動をエッジとした1つの経路を示す。この経路は、例えば、行を回る順番、列を都市に対応付けた行列202で表される。行列202は、行の小さい順に、ビット「1」が設定された都市を回ることを示す。更に、行列202は、スピンビット列に相当するバイナリ値203に変換できる。行列202の例では、バイナリ値203は、5×5=25ビットとなる。バイナリ値203(スピンビット列)のビット数は、巡回対象の都市が増すほど増加する。すなわち、組合せ最適化問題の規模が大きくなれば、より多くのスピンビットが所要され、スピンビット列のビット数(規模)が大きくなる。
 次に、最少エネルギーとなるバイナリ値の探索例を説明する。
 図7は、最少エネルギーとなるバイナリ値の探索例を示す図である。
 まず、バイナリ値221のうちの1ビットを反転させる前(スピン反転前)のエネルギーをEinitとする。
 最適化装置25は、バイナリ値221の任意の1ビットを反転させたときのエネルギー変化量ΔEを計算する。グラフ211は、横軸をバイナリ値、縦軸をエネルギーとして、エネルギー関数に応じた1ビット反転に対するエネルギー変化を例示している。最適化装置25は、式(2)によりΔEを求める。
 最適化装置25は、上記の計算を、バイナリ値221の全ビットに適用し、各々のビットの反転に対して、エネルギー変化量ΔEを計算する。例えば、バイナリ値221のビット数がNのとき、反転パターン222はN個になる。グラフ212は、反転パターン毎のエネルギー変化の様子を例示する。
 最適化装置25は、反転パターン毎のΔEに基づいて、反転条件(閾値とΔEとの所定の判定条件)を満たした反転パターン222のうちからランダムで1つを選択する。最適化装置25は、選択された反転パターンに対応するΔEを、スピン反転前のEinitに加減算し、スピン反転後のエネルギー値Eを計算する。最適化装置は、求めたエネルギー値EをEinitとし、スピン反転後のバイナリ値223を用いて、上記の手順を繰り返し行う。
 ここで、前述のように、式(2),(3)で用いられるWの1要素は、ビット間の相互作用の大きさを示すスピン反転の重み係数である。重み係数を表すビット数を精度と呼ぶ。精度が高いほど、スピン反転時のエネルギー変化量ΔEに対する条件を詳細に設定できる。例えば、Wの総サイズは、スピンビット列に含まれる2つのビットの全結合に対して「精度×スピンビット数×スピンビット数」である。一例として、スピンビット数が8k(=8192)の場合、Wの総サイズは、「精度×8k×8k」ビットとなる。
 次に、図7で例示した探索を行う最適化装置25の回路構成を説明する。
 図8は、最適化装置の回路構成例を示す図である。
 最適化装置25(あるいは、最適化装置25のLFB50)は、LFE51a1,51a2,…,51an、ランダムセレクタ部52、閾値生成部53、乱数生成部54、モード設定レジスタ55、加算器56およびE格納レジスタ57を有する。
 LFE51a1,51a2,…,51anの各々は、スピンビットの1ビットとして用いられる。nは、2以上の整数であり、LFB50が備えるLFEの数を示す。LFE51a1,51a2,…,51anの各々には、LFEの識別情報(index)が対応付けられている。LFE51a1,51a2,…,51anの各々に対して、index=0,1,…,n-1である。LFE51a1,51a2,…,51anは、第1の実施の形態のビット演算回路1a1,…,1aNの一例である。
 以下では、LFE51a1の回路構成を説明する。LFE51a2,…,51anも、LFE51a1と同様の回路構成により実現される。LFE51a2,…,51anの回路構成の説明については、以下の説明における各要素の符号の末尾の「a1」の部分を、「a2」,…,「an」の各々に置換して(例えば、「60a1」の符号を「60an」のように置換して)読み替えればよい。また、h,q,ΔE,Wなどの各値の添え字についても、「a2」,…,「an」の各々に対応する添え字に置換して読み替えればよい。
 LFE51a1は、SRAM60a1、精度切替回路61a1、Δh生成部62a1、加算器63a1、h格納レジスタ64a1、反転判定部65a1、ビット格納レジスタ66a1、ΔE生成部67a1、判定部68a1を有する。
 SRAM60a1は、重み係数Wを格納する。SRAM60a1は、第1の実施の形態の記憶部11に対応する。SRAM60a1には、全スピンビットの重み係数Wのうち、LFE51a1で使用される分だけ格納される。このため、スピンビット数をK(Kは2以上n以下の整数)とすると、SRAM60a1に格納される全重み係数のサイズは、「精度×K」ビットとなる。図8では、一例として、スピンビット数K=nの場合を例示している。この場合、SRAM60a1には、重み係数W00,W01,…,W0,n-1が格納される。
 精度切替回路61a1は、反転ビットの識別情報であるindexと反転可を示すフラグFとをランダムセレクタ部52から取得し、反転ビットに対応する重み係数をSRAM60a1から抽出する。精度切替回路61a1は、抽出した重み係数を、Δh生成部62a1に出力する。例えば、精度切替回路61a1は、ランダムセレクタ部52によりSRAM60a1に格納されたindexとフラグFとを、SRAM60a1から取得してもよい。あるいは、精度切替回路61a1は、ランダムセレクタ部52からindexとフラグFとの供給を受ける信号線を有してもよい(図示を省略している)。
 ここで、精度切替回路61a1は、モード設定レジスタ55に設定された重み係数のビット数(精度)の設定を受け付け、当該設定に応じて、SRAM60a1から読み出す重み係数のビット数を切り替える。
 具体的には、精度切替回路61a1は、SRAM60a1から所定の単位ビット数のビット列(単位ビット列)を読み出すセレクタを有する。精度切替回路61a1は、当該セレクタにより反転ビットに対応する重み係数を含むビット数rの単位ビット列を読み出す。例えば、当該セレクタが読み出す単位ビット数rが、重み係数のビット数zよりも大きい場合、精度切替回路12は、読み出したビット列に対して、反転ビットに対応する重み係数を示すビット部分をLSB(Least Significant Bit)側にシフトさせ、それ以外のビット部分に0を代入することで、重み係数の読み出しを行う。あるいは、単位ビット数rが、モード設定レジスタ55により設定されたビット数zより小さい場合も考えられる。この場合、精度切替回路61a1は、当該セレクタにより読み出された複数の単位ビット列を結合することで、設定されたビット数zでの重み係数を抽出してもよい。
 なお、精度切替回路61a1は、LFE51a2が備えるSRAM60a2にも接続される。後述するように、精度切替回路61a1は、SRAM60a2から重み係数を読み出すことも可能である。
 Δh生成部62a1は、ランダムセレクタ部52から反転ビットの現在のビット値(今回の反転前のビット値)を受け付け、精度切替回路61a1から取得した重み係数を用いて、式(4)により、ローカルフィールドhの変化量Δhを計算する。Δh生成部62a1は、Δhを加算器63a1に出力する。
 加算器63a1は、h格納レジスタ64a1に格納されたローカルフィールドhにΔhを加算し、h格納レジスタ64a1に出力する。
 h格納レジスタ64a1は、図示しないクロック信号に同期して、加算器63a1が出力する値(ローカルフィールドh)を取り込む。h格納レジスタ64a1は、例えば、フリップフロップである。なお、h格納レジスタ64a1に格納されるローカルフィールドhの初期値は、バイアス係数bである。当該初期値は、制御部25aにより設定される。
 反転判定部65a1は、反転ビットのindex=jと、反転可否を示すフラグFとをランダムセレクタ部52から受け付け、自ビットが反転ビットとして選択されたか否かを判定する。自ビットが反転ビットとして選択された場合、反転判定部65a1は、ビット格納レジスタ66a1に格納されたスピンビットを反転させる。
 ビット格納レジスタ66a1は、LFE51a1に対応するスピンビットを保持する。ビット格納レジスタ66a1は、例えば、フリップフロップである。ビット格納レジスタ66a1に格納されたスピンビットは、反転判定部65a1により反転される。ビット格納レジスタ66a1は、ΔE生成部67a1およびランダムセレクタ部52にスピンビットを出力する。
 ΔE生成部67a1は、h格納レジスタ64a1のローカルフィールドhおよびビット格納レジスタ66a1のスピンビットに基づいて、自ビットの反転に応じたイジングモデルのエネルギー変化量ΔEを、式(2)により計算する。ΔE生成部67a1は、エネルギー変化量ΔEを、判定部68a1およびランダムセレクタ部52に出力する。
 判定部68a1は、ΔE生成部67a1により出力されたエネルギー変化量ΔEと、閾値生成部53により生成された閾値との比較により、自ビットの反転を許容するか否かを示す(自ビットの反転可否を示す)フラグFを、ランダムセレクタ部52に出力する。具体的には、判定部68a1は、ΔEが閾値-(T・f-1(u))より小さいときF=1(反転可)を出力し、ΔEが閾値-(T・f-1(u))以上のときF=0(反転不可)を出力する。ここで、f-1(u)は、適用法則に応じて、式(9),(10)の何れかで与えられる関数である。また、uは、区間[0,1)の一様乱数である。
 ランダムセレクタ部52は、LFE51a1,51a2,…,51anの各々から、エネルギー変化量、スピンビットの反転可否を示すフラグおよびスピンビットを受け付け、反転可であるスピンビットのうち反転させるビット(反転ビット)を選択する。
 ランダムセレクタ部52は、選択した反転ビットの現在のビット値(ビットq)を、LFE51a1,51a2,…,51anが備えるΔh生成部62a1,62a2,…,62anに供給する。ランダムセレクタ部52は、第1の実施の形態の選択回路部2の一例である。
 ランダムセレクタ部52は、反転ビットのindex=jと、反転可否を示すフラグFとを、LFE51a1,51a2,…,51anが備えるSRAM60a1,60a2,…,60anに出力する。なお、ランダムセレクタ部52は、前述のように、反転ビットのindex=jと、反転可否を示すフラグFとを、LFE51a1,51a2,…,51anが備える精度切替回路61a1,61a2,…,61anに出力してもよい。
 また、ランダムセレクタ部52は、反転ビットのindex=jと、反転可否を示すフラグFとを、LFE51a1,51a2,…,51anが備える反転判定部65a1,65a2,…,65anに供給する。
 更に、ランダムセレクタ部52は、選択した反転ビットに対応するΔEを、加算器56に供給する。
 ここで、ランダムセレクタ部52は、あるイジングモデルにおけるスピンビット数(すなわち、使用するLFEの数)の設定を、モード設定レジスタ55から受け付ける。例えば、ランダムセレクタ部52は、indexの小さい方から順に、設定されたスピンビット数に相当する数のLFEを使用して、解の探索が行われるようにする。例えば、ランダムセレクタ部52は、n個のLFEのうち、K個のLFEを用いる場合、LFE51a1,…,LFE51aKのLFEに対応するスピンビット列から反転ビットを選択する。このとき、ランダムセレクタ部52は、例えば、使用しないn-K個のLFE51a(K-1),…,51anの各々から出力されるフラグFを、強制的に0に設定することが考えられる。
 閾値生成部53は、LFE51a1,51a2,…,51anが備える判定部68a1,68a2,…,68anに対して、エネルギー変化量ΔEとの比較に用いられる閾値を生成し、供給する。前述のように、閾値生成部53は、温度パラメータTと、区間[0,1)の一様乱数uと、式(9)または式(10)で示されるf-1(u)とを用いて、閾値を生成する。閾値生成部53は、例えば、LFE毎に個別に、乱数発生器を有し、LFE毎の乱数uを用いて閾値を生成する。ただし、幾つかのLFEで乱数発生器が共有されてもよい。温度パラメータTの初期値やシミュレーテッド・アニーリングにおける温度パラメータTの減少サイクルや減少量などは、制御部25aによって制御される。
 乱数生成部54は、ランダムセレクタ部52における反転ビットの選択に用いられる乱数ビットを生成し、ランダムセレクタ部52に供給する。
 モード設定レジスタ55は、LFE51a1,51a2,…,51anが備える精度切替回路61a1,61a2,61anに対して、重み係数のビット数(すなわち、精度)を示す信号を供給する。また、モード設定レジスタ55は、ランダムセレクタ部52に対して、スピンビット数(すなわち、規模)を示す信号を供給する。モード設定レジスタ55に対するスピンビット数や重み係数のビット数の設定は、制御部25aにより行われる。モード設定レジスタ55は、第1の実施の形態の設定変更部5の一例である。
 加算器56は、ランダムセレクタ部52により出力されたエネルギー変化量ΔEを、E格納レジスタ57に格納されたエネルギー値Eに加算し、E格納レジスタ57に出力する。
 E格納レジスタ57は、図示しないクロック信号に同期して、加算器56が出力するエネルギー値Eを取り込む。E格納レジスタ57は、例えば、フリップフロップである。なお、エネルギー値Eの初期値は、制御部25aによって式(1)を用いて計算され、E格納レジスタ57に設定される。
 例えば、解の探索にK個のLFEが用いられる場合、制御部25aはビット格納レジスタ66a1,…,66aKの各スピンビットを読み出すことで、スピンビット列を得る。
 図9は、ランダムセレクタ部の回路構成例を示す図である。
 ランダムセレクタ部52は、フラグ制御部52aと複数段にわたってツリー状に接続された複数の選択回路とを有する。
 フラグ制御部52aは、モード設定レジスタ55のスピンビット数の設定に応じて、初段の選択回路52a1,52a2,52a3,52a4,…,52aqの各々に入力されるフラグの値を制御する。図9では、選択回路52aqの1つの入力(LFE51anの出力に相当)に対するフラグの値を制御する部分回路52xnが例示されている。部分回路52xnのフラグ設定部52ynは、使用しないLFE51anから出力されるフラグFnを強制的に0に設定するスイッチである。
 初段の選択回路52a1,52a2,52a3,52a4,…,52aqの各々には、LFE51a1,51a2,…,51anのそれぞれが出力する変数qとFとΔEの組が2組ずつ入力される。例えば、選択回路52a1には、LFE51a1が出力する変数qとFとΔEによる組と、LFE51a2が出力する変数qとFとΔEによる組とが入力される。また、選択回路52a2には、変数qとFとΔEによる組と変数qとFとΔEによる組が入力され、選択回路52a3には、変数qとFとΔEによる組と変数qとFとΔEによる組が入力される。更に、選択回路52a4には、変数qとFとΔEによる組と変数qとFとΔEによる組が入力され、選択回路52aqには、変数qn-2とFn-2とΔEn-2による組と変数qn-1とFn-1とΔEn-1による組が入力される。
 そして、選択回路52a1,…,52aqの各々は、入力された2組の変数qとFとΔEと、乱数生成部54が出力する1ビット乱数に基づいて、一方の組の変数qとFとΔEを選択する。このとき、選択回路52a1,…,52aqの各々は、Fが1である組を優先的に選択し、両方の組が1の場合には1ビット乱数に基づいて何れか一方の組を選択する(他の選択回路も同様)。ここで、乱数生成部54は、1ビット乱数を選択回路毎に個別に生成し、各選択回路に供給する。また、選択回路52a1,…,52aqの各々は、どちらの組の変数qとFとΔEを選択したかを示す1ビットの識別値を生成し、選択した変数qとFとΔEと識別値とを含む信号(状態信号と言う)を出力する。なお、初段の選択回路52a1~52aqの数は、LFE51a1,…,51anの数の1/2、つまり、n/2である。
 2段目の選択回路52b1,52b2,…,52brの各々には、選択回路52a1,…,52aqが出力する状態信号が2つずつ入力される。例えば、選択回路52b1には、選択回路52a1,52a2が出力する状態信号が入力され、選択回路52b2には、選択回路52a3,52a4が出力する状態信号が入力される。
 そして、選択回路52b1,…,52brの各々は、2つの状態信号と、乱数生成部54が出力する1ビット乱数に基づいて、2つの状態信号の何れか一方を選択する。また、選択回路52b1,…,52brのそれぞれは、選択した状態信号に含まれる識別値について何れの状態信号を選択したかを示すように1ビットを付加して更新し、選択した状態信号を出力する。
 3段目以降の選択回路においても同様の処理が行われ、各段の選択回路で1ビットずつ識別値のビット幅が増えていき、最後段の選択回路52pから、ランダムセレクタ部52の出力である状態信号が出力される。ランダムセレクタ部52が出力する状態信号に含まれる識別値が、2進数で表された、反転ビットを示すindexである。
 ただし、ランダムセレクタ部52は、各LFEからフラグFとともに当該LFEに対応するindexを受け付け、変数qとFとΔEと同様に、各選択回路によりindexの選択を行うことで、反転ビットに対応するindexを出力してもよい。この場合、各LFEは、index格納用のレジスタを有し、当該レジスタからランダムセレクタ部52へindexを出力する。
 このように、ランダムセレクタ部52は、LFE51a1,…,51anのうち、設定されたスピンビット数KのLFE51a1,…,51aK以外の他のLFE51a(K+1),…,51anにより出力された反転可否を示す信号を強制的に反転不可に設定する。ランダムセレクタ部52は、LFE51a1,…,51aKにより出力された反転可否を示す信号およびLFE51a(K+1),…,51anに対して設定した反転不可を示す信号に基づいて、反転ビットを選択する。ランダムセレクタ部52は、反転ビットを示す信号を、LFE51a1,…,51aKに加えてLFE51a(K+1),…,51anにも出力する。
 こうして、フラグ制御部52aの制御により、使用されないLFEのフラグFが強制的に0に設定されるので、スピンビット列に使用されないLFEに対応するビットを反転候補から除外できる。
 次に、LFE51a1,…,51anの各々のSRAM60a1,60a2,…,60anに対する重み係数の格納例を説明する。まず、SRAM容量に対する規模と精度とのトレードオフ関係について説明する。
 図10は、規模と精度とのトレードオフ関係の例を示す図である。
 前述したように、組合せ最適化問題の一例として、巡回セールスマン問題が挙げられる。巡回セールスマン問題は、巡回する都市数が多く、巡回条件(移動時間、移動距離、移動費等)が少なければ、低精度の問題となり、巡回条件が多い場合は高精度が必要となる。他にも、比較的低精度となる最適化問題として、エイトクイーン問題や四色問題といった、条件がある程度定まっている問題が挙げられる。一方、ポートフォリオ最適化問題は、金額や期間など条件が多くあるため、高精度が求められる。
 LFE毎のSRAMの容量に制限があると、規模と精度とにトレードオフ関係が生ずる。グラフ300は、LFE毎のSRAMにおいて重み係数の格納のための容量の上限が128k(キロ)ビットである場合の規模と精度とのトレードオフ関係を示している。ここで、1k(キロ)=1024とする。グラフ300の横軸は規模(kビット)であり、縦軸は精度(ビット)である。なお、一例として、n=8192であるとする。
 この場合、規模1kビットに対して、精度は最大128ビットである。また、規模2kビットに対して、精度は最大64ビットである。規模4kビットに対して、精度は最大32ビットである。規模8kビットに対して、精度は最大16ビットである。
 そこで、最適化装置25では、例えば、次の4つのモードを利用可能にする。第1のモードは、規模1kビット/精度128ビットのモードである。第2のモードは、規模2kビット/精度64ビットのモードである。第3のモードは、規模4kビット/精度32ビットのモードである。第4のモードは、規模8kビット/精度16ビットのモードである。次に、これら4種のモードの各々に応じた重み係数の格納例を説明する。重み係数は、制御部25aにより、SRAM60a1,60a2,…,60anの各々に格納される。なお、精度切替回路61a1,61a2,…,61anの各々のセレクタによりSRAM60a1,60a2,…,60anから読み出される単位ビット数は、一例として、128ビットであるとする。
 図11は、重み係数の格納例(その1)を示す図である。
 前述の第1のモード(規模1kビット/精度128ビット)を用いる場合、重み係数Wは式(11)で表される。
Figure JPOXMLDOC01-appb-M000011
 データ1d1,1d2,…,1dsは、前述の第1のモード(規模1kビット/精度128ビット)を用いる場合のSRAM60a1,60a2,…,60asに対する重み係数の格納例を示す。ここで、s=1024である。データ1d1,1d2,…,1dsは、各々、SRAM60a1,60a2,…,60asに格納される。このモードでは、LFEは1k個(=1024個)使用される。なお、図中、LFE51a1,…,51asを、各々の識別番号を用いて、LFE0,…,LFE1023のように表記することがある(以降の図も同様)。
 データ1d1は、LFE51a1(LFE0)のSRAM60a1に格納されるW0,0~W0,1023を示す。データ1d2は、LFE51a2(LFE1)のSRAM60a2に格納されるW1,0~W1,1023を示す。データ1dsは、LFE51as(LFE1023)のSRAM60asに格納されるW1023,0~W1023,1023を示す。1つの重み係数Wijのビット数は128ビットである。
 図12は、重み係数の格納例(その2)を示す図である。
 前述の第2のモード(規模2kビット/精度64ビット)を用いる場合、重み係数Wは式(12)で表される。
Figure JPOXMLDOC01-appb-M000012
 データ2d1,2d2,…,2dtは、前述の第2のモード(規模2kビット/精度64ビット)を用いる場合のSRAM60a1,60a2,…,60atに対する重み係数の格納例を示す。ここで、t=2048である。データ2d1,2d2,…,2dtは、各々、SRAM60a1,60a2,…,60atに格納される。このモードでは、LFEは2k個(=2048個)使用される。
 データ2d1は、LFE51a1(LFE0)のSRAM60a1に格納されるW0,0~W0,2047を示す。データ2d2は、LFE51a2(LFE1)のSRAM60a2に格納されるW1,0~W1,2047を示す。データ2dtは、LFE51at(LFE2047)のSRAM60atに格納されるW2047,0~W2047,2047を示す。1つの重み係数Wijのビット数は64ビットである。
 図13は、重み係数の格納例(その3)を示す図である。
 前述の第3のモード(規模4kビット/精度32ビット)を用いる場合、重み係数Wは式(13)で表される。
Figure JPOXMLDOC01-appb-M000013
 データ3d1,3d2,…,3duは、前述の第3のモード(規模4kビット/精度32ビット)を用いる場合のSRAM60a1,60a2,…,60auに対する重み係数の格納例を示す。ここで、u=4096である。データ3d1,3d2,…,3duは、各々、SRAM60a1,60a2,…,60auに格納される。このモードでは、LFEは4k個(=4096個)使用される。
 データ3d1は、LFE51a1(LFE0)のSRAM60a1に格納されるW0,0~W0,4095を示す。データ3d2は、LFE51a2(LFE1)のSRAM60a2に格納されるW1,0~W1,4095を示す。データ3duは、LFE51au(LFE4095)のSRAM60auに格納されるW4095,0~W4095,4095を示す。1つの重み係数Wijのビット数は32ビットである。
 図14は、重み係数の格納例(その4)を示す図である。
 前述の第4のモード(規模8kビット/精度16ビット)を用いる場合、重み係数Wは式(14)で表される。
Figure JPOXMLDOC01-appb-M000014
 データ4d1,4d2,…,4dnは、前述の第4のモード(規模8kビット/精度16ビット)を用いる場合のSRAM60a1,60a2,…,60anに対する重み係数の格納例を示す。ここで、n=8192である。データ4d1,4d2,…,4dnは、各々、SRAM60a1,60a2,…,60anに格納される。このモードでは、LFEは8k個(=8192個)使用される。
 データ4d1は、LFE51a1(LFE0)のSRAM60a1に格納されるW0,0~W0,8191を示す。データ4d2は、LFE51a2(LFE1)のSRAM60a2に格納されるW1,0~W1,8191を示す。データ4dnは、LFE51an(LFE8191)のSRAM60anに格納されるW8191,0~W8191,8191を示す。1つの重み係数Wijのビット数は16ビットである。
 次に、最適化装置25の処理手順を説明する。まず、最適化装置25の初期化処理の例を説明する。
 図15は、初期化処理の例を示すフローチャートである。
 (S10)CPU21は、問題に応じた初期値および動作条件を最適化装置25に入力する。初期値は、例えば、エネルギー値E、ローカルフィールドh、スピンビットq、温度パラメータTの初期値および重み係数Wなどを含む。また、動作条件は、1つの温度パラメータでの状態の更新回数N1、温度パラメータの変更回数N2および温度パラメータの下げ幅などを含む。制御部25aは、入力された初期値および重み係数を、前述の各LFEのレジスタおよびSRAMに設定する。なお、制御部25aは、使用されないLFEがある場合、当該LFEのSRAMに、Wとして、例えば全て0を設定する。スピンビット間の重み係数Wは、問題に応じた精度に対応するビット数で表される。
 (S11)CPU21は、問題に応じたスピンビット数(規模)および重み係数のビット数(精度)を、最適化装置25に入力する。制御部25aは、CPU21からスピンビット数および重み係数のビット数を受け付け、モード設定レジスタ55に入力する。モード設定レジスタ55に入力された重み係数のビット数は、各LFEの精度切替回路に入力される。また、モード設定レジスタ55に入力されたスピンビット数は、ランダムセレクタ部52に入力される。
 (S12)CPU21は、最適化装置25に演算開始フラグ(例えば、演算開始フラグ=1)を入力する。制御部25aは、演算開始フラグの入力を受け付け、LFB50による演算を開始する。こうして、初期化処理が終了する。
 図16は、演算処理の例を示すフローチャートである。
 ここで、図16の説明では、index=iに対応するLFEをLFE51ax(1番目のLFEはLFE51a1であり、n番目のLFEは51anである)と表記する。LFE51axに含まれる各部についても、例えば、SRAM60axのように、符号の末尾に「x」を付して表記する。LFE51a1,…,LFE51anの各々による演算は並列に実行される。
 (S20)ΔE生成部67axは、h格納レジスタ64axに格納されたローカルフィールドhおよびビット格納レジスタ66axに格納されたビットqに基づいて、当該ビットqを反転させた場合のエネルギー変化量ΔEを生成する。ΔEの生成には、式(2)が用いられる。
 (S21)判定部68axは、ΔE生成部67axにより生成されたエネルギー変化量ΔEと、閾値生成部53により生成された閾値(=-(T・f-1(u)))とを比較し、閾値>ΔEであるか否かを判定する。閾値>ΔEの場合、ステップS22に処理が進む。閾値≦ΔEの場合、ステップS23に処理が進む。
 (S22)判定部68axは、反転候補信号(F=1)をランダムセレクタ部52に出力する。そして、ステップS24に処理が進む。
 (S23)判定部68axは、非反転信号(F=0)をランダムセレクタ部52に出力する。そして、ステップS24に処理が進む。
 (S24)ランダムセレクタ部52は、LFE51a1,…,LFE51anの各々から出力された全反転候補(F=1であるLFEに対応するビット)から、反転ビットを1つ選択する。ランダムセレクタ部52は、選択した反転ビットに対応するindex=j、F、qをLFE51a1,…,LFE51anに出力する。また、ランダムセレクタ部52は、選択した反転ビットに対応するΔEを、加算器56に出力する。すると、次のステップS25(エネルギー更新処理),S26(状態更新処理)が並列に開始される。
 (S25)加算器56は、反転ビットに対応するエネルギー変化量ΔEを、エネルギー値Eに加算することで、E格納レジスタ57に格納されたエネルギー値Eを更新する。すなわち、E=E+ΔEである。そして、エネルギー更新処理が終了する。
 (S26)精度切替回路61axは、反転ビットに対応するindex=jとフラグFとを取得し、当該反転ビットに対応する重み係数を含む単位ビット列をSRAM60axから読み出す。単位ビット列とは、精度切替回路61axのセレクタが、SRAM60axから一度に読み出すビット列の単位である。単位ビット列のビット数(単位ビット数)は、一例では、128ビットである(他の値でもよい)。この場合、ステップS26ではSRAM60axから128ビットの単位ビット列が読み出される。
 例えば、精度として、128/a(a=1,2,4,8)ビットが選択されている場合、精度切替回路61axは、SRAM60axの先頭(先頭を0番目とする)の単位ビット列から数えて「Integer(j/a)」番目の単位ビット列を読み出す。ここで、Integer(j/a)は、(j/a)の値から整数部を抽出する関数である。
 (S27)精度切替回路61axは、ステップS26で読み出された単位ビット列から、モード設定レジスタ55により設定されたモード選択に応じたビット数の重み係数(反転ビットqに対応する重み係数)Wijを抽出する。例えば、精度切替回路61axは、128ビットの単位ビット列からzビットのビット列を抽出する場合、前述のように反転ビットに対応するzビットのビット範囲をLSB側へシフトし、それ以外の上位ビットに0を設定することで、zビットの重み係数を抽出する。
 なお、精度切替回路61axは、ステップS26で読み出した単位ビット列を、先頭から精度に応じたビット長の区画に分けたときに、反転ビットに対応するビット範囲が先頭(0番目)から何番目の区画に対応するかにより当該ビット範囲を特定する。
 図12~図14の例によれば、精度64ビットの場合、jが偶数のときに0番目の区画、jが奇数のときに1番目の区画である。また、精度32ビットの場合、mod(j,4)番目=0のときに0番目の区画、mod(j,4)=1のときに1番目の区画、mod(j,4)=2のときに2番目の区画、mod(j,4)=3のときに3番目の区画である。ここで、mod(u,v)は、uをvで除したときの剰余を示す関数である。更に、精度16ビットの場合も同様に、読み出した128ビットの単位ビット列の先頭から「mod(j,8)」番目の区画が、反転ビットに対応するビット範囲となる。なお、精度128ビットの場合、精度切替回路61axは、ステップS26で読み出された128ビットの単位ビット列を、そのまま反転ビットに対応する重み係数とする。
 上記の例では、128/a(a=1,2,4,8)ビットの精度に対し、ステップS26で読み出された128ビットの単位ビット列の先頭から「mod(j,a)」番目の区画(1区画のサイズは128/aビット)が、反転ビットに対応する重み係数を示すビット範囲である。
 (S28)Δh生成部62axは、反転ビットの反転方向と、精度切替回路61axにより抽出された重み係数Wijとに基づいて、Δhを生成する。Δhの生成には、式(4)が用いられる。また、反転ビットの反転方向は、ランダムセレクタ部52により出力される反転ビットq(今回の反転前のビット)により判別される。
 (S29)加算器63axは、Δh生成部62axにより生成されたΔhを、h格納レジスタ64axに格納されたローカルフィールドhに加算することで、h格納レジスタ64axに格納されたローカルフィールドhを更新する。また、反転判定部65axは、ランダムセレクタ部52により出力されたindex=jおよびフラグFに基づいて、自ビットが反転ビットとして選択されたか否かを判定する。反転判定部65axは、自ビットが反転ビットとして選択された場合、ビット格納レジスタ66axに格納されたスピンビットを反転させ、自ビットが反転ビットとして選択されなかった場合、ビット格納レジスタ66axのスピンビットを維持する。ここで、自ビットが反転ビットとして選択された場合とは、ランダムセレクタ部52により出力された信号について、index=j=i、かつ、F=1の場合である。
 (S30)制御部25aは、現在の温度パラメータTにおいて、LFE51a1,…,LFE51anに保持される各スピンビットの更新処理回数がN1に達したか(更新処理回数=N1であるか)否かを判定する。更新処理回数がN1に達した場合、ステップS31に処理が進む。更新処理回数がN1に達していない場合、制御部25aは、更新処理回数に1を加算して、ステップS20に処理を進める。
 (S31)制御部25aは、温度パラメータTの変更回数がN2に達したか(温度変更回数=N2であるか)否かを判定する。温度変更回数がN2に達した場合、ステップS33に処理が進む。温度変更回数がN2に達していない場合、制御部25aは、温度変更回数に1を加算して、ステップS32に処理を進める。
 (S32)制御部25aは、温度パラメータTを変更する。具体的には、制御部25aは、動作条件に応じた下げ幅で、温度パラメータTの値を減少させる(温度を下げることに相当する)。そして、ステップS20に処理が進む。
 (S33)制御部25aは、ビット格納レジスタ66axに格納されたスピンビットを読み出し、演算結果として出力する。具体的には、制御部25aは、モード設定レジスタ55により設定されたスピンビット数Kに対応するビット格納レジスタ66a1,…,66aKの各々に格納されたスピンビットを読み出し、CPU21に出力する。すなわち、制御部25aは、読み出したスピンビット列をCPU21に供給する。そして、演算処理が終了する。
 なお、ステップS24において、ランダムセレクタ部52は、モード設定レジスタ55の設定に応じて、使用されないLFEにより出力されるFの値を、強制的に0に設定することで、使用されないLFEをビット反転の候補から除外することができる。
 最適化装置25によれば、モード設定レジスタ55によりイジングモデルの状態を表すスピンビット数と重み係数のビット数との設定を可能とし、1チップの最適化装置25において、問題に合った規模および精度を実現できる。
 より具体的には、精度切替回路61axは、モード設定レジスタ55の設定に応じて、SRAM60axから読み出す重み係数のビット長を切り替える。精度切替回路61axを用いることで、ステップS27で示したように、精度切替回路61axのセレクタがSRAM60axから読み出す単位ビット数を変更せずに、種々の精度を実現できる。例えば、精度切替回路61axのセレクタによるSRAM60axからの単位ビット数分の読み出し用の信号線の作り変えを要さずに、精度を可変にできる。
 また、ランダムセレクタ部52は、モード設定レジスタ55により設定されたスピンビット数に相当する数(例えば、K個)のLFEに対して、反転ビットを示す信号を入力し、当該数(K個)のLFEに対応するビットの中から反転ビットを選択する。ランダムセレクタ部52は、使用されないn-K個のLFEにも反転ビットを示す信号を入力するが、当該n-K個のLFEから出力されるフラグFを強制的に0(反転不可)に設定することで、使用されないLFEを反転ビットの選択候補から除外する。
 これにより、問題に応じた規模および精度を備えた最適化装置を個別に製造しなくても、1つの最適化装置25によって、問題に応じた規模および精度でイジングモデルを実現できる。
 次に、モード設定の他の例を説明する。例えば、最適化装置25は、次のようにSRAM60a1,…,60anに重み係数を格納することで、前述の4種類のモードに加え、規模4kビット/精度64ビットの第5のモードを提供することもできる。
 図17は、結合係数の格納例(その5)を示す図である。
 データ5d1,5d2,…,5dnは、前述の第5のモード(規模4kビット/精度64ビット)を用いる場合のSRAM60a1,60a2,…,60anに対する重み係数の格納例を示す。ここで、n=8192である。データ5d1,5d2,…,5dnは、各々、SRAM60a1,60a2,…,60anに格納される。このモードでは、スピンビット列として、LFEは4k個(=4096個)使用され、重み係数の格納のみの用途として、更に4k個(=4096個)のLFEが使用される。
 データ5d1は、LFE51a1(LFE0)のSRAM60a1に格納されるW0,0~W0,2047を示す。データ5d2は、LFE51a2(LFE1)のSRAM60a2に格納されるW0,2048~W0,4095を示す。データ5dnは、LFE51an(LFE8191)のSRAM60anに格納されるW4095,2048~W4095,4095を示す。1つの重み係数Wijのビット数は64ビットである。
 ここで、前述のように、LFE51a1の精度切替回路61a1は、LFE51a2のSRAM60a2からも重み係数を取得することができる。すなわち、精度切替回路61a1は、例えば、隣接するLFE51a2のSRAM60a2からの読み出し経路を利用することで、LFE51a2のSRAM60a2以外の機能を停止させ、SRAM60a2の容量をLFE51a1に貸し出す方法を採れる。例えば、奇数番目(先頭を1番目とする)のLFEにより偶数番目のLFEのSRAMを利用可能にする(あるいは、先頭を0番目とした場合は偶数番目のLFEにより奇数番目のLFEのSRAMを利用可能にするとも言える)。
 このように、精度切替回路61a1,…,61anは、重み係数のビット数の変更に応じて、自ビットと他ビットとに関する重み係数のうちの一部を、スピンビットとして使用されない他のLFEが有するSRAMから読み出す。この場合、ランダムセレクタ部52は、例えば、スピンビットとして使用されない他のLFEから出力されるフラグFを強制的に0(反転不可)に設定することで、当該他のLFEに対応するビットを反転ビットの選択候補から除外してもよい。
 これにより、規模4kビット/精度64ビットの第5のモードを実現できる。同様に、規模を小さくすることで、更に大きな精度を実現することもできる。このように、最適化装置25によれば、問題に応じて、規模および精度をより柔軟に変更することができる。
 [第3の実施の形態]
 次に、第3の実施の形態を説明する。前述の第2の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
 第3の実施の形態では、第2の実施の形態の機能に加え、LFEを効率的に利用可能にする機能を提供する。
 ここで、第3の実施の形態の情報処理システムの装置構成および情報処理装置20のハードウェア構成は、図2,図3と同様であるため、説明を省略する。第3の実施の形態の最適化装置は、第2の実施の形態の最適化装置25と回路構成の一部が異なる。
 図18は、第3の実施の形態の最適化装置の例を示す図である。
 最適化装置26は、例えば、1チップの半導体集積回路であり、FPGAなどにより実現される。最適化装置26は、第1の実施の形態の最適化装置1の一例である。最適化装置26は、複数のLFBを有する。最適化装置26は、当該複数のLFBを制御する制御部25aを有する(図示を省略している)。
 第3の実施の形態では、一例として、1つのLFBに属するLFEの数をm個(mは2以上の整数)とし、最適化装置26は、LFB70a,70b,70c,70d,70e,70f,70g,70hを有するものとする。この場合、最適化装置26は、合計で8m個のLFEを有し、最大規模8mビットを実現可能である。ただし、最適化装置26が備えるLFBの個数は、8個に限らず、他の個数でもよい。
 LFB70a,…,70hが備える複数のLFEは、第1の実施の形態のビット演算回路1a1,…,1aNの一例である。LFB70a,…,70hの各々は、所定数(m個)のLFEを要素に含む、LFEの1つのグループであると言える。また、LFB70a,…,70hの各々には、識別番号#0~#7が割り当てられている。
 最適化装置26は、更に、規模結合回路91、モード設定レジスタ92、加算器93a,93b,93c,93d,93e,93f,93g,93hおよびE格納レジスタ94a,94b,94c,94d,94e,94f,94g,94hを有する。
 ここで、LFB70aは、LFE71a1,…,LFE71am、ランダムセレクタ部72、閾値生成部73、乱数生成部74およびモード設定レジスタ75を有する。LFE71a1,…,LFE71am、ランダムセレクタ部72、閾値生成部73、乱数生成部74およびモード設定レジスタ75は、図8で説明した第2の実施の形態の同名のハードウェアに相当するため、説明を省略する。ただし、ランダムセレクタ部72は、選択した反転ビットに対する状態信号(フラグFx0、スピンビットqx0およびエネルギー変化量ΔEx0)の組を、規模結合回路91に出力する。また、ランダムセレクタ部72は、フラグ制御部52aを有さなくてよい(ただし、有してもよい)。例えば、ランダムセレクタ部72では、各LFEからの状態信号が、フラグ制御部52aを介さずに、ランダムセレクタ部72の初段の各選択回路に2つずつ入力される。なお、LFB70b,…,70hも、LFB70aと同様の回路構成を有する。
 規模結合回路91は、LFB70a,…,70hの各々から状態信号を受け付け、状態信号に基づいて反転ビットの選択を行う。規模結合回路91は、反転ビットに関する信号を、LFB70a,…,70hの各LFEに供給する。
 具体的には、規模結合回路91は、フラグFy0、ビットqy0および反転ビットを示すindex=y0をLFB70a1のLFE71a1,…,71amに出力する。ここで、以降の図では、ランダムセレクタ部72および規模結合回路91により出力される「index=x0」などの表記を「x0」のように略記することがある。規模結合回路91は、エネルギー変化量ΔEy0を加算器93aに出力する。
 また、規模結合回路91は、フラグFy1、ビットqy1および反転ビットを示すindex=y1をLFB70bの各LFEに供給する。エネルギー変化量ΔEy1を加算器93bに出力する。
 規模結合回路91は、フラグFy2、ビットqy2および反転ビットを示すindex=y2をLFB70cの各LFEに出力する。規模結合回路91は、エネルギー変化量ΔEy2を加算器93cに出力する。
 規模結合回路91は、フラグFy3、ビットqy3および反転ビットを示すindex=y3をLFB70dの各LFEに出力する。規模結合回路91は、エネルギー変化量ΔEy3を加算器93dに出力する。
 規模結合回路91は、フラグFy4、ビットqy4および反転ビットを示すindex=y4をLFB70eの各LFEに出力する。規模結合回路91は、エネルギー変化量ΔEy4を加算器93eに出力する。
 規模結合回路91は、フラグFy5、ビットqy5および反転ビットを示すindex=y5をLFB70fの各LFEに出力する。規模結合回路91は、エネルギー変化量ΔEy5を加算器93fに出力する。
 規模結合回路91は、フラグFy6、ビットqy6および反転ビットを示すindex=y6をLFB70gの各LFEに出力する。規模結合回路91は、エネルギー変化量ΔEy6を加算器93gに出力する。
 規模結合回路91は、フラグFy7、ビットqy7および反転ビットを示すindex=y7をLFB70hの各LFEに出力する。規模結合回路91は、エネルギー変化量ΔEy7を加算器93hに出力する。
 LFB70a,…,70hの各々が有するランダムセレクタ部(ランダムセレクタ部72を含む)および規模結合回路91は、第1の実施の形態の選択回路部2の一例である。
 モード設定レジスタ92は、規模結合回路91に対する動作モードの設定を行う。モード設定レジスタ92は、モード設定レジスタ75によりLFE71a1,…,71amおよびランダムセレクタ部72に設定される動作モードと同じ動作モードを規模結合回路91に設定する。モード設定レジスタ75,92によるモード設定の詳細は後述される。LFB70a,…,70hの各々が有するモード設定レジスタ(モード設定レジスタ75を含む)およびモード設定レジスタ92は、第1の実施の形態の設定変更部5の一例である。
 加算器93aは、ΔEy0を、E格納レジスタ94aに格納されているエネルギー値Eに加算することで、当該エネルギー値Eを更新する。E格納レジスタ94aは、例えば、クロック信号(図示を省略している)に同期して(他のE格納レジスタも同様)、加算器93aにより計算されたエネルギー値Eを取り込む。
 加算器93bは、ΔEy1を、E格納レジスタ94bに格納されているエネルギー値Eに加算することで、当該エネルギー値Eを更新する。E格納レジスタ94bは、加算器93bにより計算されたエネルギー値Eを取り込む。
 加算器93cは、ΔEy2を、E格納レジスタ94cに格納されているエネルギー値Eに加算することで、当該エネルギー値Eを更新する。E格納レジスタ94cは、加算器93cにより計算されたエネルギー値Eを取り込む。
 加算器93dは、ΔEy3を、E格納レジスタ94dに格納されているエネルギー値Eに加算することで、当該エネルギー値Eを更新する。E格納レジスタ94dは、加算器93dにより計算されたエネルギー値Eを取り込む。
 加算器93eは、ΔEy4を、E格納レジスタ94eに格納されているエネルギー値Eに加算することで、当該エネルギー値Eを更新する。E格納レジスタ94eは、加算器93eにより計算されたエネルギー値Eを取り込む。
 加算器93fは、ΔEy5を、E格納レジスタ94fに格納されているエネルギー値Eに加算することで、当該エネルギー値Eを更新する。E格納レジスタ94fは、加算器93fにより計算されたエネルギー値Eを取り込む。
 加算器93gは、ΔEy6を、E格納レジスタ94gに格納されているエネルギー値Eに加算することで、当該エネルギー値Eを更新する。E格納レジスタ94gは、加算器93gにより計算されたエネルギー値Eを取り込む。
 加算器93hは、ΔEy7を、E格納レジスタ94hに格納されているエネルギー値Eに加算することで、当該エネルギー値Eを更新する。E格納レジスタ94hは、加算器93hにより計算されたエネルギー値Eを取り込む。
 E格納レジスタ94a,…,94hの各々は、例えば、フリップフロップである。
 次に、LFB70aの回路構成例を説明する。LFB70b,…,70hもLFB70aと同様の回路構成である。
 図19は、LFBの回路構成例を示す図である。
 LFE71a1,71a2,…,71amの各々は、スピンビットの1ビットとして用いられる。mは、2以上の整数であり、LFB70aが備えるLFEの数を示す。図19では、一例として、m=1024としている。ただし、mは他の値でもよい。
 LFE71a1,71a2,…,71amの各々には、識別情報(index)が対応付けられている。LFE71a1,71a2,…,71amの各々に対して、index=0,1,…,1023である。
 以下では、LFE71a1の回路構成を説明する。LFE71a2,…,71amも、LFE71a1と同様の回路構成により実現される。LFE71a2,…,71amの回路構成の説明については、以下の説明における各要素の符号の末尾の「a1」の部分を、「a2」,…,「am」の各々に置換して(例えば、「80a1」の符号を「80am」のように置換して)読み替えればよい。
 LFE71a1は、SRAM80a1、精度切替回路81a1、Δh生成部82a1、加算器83a1、h格納レジスタ84a1、反転判定部85a1、ビット格納レジスタ86a1、ΔE生成部87a1、判定部88a1を有する。
 ここで、SRAM80a1、精度切替回路81a1、Δh生成部82a1、加算器83a1、h格納レジスタ84a1、反転判定部85a1、ビット格納レジスタ86a1、ΔE生成部87a1、判定部88a1は、各々、図8で説明した同名のハードウェアと同様の機能を有する。ただし、SRAM80a1(または精度切替回路81a1)および反転判定部85a1には、規模結合回路91により出力されたindex=y0および反転可否を示すフラグFy0が供給される。また、Δh生成部82a1には、規模結合回路91により出力された反転ビットqy0が供給される。
 モード設定レジスタ75は、精度切替回路81a1,81a2,…,81amに対する重み係数のビット数(精度)の設定を行う。モード設定レジスタ75は、ランダムセレクタ部72に対して設定を行う信号線を有していない(ただし、当該信号線を有してもよい)。第3の実施の形態では、一例として、第2の実施の形態で示した次の5種類のモードを利用可能である。
 第1のモードは、規模1kビット/精度128ビットのモードである。規模1kビット/精度128ビットのモードは、LFBを1個使用する。当該モードは、LFB70a,…,70hの何れか1個だけで実現可能である。
 第2のモードは、規模2kビット/精度64ビットのモードである。規模2kビット/精度64ビットのモードは、LFBを2個使用する。例えば、当該モードは、LFB70a,70bの組合せ、LFB70c,70dの組合せ、LFB70e,70fの組合せ、および、LFB70g,70hの組合せのうちの何れか1つの組合せで実現可能である。
 第3のモードは、規模4kビット/精度32ビットのモードである。規模4kビット/精度32ビットのモードは、LFBを4個使用する。例えば、当該モードは、LFB70a,70b,70c,70dの組合せ、および、LFB70e,70f,70g,70hの組合せのうちの何れか1つの組合せで実現可能である。
 第4のモードは、規模4kビット/精度64ビットのモードである。規模4kビット/精度64ビットのモードは、LFBを8個使用する。当該モードは、LFB70a,…,70hの組合せを用いて実現可能である。ただし、図17で説明したように、1つのLFBにおいて使用されるLFEの数は、LFB1つが備えるLFEの数の半分となる。
 第5のモードは、規模8kビット/精度16ビットのモードである。規模8kビット/精度16ビットのモードは、LFBを8個使用する。当該モードは、LFB70a,…,70hの組合せを用いて実現可能である。
 また、第3の実施の形態の最適化装置26は、上記の規模1kビット/精度128ビットのモード、規模2kビット/精度64ビットのモード、規模4kビット/精度32ビットのモードを組合せて、同一問題または他の問題の演算を並列に実行可能にする。
 そのため、規模結合回路91は、複数のLFB(LFBの組合せ)に対し、モード設定レジスタ92によるスピンビット数の変更に応じて、スピンビット数に相当する数のLFEを含むように、組合せるLFB数(組合せるグループ数)を選択する。規模結合回路91は、例えば次の回路構成を有する。
 図20は、規模結合回路の回路構成例を示す図である。
 規模結合回路91は、複数段にわたってツリー状に接続された選択回路91a1,91a2,91a3,91a4,91b1,91b2,91c1と、乱数生成部91dと、モード選択回路91e1,91e2,91e3,91e4,91e5,91e6,91e7,91e8を有する。
 初段の選択回路91a1,…,91a4の各々には、LFB70a,…,70hのそれぞれが出力する変数qとFとΔEとindex=iの組(状態信号)が2組ずつ入力される。例えば、選択回路91a1には、LFB70a(#0)が出力する(qx0,Fx0,ΔEx0,index=x0)の組と、LFB70b(#1)が出力する(qx1,Fx1,ΔEx1,index=x1)の組が入力される。また、選択回路91a2には、LFB70c(#2)が出力する(qx2,Fx2,ΔEx2,index=x2)の組とLFB70d(#3)が出力する(qx3,Fx3,ΔEx3,index=x3)の組が入力される。選択回路91a3には、LFB70e(#4)が出力する(qx4,Fx4,ΔEx4,index=x4)の組とLFB70f(#5)が出力する(qx5,Fx5,ΔEx5,index=x5)の組が入力される。選択回路91a4には、LFB70g(#6)が出力する(qx6,Fx6,ΔEx6,index=x6)の組とLFB70h(#7)が出力する(qx7,Fx7,ΔEx7,index=x7)の組が入力される。
 そして、選択回路91a1,…,91a4の各々は、乱数生成部91dが出力する1ビット乱数に基づいて、2組のうちの一方の組の(x,F,ΔE,index=i)を選択する。このとき、選択回路91a1,…,91a4の各々は、Fが1である組を優先的に選択し、両方の組が1の場合には1ビット乱数に基づいて何れか一方の組を選択する(なお、選択回路91b1,91b2,91c1も同様)。ここで、乱数生成部91dは、1ビット乱数を選択回路毎に個別に生成し、各選択回路に供給する。また、選択回路91a1,…,91a4の各々は、どちらの組を選択したかを示す識別値を、両組に含まれるindexに基づいて生成し、選択した変数qとFとΔEと識別値とを含む状態信号を出力する。なお、選択回路91a1,…,91a4の各々が出力する識別値は、入力されたindexよりも1ビット増える。
 2段目の選択回路91b1,91b2の各々には、選択回路91a1,…,91a4が出力する状態信号が2つずつ入力される。例えば、選択回路91b1には、選択回路91a1,91a2が出力する状態信号が入力され、選択回路91b2には、選択回路91a3,91a4が出力する状態信号が入力される。
 そして、選択回路91b1,91b2の各々は、2つの状態信号と、乱数生成部91dが出力する1ビット乱数に基づいて、2つの状態信号の何れか一方を選択する。また、選択回路91b1,91b2の各々は、選択した状態信号に含まれる識別値について、何れの状態信号を選択したかを示すように1ビットを付加して更新し、選択した状態信号を出力する。
 最終段の選択回路91c1には、選択回路91b1,91b2が出力する状態信号が2つ入力される。選択回路91c1は、2つの状態信号と乱数生成部91dが出力する1ビット乱数に基づいて、2つの状態信号の何れか一方を選択する。また、選択回路91c1は、選択した状態信号に含まれる識別値について、何れの状態信号を選択したかを示すように1ビットを付加して更新し、選択した状態信号を出力する。
 前述のように、識別値はindexに相当する。規模結合回路91は、変数qとFとΔEと同様にして、各選択回路により、各ランダムセレクタ部から入力されたindexの選択を行うことで、反転ビットに対応するindexを出力してもよい。この場合、各ランダムセレクタ部は、各LFEから変数qやフラグFと共にindexの供給を受けることになる。制御部25aは、各LFEの所定のindex格納用のレジスタに対してLFBの組合せに応じたindexの設定を行うことが考えられる。
 モード選択回路91e1,…,91e8の各々は、規模(すなわち、1kビット、2kビット、4kビットおよび8kビット)に応じた入力端子を有する。図中、モード選択回路91e1,…,91e8の各々に表記された「1」は規模1kビットに対応する入力端子を示す。同「2」は規模2kビットに対応する入力端子を示す。同「4」は規模4kビット(ただし、精度32ビット)に対応する入力端子を示す。同「8」は規模8kビット(または規模4kビット/精度64ビット)に対応する入力端子を示す。
 モード選択回路91e1の規模1kビットの入力端子には、LFB70a(#0)が出力する状態信号が入力される。モード選択回路91e2の規模1kビットの入力端子には、LFB70b(#1)が出力する状態信号が入力される。モード選択回路91e3の規模1kビットの入力端子には、LFB70c(#2)が出力する状態信号が入力される。モード選択回路91e4の規模1kビットの入力端子には、LFB70d(#3)が出力する状態信号が入力される。モード選択回路91e5の規模1kビットの入力端子には、LFB70e(#4)が出力する状態信号が入力される。モード選択回路91e6の規模1kビットの入力端子には、LFB70f(#5)が出力する状態信号が入力される。モード選択回路91e7の規模1kビットの入力端子には、LFB70g(#6)が出力する状態信号が入力される。モード選択回路91e8の規模1kビットの入力端子には、LFB70h(#7)が出力する状態信号が入力される。
 モード選択回路91e1,91e2の各々の規模2kビットの入力端子には、選択回路91a1が出力する状態信号が入力される。モード選択回路91e3,91e4の各々の規模2kビットの入力端子には、選択回路91a2が出力する状態信号が入力される。モード選択回路91e5,91e6の各々の規模2kビットの入力端子には、選択回路91a3が出力する状態信号が入力される。モード選択回路91e7,91e8の各々の規模2kビットの入力端子には、選択回路91a4が出力する状態信号が入力される。
 モード選択回路91e1,91e2,91e3,91e4の各々の規模4kビットの入力端子には、選択回路91b1が出力する状態信号が入力される。モード選択回路91e5,91e6,91e7,91e8の各々の規模4kビットの入力端子には、選択回路91b2が出力する状態信号が入力される。
 モード選択回路91e1,…,91e8の各々の規模8kビットの入力端子には、選択回路91c1が出力する状態信号が入力される。
 モード選択回路91e1,…,91e8の各々は、モード設定レジスタ92による規模(スピンビット数)の設定を受け付ける。ただし、図20では、モード設定レジスタ92からモード選択回路91e2,…,91e8の各々に対する信号線を「…」の表記により略記している。モード選択回路91e1,…,91e8の各々は、設定された規模に応じた入力端子に入力された状態信号を選択して、(x,F,index=j)をLFB70a,…,70hへ出力し、ΔEを加算器93a,…,93hへ出力する。
 例えば、モード選択回路91e1は、(xy0,Fy0,index=y0)をLFB70aへ出力し、ΔEy0を加算器93aへ出力する。加算器93aは、ΔEy0を基にEを更新する。モード選択回路91e2は、(xy1,Fy1,index=y1)をLFB70bへ出力し、ΔEy1を加算器93bへ出力する。加算器93bは、ΔEy1を基にEを更新する。モード選択回路91e3は、(xy2,Fy2,index=y2)をLFB70cへ出力し、ΔEy2を加算器93cへ出力する。加算器93cは、ΔEy2を基にEを更新する。モード選択回路91e4は、(xy3,Fy3,index=y3)をLFB70dへ出力し、ΔEy3を加算器93dへ出力する。加算器93dは、ΔEy3を基にEを更新する。モード選択回路91e5は、(xy4,Fy4,index=y4)をLFB70eへ出力し、ΔEy4を加算器93eへ出力する。加算器93eは、ΔEy4を基にEを更新する。モード選択回路91e6は、(xy5,Fy5,index=y5)をLFB70fへ出力し、ΔEy5を加算器93fへ出力する。加算器93fは、ΔEy5を基にEを更新する。モード選択回路91e7は、(xy6,Fy6,index=y6)をLFB70gへ出力し、ΔEy6を加算器93gへ出力する。加算器93gは、ΔEy6を基にEを更新する。モード選択回路91e8は、(xy7,Fy7,index=y7)をLFB70hへ出力し、ΔEy7を加算器93hへ出力する。加算器93hは、ΔEy7を基にEを更新する。
 すなわち、第3の実施の形態の最適化装置26は、あるLFB(グループ)に属する各LFEから出力された反転可否を示す信号に基づいて何れかのビットを選択し、選択したビットを示す信号を規模結合回路91に出力するランダムセレクタ部をLFB毎に有する。規模結合回路91は、スピンビット数の変更に応じて1以上のLFBを組合せ、当該1以上のLFBの各々に対応するランダムセレクタ部により選択されたビットを示す信号に基づいて反転させるビットを選択する。規模結合回路91は、反転させるビットを示す信号を当該1以上のLFBに属する各LFEに出力する。
 ここで、モード設定レジスタ92は、モード選択回路91e1,…,91e8に対して、個別に規模の設定を行う。ただし、ある規模のモードにおいて、組合せて利用されるLFBに対応するモード選択回路には、共通の規模が設定される。
 例えば、モード設定レジスタ92は、LFBの第1の組合せに対応する第1のスピンビット列のスピンビット数とLFBの第2の組合せに対応する第2のスピンビット列のスピンビット数とを、同じビット数、または、異なるビット数に設定してもよい。また、モード設定レジスタ75を含む各LFBのモード設定レジスタは、LFBの第1の組合せに属するLFEに対する重み係数のビット数とLFBの第2の組合せに属するLFEに対する重み係数のビット数とを、同じビット数、または、異なるビット数に設定してもよい。
 例えば、LFB70a,70bを組合せて利用して規模2kビットのモードを利用する場合、モード設定レジスタ92からモード選択回路91e1,91e2へ、規模2kビットのモードを選択する選択信号が供給される。このとき、例えば、最適化装置26は、モード設定レジスタ92の設定により残りの6つのLFBを利用して、LFB70a,70bによる演算と同じ問題、または、別の問題を並列に実行することが可能である。例えば、規模結合回路91は、残りの6つのLFBに対して、6つのLFBの各々で規模1kビットのモードを6つ実現してもよい。また、規模結合回路91は、6つのLFBのうちの2つずつ組合せにより、規模2kビットのモードを3つ実現してもよい。更に、規模結合回路91は、6つのLFBのうち2つのLFBの組合せにより、規模2kビットのモードを実現し、他の4つのLFBの組合せにより、規模4kビットのモードを実現してもよい。
 並列に実現するモードの組合せは、上記の組合せに限らず、例えば、規模1kビットのモードが8つの組合せ、規模2kビットのモードが4つの組合せ、規模1kビットのモードが4つと規模2kビットのモードが2つの組合せなど、種々の組合せが考えられる。
 このように、規模結合回路91は、モード設定レジスタ92により複数のスピンビット列の各々に対するスピンビット数の設定を受け付け、複数のスピンビット列の各々のスピンビット数に対して、組合せるLFB数(グループ数)を選択し、LFBを組合せる。これにより、1つの最適化装置26上に複数のイジングモデルを実現できる。
 なお、組合せて利用されるLFBの組に対応するE格納レジスタの組には、共通のエネルギーが格納される。例えば、LFB70a,70bの組合せで利用する場合、E格納レジスタ94a,94bに格納されるE,Eは同じ値となる。この場合、当該LFB70a,70bの組に対するエネルギー値を読み出すとき、制御部25aは、E格納レジスタ94a,94bの何れか一方(例えば、LFB70aに対応するE格納レジスタ94a)に格納されたエネルギー値を読み出せばよい。制御部25aは、LFBの他の組合せに対しても同様にしてエネルギー値を読み出す。
 第3の実施の形態では、制御部25aは、図15のステップS10として並列に演算する各問題に対する初期値や動作条件のCPU21による入力を受け付ける。そして、制御部25aは、ステップS11において、各問題に応じた規模/精度を、1つの問題に対して利用するLFBのグループ毎に、LFBのモード設定レジスタおよびモード設定レジスタ92に設定する。
 例えば、制御部25aは、第1の問題について、規模2kビット/精度64ビットをLFB70a,70bのモード設定レジスタに設定すると共に、モード選択回路91e1,91e2に規模2kビットに対する出力を行うようモード設定レジスタ92に設定する。また、制御部25aは、第2の問題について、規模2kビット/精度64ビットをLFB70c,70dのモード設定レジスタに設定すると共に、モード選択回路91e3,91e4に規模2kビットに対する出力を行うようモード設定レジスタ92に設定する。
 この場合、最適化装置26では、2つの問題(あるいは、両問題は同一問題でもよい)を並列に演算可能である。具体的には、制御部25aは、各問題に対応するLFBの組合せに対して、図16で示したフローチャートの手順を行うように各LFBを制御する。例えば、制御部25aは、問題毎に、温度パラメータTなどの各種パラメータの初期値、重み係数、ある温度パラメータでのビット更新の回数および温度変更回数などを、個別に受け付けて、該当の問題の演算を行うLFBの組合せに属する各LFBに入力し、LFBの各組合せにより演算を並列実行させる。
 制御部25aは、演算終了後、LFB70a,70bの各LFEから第1の問題に対するスピンビット列を読み出して、第1の問題の解とする。また、制御部25aは、演算終了後、LFB70c,70dの各LFEから第2の問題に対するスピンビット列を読み出して、第2の問題の解とする。3以上の問題も同様にして、並列に演算可能である。これにより、複数の問題に対する演算を効率的に実行できる。
 また、同一問題をLFBの複数の組により並列に解く場合、制御部25aは、例えば、レプリカ交換法と呼ばれる手法により、演算を高速化することが考えられる。レプリカ交換法では、LFBの各組(各レプリカ)で異なる温度パラメータによるスピンビット列の更新を行い、所定回数の更新後に、所定確率で温度パラメータをLFBの組の間(すなわち、レプリカ間)で交換することで、解の探索を高速化する。
 あるいは、解の探索方法として、図16の開始から終了までの手順を繰り返し行い、複数の演算結果の中から、最小となるエネルギーのスピンビット列を解として求める方法も考えられる。この場合、制御部25aは、LFBの複数の組を用いて同一問題を並列に解くことで、上記繰り返し回数を減らし、演算を高速化することができる。
 ところで、第2,第3の実施の形態で例示した最適化装置25,26を用いて演算可能な最適化問題には、種々の分野の問題が考えられる。例えば、学問や業種などの分野に応じて、求められる問題の規模や、問題の表現の精度が変わり得る。
 図21は、問題毎の規模/精度の必要範囲の例を示す図である。
 グラフ400は、横軸を規模比(規模の大きさを示す度合い)、縦軸を精度比(精度の大きさを示す度合い)とし、3種類の分野の問題に対して求められる規模精度の範囲を例示している。規模比は、規模の基準となる規模基準値に対して実際に所要される規模値(スピンビット数)の比である。精度比は、精度の基準となる精度基準値に対して実際に所要される精度値(結合係数のビット数)の比である。
 領域401は、電力分野の問題に対して求められる規模比/精度比の範囲を示す。領域402は、金融分野の問題に対して求められる規模比/精度比の範囲を示す。領域403は、生命科学分野の問題に対して求められる規模比/精度比の範囲を示す。
 例えば、領域401によれば、電力分野の問題では、比較的高い精度比が求められることが多い。また、領域402によれば、金融分野の問題では、規模比は比較的小さくてよいが、比較的高い精度比が求められることがある。更に、生命科学分野の問題では、精度比は比較的低くてよいが、比較的大きい規模比が求められることがある。ただし、ここで例示した各分野において所要される規模比/精度比は一例であり、今後、各分野で扱われる問題に応じて、所要される規模比/精度比の範囲は変わり得る。
 一方、問題毎の規模および精度に合った最適化装置を製造することも考えられるが、効率的ではない。
 そこで、第2,第3の実施の形態では、1チップの最適化装置25,26によって、種々の規模/精度のモードを実現可能とすることで、種々の分野の組合せ最適化問題に対応可能になる。
 図22は、規模精度の選択可能範囲の例を示す図である。
 グラフ500は、最適化装置25,26により実現可能な規模精度の選択可能範囲の例を示す。ここで、LFE毎のSRAMにおいて重み係数の格納のために確保される容量の上限が128kビットであり、最適化装置25,26の各々の全体におけるLFEの数n=8192であるとする。上記で説明したように、最適化装置25,26は、例えば、5種類のモードを実現可能である。ただし、グラフ500のハッチングされた領域で示される範囲内において、他の規模/精度のモードを利用可能としてもよい。LFE毎のSRAMの容量を増やすことで、更に大きな規模/精度のモードも実現可能である。
 最適化装置25,26では、規模/精度のモードを可変とした上で、各LFEの種々の使用パターンを実現する。
 図23は、LFEの使用パターンの例を示す図である。
 図23(A)は、第2,第3の実施の形態で実現可能なn個のLFEの使用パターン例(その1)を示す。例えば、最適化装置26は、n個のLFEのうち、α個のLFEを含むLFE群710(すなわち、LFBの第1の組合せ)を用いて第1のイジングモデルXを実現する。また、最適化装置26は、残りのβ個のLFEを含むLFE群720を不使用とする。最適化装置25も同様に、LFE群710により第1のイジングモデルXを実現し、LFE群720を不使用としてもよい。
 図23(B)は、第3の実施の形態で実現可能なn個のLFEの使用パターン例(その2)を示す。例えば、最適化装置26は、n個のLFEのうち、α個のLFEを含むLFE群710(すなわち、LFBの第1の組合せ)を用いて、第1のイジングモデルXを実現する。また、最適化装置26は、残ったLFEのうち、α個のLFEを含むLFE群730(すなわち、LFBの第2の組合せ)を用いて、第1のイジングモデルXを実現する。同一問題に対する演算の並列度を高めることで、解の収束性を早め演算を高速化することができる。
 図23(C)は、第3の実施の形態で実現可能なn個のLFEの使用パターン例(その3)を示す。例えば、最適化装置26は、n個のLFEのうち、α個のLFEを含むLFE群710(すなわち、LFBの第1の組合せ)を用いて、第1のイジングモデルXを実現する。また、最適化装置26は、残ったLFEのうち、γ個(γ=αでもよいし、γ≠αでもよい)のLFEを含むLFE群740(すなわち、LFBの第2の組合せ)を用いて、第2のイジングモデルYを実現する。これにより、異なる問題を並列に演算することができる。
 次に、ユーザによる最適化装置26の利用フローの例を説明する。以下では、主に最適化装置26を例示するが、最適化装置25の場合も同様の利用フローである。
 図24は、最適化装置の利用フローの例を示す図である。
 (S101)CPU21は、ユーザが解きたい問題を示すデータ601を、クライアント30からNIC24を介して受け付ける。クライアント30と、NIC24とにより、情報処理装置20への各種データを入力する入力部および基底状態探索の結果として得られた解を、ユーザに把握しやすい結果情報として通知する通知部が実現される。CPU21は、ライブラリ21aの機能により、データ601をイジングモデルの基底状態の探索問題に変換する。その結果、CPU21は、問題の規模(スピンビット数)を示す規模データ611、問題の表現の精度を表す精度データ612、エネルギーの初期値を表すエネルギーデータ613および規模/精度に応じた規模精度モードデータ614を生成する。規模データ611は、スピンビット列を示すバイナリデータでもよい。精度データ612は、該当の精度で表されたスピンビット間の重み係数を含んでもよい。CPU21は、問題から適切な規模精度モードを決定し、規模精度モードデータ614を生成する。
 (S102)CPU21は、規模データ611、精度データ612、エネルギーデータ613を、初期値として制御部25aに入力する。
 (S103)CPU21は、ユーザ指定動作条件602の入力を受け付ける。ユーザ指定動作条件602は、例えば、ある温度パラメータにおける状態更新の回数、温度パラメータの更新回数、温度パラメータの下げ幅および温度パラメータの初期値などを含む。また、ユーザ指定動作条件602は、組み合せるLFBの数を含んでもよい。CPU21は、当該組み合せるLFBの数を、規模精度モードデータ614に含める。CPU21は、規模精度モードデータ614およびユーザ指定動作条件602を、動作条件として制御部25aに入力する。規模精度モードデータ614は、モード設定レジスタ75を含む各LFEのモード設定レジスタおよびモード設定レジスタ92に設定される。
 (S104)CPU21は、ステップS102,S103が完了すると、制御部25aに対して基底状態の探索を行う演算の実行開始を指示する。
 (S105)CPU21は、最適化装置26による演算が完了すると、最適化装置26から演算結果615を取得し、ユーザにとって把握し易い結果情報(例えば、結果表示画面の情報)に変換する。CPU21は、変換後の結果情報を、ユーザが解きたい問題の解616として、クライアント30に送信する。
 このように、CPU21は、ユーザにより入力された問題に応じてスピンビット数と重み係数のビット数とを決定する。制御部25aは、スピンビット数と重み係数のビット数と重み係数とを示す情報をCPU21から受け付ける。制御部25aは、スピンビット数と重み係数のビット数とをモード設定レジスタ55(あるいは、モード設定レジスタ75,92)に設定する。制御部25aは、スピンビット数に相当する数のLFEの各々のSRAMに格納する。
 こうして、ユーザは、自身が解きたい問題に応じた規模/精度により、最適化装置25,26による演算を実行させることが可能になる。例えば、最適化装置26により、同一のユーザによる同一問題、または、異なる問題を並列に演算することも可能である。また、最適化装置26により、異なるユーザによる異なる問題を並列に演算することも可能である。すなわち、解きたい問題に応じた適切な規模/精度で演算可能にすることで、空きLFB(あるいは空きLFE)を用いて、他の問題を並列に演算可能になる。また、複数のユーザで1チップの最適化装置25,26を共用可能になる。更に、複数の問題で1チップの最適化装置25,26を共用可能になる。
 また、上記に例示した機能を有する最適化装置(あるいは、最適化システム)も考えられる。当該最適化装置(あるいは、最適化システム)は、入力部と変換部と制御部と表示部とを有する。
 入力部は、解くべき問題と動作条件とを入力する。入力部は、例えば、マウスやキーボードなどの入力デバイスでもよいし、NIC(例えば、NIC24)およびクライアント端末(例えば、クライアント30)により実現されてもよい。
 変換部は、入力した問題をイジングモデルの基底状態の探索問題に変換するとともに、探索問題の規模を示す規模情報と、探索問題の表現の精度を表す精度情報と、探索問題のエネルギーの初期値を表すエネルギー情報と、規模および精度に応じた規模精度モード情報とを生成する。変換部は、例えば、ライブラリ21aおよびドライバ21bの機能を発揮するCPU(例えば、CPU21)などのプロセッサでもよい。変換部は、FPGAなどの半導体集積回路により実現されてもよい。
 制御部は、規模情報と、精度情報と、エネルギー情報(あるいは、規模情報と精度情報とエネルギー情報とに応じたスピンビット列の初期値、結合係数およびエネルギーの初期値)を入力するとともに動作条件と規模精度モード情報とを入力し、基底状態の探索を行う演算を実行して解を出力する。制御部は、例えば、LFB50(あるいはLFB70a,…,70h)に対して、規模情報と、精度情報と、エネルギー情報(あるいは、規模情報と精度情報とエネルギー情報とに応じたスピンビット列の初期値、結合係数およびエネルギーの初期値)を入力するとともに動作条件と規模精度モード情報とを入力し、LFBを用いて基底状態の探索を行う演算を実行して解を出力する制御部25aでもよい。制御部は、例えば制御部25aとLFB50(あるいはLFB70a,…,70h)とを含む半導体チップであって、イジングモデルの基底状態の探索を行う半導体チップでもよい。すなわち、制御部は、規模情報と、精度情報と、エネルギー情報(あるいは、規模情報に応じたビット数のスピンビット列、精度情報に応じたビット数の結合係数およびエネルギー情報に応じたエネルギーの初期値)および、動作条件、並びに、規模精度モード情報に基づいて、イジングモデルの基底状態の探索を行う演算を実行して解を出力する半導体チップでもよい。規模情報は、規模の基準となる規模基準値に対する規模比により表されてもよい。精度情報は、精度の基準となる精度基準値に対する精度比により表されてもよい。
 表示部は、制御部による基底状態の探索の結果として得られた解を表示する。表示部は、ディスプレイでもよいし、NICおよびクライアント端末により実現されてもよい。例えば、変換部は、基底状態の探索の結果として得られた解を、可視化した表示情報に変換する。表示部は、当該可視化した表示情報を表示する。
 例示した最適化装置により、規模/精度を可変にできる。ユーザは、解きたい問題に応じた規模/精度により、最適化装置による演算を実行させることが可能になる。
 なお、第1の実施の形態の最適化装置1の制御は、最適化装置1を制御するコンピュータが備えるプロセッサがプログラムを実行することで実現されてもよい。例えば、プログラムは当該コンピュータが備えるRAMに格納される。第2,第3の実施の形態の最適化装置25,26の制御は、CPU21にプログラムを実行させることで実現されてもよい。プログラムは、コンピュータ読み取り可能な記録媒体41に記録できる。
 例えば、プログラムを記録した記録媒体41を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体41に記録されたプログラムまたは他のコンピュータから受信したプログラムを、DRAM22や記憶装置23に格納し(インストールし)、DRAM22や記憶装置23からプログラムを読み込んで実行してもよい。
 上記については単に本発明の原理を示すものである。更に、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応する全ての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
 1 最適化装置
 1a1,…,1aK,…,1aN ビット演算回路
 2 選択回路部
 3 閾値生成部
 4 乱数生成部
 5 設定変更部
 6 制御部
 11 記憶部
 12 精度切替回路
 13 反転判定部
 14 ビット保持部
 15 エネルギー変化計算部
 16 状態遷移判定部

Claims (18)

  1.  イジングモデルの状態を表すビット列のうちのビット間の相互作用の大きさを示す係数を記憶する記憶部と、
     前記ビット列のうちの何れかのビットが反転されると、前記記憶部から読み出した反転された前記ビットと自ビットとに対応する係数を用いた前記イジングモデルのエネルギー変化の計算に応じて、前記自ビットの反転可否を示す信号を出力する複数のビット演算回路と、
     前記複数のビット演算回路のうち前記ビット列の第1のビット数のビット演算回路の各々から出力された反転可否を示す信号に基づいて選択した前記ビット列のうち反転させるビットを示す信号を、前記第1のビット数のビット演算回路の各々に出力する選択回路部と、
     前記選択回路部に対する前記第1のビット数の変更、および、前記第1のビット数のビット演算回路の各々に対する前記係数の第2のビット数の変更を行う設定変更部と、
     を有する最適化装置。
  2.  前記複数のビット演算回路の各々は、前記設定変更部による前記第2のビット数の変更に応じて、前記記憶部から読み出す係数の第2のビット数を変更する精度切替回路を有する、
     請求項1記載の最適化装置。
  3.  前記記憶部は、前記複数のビット演算回路の各々に設けられており、
     前記精度切替回路は、前記設定変更部による前記第2のビット数の変更に応じて、前記自ビットと他ビットとに関する係数のうちの一部を、前記複数のビット演算回路のうち、前記ビット列に使用されない他のビット演算回路が有する前記記憶部から読み出す、
     請求項2記載の最適化装置。
  4.  前記複数のビット演算回路は、複数のグループに分けられており、
     前記選択回路部は、前記設定変更部による前記第1のビット数の変更に応じて、前記複数のビット演算回路のうち、前記第1のビット数のビット演算回路を含むように、1以上のグループを組合せる規模結合回路を有する、
     請求項1記載の最適化装置。
  5.  前記選択回路部は、1つのグループに属する各ビット演算回路から出力された前記反転可否を示す信号に基づいて選択したビットを示す信号を、前記規模結合回路に出力するセレクタ部を、前記複数のグループの各々に対して有し、
     前記規模結合回路は、前記1以上のグループの各々に対応する前記セレクタ部により選択された前記ビットを示す信号に基づいて選択した反転させる前記ビットを示す信号を、前記1以上のグループに属する各ビット演算回路に出力する、
     請求項4記載の最適化装置。
  6.  前記規模結合回路は、前記設定変更部による複数の前記ビット列の各々に対する前記第1のビット数の設定を受け付け、複数の前記ビット列の各々に対して、前記1以上のグループを組合せる、
     請求項4記載の最適化装置。
  7.  グループの複数の組合せのうち、第1の組合せによる前記イジングモデルに対する演算と、第2の組合せによる前記イジングモデルまたは他のイジングモデルに対する演算とを並列に実行させる制御部、
     を更に有する請求項6記載の最適化装置。
  8.  前記設定変更部は、グループの複数の組合せのうち、第1の組合せに対応する第1のビット列の前記第1のビット数と第2の組合せに対応する第2のビット列の前記第1のビット数とを、同じビット数、または、異なるビット数に設定する、
     請求項6記載の最適化装置。
  9.  前記設定変更部は、グループの複数の組合せのうち、第1の組合せに属するビット演算回路に対する前記第2のビット数と第2の組合せに属するビット演算回路に対する前記第2のビット数とを、同じビット数、または、異なるビット数に設定する、
     請求項6記載の最適化装置。
  10.  前記選択回路部は、前記複数のビット演算回路のうち、前記第1のビット数のビット演算回路以外の他のビット演算回路により出力された反転可否を示す信号を、強制的に反転不可に設定し、前記第1のビット数のビット演算回路により出力された反転可否を示す信号および前記他のビット演算回路に対して設定した反転不可を示す信号に基づいて選択した反転させる前記ビットを示す信号を、前記第1のビット数のビット演算回路だけでなく前記他のビット演算回路にも出力する、
     請求項1記載の最適化装置。
  11.  入力された問題に応じて前記第1のビット数と前記第2のビット数とを決定する演算部による、前記第1のビット数と前記第2のビット数とを示す情報の入力を受け付け、前記第1のビット数と前記第2のビット数とを前記設定変更部に入力する制御部、
     を更に有する請求項1記載の最適化装置。
  12.  最適化装置の制御方法において、
     前記最適化装置が有する複数のビット演算回路が、イジングモデルの状態を表すビット列のうちの何れかのビットが反転されると、前記ビット列のうちの自ビットと他ビットとの相互作用の大きさを示す係数を記憶する記憶部から読み出した、反転された前記ビットに対応する係数を用いた前記イジングモデルのエネルギー変化の計算に応じて前記自ビットの反転可否を示す信号を出力し、
     前記最適化装置が有する選択回路部が、前記複数のビット演算回路のうち前記ビット列の第1のビット数のビット演算回路の各々から出力された反転可否を示す信号に基づいて選択した前記ビット列のうち反転させるビットを示す信号を、前記第1のビット数のビット演算回路の各々に出力し、
     前記最適化装置が有する設定変更部が、前記選択回路部に対する前記第1のビット数の変更、および、前記第1のビット数のビット演算回路の各々に対する前記係数の第2のビット数の変更を行う、
     最適化装置の制御方法。
  13.  最適化装置の制御プログラムにおいて、
     前記最適化装置が有する複数のビット演算回路に、イジングモデルの状態を表すビット列のうちの何れかのビットが反転されると、前記ビット列のうちの自ビットと他ビットとの相互作用の大きさを示す係数を記憶する記憶部から読み出した、反転された前記ビットに対応する係数を用いた前記イジングモデルのエネルギー変化の計算に応じて前記自ビットの反転可否を示す信号を出力させ、
     前記最適化装置が有する選択回路部に、前記複数のビット演算回路のうち前記ビット列の第1のビット数のビット演算回路の各々から出力された反転可否を示す信号に基づいて選択した前記ビット列のうち反転させるビットを示す信号を、前記第1のビット数のビット演算回路の各々に出力させ、
     前記最適化装置が有する設定変更部に、前記選択回路部に対する前記第1のビット数の変更、および、前記第1のビット数のビット演算回路の各々に対する前記係数の第2のビット数の変更を行わせる、
     最適化装置の制御プログラム。
  14.  解くべき問題と動作条件とを入力する入力部と、
     入力した前記問題をイジングモデルの基底状態の探索問題に変換するとともに、前記探索問題の規模を示す規模情報と、前記探索問題の表現の精度を表す精度情報と、前記探索問題のエネルギーの初期値を表すエネルギー情報と、規模および精度に応じた規模精度モード情報とを生成する変換部と、
     前記規模情報と、前記精度情報と、前記エネルギー情報を入力するとともに前記動作条件と前記規模精度モード情報とを入力し、基底状態の探索を行う演算を実行して解を出力する制御部と、
     前記制御部による基底状態の探索の結果として得られた解を表示する表示部と、
     を有する最適化装置。
  15.  前記変換部は、前記基底状態の探索の結果として得られた解を、可視化した表示情報に変換し、
     前記表示部は、前記可視化した表示情報を表示する請求項14の最適化装置。
  16.  前記規模情報は、規模の基準となる規模基準値に対する規模比により表され、
     前記精度情報は、精度の基準となる精度基準値に対する精度比により表される、
     請求項14又は15に記載の最適化装置。
  17.  最適化装置の制御方法において、
     前記最適化装置が有する入力部が、解くべき問題と動作条件とを入力し、
     前記最適化装置が有する変換部が、入力した前記問題をイジングモデルの基底状態の探索問題に変換するとともに、前記探索問題の規模を示す規模情報と、前記探索問題の表現の精度を表す精度情報と、前記探索問題のエネルギーの初期値を表すエネルギー情報と、規模および精度に応じた規模精度モード情報とを生成し、
     前記最適化装置が有する制御部が、前記規模情報と、前記精度情報と、前記エネルギー情報を入力するとともに前記動作条件と前記規模精度モード情報とを入力し、基底状態の探索を行う演算を実行して解を出力し、
     前記最適化装置が有する表示部が、前記制御部による基底状態の探索の結果として得られた解を表示する、
     最適化装置の制御方法。
  18.  最適化装置の制御プログラムにおいて、
     前記最適化装置が有する入力部から、解くべき問題と動作条件とを入力させ、
     前記最適化装置が有する変換部に、入力した前記問題をイジングモデルの基底状態の探索問題に変換させるとともに、前記探索問題の規模を示す規模情報と、前記探索問題の表現の精度を表す精度情報と、前記探索問題のエネルギーの初期値を表すエネルギー情報と、規模および精度に応じた規模精度モード情報とを生成させ、
     前記最適化装置が有する制御部に、前記規模情報と、前記精度情報と、前記エネルギー情報を入力するとともに前記動作条件と前記規模精度モード情報とを入力し、基底状態の探索を行う演算を実行して解を出力させ、
     前記最適化装置が有する表示部に、前記制御部による基底状態の探索の結果として得られた解を表示させる、
     最適化装置の制御プログラム。
PCT/JP2018/034233 2018-09-14 2018-09-14 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム WO2020054061A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2020546656A JP7004937B2 (ja) 2018-09-14 2018-09-14 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム
EP18933180.4A EP3852028A4 (en) 2018-09-14 2018-09-14 OPTIMIZATION DEVICE, CONTROL METHOD FOR OPTIMIZATION DEVICE AND CONTROL PROGRAM FOR OPTIMIZATION DEVICE
CA3109735A CA3109735A1 (en) 2018-09-14 2018-09-14 Optimization device, optimization device control method, and optimization device control program
PCT/JP2018/034233 WO2020054061A1 (ja) 2018-09-14 2018-09-14 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム
US17/179,458 US11886780B2 (en) 2018-09-14 2021-02-19 Optimization device, optimization device control method, and computer-readable recording medium recording optimization device control program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2018/034233 WO2020054061A1 (ja) 2018-09-14 2018-09-14 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/179,458 Continuation US11886780B2 (en) 2018-09-14 2021-02-19 Optimization device, optimization device control method, and computer-readable recording medium recording optimization device control program

Publications (1)

Publication Number Publication Date
WO2020054061A1 true WO2020054061A1 (ja) 2020-03-19

Family

ID=69776982

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2018/034233 WO2020054061A1 (ja) 2018-09-14 2018-09-14 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム

Country Status (5)

Country Link
US (1) US11886780B2 (ja)
EP (1) EP3852028A4 (ja)
JP (1) JP7004937B2 (ja)
CA (1) CA3109735A1 (ja)
WO (1) WO2020054061A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021157360A (ja) * 2020-03-26 2021-10-07 富士通株式会社 最適化装置及び最適化方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03250244A (ja) * 1990-01-24 1991-11-08 Hitachi Ltd 情報処理装置
WO2017037903A1 (ja) 2015-09-02 2017-03-09 株式会社日立製作所 半導体システムおよび計算方法
JP2018041351A (ja) * 2016-09-09 2018-03-15 富士通株式会社 情報処理装置、イジング装置及び情報処理装置の制御方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9633715B2 (en) * 2013-05-31 2017-04-25 Hitachi, Ltd. Semiconductor device capable of attaining ground state in an ising model
JP5864684B1 (ja) * 2014-08-29 2016-02-17 株式会社日立製作所 半導体装置
JP5865457B1 (ja) * 2014-08-29 2016-02-17 株式会社日立製作所 情報処理システム及び管理装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03250244A (ja) * 1990-01-24 1991-11-08 Hitachi Ltd 情報処理装置
WO2017037903A1 (ja) 2015-09-02 2017-03-09 株式会社日立製作所 半導体システムおよび計算方法
JP2018041351A (ja) * 2016-09-09 2018-03-15 富士通株式会社 情報処理装置、イジング装置及び情報処理装置の制御方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3852028A4

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021157360A (ja) * 2020-03-26 2021-10-07 富士通株式会社 最適化装置及び最適化方法
JP7410394B2 (ja) 2020-03-26 2024-01-10 富士通株式会社 最適化装置及び最適化方法

Also Published As

Publication number Publication date
US20210173978A1 (en) 2021-06-10
CA3109735A1 (en) 2020-03-19
EP3852028A4 (en) 2021-10-06
US11886780B2 (en) 2024-01-30
JPWO2020054061A1 (ja) 2021-05-13
EP3852028A1 (en) 2021-07-21
JP7004937B2 (ja) 2022-01-21

Similar Documents

Publication Publication Date Title
JP7063211B2 (ja) 最適化問題演算プログラム、最適化問題演算方法および最適化問題演算装置
CN111078621B (zh) 优化装置及优化装置的控制方法
CN111812972B (zh) 优化装置和用于控制优化装置的方法
US20200089728A1 (en) Optimization problem arithmetic method and optimization problem arithmetic device
US11715003B2 (en) Optimization system, optimization apparatus, and optimization system control method for solving optimization problems by a stochastic search
JP7410395B2 (ja) 最適化装置及び最適化方法
CN111077768B (zh) 优化装置及优化装置的控制方法
CN112381209A (zh) 一种模型压缩方法、系统、终端及存储介质
CN110889507A (zh) 一种量子程序转有向无环图的方法、装置、存储介质及电子装置
CN111914378B (zh) 一种单振幅量子计算模拟方法及装置
JP2019185602A (ja) 最適化装置及び最適化装置の制御方法
JP2019160169A (ja) 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
CN112149269A (zh) 优化设备、优化设备的控制方法和记录介质
JP6925546B1 (ja) 演算システム、情報処理装置、および最適解探索処理方法
US11409836B2 (en) Optimization problem arithmetic method and optimization problem arithmetic apparatus
WO2020054061A1 (ja) 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム
WO2020054062A1 (ja) 最適化装置および最適化装置の制御方法
JP7155794B2 (ja) 最適化問題演算プログラム、最適化問題演算方法および最適化問題演算装置
Cortés-Antonio et al. Design and implementation of differential evolution algorithm on FPGA for double-precision floating-point representation
Karlsen et al. Learning versus optimal intervention in random Boolean networks
JP7398401B2 (ja) 最適化方法、情報処理装置及びそれを用いたシステム
Song et al. A differential evolution algorithm with local search for resource investment project scheduling problems
CN116644813B (zh) 一种利用量子电路确定最优组合方案的方法及装置
EP4148628A1 (en) Data processing apparatus, data processing method, and data processing program
WO2022024324A1 (ja) 情報処理方法および情報処理システム

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 18933180

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2020546656

Country of ref document: JP

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 3109735

Country of ref document: CA

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2018933180

Country of ref document: EP

Effective date: 20210414