Information processing device, information processing system, information processing method, storage medium
Through the combination of parallel processing of simulated branch algorithms and correction terms, the problem of low resolution efficiency of combining optimization problems is solved, and fast and efficient solution to combining optimization problems is achieved.
Patent Information
- Application Number
- CN202080025393.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-03-28
- Filing Date
- 2020-03-27
- Publication Date
- 2025-01-17
- Estimated Expiration
- 2040-03-27
AI Technical Summary
The prior art is difficult to calculate effective solutions to the combination optimization problem in practical time, especially when facing the combination explosion problem, it is difficult to obtain the optimal or approximately optimal solution.
Using information processing devices and systems, the parallel processing of simulated branch algorithms is used, and the first and second vectors of repeated updates are used to combine correction terms and Hamiltonians to efficiently solve the combined optimization problem, avoiding repeated searches of solution spaces.
It realizes rapid solution of combined optimization problems in practical time, improves the probability of finding the optimal or approximate optimal solution, and reduces the computational complexity and time.
Smart Images

Figure CN113646782B_ABST
Abstract
Description
Technical Field
[0001] Embodiments of the present invention relate to an information processing device, an information processing system, an information processing method, a storage medium, and a program. Background Art
[0002] The combinatorial optimization problem is a problem of selecting the combination that best suits the purpose from among multiple combinations. Mathematically, the combinatorial optimization problem is reduced to the problem of maximizing a function with multiple discrete variables called the "objective function" or the problem of minimizing the function. The combinatorial optimization problem is a universal problem in various fields such as finance, logistics, transportation, design, manufacturing, and life sciences. However, due to the so-called "combinatorial explosion" in which the number of combinations increases at the order of an exponential function of the problem volume, it is not always possible to find the optimal solution. In addition, there are many cases where it is difficult to even obtain an approximate solution close to the optimal solution.
[0003] In order to solve problems in various fields and promote social innovation and scientific and technological progress, it is required to develop technologies that can calculate solutions to combinatorial optimization problems in a practical time.
[0004] Prior art literature
[0005] Patent Literature
[0006] Patent Document 1: Japanese Patent Application Publication No. 2017-73106
[0007] Non-patent literature
[0008] Non-patent literature 1: H. Goto, K. Tatsumura, ARDixon, Sci. Adv. 5, eaav2372 (2019).
[0009] Non-patent document 2: H. Goto, Sci. Rep. 6, 21686 (2016).
[0010] Non-Patent Literature 3: Tsuchiya, Nishiyama, and Tsujida: Approximate solution to combinatorial optimization problems using branching characteristics URL: http: / / www.ynl.tu-tokyo.ac.jp / project / RobotBrainCREST / publications / pdf / tsuchiya / 4_01.pdf
[0011] Non-Patent Literature 4: Tsuchiya, Nishiyama, and Tsujita: Analysis of the Deterministic Annealing Algorithm URL: http: / / www.ynl.tu-tokyo.ac.jp / project / RobotBrainCREST / publications / pdf / tsuchiya / 4_02.pdf Summary of the invention
[0012] Technical problem to be solved by the invention
[0013] Embodiments of the present invention provide an information processing device, an information processing system, an information processing method, a storage medium, and a program for calculating a solution to a combinatorial optimization problem within a practical time.
[0014] Means for solving technical problems
[0015] An information processing device as an embodiment of the present invention is configured to repeatedly update a first vector having a first variable as an element and a second vector having a second variable corresponding to the first variable as an element. The information processing device includes a storage unit and a processing circuit. The processing circuit is configured to update the first vector by weighting the corresponding second variable and adding it to the first variable, save the updated first vector as a searched vector in the storage unit, weight the first variable with a first coefficient that monotonically increases or decreases according to the number of updates and add it to the corresponding second variable, calculate a problem item between the first variables, add the problem item to the second variable, read the searched vector from the storage unit, calculate a correction item including the inverse of the distance between the first vector of the update object and the searched vector, add the correction item to the second variable, and thereby update the second vector. BRIEF DESCRIPTION OF THE DRAWINGS
[0016] Figure 1 It is a diagram showing a configuration example of an information processing system.
[0017] Figure 2 This is a block diagram showing a configuration example of a management server.
[0018] Figure 3 This is a diagram showing an example of data stored in the storage unit of the management server.
[0019] Figure 4 This is a block diagram showing a configuration example of a calculation server.
[0020] Figure 5 This is a diagram showing an example of data stored in the memory of the calculation server.
[0021] Figure 6 This is a flowchart showing an example of processing when a solution of a simulation branching algorithm is calculated by time advancement.
[0022] Figure 7 This is a flowchart showing an example of processing when a solution is obtained using an algorithm including a correction term.
[0023] Figure 8This is a flowchart showing an example of processing in which a solution is efficiently performed using a first vector calculated by another calculation node.
[0024] Fig. 9 This is a flowchart showing an example of processing in which a solution is efficiently obtained using a simulation branching algorithm in a plurality of computing nodes.
[0025] Fig.10 This is a flowchart showing an example of processing in which a solution is efficiently obtained using a simulation branching algorithm in a plurality of computing nodes.
[0026] Fig.11 is a diagram conceptually showing an example of an information processing system including a plurality of computing nodes.
[0027] Fig.12 This is a diagram conceptually showing an example of changes in the value of the extended Hamiltonian at each calculation node.
[0028] Fig.13 This is a diagram conceptually showing an example of changes in the value of the extended Hamiltonian at each calculation node.
[0029] Fig.14 This is a diagram conceptually showing an example of changes in the value of the extended Hamiltonian at each calculation node.
[0030] Fig.15 This is a histogram showing the number of calculations required to obtain the optimal solution in multiple calculation methods.
[0031] Fig.16 This is a diagram schematically showing an example of a multi-processor configuration.
[0032] Fig.17 This is a diagram schematically showing an example of a configuration using a GPU.
[0033] Fig.18 is a flow chart showing an example of the overall processing performed to solve a combinatorial optimization problem. DETAILED DESCRIPTION
[0034] Hereinafter, embodiments of the present invention will be described with reference to the accompanying drawings. In the accompanying drawings, the same components are denoted by the same reference numerals, and description thereof will be appropriately omitted.
[0035] Figure 1 It is a block diagram showing a configuration example of the information processing system 100 . Figure 1 The information processing system 100 includes a management server 1, a network 2, computing servers (information processing devices) 3a to 3c, cables 4a to 4c, a switch 5, and a storage device 7. Figure 1, a client terminal 6 capable of communicating with the information processing system 100 is shown. The management server 1, the computing servers 3a to 3c, the client terminal 6, and the storage device 7 can communicate data with each other via the network 2. For example, the computing servers 3a to 3c can store data in the storage device 7, or read data from the storage device 7. The network 2 is, for example, the Internet in which a plurality of computer networks are interconnected. The network 2 can use wired, wireless, or a combination thereof as a communication medium. In addition, as an example of a communication protocol used in the network 2, there is TCP / IP, but the type of communication protocol is not particularly limited.
[0036] In addition, the computing servers 3a~3c are connected to the switch 5 via cables 4a~4c, respectively. The cables 4a~4c and the switch 5 form an interconnection between the computing servers. The computing servers 3a~3c can also communicate data with each other via the interconnection. The switch 5 is, for example, an Infiniband (infinite bandwidth) switch. The cables 4a~4c are, for example, Infiniband cables. However, a wired LAN switch / cable can also be used instead of an Infiniband switch / cable. There is no particular limitation on the communication standard and communication protocol used in the cables 4a~4c and the switch 5. Examples of the client terminal 6 include a notebook PC, a desktop PC, a smartphone, a tablet computer, a car terminal, etc.
[0037] In solving the combinatorial optimization problem, the processing can be parallelized and / or decentralized. Therefore, the computing servers 3a~3c and / or the processors of the computing servers 3a~3c can share the steps of executing a part of the computing processing, and can also perform the same computing processing in parallel for different variables. The management server 1, for example, transforms the combinatorial optimization problem input by the user into a form that can be processed by each computing server, and controls the computing server. In addition, the management server 1 obtains the calculation results from each computing server and transforms the aggregated calculation results into a solution to the combinatorial optimization problem. In this way, the user can obtain the solution to the combinatorial optimization problem. It is assumed that the solution to the combinatorial optimization problem includes an optimal solution and an approximate solution close to the optimal solution.
[0038] exist Figure 1Three computing servers are shown in the figure. However, the number of computing servers included in the information processing system is not limited. In addition, there is no special limitation on the number of computing servers used in solving the combinatorial optimization problem. For example, the computing server included in the information processing system may be one. In addition, any of the multiple computing servers included in the information processing system can be used to solve the combinatorial optimization problem. In addition, the information processing system may include hundreds of computing servers. The computing server can be a server located in a data center or a desktop PC located in an office. In addition, the computing server can also be multiple types of computers located in different locations. There is no special limitation on the type of information processing device used as a computing server. For example, the computing server can be a general-purpose computer, a dedicated electronic circuit, or a combination thereof.
[0039] Figure 2 It is a block diagram showing a configuration example of the management server 1 . Figure 2 The management server 1 is, for example, a computer including a central processing unit (CPU) and a memory. The management server 1 includes a processor 10, a storage unit 14, a communication circuit 15, an input circuit 16, and an output circuit 17. The processor 10, the storage unit 14, the communication circuit 15, the input circuit 16, and the output circuit 17 are connected to each other via a bus 20. The processor 10 includes a management unit 11, a conversion unit 12, and a control unit 13 as internal components.
[0040] The processor 10 is an electronic circuit that performs calculations and controls the management server 1. The processor 10 is an example of a processing circuit. As the processor 10, for example, a CPU, a microprocessor, an ASIC, an FPGA, a PLD or a combination thereof can be used. The management unit 11 provides an interface for operating the management server 1 via the user's client terminal 6. Examples of interfaces provided by the management unit 11 include API, CLI, web pages, etc. For example, a user can input information about a combinatorial optimization problem, or browse and / or download a calculated solution to a combinatorial optimization problem via the management unit 11. The conversion unit 12 converts the combinatorial optimization problem into a form that can be processed by each computing server. The control unit 13 sends a control instruction to each computing server. After the control unit 13 obtains the calculation results from each computing server, the conversion unit 12 aggregates the multiple calculation results and converts them into a solution to the combinatorial optimization problem. In addition, the control unit 13 can also specify the processing content to be performed by each computing server or the processor in each server.
[0041] The storage unit 14 stores various data including the program of the management server 1, the data required for the execution of the program, and the data generated by the program. Here, it is assumed that the program includes both the OS and the application. The storage unit 14 may also be a volatile memory, a non-volatile memory, or a combination thereof. Examples of volatile memories include DRAM, SRAM, etc. Examples of non-volatile memories include NAND flash memory, NOR flash memory, ReR AM, or MRAM. In addition, a hard disk, an optical disk, a magnetic tape, or an external storage device may also be used as the storage unit 14.
[0042] The communication circuit 15 transmits and receives data to and from each device connected to the network 2. The communication circuit 15 is, for example, a NIC (Network Interface Card) of a wired LAN. However, the communication circuit 15 may also be another type of communication circuit such as a wireless LAN. The input circuit 16 implements data input to the management server 1. It is assumed that the input circuit 16 has, for example, a USB, PCI-Express, etc. as an external port. Figure 2 In the example, the operating device 18 is connected to the input circuit 16. The operating device 18 is a device for inputting information to the management server 1. The operating device 18 is, for example, a keyboard, a mouse, a touch panel, a voice recognition device, etc., but is not limited thereto. The output circuit 17 realizes data output from the management server 1. It is assumed that the output circuit 17 has HDMI, DisplayPort, etc. as an external port. Figure 2 In the example of FIG. 1 , the display device 19 is connected to the output circuit 17. Examples of the display device 19 include an LCD (Liquid Crystal Display), an organic EL (Organic Electroluminescence) display, or a projector, but are not limited thereto.
[0043] The administrator of the management server 1 can use the operating device 18 and the display device 19 to perform maintenance on the management server 1. In addition, the operating device 18 and the display device 19 may be incorporated into the management server 1. In addition, the operating device 18 and the display device 19 may not necessarily be connected to the management server 1. For example, the administrator may perform maintenance on the management server 1 using an information terminal that can communicate with the network 2.
[0044] Figure 3 2 shows an example of data stored in the storage unit 14 of the management server 1. Figure 3In the storage unit 14, problem data 14A, calculation data 14B, management program 14C, transformation program 14D, and control program 14E are stored. For example, problem data 14A includes data of a combinatorial optimization problem. For example, calculation data 14B includes calculation results collected from each calculation server. For example, management program 14C is a program that implements the functions of the management unit 11 described above. For example, transformation program 14D is a program that implements the functions of the transformation unit 12 described above. For example, control program 14E is a program that implements the functions of the control unit 13 described above.
[0045] Figure 4 This is a module that shows a configuration example of a calculation server. Figure 4 The calculation server is, for example, an information processing device that performs calculations of the first vector and the second vector alone or in sharing with other calculation servers.
[0046] Figure 4 The configuration of the calculation server 3a is shown as an example. The other calculation servers may have the same configuration as that of the calculation server 3a, or may have a configuration different from that of the calculation server 3a.
[0047] The calculation server 3a includes, for example, a communication circuit 31, a shared memory 32, processors 33A to 33D, a memory 34, and a host bus adapter 35. The communication circuit 31, the shared memory 32, the processors 33A to 33D, the memory 34, and the host bus adapter 35 are connected to each other via a bus 36.
[0048] The communication circuit 31 sends and receives data to and from each device connected to the network 2. The communication circuit 31 is, for example, a NIC (Network Interface Card) of a wired LAN. However, the communication circuit 31 may also be other types of communication circuits such as a wireless LAN. The shared memory 32 is a memory accessible from the processors 33A to 33D. As an example of the shared memory 32, a volatile memory such as a DRAM and an SRAM may be cited. However, as the shared memory 32, other types of memories such as a non-volatile memory may also be used. The shared memory 32 may also be configured to store the elements of the first vector and the elements of the second vector, for example. The processors 33A to 33D may share data via the shared memory 32. In addition, the entire memory of the computing server 3a may not necessarily be configured as a shared memory. For example, a portion of the memory of the computing server 3a may also be configured as a local memory that can be accessed only from a certain processor. In addition, the shared memory 32 and the memory 34 described later are examples of the storage unit of the information processing device.
[0049] Processors 33A to 33D are electronic circuits that perform computational processing. The processor may be, for example, any one of a CPU (Central Processing Unit), a GPU (Graphics Processing Unit), an FPGA (Field-Programmable Gate Array), or an ASIC (Application Specific Integrated Circuit), or a combination thereof. In addition, the processor may also be a CPU core or a CPU thread. When the processor is a CPU, there is no particular restriction on the number of slots that the computing server 3a has. In addition, the processor may also be connected to other components of the computing server 3a via a bus such as PCI express.
[0050] exist Figure 4 In the example, the computing server has four processors. However, the number of processors in one computing server may be different. For example, the number and / or type of processors installed in the computing server may be different. Here, the processor is an example of a processing circuit of an information processing device. An information processing device may also have multiple processing circuits.
[0051] The information processing device is configured to repeatedly update the first variable x i (i=1, 2, ..., N) as the first vector and the second variable y corresponding to the first variable i (i=1, 2, ..., N) is the second vector of the element.
[0052] For example, the processing circuit of the information processing device may be configured to update the first vector by weighting the second variable and adding it to the first variable, store the updated first vector as the searched vector in the storage unit, weight the first variable with a first coefficient that monotonically increases or decreases according to the number of updates and add it to the corresponding second variable, calculate the problem term using a plurality of first variables, add the problem term to the second variable, read the searched vector from the storage unit, calculate a correction term including the inverse of the distance between the first vector to be updated and the searched vector, and add the correction term to the second variable to update the second vector. The problem term may also be calculated based on the Ising model. Here, the first variable may not necessarily increase or decrease monotonically. For example, (1) when the value of the first coefficient is greater than a threshold value T1 (for example, T1=1), a solution (solution vector) to the combinatorial optimization problem is obtained, and (2) thereafter, after setting the value of the first coefficient to be less than a threshold value T2 (for example, T2=2), the value of the first coefficient is again set to be greater than the threshold value T1 to obtain a solution (solution vector) to the combinatorial optimization problem. In addition, the problem term may also include multi-body interaction. The first coefficient, the problem term, the searched vector, the correction term, the Ising model, and the multi-body interaction will be described in detail later.
[0053] In an information processing device, for example, the processing content (task) can be allocated in units of processors. However, the unit of computing resources for allocating the processing content is not limited. For example, the processing content can be allocated in units of computers, or in units of processes or CPU threads operating on a processor.
[0054] Below, refer again Figure 4 , the components of the computing server are explained.
[0055] The memory 34 stores various data including the program of the computing server 3a, the data required for the execution of the program, and the data generated by the program. Here, it is assumed that the program includes both the OS and the application. The memory 34 may be configured to store the first vector and the second vector, for example. The memory 34 may also be a volatile memory, a non-volatile memory, or a combination thereof. Examples of volatile memories include DRAM or SRAM. Examples of non-volatile memories include NAND flash memory, NOR flash memory, ReRAM, or MRAM. In addition, a hard disk, an optical disk, a magnetic tape, or an external storage device may also be used as the memory 34.
[0056] The host bus adapter 35 implements data communication between computing servers. The host bus adapter 35 is connected to the switch 5 via the cable 4a. The host bus adapter 35 is, for example, an HCA (Host Channel Adaptor). By using the host bus adapter 35, the cable 4a, and the switch 5 to form an interconnection that can achieve high throughput, the speed of parallel computing processing can be increased.
[0057] Figure 5 An example of data stored in the memory of a computing server. Figure 5 The memory 34 of the management server 1 stores calculation data 34A, calculation program 34B, and control program 34C. The calculation data 34A includes data or calculation results in the process of calculation of the calculation server 3a. In addition, at least a part of the calculation data 34A can also be stored in different storage levels such as the shared memory 32, the processor cache, or the processor register. The calculation program 34B is a program that implements the calculation processing in each processor and the storage processing of data in the shared memory 32 and the memory 34 based on a prescribed algorithm. The control program 34C is a program that controls the calculation server 3a based on the instructions sent from the control unit 13 of the management server 1 and sends the calculation results of the calculation server 3a to the management server 1.
[0058] Next, the technology associated with solving the combinatorial optimization problem is described. As an example of an information processing device used to solve the combinatorial optimization problem, an Ising machine can be cited. An Ising machine refers to an information processing device that calculates the energy of the basic state of the Ising model. Previously, the Ising model was mainly used as a model of ferromagnetic bodies and phase transition phenomena. However, in recent years, the use of the Ising model as a model for solving combinatorial optimization problems has increased. The following formula (1) represents the energy of the Ising model.
[0059] [Formula 1]
[0060]
[0061] Here, s i 、s j is the spin, which is a binary variable that can take on either value +1 or -1. N is the number of spins. i is the local magnetic field acting on each spin. J is the matrix of coupling coefficients between spins. The matrix J is a real symmetric matrix with zero diagonal components. Therefore, J ij represents the element of row i and column j of matrix J. The Ising model of equation (1) is a quadratic equation for spin, but as described later, an extended Ising model (Ising model with multi-body interaction) including a term of degree 3 or higher for spin may also be used.
[0062] If the Ising model of formula (1) is used, the energy E Ising As the objective function, calculate the energy E Ising The solution of the Ising model is the vector of spins (s1, s2, ..., s N ) in the form of . Let this vector be called the solution vector. In particular, the energy E Ising is the vector of minimum values (s1, s2, ..., s N ) is called the optimal solution. However, the solution of the Ising model calculated does not have to be a strict optimal solution. In the following, the Ising model will be used to calculate the energy E Ising The problem of finding an approximate solution that is as small as possible (i.e., an approximate solution whose value of the objective function is as close as possible to the optimal value) is called the Ising problem.
[0063] Since the spin s of formula (1) i is a binary variable, so by using the formula (1+s i ) / 2, it is easy to transform the discrete variables (bits) used in the combinatorial optimization problem. Therefore, by transforming the combinatorial optimization problem into the Ising problem and making the Ising machine perform the calculation, the solution to the combinatorial optimization problem can be found. The problem of finding a solution that minimizes a quadratic objective function with discrete variables (bits) that take a certain value of 0 or 1 as variables is called the QUBO (Quadratic Unconstrained Binary Optimization) problem. The Ising problem represented in formula (1) can be said to be equivalent to the QUBO problem.
[0064] For example, quantum annealing machines, coherent Ising machines, or quantum branching machines have been proposed as hardware installations of the Ising machine. The quantum annealing machine uses a superconducting circuit to implement quantum annealing. The coherent Ising machine uses the oscillation phenomenon of a network formed by an optical parametric oscillator. The quantum branching machine uses the branching phenomenon of quantum mechanics in a network of parametric oscillators with the Kerr effect. These hardware installations have the potential to significantly shorten the computing time, but on the other hand, there are technical problems that make it difficult to achieve large-scale and stable operation.
[0065] Therefore, it is also possible to use a widely used digital computer to solve the Ising problem. Compared with the hardware installation using the above-mentioned physical phenomenon, digital computers are easy to achieve large-scale and stable operation. As an example of an algorithm for solving the Ising problem with a digital computer, simulated annealing (SA) can be cited. Technology for performing simulated annealing at a higher speed is being developed. However, since conventional simulated annealing is a sequential update algorithm in which each variable is updated sequentially, it is difficult to achieve high-speed computational processing due to parallelization.
[0066] In view of the above technical problems, a simulation branching algorithm is proposed that can solve large-scale combinatorial optimization problems at high speed through parallel calculations in a digital computer. Hereinafter, an information processing device, an information processing system, an information processing method, a storage medium and a program that use the simulation branching algorithm to solve combinatorial optimization problems are described.
[0067] First, an overview of the simulation branching algorithm is described.
[0068] In the simulation branching algorithm, for two variables x with N i ,y i (i=1, 2, ..., N), numerically solve the following simultaneous ordinary differential equations (2). N variables x i Corresponding to the spin s of the Ising model i On the other hand, N variables y i They are equivalent to the amount of exercise respectively. Let the variable x i ,y i are all continuous variables. i The vector with (i=1, 2, ..., N) as its elements is called the first vector. i A vector whose elements are (i=1, 2, ..., N) is called a second vector.
[0069] [Formula 2]
[0070]
[0071] Here, H is the Hamiltonian of the following equation (3).
[0072] [Formula 3]
[0073]
[0074] In (2), instead of the Hamiltonian H in equation (3), the term G(x1, x2, ... x N ) of the Hamiltonian H′. It will contain not only the Hamiltonian H but also the term G(x1, x2, ... x N ) is called the extended Hamiltonian and is distinguished from the original Hamiltonian H.
[0075] [Formula 4]
[0076]
[0077] In the following, the term G(x1, x2, ...x N ) is a correction term. N) can be derived from the constraints of the combinatorial optimization problem. N ) is not limited in the derivation method and type. In addition, in equation (4), the term G(x1, x2, ... x N ). However, the term G(x1, x2, …x N ) can also be incorporated into the extended Hamiltonian in a different way.
[0078] If we refer to the Hamiltonian of equation (3) and the extended Hamiltonian of equation (4), the terms of each are the elements of the first vector x i or the element y of the second vector i You can also use the element x that can be divided into the first vector as shown in the following formula (5): i The extended Hamiltonian of V is the term U and the term yi of the second vector.
[0079] [Formula 5]
[0080] H'=U(x1,…,x N )+V(y1,…,y N ) (5)
[0081] In the time-advancing calculation of the analog branching algorithm, the values of variables xi, yi (i=1, 2, ..., N) are repeatedly updated. Then, by updating the variable x when a specified condition is met, i By transforming, we can find the spin s of the Ising model i (i=1, 2, ..., N) The following description of the process assumes that the calculation is performed by time marching. However, the calculation of the analog branching algorithm may be performed by a method other than time marching.
[0082] In (2) and (3), coefficient D corresponds to detuning. Coefficient p(t) corresponds to the first coefficient mentioned above, also known as pumping amplitude. In the calculation of time advancement, the value of coefficient p(t) can be monotonically increased according to the number of updates. The initial value of coefficient p(t) can be set to 0.
[0083] In addition, the following description is made by taking the case where the first coefficient p(t) is a positive value and the value of the first coefficient p(t) increases according to the number of updates as an example. However, the sign of the algorithm shown below can also be reversed, and a negative first coefficient p(t) is used. In this case, the value of the first coefficient p(t) decreases monotonically according to the number of updates. However, in any case, the absolute value of the first coefficient p(t) increases monotonically according to the number of updates.
[0084] The coefficient K is equivalent to a positive Kerr coefficient. As the coefficient c, a constant coefficient may be used. For example, the value of the coefficient c may be determined before performing the calculation based on the analog branching algorithm. For example, the coefficient c may be set to be close to J. (2) The value of the reciprocal of the maximum eigenvalue of the matrix. For example, the value of c = 0.5D√(N / 2n) can be used. Here, n is the number of edges of the graph involved in the combinatorial optimization problem. In addition, a(t) is a coefficient that increases with p(t) in the calculation of time advancement. For example, as a(t), √(p(t) / K) can be used. In addition, the vector hi of the local magnetic field in (3) and (4) can be omitted.
[0085] For example, when the value of the coefficient p(t) exceeds the specified value, in the first vector, if the variables x i Transformed to +1, the variable x that is negative i Transformed to -1, we can get i The solution vector is a solution vector of the elements. The solution vector is equivalent to the solution of the Ising problem. In addition, the information processing device can also perform the above-mentioned transformation processing based on the number of updates of the first vector and the second vector to determine whether the solution vector is obtained.
[0086] When performing calculations using the simulated branching algorithm, the above (2) is converted into a discrete recursive equation using the symplectic Euler method and solved. The following (6) shows an example of the simulated branching algorithm after conversion into a recursive equation.
[0087] [Formula 6]
[0088]
[0089] Here, t is the time and Δt is the time step (time scale width). In addition, in (6), the time t and the time step Δt are used to express the corresponding relationship with the differential equation. However, when the algorithm is actually installed in software or hardware, it is not necessary to include the time t and the time step Δt as explicit parameters. For example, if the time step Δt is set to 1, the time step Δt can be removed from the algorithm during installation. When the time t is not included as an explicit parameter when installing the algorithm, just replace x in (4). i (t+Δt) is interpreted as x i That is, "t" in the above (4) represents the value of the variable before the update, and "t+Δt" represents the value of the variable after the update.
[0090] When calculating the time progress of the simulated branching algorithm, based on the variable x after increasing the value of p(t) from an initial value (for example, 0) to a predetermined value, i The sign of the spin s can be found i For example, if you use x i >0 is sgn(x i )=+1, at x i <0 is sgn(x i )=-1, then when the value of p(t) increases to a specified value, by changing the variable x i By transforming the sign function, the spin s can be obtained i As a symbolic function, for example, we can use i ≠0 is sgn(x i )=x i / |x i |、When x i = 0 is sgn(x i )=+1 or -1. Regarding finding the solution to the combinatorial optimization problem (for example, the spin s of the Ising model i ) is not particularly limited. For example, the solution (solution vector) of the combinatorial optimization problem may be obtained when the number of updates of the first vector and the second vector, the value of the first coefficient p, or the value of the objective function is greater than a threshold.
[0091] Figure 6 The flowchart of shows an example of processing when the solution of the simulation branching algorithm is calculated by time advancement. Figure 6 The processing will be described.
[0092] First, the computing server obtains the matrix J corresponding to the problem from the management server 1 ij and vector h i (Step S101). Next, the computing server initializes the coefficients p(t) and a(t) (Step S102). For example, in step S102, the values of the coefficients p and a can be set to 0, but the initial values of the coefficients p and a are not limited. Next, the computing server initializes the first variable x i and the second variable y i Initialization (step S103). Here, the first variable x i is the element of the first vector. In addition, the second variable y i is an element of the second vector. In step S103, the computing server may also use a pseudo-random number to convert x i and i Initialization. However, it does not limit x i and iIn addition, variables may be initialized at a timing different from this, and at least one variable may be initialized multiple times.
[0093] Next, the computation server calculates the corresponding second vector element y by i Weighted and combined with the first vector element x i The first vector is updated by adding (step S104). For example, in step S104, the variable x can be i Add Δt×D×y i Then, the computing server updates the element y of the second vector i (Steps S105 and S106). For example, in step S105, the variable y can be i Add Δt×[(pDK×x i × i )×x i In step S106, the variable y can be further i Add -Δt×c×h i ×a-Δt×c×ΣJ ij × j .
[0094] Next, the computing server updates the values of coefficients p and a (step S107). For example, a certain value (Δp) can be added to coefficient p, and coefficient a can be set to the positive square root of the updated coefficient p. However, as described later, this is only one example of a method for updating the values of coefficients p and a. Next, the computing server determines whether the number of updates of the first vector and the second vector is less than a threshold value (step S108). When the number of updates is less than the threshold value (step S108: yes), the computing server executes the processing of steps S104 to S107 again. When the number of updates is greater than the threshold value (step S108: no), based on the element x of the first vector i Find the spin s of the elements of the solution vector i (Step S109). In step S109, for example, in the first vector, the variables x and i Transformed to +1, the variable x is negative i Transform to -1 and get the solution vector.
[0095] In addition, in the determination of step S108, when the number of updates is less than the threshold value (yes in step S108), the value of the Hamiltonian may be calculated based on the first vector, and the first vector and the value of the Hamiltonian may be stored. Thus, the user can select the approximate solution closest to the optimal solution through multiple first vectors.
[0096] Alternatively, you can Figure 6At least one of the processes shown in the flowchart of is executed in parallel. For example, the processes of steps S104 to S106 may be executed in parallel to update at least a portion of the N elements of the first vector and the second vector in parallel. For example, the processes may be parallelized using multiple computing servers. The processes may also be parallelized using multiple processors. However, the installation used to achieve the parallelization of the processes and the method of the parallelization of the processes are not limited.
[0097] The variable x represented in the above steps S105 to S106 is i and i The execution order of the update processing of is just an example. Therefore, the variable x can also be executed in a different order. i and i For example, you can also execute the variable x i Update process and variable y i In addition, the order of sub-processes included in the update process of each variable is not limited. For example, variable y i The execution order of the addition processing included in the update processing can also be the same as Figure 6 The execution order and timing of the processing that is used as a prerequisite for executing the update processing of each variable are not particularly limited. For example, the calculation processing of the problem item can be combined with the processing including the variable x. i Other processing including the update processing of the variable x is executed in parallel. i and i The order and timing in which the update processing, the sub-processing included in the update processing of each variable, and the calculation processing of the question item are executed are not limited, and the same applies to the processing of each flowchart shown later.
[0098] [Search for efficient solutions]
[0099] In the calculation of optimization problems involving analog branching algorithms, it is preferred to obtain an optimal solution or an approximate solution close to the optimal solution (called a practical solution). However, the calculation process (for example, Figure 6 Each trial of the computational processing may not necessarily result in a practical solution. For example, the solution obtained after the trial of the computational processing may not be a practical solution but a local solution. In addition, there may be multiple local solutions in the problem. In order to increase the probability of finding a practical solution, consider having multiple computing nodes perform the computational processing separately. In addition, the computing nodes may also repeat the computational processing and search for solutions multiple times. Furthermore, the former method may be combined with the latter method.
[0100] Here, computing nodes are, for example, computing servers (information processing devices), processors (CPUs), GPUs, semiconductor circuits, virtual machines (VMs), virtual processors, CPU threads, and processes. Computing nodes can be any computing resources that can be the main body of computing processing, and their granularity and hardware / software distinction are not limited.
[0101] However, when each computing node independently performs the computational processing, multiple computing nodes may search for repeated areas of the solution space. In addition, when the computational processing is repeated, there may be a situation where the computing node searches the same area of the solution space in multiple attempts. Therefore, the same local solution is calculated between multiple computing nodes, or the same local solution is calculated repeatedly. Ideally, all local solutions in the solution space are searched during the computational processing, and each local solution is evaluated to find the optimal solution. On the other hand, considering that there may be multiple local solutions in the solution space, it is expected that the information processing device / information processing system performs efficient solution processing and obtains a practical solution within the realistic computing time and amount of computation.
[0102] For example, the computing node can store the calculated first vector x in the storage unit during the computing process. In the subsequent computing process, the computing node reads the previously calculated first vector x from the storage unit. (m) Here, m is a number indicating the timing of obtaining the elements of the first vector. For example, the first vector obtained for the first time is m=1, and the first vector obtained for the second time is m=2. Then, the computing node performs the calculation based on the previously calculated first vector x. (m) This can avoid searching for repeated areas of the solution space, and can search a wider area of the solution space with the same calculation time and amount of calculation. Hereinafter, the first vector calculated previously is referred to as a searched vector, to distinguish it from the first vector of the update object.
[0103] The following describes in detail the process for searching for an efficient solution.
[0104] For example, the correction term G(x1, x2, ... x N ) is corrected. The following formula (7) is an example of the distance between the first vector and the searched vector.
[0105] [Formula 7]
[0106]
[0107] Formula (7) is called the Q-norm. In formula (7), Q can take any positive value.
[0108] The following formula (8) sets Q in formula (7) to infinity, which is called the infinite power norm.
[0109] [Formula 8]
[0110] ||xx (m) ||=max{|x1|,...,|x N |} (8)
[0111] The following description will take the case where the square norm is used as the distance as an example, but the type of distance used in the calculation is not limited.
[0112] For example, as shown in the following formula (9), the correction term G(x1, x2, ... x N ) contains the inverse of the distance between the first vector and the searched vector.
[0113] [Formula 9]
[0114]
[0115] In this case, if the first vector in the process of calculation is close to the searched vector, the correction term G(x1, x2, ... x N ) becomes larger, thereby making it possible to perform the update process of the first vector in a manner that avoids the area near the searched vector. (9) is only an example of a correction term that can be used in the calculation. Therefore, in the calculation, a correction term in a form different from (9) can also be used.
[0116] The following equation (10) is an example of the extended Hamiltonian H' including a correction term.
[0117] [Formula 10]
[0118]
[0119] For example, as the coefficient c of formula (10) A , any positive value can be used. In addition, for k A , any positive value can also be used. The correction term of (10) includes the sum of the reciprocals of the distances calculated using each of the searched vectors obtained previously. That is, the processing circuit of the information processing device can also be configured to calculate the reciprocal of the distance using each of the multiple searched vectors, and add the multiple reciprocals to calculate the correction term. In this way, the update processing of the first vector can be performed in a manner that avoids the area near the multiple searched vectors obtained previously.
[0120] When the extended Hamiltonian of equation (10) is used, it is possible to perform the following operations on N certain two variables x: i ,y i(i=1, 2, ..., N) and numerically solve the following simultaneous ordinary differential equations (11).
[0121] [Formula 11]
[0122]
[0123] The following (12) represents the relationship between x i The value obtained by partially differentiating (10).
[0124] [Formula 12]
[0125]
[0126] When the denominator of the correction term of (10) is a square norm, the calculation of the denominator of (12) does not require the calculation of the square root, so the amount of calculation can be suppressed. For example, when the number of elements of the first vector is N and the number of searched vectors stored in the storage unit is M, the correction term can be obtained with a constant amount of calculation times N×M.
[0127] Using the symplectic Euler method, the above (11) can be transformed into a discrete recursive formula and the calculation of the analog branching algorithm can be performed. The following (13) shows an example of the analog branching algorithm after the transformation into the recursive formula.
[0128] [Formula 13]
[0129]
[0130] When the algorithm of (13) is used, the first vector can be adaptively updated according to the searched vector.
[0131] The term of (14) below in (13) is derived from the Ising energy. The form of this term is determined by the problem to be solved, so it is called a problem term.
[0132] [Formula 14]
[0133]
[0134] As described later, the question items may also be different from (14).
[0135] Figure 7 The flowchart of FIG. 1 shows an example of processing when solving using an algorithm including a correction term. Figure 7 The processing will be described.
[0136] First, the computing server initializes the coefficients p(t), a(t) and the variable m (step S111). For example, in step S111, the values of the coefficients p and a can be set to 0, but the initial values of the coefficients p and a are not limited. For example, in step S111, the variable m can be set to 1. In addition, although not shown in the figure, the computing server Figure 7 Before starting the process of the flowchart, the matrix J corresponding to the question is obtained from the management server 1. ij and vector h i Next, calculate the server's response to the first variable x i and the second variable y i Initialization is performed (step S112). Here, the first variable x i is the element of the first vector. In addition, the second variable y i is an element of the second vector. In step S112, the computing server may, for example, calculate the value of x by using a pseudo-random number pair i and i However, x is not limited i and i Initialization method.
[0137] The computation server then adds the corresponding second variable y i Weighted and combined with the first variable x i The first vector is updated by adding (step S113). For example, in step S113, the variable x can be i Add Δt×D×y i Next, the computing server updates the second variable y i (Steps S114 to S116). For example, in step S114, y i Add Δt×[(pDK×x i × i )×x i In step S115, y can be further i Add -Δt×c×h i ×a-Δt×c×ΣJ ij × j Step S115 is equivalent to the second variable y i In step S116, it is possible to add y i The correction term of (12) is added. For example, the correction term can be calculated based on the searched vector and the first vector stored in the storage unit.
[0138] Next, the calculation server updates the values of coefficient p (first coefficient) and a (step S117). For example, a certain value (Δp) can be added to coefficient p, and coefficient a can be set to the positive square root of the updated coefficient p. However, as described later, this is only one example of a method for updating the values of coefficient p and a. In addition, when variable t is used in determining whether to continue the loop, Δt can also be added to variable t. Then, the calculation server determines whether the number of updates of the first vector and the second vector is less than a threshold value (step S118). For example, the determination of step S118 can be made by comparing the value of variable t with T. However, the determination can also be made by other methods.
[0139] When the number of updates is less than the threshold value (Yes in step S118), the computing server executes the processing of steps S113 to S117 again. When the number of updates is greater than the threshold value (No in step S118), the first vector is stored in the storage unit as a searched vector, and m is incremented (step S119). Then, when the number of searched vectors stored in the storage unit is greater than the threshold value Mth, the searched vectors in the storage unit are deleted for any m (step S120). In addition, the processing of storing the first vector in the storage unit as a searched vector can also be performed at any timing between the execution of step S113 and step S117.
[0140] Next, the computing server substitutes the first vector and the second vector into the Hamiltonian of the above-mentioned formula (6) to calculate the value E of the Hamiltonian. Then, the computing server determines whether the value E of the Hamiltonian is less than the threshold value E0 (step S121). When the value E of the Hamiltonian is less than the threshold value E0 (yes in step S121), the computing server can calculate the value E of the Hamiltonian based on the first variable x i Find the spin s of the elements of the solution vector i (not shown). For example, in the first vector, the first variable x is a positive value. i Transformed to +1, the first variable x is negative i By transforming it to -1, we can get the solution vector.
[0141] In the determination of step S121, if the value E of the Hamiltonian is not less than the threshold value E0 (No in step S121), the computing server executes the processing after step S111 again. In this way, in the determination of step S121, it is confirmed whether an optimal solution or an approximate solution close to the optimal solution is obtained. In this way, the processing circuit of the information processing device can also be configured to determine whether to stop updating the first vector and the second vector based on the value of the Hamiltonian (objective function).
[0142] The user can determine the value of the threshold E0 according to the symbols used in the formulation of the problem and the accuracy required in the solution. If the first vector whose value of the Hamiltonian takes a minimum value according to the symbols used in the formulation is the optimal solution, then the first vector whose value of the Hamiltonian takes a maximum value may also be the optimal solution. For example, in the extended Hamiltonian of (10) above, the first vector whose value takes a minimum value is the optimal solution.
[0143] In addition, the calculation server may also calculate the value of the Hamiltonian at an arbitrary timing. The calculation server can store the value of the Hamiltonian and the first vector and the second vector used in the calculation in a storage unit. The processing circuit of the information processing device may also be configured to store the updated second vector as a third vector in the storage unit. In addition, the processing circuit may also be configured to read out the third vector updated in the same iteration as the searched vector from the storage unit, and calculate the value of the Hamiltonian (objective function) based on the searched vector and the third vector.
[0144] The user can determine the frequency of calculating the value of the Hamiltonian according to the available storage area and the amount of computing resources. In addition, it is also possible to determine whether to continue the loop processing based on whether the number of combinations of the first vector, the second vector, and the value of the Hamiltonian stored in the storage unit exceeds a threshold value at the timing of step S118. In this way, the user can select the searched vector closest to the optimal solution from the multiple searched vectors stored in the storage unit and calculate the solution vector.
[0145] The processing circuit of the information processing device may also be configured to select any one of the searched vectors from the plurality of searched vectors stored in the storage unit based on the value of the Hamiltonian (objective function), transform the positive value of the selected searched vector, i.e., the first variable, into the first value, and transform the first variable, which is a negative value, into a second value smaller than the first value, thereby calculating the solution vector. Here, the first value is, for example, +1. The second value is, for example, -1. However, the first value and the second value may also be other values.
[0146] Alternatively, you can run Figure 7 At least one of the processes shown in the flowchart of . For example, the processes of steps S113 to S116 may be performed in parallel so that at least a portion of the N elements respectively possessed by the first vector and the second vector are updated in parallel. For example, multiple computing servers may be used to parallelize the processes. The processes may also be parallelized by multiple processors. However, the installation for implementing the parallelization of the processes and the method for parallelizing the processes are not limited.
[0147] exist Figure 7In step S120, a process of deleting any searched vector stored in the storage unit is executed. In step S120, the searched vector to be deleted can be randomly selected. For example, when there is a limit on the available storage area, the above-mentioned threshold value Mth can be determined based on the limit. In addition, regardless of the limit on the available storage area, an upper limit is set for the number of searched vectors maintained by the storage unit, thereby suppressing the amount of calculation in step S116 (calculation of the correction term). Specifically, the calculation process of the correction term can be performed with an amount of calculation less than a constant multiple of N×Mth.
[0148] However, the computing server may necessarily skip the processing of step S120, or may perform other processing at the same time as step S120. For example, the searched vector may be moved to another memory. In addition, if computing resources are sufficient, the searched vector may not be deleted.
[0149] Here, examples of the information processing method, storage medium, and program are described.
[0150] In a first example of an information processing method, a first vector having a first variable as an element and a second vector having a second variable corresponding to the first variable as an element are repeatedly updated using a storage unit and a plurality of processing circuits. In this case, the information processing method may also include the following steps: a step in which the plurality of processing circuits update the first vector by weighting the corresponding second variable and adding it to the first variable; a step in which the first vector updated by the plurality of processing circuits is stored in the storage unit as a searched vector; a step in which the plurality of processing circuits weight the first variable according to a first coefficient that monotonically increases or decreases according to the number of updates and adds it to the corresponding second variable; a step in which the plurality of processing circuits calculate a problem item using the plurality of first variables and add the problem item to the second variable; a step in which the plurality of processing circuits read the searched vector from the storage unit; a step in which the plurality of processing circuits calculate a correction item including the inverse of the distance between the first vector to be updated and the searched vector; and a step in which the plurality of processing circuits add the correction item to the second variable.
[0151] In a second example of the information processing method, a first vector having a first variable as an element and a second vector having a second variable corresponding to the first variable as an element are repeatedly updated using a storage device and a plurality of information processing devices. In this case, the information processing method may also include the following steps: a step in which the plurality of information processing devices update the first vector by weighting the corresponding second variable and adding it to the first variable; a step in which the plurality of information processing devices store the updated first vector as a searched vector in the storage device; a step in which the plurality of information processing devices weight the first variable with a first coefficient that monotonically increases or decreases according to the number of updates and adds it to the corresponding second variable; a step in which the plurality of information processing devices calculate a problem item using a plurality of first variables and add the problem item to the second variable; a step in which the plurality of information processing devices read the searched vector from the storage device; a step in which the plurality of information processing devices calculate a correction item including the inverse of the distance between the first vector of the update object and the searched vector; and a step in which the plurality of information processing devices add the correction item to the second variable.
[0152] For example, the program repeatedly updates a first vector having a first variable as an element and a second vector having a second variable corresponding to the first variable as an element. In this case, the program may also cause the computer to execute the following steps: a step of updating the first vector by weighting the corresponding second variable and adding it to the first variable; a step of storing the updated first vector as a searched vector in a storage unit; a step of weighting the first variable with a first coefficient that monotonically increases or decreases according to the number of updates and adding it to the corresponding second variable; a step of calculating a problem item using a plurality of first variables and adding the problem item to the second variable; a step of reading the searched vector from the storage unit; a step of calculating a correction item including the inverse of the distance between the first vector of the update object and the searched vector; and a step of adding the correction item to the second variable. In addition, the storage medium may also be a non-transitory computer-readable storage medium storing the above-mentioned program.
[0153] [Searching for efficient solutions in parallel systems]
[0154] In the case where multiple computing nodes execute the simulated branching algorithm in parallel, the above-mentioned adaptive search can also be applied. Here, the same point as above is that the computing node can be any computing resource that can become the execution subject of the computing process, without limiting the granularity and hardware / software differences. The update processing of the same pair of the first vector and the second vector can also be shared and executed by multiple computing nodes. In this case, it can be said that multiple computing nodes form a group that calculates the same solution vector. In addition, multiple computing nodes can also be divided into groups that execute the update processing of different pairs of the first vector and the second vector. In this case, it can be said that multiple computing nodes are divided into multiple groups that respectively calculate different solution vectors.
[0155] The information processing device may also include a plurality of processing circuits. In this case, each processing circuit may be divided into a plurality of groups that perform update processing of different pairs of the first vector and the second vector. Each processing circuit may also be configured to read out the searched vectors stored in the storage unit of another processing circuit.
[0156] In addition, the first vector including the first variable as an element and the second vector including the second variable corresponding to the first variable as an element may be repeatedly updated by an information processing system including the storage device 7 and a plurality of information processing devices. In this case, each information processing device may be configured to update the first vector by weighting the corresponding second variable and adding it to the first variable, store the updated first vector as a searched vector in the storage device 7, weight the first variable with a first coefficient that monotonically increases or decreases according to the number of updates and add it to the corresponding second variable, calculate a problem item using a plurality of first variables, add the problem item to the second variable, read the searched vector from the storage device 7, calculate a correction item including the inverse of the distance between the first vector to be updated and the searched vector, add the correction item to the second variable, and thereby update the second vector.
[0157] When the information processing system includes a plurality of information processing devices, each information processing device may be divided into a plurality of groups that perform update processing of different pairs of the first vector and the second vector. Each information processing device may be configured so that another information processing device reads the searched vector stored in the storage unit.
[0158] Hereinafter, an example of processing that enables efficient solution search when a plurality of computing nodes each executes a simulated branching algorithm will be described.
[0159] The following equation (15) is an example of a Hamiltonian that does not include a correction term.
[0160] [Formula 15]
[0161]
[0162] For example, if each computing node independently executes the calculation of the solution of the Hamiltonian using the above-mentioned equation (15), it is possible that multiple computing nodes search for overlapping areas of the solution space or multiple computing nodes obtain the same local solution.
[0163] Therefore, in order to prevent different computation nodes from searching for overlapping areas of the solution space, a correction term such as the following (16) can be used.
[0164] [Formula 16]
[0165]
[0166] In (15) and (16), m1 represents a variable or value used in the calculation of each computing node. On the other hand, m2 represents a variable used in the calculation of other computing nodes observed from each computing node. For example, the vector x in (16) (m1) is the first vector calculated in this computation node. On the other hand, the vector x (m2) is the first vector calculated in the other calculation node. That is, when the correction term of (16) is used, the first vector calculated in the other calculation node is used as the searched vector. In addition, c of (16) can be G and k G Set any positive value. c G and k G The value of can also be different.
[0167] For example, if the correction term of (16) is added to equation (15), the extended Hamiltonian of equation (17) below is obtained.
[0168] [Formula 17]
[0169]
[0170] If the vector x (m1) Approaching vector x in solution space (m2) , then in each correction term shown in (16) and (17), the denominator value becomes smaller. Therefore, the value of (16) becomes larger, and in each computing node, in order to avoid the vector x (m2) The first vector x is performed in the neighborhood manner (m1) Update processing.
[0171] When the extended Hamiltonian of equation (17) is used, it is possible to express N certain two variables x i ,y i (i=1, 2, ..., N) and numerically solve the following simultaneous ordinary differential equations (18).
[0172] [Formula 18]
[0173]
[0174] The following (19) is about x i It is obtained by partially differentiating the correction term of (17).
[0175] [Formula 19]
[0176]
[0177] When the denominator of the correction term of (16) is a square norm, the calculation of the denominator of (19) does not require the calculation of the square root, so the amount of calculation can be suppressed. If N is the number of elements of the first vector and M is the number of searched vectors of other calculation nodes, the correction term of (19) can be calculated with a constant multiple of N×M.
[0178] The above (18) can be transformed into a discrete recursive expression using the symplectic Euler method, and the calculation of the analog branching algorithm can be performed. The following (20) shows an example of the analog branching algorithm after the transformation into the recursive expression.
[0179] [Formula 20]
[0180]
[0181] The algorithm of (20) also includes the problem item of (14) described above. As described later, a problem item in a different form from (20) may also be used.
[0182] For example, the information processing device may include a plurality of processing circuits. Each processing circuit may also be configured to store the updated first vector in a storage unit. Thus, each processing circuit can use the searched vector calculated by other processing circuits to calculate the correction term. In addition, each processing circuit may also be configured to transmit the updated first vector to other processing circuits, and use the first vector received from other processing circuits to replace the searched vector to calculate the correction term.
[0183] Figure 8 The flowchart of shows an example of processing in which a solution is efficiently performed using the first vector calculated by other calculation nodes. Figure 8 The processing will be described.
[0184] First, the computing server obtains the matrix J corresponding to the problem from the management server 1 ij and vector h i , the coefficients p(t), a(t) and the variable t are initialized (step S131). For example, in step S131, the values of p, a and t can be set to 0. However, the initial values of p, a and t are not limited. Next, the computing server initializes the first variable x for m1=1~M. i (m1) and the second variable y i (m1) Initialization is performed (step S132). Here, the first variable x i (m1) are the elements of the first vector. The second variable y i (m1) is the element of the second vector. For example, we can also use pseudo-random numbers to i(m1) and i (m1) However, x is not limited i (m1) and i (m1) Then, the computing server substitutes 1 into the counter variable m1 (step S133). Here, the counter variable m1 is a variable that specifies the computing node. Through the processing of step S133, the computing node #1 that performs the computing processing is determined. In addition, the processing of steps S131 to S133 can also be performed by a computer other than the computing server, such as the management server 1.
[0185] Next, the computation node #(m1) is computed by converting the corresponding second variable y i (m1) Weighted and combined with the first variable x i (m1) The first vector is updated by adding, and the updated first vector is stored in a storage area shared with other computing nodes (step S134). For example, in step S134, x i (m1) Add Δt×D×y i (m1) For example, when the other computing nodes are other processors or threads on other processors, the updated first vector can be stored in the shared memory 32 or the memory 34. In addition, when the other computing nodes are computing servers, the first vector can also be stored in a shared external memory. The other computing nodes can use the first vector stored in the shared storage area as the searched vector. In addition, in step S134, the updated first vector can also be transmitted to the other computing nodes.
[0186] Next, computing node #(m1) updates the second variable y i (m1) (Steps S135 to S137). For example, in step S135, i (m1) Add Δt×[(pDK×x i (m1) × i (m1) )×x i (m1) In step S136, it is possible to further i (m1) Add -Δt×c×h i ×a-Δt×c×ΣJ ij × j (m1) Step S136 is equivalent to addingi Then, in step S137, the variable y can be i The correction term of (19) is added. For example, the correction term is calculated based on the first vector and the searched vector stored in the shared storage area. The calculation server then increments the counter variable m1 (step S138).
[0187] Next, the computing server determines whether the counter variable 1 is less than M (step S139). When the counter variable m1 is less than M (yes in step S139), the processing of steps S134 to S138 is performed again. On the other hand, when the counter variable m1 is greater than M (no in step S139), the computing server updates the values of p, a, and t (step S140). For example, a certain value (Δp) can be added to p, a can be set to the positive square root of the updated coefficient p, and Δt can be added to t. However, as described later, this is just an example of a method for updating the values of p, a, and t. Then, the computing server determines whether the number of updates of the first vector and the second vector is less than a threshold value (step S141). For example, the determination of step S141 can be made by comparing the value of the variable t with T. However, the determination can also be made by other methods.
[0188] If the number of updates is less than the threshold value (Yes in step S141), the computing server executes the process of step S133, and the designated computing node further executes the process after step S134. If the number of updates is greater than the threshold value (No in step S141), the computing server or the management server 1 can calculate the number of updates based on the first variable x. i Find the spin s of the elements of the solution vector i (not shown). For example, in the first vector, the first variable x is a positive value. i Transformed to +1, the first variable x is negative i By transforming it to -1, we can get the solution vector.
[0189] exist Figure 8 In the flowchart of , computing nodes #1 to computing nodes #M iteratively execute the update processing of the elements of the first vector and the second vector through a loop. However, it is also possible to skip Figure 8 Instead of executing the processing of steps S133, S138, and S139 in the flowchart of , multiple computing nodes execute the processing of steps S134 to S137 in parallel. In this case, the component that manages multiple computing nodes (for example, the control unit 13 of the management server 1 or any computing server) can execute the processing of steps S140 and S141. As a result, the overall computing processing can be accelerated.
[0190] The number of computing nodes M that execute the processing of steps S134 to S137 in parallel is not limited. For example, the number of computing nodes M may be equal to the number of elements (number of variables) N of each of the first vector and the second vector. In this case, one solution vector can be obtained by using M computing nodes.
[0191] In addition, the number M of computing nodes may be a number different from the number N of elements respectively possessed by the first vector and the second vector. For example, the number M of computing nodes may be a positive integer multiple of the number N of elements respectively possessed by the first vector and the second vector. In this case, by using a plurality of computing nodes, M / N solution vectors can be obtained. Then, the plurality of computing nodes are grouped according to each solution vector of the computational object. In this way, the searched vectors can also be shared between the computing nodes grouped in such a way as to perform calculations of different solution vectors, thereby achieving efficient computational processing. That is, the vector x (m2) It can also be the first vector calculated by the computing nodes belonging to the same group. (m2) The first vector may be calculated by calculation nodes belonging to different groups. In addition, the calculation nodes belonging to different groups may not synchronize their processing.
[0192] Alternatively, the processing of steps S134 to S137 may be executed in parallel so that at least a portion of the N elements of each of the first vector and the second vector are updated in parallel. The implementation and form of the parallelization of the processing are not limited here.
[0193] In addition, the computing node can also calculate the value of the Hamiltonian based on the first vector and the second vector at any timing. The Hamiltonian can be either the Hamiltonian of (15) or the extended Hamiltonian including the correction term of (17). In addition, both the former and the latter can be calculated. The computing node can save the values of the first vector, the second vector and the Hamiltonian in the storage unit. These processes can be performed each time when the judgment of step S141 is affirmative. In addition, it can also be performed at a part of the timing when the judgment of step S141 is affirmative. Moreover, the above-mentioned processes can also be performed at other timings. The user can determine the frequency of calculating the value of the Hamiltonian based on the available storage area and the amount of computing resources. At the timing of step S141, it is also possible to determine whether to continue the loop processing based on whether the number of combinations of the first vector, the second vector and the value of the Hamiltonian stored in the storage unit exceeds a threshold. In this way, the user can select the first vector closest to the optimal solution based on multiple first vectors (local solutions) stored in the storage unit and calculate the solution vector.
[0194] [Use of snapshot]
[0195] Hereinafter, another example of processing that can be applied when the searched vector is shared across a group of computing nodes that perform calculations on different pairs of first vectors and second vectors will be described. A computing node can be any computing resource that can be the subject of the computational processing. Therefore, the granularity of the computing node and the distinction between hardware and software are not limited.
[0196] Fig. 9 and Fig.10 The flowchart of shows an example of processing in which a solution is efficiently obtained by a simulation branching algorithm in multiple computing nodes. Fig. 9 and Fig.10 The processing will be described.
[0197] First, the computing server obtains the matrix J corresponding to the problem from the management server 1 ij and vector h i , and transmit these data to each computing node (step S150). In step S150, the management server 1 can also directly transmit the matrix J corresponding to the problem to each computing node. ij and vector h i Next, the computing server substitutes 1 into the counter variable m1 (step S151). Alternatively, step S151 may be skipped. In this case, the processing of steps S152 to S160 described later may be performed in parallel for m1=1 to M in a plurality of computing nodes.
[0198] Regardless of whether or not there is a loop process, the variable m1 represents the number of each computing node in the information processing system. In addition, m2 represents the number of other computing nodes observed from each computing node. The number M of computing nodes can be equal to the number N of elements each of the first vector and the second vector has. In addition, the number M of computing nodes can also be a number different from the number N of elements each of the first vector and the second vector has. Furthermore, the number M of computing nodes can also be a positive integer multiple of the number N of elements each of the first vector and the second vector has.
[0199] Then, each computing node calculates the variable t (m1)及 Coefficient p (m1) 、a (m1) Initialization is performed (step S152). For example, in step S131, p (m1) 、a (m1) and t (m1) The value of is set to 0. However, p is not limited to (m1) 、a (m1) and t (m1) Next, each computing node calculates the initial value of the first variable x i (m1) and the second variable y i (m1)Initialization is performed (step S153). Here, the first variable x i (m1) are the elements of the first vector. The second variable y i (m1) is an element of the second vector. In step S153, the computing server may, for example, calculate x by a pseudo-random number pair i (m1) and i (m1) However, x is not limited i (m1) and i (m1) Initialization method.
[0200] Then, each computing node converts the corresponding second variable y i (m1) Weighted and combined with the first variable x i (m1) To update the first vector (step S154). For example, in step S154, x i (m1) Add Δt×D×y i (m1) Next, each computing node updates the second variable y i (m1) (Steps S155 to S157). For example, in step S155, y i (m1) Add Δt×[(pDK×x i (m1) × i (m1) )×x i (m1) In step S156, y can be further i (m1) Add -Δt×c×h i ×a-Δt×c×ΣJ ij × j (m1) Step S156 is equivalent to the second variable y i Then, in step S157, the second variable y i The correction term of (19) is added. Each computing node calculates the correction term based on the first vector and the searched vector stored in the shared storage area 300. Here, the searched vector may also be a vector stored by a computing node that calculates a different solution vector. In addition, the searched vector may also be a vector stored by a computing node that calculates the same solution vector.
[0201] Next, each computing node updates t(m1) 、p (m1) and a (m1) For example, t (m1) Add Δt, and p (m1) Add a certain value (Δp) and change a (m1) is set to the positive square root of the updated coefficient p. However, this is just p (m1) 、a (m1) and t (m1) Then, each computing node saves a snapshot of the first vector in the storage area 300 (step S159). Here, the snapshot refers to each element x of the first vector including the timing at which step S159 is executed. i (m1) As the storage area 300, a storage area that can be accessed from a plurality of computing nodes can be used. In addition, as the storage area 300, for example, a storage area in the shared memory 32, the memory 34, or the external memory can be used. However, the type of memory or storage device that provides the storage area 300 is not limited. The storage area 300 may also be a combination of multiple types of memories or memories. In addition, in step S159, the second vector updated in the same iteration as the first vector may be stored in the storage area 300.
[0202] Next, each computing node determines whether the update times of the first vector and the second vector are less than a threshold value (step S160). (m1) The value of is compared with T, and the determination in step S160 can be performed. However, the determination can also be performed by other methods.
[0203] When the number of updates is less than the threshold value (Yes in step S160), the computing node performs the processing after step S154. When the number of updates is greater than the threshold value (No in step S160), the computing server increments the counter variable m1 (step S161). In addition, step S161 can be skipped. Then, the computing server or management server 1 can select at least one of the searched vectors stored in the storage area 300 based on the value of the Hamiltonian, and calculate the solution vector (step S162). The Hamiltonian can be the Hamiltonian of (15) or the objective function including the correction term of (17). In addition, both the former and the latter can be calculated. In addition, the value of the Hamiltonian can also be calculated at a timing different from that of step S162. In this case, the computing node can save the value of the Hamiltonian together with the first vector and the second vector in the storage area 300.
[0204] In step S159, the snapshot of the variable need not be saved in the storage area 300 every time. For example, the snapshot of the variable may be saved in the storage area 300 at some times in the loop processing of steps S154 to S159. This can suppress consumption of the storage area.
[0205] When a failure occurs in any computing node and the computing process stops abnormally, the data can be restored and the computing process can be restarted using the snapshots of the first vector and the second vector stored in the storage area 300. Storing the data of the first vector and the second vector in the storage area 300 helps improve the fault tolerance and availability of the information processing system.
[0206] By preparing a storage area 300 in the information processing system that can be used by multiple computing nodes to store the elements of the first vector (and the elements of the second vector) at any timing, each computing node can calculate the correction term (19) and the correction term to the variable y in step S157 regardless of the timing. i In the calculation of the correction term of (19), the first vectors calculated in different iterations of the loop processing can also be mixed. Therefore, when a computing node is updating the first vector, other computing nodes can use the first vector before the update to calculate the correction term. In this way, the frequency of synchronous processing between multiple computing nodes can be reduced, and the combinatorial optimization problem can be solved efficiently in a relatively short time.
[0207] Fig.11 An example of an information processing system including a plurality of computing nodes is conceptually illustrated. Fig.11 Computing node #1, computing node #2 and computing node #3 are shown. Information related to the searched first vector is exchanged between computing node #1 and computing node #2. Similarly, information related to the searched first vector is exchanged between computing node #2 and computing node #3. In addition, although not shown, information related to the searched first vector can also be exchanged between computing node #1 and computing node #3. Data transmission between computing node #1 and computing node #3 can be performed directly or indirectly via computing node #2. In this way, it is possible to avoid searching for repeated solution spaces in multiple computing nodes.
[0208] Fig.11Three computing nodes are shown. However, the number of computing nodes provided by the information processing device or the information processing system may be different from this. In addition, the connection topology between computing nodes and the path for data transmission between computing nodes are not limited. For example, when the computing nodes are processors, data transmission may be performed via inter-processor communication or shared memory 32. In addition, when the computing nodes are computing servers, data transmission may be performed via the interconnection between computing servers including switch 5. In addition, Fig.11 The computing nodes can also execute in parallel Fig. 9 and Fig.10 The storage process of the snapshot of the first vector in the storage area 300 is described in the flowchart of FIG.
[0209] Figure 12 to Figure 14 This diagram conceptually shows an example of how the value of the extended Hamiltonian changes at each computation node. Fig.12 , the first vector x calculated by computing node #1 is shown. (m1) , calculate the first vector x calculated by node #2 (m2) , and the value of the extended Hamiltonian H'.
[0210] For example, suppose computing node #1 obtains the first vector x from computing node #2 (m2) In this case, computing node #1 can use the first vector x obtained (m2) Calculate the correction term of (19) and update the first vector and the second vector. The result is as follows: Fig.13 As shown, in computing node #1, the first vector x in computing node #2 (m2) The value of the extended Hamiltonian becomes larger near . Therefore, the first vector x updated in computation node #1 is (m1) In the solution space, the first vector x from the computation node #2 is approached (m2) The probability of leaving the area increases.
[0211] In addition, it is assumed that computing node #2 obtains the first vector x from computing node #1 (m1) In this case, computing node #2 can use the first vector x obtained (m1) Calculate the correction term of (19) and update the first vector and the second vector. The result is as follows: Fig.14 As shown, in computing node #2, the first vector x in computing node #1 (m1) The value of the extended Hamiltonian increases near . Therefore, the first vector x updated in computation node #2 is (m2) In the solution space, the first vector x from the computation node #1 is approached (m1) The probability of leaving the area increases.
[0212] As described above, by adjusting the value of the extended Hamiltonian according to the update status of the first vector in each computation node, it is possible to avoid searching for overlapping regions in the solution space among multiple computation nodes. Therefore, it is possible to efficiently search for a solution to the combinatorial optimization problem.
[0213] Fig.15 The histogram of represents the number of calculations required to obtain the optimal solution in multiple calculation methods. Fig.15 In the example, data from the case of solving a Hamiltonian closed-circuit problem with 48 nodes and 96 edges is used. Fig.15 The vertical axis represents the frequency of obtaining the optimal solution. On the other hand, Fig.15 The horizontal axis represents the number of trials. Fig.15 In the example, “DEFAULT” is equivalent to using the Hamiltonian of equation (3) to perform Figure 6 In addition, "ADAPTIVE" is equivalent to using the extended Hamiltonian of equation (10) to perform Figure 8 The result of the processing of the flowchart is as follows. Furthermore, "GROUP" is equivalent to executing the extended Hamiltonian using equation (10). Fig. 9 and Fig.10 Flowchart of the processing case results.
[0214] Fig.15 The vertical axis represents the number of different matrices J prepared in ij and vector h i The frequency of obtaining the optimal solution within the specified number of calculations when the combination of . In the case of "DEFAULT", the number of calculations is equivalent to Figure 6 On the other hand, in the case of "ADAPTIVE" and "GROUP", the number of calculations is equivalent to the number M of searched vectors in equation (10). Fig.15 In the example, it can be said that the higher the frequency on the left side of the horizontal axis, the fewer calculations are required to obtain the optimal solution. For example, in the case of "DEFAULT", the frequency of obtaining the optimal solution with less than 10 calculations is about 260. On the other hand, in the case of "ADAPTIVE", the frequency of obtaining the optimal solution with less than 10 calculations is about 280. Furthermore, in the case of "GROUP", the frequency of obtaining the optimal solution with less than 10 calculations is about 430. Therefore, in the case of the "GROUP" condition, the probability of obtaining the optimal solution with fewer calculations becomes higher than in other cases.
[0215] In the information processing device and information processing system involved in this embodiment, it is possible to avoid searching for repeated areas of the solution space based on data related to the searched vectors. Therefore, it is possible to search for solutions in a larger area of the solution space, and the probability of obtaining an optimal solution or an approximate solution close to the optimal solution can be increased. In addition, in the information processing device and information processing system of this embodiment, it is easy to parallelize the processing, so that the calculation processing can be performed more efficiently. Thus, it is possible to provide users with an information processing device or information processing system that calculates the solution to the combinatorial optimization problem in a practical time.
[0216] [Calculations including multi-body interaction terms]
[0217] By using the simulated branching algorithm, it is also possible to solve combinatorial optimization problems with objective functions of degree 3 or higher. The problem of solving the combination of variables that minimizes the objective function of degree 3 or higher with binary variables is called the HOBO (Higher Order Binary Optimization) problem. When dealing with the HOBO problem, the following formula (21) can be used as the energy formula in the Ising model extended to higher orders.
[0218] [Formula 21]
[0219]
[0220] Here, J (n) is an n-order tensor that makes the local magnetic field h of equation (1) i is generalized to the matrix J of coupling coefficients. For example, the tensor J (1) Equivalent to the local magnetic field h i A vector of n-order tensor J (n) In , when multiple subscripts have the same value, the value of the element is 0. In formula (21), the third-order terms are expressed, but the higher-order terms can also be defined in the same way as formula (21). Formula (21) is equivalent to the energy of the Ising model including multi-body interaction.
[0221] In addition, both QUBO and HOBO can be said to be a type of unconstrained polynomial binary optimization (PUBO). That is, in PUBO, a combinatorial optimization problem with a quadratic objective function is QUBO. In addition, in PUBO, a combinatorial optimization problem with a tertiary objective function is HOBO.
[0222] When solving the HOBO problem using the analog branching algorithm, it is sufficient to replace the Hamiltonian H of the above-mentioned equation (3) with the Hamiltonian H of the following equation (22).
[0223] [Formula 22]
[0224]
[0225] In addition, based on formula (22), multiple first variables shown in the following formula (23) are used to derive the problem item.
[0226] [Formula 23]
[0227]
[0228] (23) Problem item z i Take the second equation of (22) with respect to a variable x i (The first vector element) is in the form of partial differentiation. The variable x of the partial differentiation is i The variable x is different depending on the index i. i The index i of is equivalent to the index specifying the element of the first vector and the element of the second vector.
[0229] When performing calculations including terms of multi-body interactions, the above-mentioned recursive formula (20) is replaced with the following recursive formula (24).
[0230] [Formula 24]
[0231]
[0232] (24) is equivalent to a generalized recursive formula of (20). Similarly, in the recursive formula of (13) above, the term of multi-body interaction can also be used.
[0233] The questions described above are merely examples of questions that can be used by the information processing device of this embodiment, and therefore, the form of the question used in the calculation may be different from these.
[0234] [Algorithm Variations]
[0235] Here, a modification example of the analog branching algorithm is described. For example, various modifications may be made to the above-mentioned analog branching algorithm for the purpose of reducing errors or shortening calculation time.
[0236] For example, in order to reduce the calculation error, additional processing can also be performed when the first variable is updated. i When the absolute value of becomes greater than 1 due to the update, the first variable x iThe value is replaced with sgn(x i ). That is, when it becomes x i > 1 through the update, the variable x i is set to 1. In addition, when it becomes x i < -1 through the update, the variable x i is set to -1. Thus, the variable x i can be used to approximate the spin s i with higher precision. By including such processing, the algorithm is equivalent to the physical model of N particles with a wall at the position of x i = ±1. More generally, the arithmetic circuit can also be configured to set the first variable with a value smaller than the second value to the second value, and set the first variable with a value larger than the first value to the first value.
[0237] Furthermore, when it becomes x i > 1 through the update, the variable y i corresponding to the variable x i can also be multiplied by the coefficient rf. For example, if the coefficient rf of -1 < r ≤ 0 is used, the above-mentioned wall becomes a wall with a reflection coefficient rf. In particular, when the coefficient rf of rf = 0 is used, the algorithm becomes equivalent to the physical model of a wall with a perfectly inelastic collision at the position of x i = ±1. More generally, the arithmetic circuit can also be configured to update the second variable corresponding to the first variable with a value smaller than the first value or the second variable corresponding to the first variable with a value larger than the second value to the value obtained by multiplying the original second variable by the second coefficient. For example, the arithmetic circuit can also be configured to update the second variable corresponding to the first variable with a value smaller than -1 or the second variable corresponding to the first variable with a value larger than 1 to the value obtained by multiplying the original second variable by the second coefficient. Here, the second coefficient corresponds to the above-mentioned coefficient rf.
[0238] In addition, the arithmetic circuit can also set the value of the variable y i corresponding to the variable x i to a pseudo-random number when it becomes x i > 1 through the update. For example, a random number in the range of [-0.1, 0.1] can be used. That is, the arithmetic circuit can also be configured to set the value of the second variable corresponding to the first variable with a value smaller than the second value or the value of the second variable corresponding to the first variable with a value larger than the first value to a pseudo-random number.
[0239] If the update process is performed in such a way as to suppress |x i |> 1 as described above, then even if the non-linear terms K × x i 2 in (13), (20), and (24) are removed, x iThe value of will not diverge. Therefore, the algorithm represented by the following (25) can be used.
[0240] [Formula 25]
[0241]
[0242] In the algorithm of (25), a continuous variable x is used in the problem term instead of a discrete variable. Therefore, an error may occur with the discrete variable used in the original combinatorial optimization problem. In order to reduce the error, as shown in the following (26), in the calculation of the problem term, the value sgn(x) obtained by transforming the continuous variable x with a sign function may be used instead of the continuous variable x.
[0243] [Formula 26]
[0244]
[0245] In (26), sgn(x) is equivalent to spin s.
[0246] In (26), the coefficient α of the term containing the first-order tensor in the problem term can also be set to a constant (for example, α = 1). In the algorithm of (26), since the product of the spins appearing in the problem term must take a value of -1 or 1, when dealing with the HOMO problem with a high-order objective function, it is possible to prevent the occurrence of errors caused by product operations. As in the algorithm of (26) above, the data calculated by the computing server can also include the variable s i (i=1, 2, ..., N) is the spin vector of the element (s1, s2, ..., s N ). By transforming the elements of each first vector using a sign function, a spin vector can be obtained.
[0247] [Example of parallelizing variable update processing]
[0248] Hereinafter, an example of parallelization of the update process of variables during calculation of the simulation branching algorithm will be described.
[0249] First, we will explain an example of implementing a simulation branching algorithm on a PC cluster. A PC cluster is a system that connects multiple computers to achieve computing performance that cannot be achieved with a single computer. For example, Figure 1The information processing system 100 shown in FIG. 1 includes a plurality of computing servers and processors and can be used as a PC cluster. For example, in a PC cluster, by using MPI (Message Passing Interface), even a configuration in which memories are distributed among a plurality of computing servers such as the information processing system 100 can perform parallel computing. For example, the control program 14E of the management server 1, the computing program 34B of each computing server, and the control program 34C can be installed using MPI.
[0250] When the number of processors used by the PC cluster is Q, each processor can be made to perform the first vector (x1, x2, ..., x N ) contains the variable x i Similarly, each processor can perform the calculation of the second vector (y1, y2, ..., y N ) contains the variable y i That is, processor #j (j=1, 2, ..., Q) performs the calculation of the variables {x m |m=(j-1)L+1, (j-1)L+2,…,jL} and {y m |m=(j-1)L+1,(j-1)L+2,…,jL}. In addition, it is assumed that {y m The tensor J represented by the following (27) is required for the calculation of |m=(j-1)L+1,(j-1)L+2,…,jL} (n) It is stored in a storage area (for example, a register, a cache, a memory, etc.) that can be accessed by processor #j.
[0251] [Formula 27]
[0252]
[0253] Here, the case where each processor calculates the variables of the constant number of the first vector and the second vector is described. However, the number of elements (variables) of the first vector and the second vector as the calculation object may be different depending on the processor. For example, in the case where there is a performance difference depending on the processor installed in the calculation server, the number of variables as the calculation object may be determined according to the performance of the processor.
[0254] In order to change the variable y i The value of the first vector (x1, x2, ..., x N ) is the value of all components of . The conversion to binary variables can be performed by using the sign function sgn(), for example. Therefore, the Allgather function can be used to make Q processors share the first vector (x1, x2, ..., x N)'s values of all components. N ), although it is necessary to share values between processors, the second vector (y1, y2, ..., y N ) and tensor J (n) , it is not necessary to share values between processors. Sharing of data between processors can be achieved, for example, by using inter-processor communication or storing data in a shared memory.
[0255] Processor #j computes the problem item {z m |m=(j-1)L+1,(j-1)L+2,…,jL}. Then, processor #j calculates the value of the problem item {{z m |m=(j-1)L+1,(j-1)L+2,…,jL}, and change the variable {y m |m=(j-1)L+1,(j-1)L+2,…,jL} is updated.
[0256] As shown in the above equations, in the vector of the problem item (z1, z2, ..., z N ), the calculation of the tensor J(n) and the vector (x1, x2, ..., x N ) is the most computationally intensive process in the above algorithm and may become a bottleneck in improving the calculation speed. Therefore, in the installation of a PC cluster, the sum-of-products operation can be distributed to Q = N / L processors and executed in parallel, thereby shortening the calculation time.
[0257] Fig.16 An example of a multi-processor structure is schematically shown. Fig.16 For example, the multiple computing nodes correspond to multiple computing servers of the information processing system 100. Fig.16 The high-speed link is equivalent to, for example, the interconnection between computing servers formed by the cables 4 a - 4 c and the switch 5 of the information processing system 100 . Fig.16 The shared memory in is equivalent to shared memory 32. Fig.16 The processors of are, for example, equivalent to the processors 33A to 33D of each computing server. Fig.16 Although multiple computing nodes are shown in FIG. 1 , this does not prevent the use of a single computing node structure.
[0258] exist Fig.16 The data configured in each component and the data transmitted between the components are shown in FIG. In each processor, the variable x is calculated. i ,y i In addition, the variable x is transferred between the processor and the shared memory. iIn the shared memory of each computing node, for example, the first vector (x1, x2, ..., x N ), the second vector (y1, y2, ..., y N ) of L variables and tensor J (n) Then, in the high-speed link connecting the computing nodes, for example, the first vector (x1, x2, ..., x N ). When using the Allgather function, in order to update the variable y with each processor i , we need the first vector (x1, x2, ..., x N ) all elements.
[0259] in addition, Fig.16 The arrangement and transfer of data shown are merely examples, and there are no particular limitations on the method of arranging data, the method of transferring data, and the method of implementing parallelization in the PC cluster.
[0260] Alternatively, a GPU (Graphics Processing Unit) may be used to perform calculations of the analog branching algorithm.
[0261] Fig.17 An example of a configuration using a GPU is schematically shown. Fig.17 FIG. 4 shows multiple GPUs connected to each other via high-speed links. Each GPU is equipped with multiple cores that can access shared memory. Fig.17 In the structural example, multiple GPUs are connected via high-speed links to form a GPU cluster. Figure 1 In the case of each computing server, the high-speed link corresponds to the interconnection between the computing servers formed by the cables 4a to 4c and the switch 5. Fig.17 In the structural example, multiple GPUs are used, but when only one GPU is used, parallel calculations can also be performed. Fig.17 Each GPU can perform Fig.16 That is, the processor (processing circuit) of the information processing device (computing server) can be the core of the graphics processing unit (GPU).
[0262] In the GPU, the variable x i and i And the tensor J (n) is defined as a device variable. The GPU can calculate the variables y in parallel through the matrix-vector product function. i The tensor J required in the update (n) With the first vector (x1, x2, ..., x N). In addition, by repeatedly performing the matrix-vector product operation, the tensor-vector product can be obtained. In addition, for the first vector (x1, x2, ..., x N ) and the second vector (y1, y2, ..., y N ) can enable each thread to execute the i-th element (x i ,y i ) to realize parallel processing.
[0263] [Holistic approach for solving combinatorial optimization problems]
[0264] The following describes the overall process performed to solve a combinatorial optimization problem using a simulated branching algorithm.
[0265] Fig.18 The flowchart of FIG. 1 shows an example of the overall processing performed to solve a combinatorial optimization problem. Fig.18 The processing will be described.
[0266] First, the combinatorial optimization problem is formulated (step S201). Then, the formulated combinatorial optimization problem is transformed into an Ising problem (in the form of an Ising model) (step S202). Next, the solution to the Ising problem is calculated by an Ising machine (information processing device) (step S203). Then, the calculated solution is verified (step S204). For example, in step S204, it is confirmed whether the constraint conditions are satisfied. In addition, in step S204, it is also possible to refer to the value of the objective function to confirm whether the obtained solution is an optimal solution or an approximate solution close to the optimal solution.
[0267] Then, it is determined whether to perform recalculation based on at least one of the verification result or the number of calculations in step S204 (step S205). When it is determined that recalculation is to be performed (yes in step S205), the processing of steps S203 and S204 is performed again. On the other hand, when it is determined that recalculation is not to be performed (no in step S205), a solution is selected (step S206). For example, in step S206, the selection can be made based on at least one of the sufficiency of the constraints or the value of the objective function. In addition, if multiple solutions are not calculated, the processing of step S206 can also be skipped. Finally, the selected solution is transformed into a solution to the combinatorial optimization problem, and the solution to the combinatorial optimization problem is output (step S207).
[0268] By using the information processing device, information processing system, information processing method, storage medium and program described above, the solution of the combinatorial optimization problem can be calculated in a practical time. Thus, the solution of the combinatorial optimization problem becomes easier, which can promote social innovation and scientific and technological progress.
[0269] In addition, the present invention is not limited to the above-mentioned embodiments, and the constituent elements can be deformed and concretized in the implementation stage without departing from the scope of its main purpose. In addition, various inventions can be formed by appropriate combinations of multiple constituent elements disclosed in the above-mentioned embodiments. For example, several constituent elements can also be deleted from all the constituent elements shown in the embodiments. Furthermore, the constituent elements in different embodiments can also be appropriately combined.
[0270] Description of Reference Numerals
[0271] 1 Management Server
[0272] 2 Network
[0273] 3a, 3b, 3c computing servers
[0274] 4a, 4b, 4c cables
[0275] 5 Switch
[0276] 6 Client Terminal
[0277] 10 Processor
[0278] 11 Management Department
[0279] 12 Transformation Unit
[0280] 13. Control Unit
[0281] 14 Storage
[0282] 14A Question Data
[0283] 14B Calculation Data
[0284] 14C Management Program
[0285] 14D Transformation Procedure
[0286] 14E, 34C control program
[0287] 15, 31 Communication circuit
[0288] 16 Input Circuit
[0289] 17 Output Circuit
[0290] 18 Operating device
[0291] 19 Display device
[0292] 20 Bus
[0293] 32 Shared Memory
[0294] 33A, 33B, 33C, 33D processors
[0295] 34 Memory
[0296] 34A Calculation data
[0297] 34B Calculation Procedure
[0298] 35 Host Bus Adapter
Claims
1. An information processing device configured to repeatedly update a first vector having a first variable as an element and a second vector having a second variable corresponding to the first variable as an element, the information processing device comprising: a storage unit; and A processing circuit, the processing circuit is configured to perform the following processing: updating the first vector by weighting the corresponding second variable and adding it to the first variable; storing the updated first vector as a searched vector in the storage unit; and The first variable is weighted by a first coefficient that monotonically increases or decreases according to the number of updates and is added to the corresponding second variable, a problem item is calculated using a plurality of the first variables, the problem item is added to the second variable, the searched vector is read from the storage unit, a correction item including the inverse of the distance between the first vector to be updated and the searched vector is calculated, and the correction item is added to the second variable, thereby updating the second vector. The information processing device includes a plurality of the processing circuits. Each of the processing circuits is configured to read out the searched vector stored in the storage unit by the other processing circuits, Each of the processing circuits is configured to transmit the updated first vector to another of the processing circuits, and calculate the correction term using the first vector received from the other of the processing circuits instead of the searched vector.
2. The information processing device according to claim 1, wherein: The processing circuit is configured to calculate the reciprocal of the distance using each of the plurality of searched vectors, and to calculate the correction term by adding the plurality of reciprocals.
3. The information processing device according to claim 1, wherein: The plurality of processing circuits are divided into a plurality of groups, and the plurality of groups respectively execute update processing of different pairs of the first vector and the second vector.
4. The information processing device according to claim 1 or 2, wherein: The processing circuit is configured to store the updated second vector in the storage unit as a third vector.
5. The information processing device according to claim 4, wherein: The processing circuit is configured to read out the third vector updated in the same iteration as the searched vector from the storage unit, and calculate a value of an objective function based on the searched vector and the third vector.
6. The information processing device according to claim 5, wherein: The processing circuit is configured to determine whether to stop updating of the first vector and the second vector based on the value of the objective function.
7. The information processing device according to claim 6, wherein: The processing circuit is configured to select one of the searched vectors from the plurality of searched vectors stored in the storage unit based on the value of the objective function, transform the first variable of the positive value of the selected searched vector into a first value, and transform the first variable of the negative value of the selected searched vector into a second value smaller than the first value, thereby calculating a solution vector.
8. The information processing device according to claim 1 or 2, wherein: The problem term calculated by the processing circuit is based on an Ising model.
9. The information processing device according to claim 8, wherein: The problem terms calculated by the processing circuit include multi-body interactions.
10. An information processing system, configured to repeatedly update a first vector having a first variable as an element and a second vector having a second variable corresponding to the first variable as an element, The information processing system includes a storage device and a plurality of information processing devices. Each of the information processing devices is configured to perform the following processing: updating the first vector by weighting the corresponding second variable and adding it to the first variable; storing the updated first vector as a searched vector in the storage device; and The first variable is weighted by a first coefficient that monotonically increases or decreases according to the number of updates and is added to the corresponding second variable, a problem item is calculated using a plurality of the first variables, the problem item is added to the second variable, the searched vector is read from the storage device, a correction item including the inverse of the distance between the first vector to be updated and the searched vector is calculated, and the correction item is added to the second variable, thereby updating the second vector, Each of the information processing devices is configured to read out the searched vector stored in the storage unit by the other information processing devices, Each of the information processing devices is configured to transmit the updated first vector to another of the information processing devices, and calculate the correction term using the first vector received from the other of the information processing devices instead of the searched vector.
11. The information processing system according to claim 10, wherein: The plurality of information processing devices are divided into a plurality of groups, and the plurality of groups respectively execute update processing of different pairs of the first vector and the second vector.
12. An information processing method, using a storage unit and a plurality of processing circuits to repeatedly update a first vector having a first variable as an element and a second vector having a second variable corresponding to the first variable as an element, the information processing method comprising the following steps: The plurality of processing circuits weight the corresponding second variables and add the weighted second variables to the first variables to update the first vector; The plurality of processing circuits store the updated first vector as a searched vector in the storage unit; The plurality of processing circuits weight the first variables with first coefficients that monotonically increase or decrease according to the number of updates and add the weights to the corresponding second variables; The plurality of processing circuits calculate a problem term using a plurality of the first variables and add the problem term to the second variable; The plurality of processing circuits read the searched vectors from the storage unit; The plurality of processing circuits calculate a correction term including an inverse of a distance between the first vector of an update object and the searched vector; and The plurality of processing circuits add the correction term to the second variable, Each of the processing circuits is configured to read out the searched vector stored in the storage unit by the other processing circuits, Each of the processing circuits is configured to transmit the updated first vector to another of the processing circuits, and calculate the correction term using the first vector received from the other of the processing circuits instead of the searched vector.
13. An information processing method, using a storage device and a plurality of information processing devices to repeatedly update a first vector having a first variable as an element and a second vector having a second variable corresponding to the first variable as an element, the information processing method comprising the following steps: The plurality of information processing devices weight the corresponding second variables and add the weighted second variables to the first variables to update the first vector; The plurality of information processing devices store the updated first vector as a searched vector in the storage device; The plurality of information processing devices weight the first variables with a first coefficient that monotonically increases or decreases according to the number of updates and add the first coefficient to the corresponding second variable; The plurality of information processing devices calculate question items using the plurality of the first variables, and add the question items to the second variable; The plurality of information processing devices read the searched vectors from the storage device; The plurality of information processing devices calculate a correction term including a reciprocal of a distance between the first vector to be updated and the searched vector; and The plurality of information processing devices add the correction term to the second variable, Each of the information processing devices is configured to read out the searched vector stored in the storage unit by the other information processing devices, Each of the information processing devices is configured to transmit the updated first vector to another of the information processing devices, and calculate the correction term using the first vector received from the other of the information processing devices instead of the searched vector.
14. A non-transitory computer-readable storage medium storing a program for causing a computer, which is an information processing device configured to repeatedly update a first vector having a first variable as an element and a second vector having a second variable corresponding to the first variable as an element and having a storage unit and a plurality of processing circuits, to execute the following steps using the storage unit and the plurality of processing circuits: A step of weighting the corresponding second variable and adding it to the first variable to update the first vector; The step of storing the updated first vector as a searched vector in the storage unit; The step of weighting the first variable with a first coefficient that monotonically increases or decreases according to the number of updates and adding the first coefficient to the corresponding second variable; The step of calculating a problem term using a plurality of the first variables and adding the problem term to the second variable; The step of reading the searched vector from the storage unit; a step of calculating a correction term including the inverse of the distance between the first vector of the update object and the searched vector; as well as the step of adding the correction term to the second variable, Each of the processing circuits is configured to read out the searched vector stored in the storage unit by the other processing circuits, Each of the processing circuits is configured to transmit the updated first vector to another of the processing circuits, and calculate the correction term using the first vector received from the other of the processing circuits instead of the searched vector.
Citation Information
Patent Citations
Quantum calculation device and method
JP2017073106A
Feature conversion device, similar information search apparatus provided therewith, coding parameter generation method, and computer program
CN102693268A
Method for weighting multiple example studying features based on master space classifying criterion
CN104091038A