Parallel computing distribution program, parallel computing distribution system, and parallel computing distribution method
The parallel calculation distribution system optimizes memory-based computing by distributing calculations among PEs with partial LUTs, reducing storage needs and hardware costs while maintaining performance.
Patent Information
- Application Number
- JP2023105858
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2023-06-28
- Publication Date
- 2025-01-17
AI Technical Summary
In parallel computing systems, equipping each processing element (PE) with a large-scale look-up table (LUT) for memory-based computing increases hardware costs due to the need for extensive reference information storage.
A parallel calculation distribution system that allocates calculations to multiple PEs, where each PE stores and uses a partial range of reference information to obtain output data, reducing the amount of information stored locally.
This approach reduces the amount of reference information stored by each PE, thereby lowering hardware costs while maintaining efficient processing performance.
Smart Images

Figure 2025005622000001_ABST
Abstract
Description
[Technical field]
[0001] The present invention relates to parallel computing distribution technology. [Background technology]
[0002] In a parallel computing system including a plurality of processing elements (PEs), load balancing (LB) is often performed to distribute computing tasks evenly among all the PEs.
[0003] Regarding parallel computing systems, a PE including a Processor-In-Memory (PIM) cluster is known (see, for example, Patent Document 1). [Prior art documents] [Patent documents]
[0004] [Patent Document 1] US Patent Application Publication No. 2022 / 0326958 Summary of the Invention [Problem to be solved by the invention]
[0005] Memory-based computing is a technology that executes complex calculations in the entirety of scientific and technological calculations within memory. Memory-based computing reduces the amount of complex function processing by the CPU (Central Processing Unit) and eliminates slow data access, improving processing performance.
[0006] An example of memory-based computing is calculation using a Look-Up Table (LUT), which is implemented in memory and uses the input data as an address to store pre-calculated output data for each input data.
[0007] In parallel computing systems, the processing performance can be improved by installing an LUT in each PE as an in-memory calculation unit. The LUT used in memory-based computing is also suitable for hardware accelerators such as FPGAs (Field Programmable Gate Arrays), CGRAs (Coarse Grained Reconfigurable Arrays), and systolic arrays.
[0008] However, if a large-scale LUT is installed in each PE in order to efficiently execute function processing in a parallel computing system, the hardware cost increases.
[0009] It should be noted that this problem is not limited to parallel calculations using LUTs, but occurs in parallel calculations using various types of reference information used in memory-based computing.
[0010] In one aspect, the present invention aims to reduce the amount of reference information stored in each computing unit for memory-based computing in parallel computing performed by a plurality of computing units. [Means for solving the problem]
[0011] In one proposal, a plurality of calculation units perform parallel calculations to obtain output data from input data using reference information including output data associated with the input data.
[0012] The parallel computation distribution program causes the computer to execute a process of allocating, to each of the multiple computation units, a computation for obtaining output data from input data that belongs to a portion of a range of the input data.
[0013] Each of the calculation units stores a portion of the reference information including output data associated with the input data belonging to the portion of the range, and each of the calculation units uses the portion of the reference information to obtain output data associated with the input data belonging to the portion of the range from the input data belonging to the portion of the range. Effect of the Invention
[0014] According to one aspect, in parallel computation performed by a plurality of computing elements, the amount of reference information stored in each computing element for memory-based computing can be reduced. [Brief description of the drawings]
[0015] [Figure 1] FIG. 1 is a functional configuration diagram of a parallel computing distribution system according to an embodiment. [Diagram 2] FIG. 1 is a first hardware configuration diagram of a parallel computing system. [Diagram 3] FIG. 2 is a functional configuration diagram of a host computer. [Figure 4] This is a diagram showing the configuration of an FPGA. [Diagram 5] FIG. [Figure 6] FIG. 13 is a diagram showing an atom pair list. [Figure 7] FIG. 1 is a configuration diagram of a calculation circuit. [Figure 8] FIG. 13 is a diagram showing LUTs for groups G1 to G4. [Figure 9] 13 is a flowchart of a first LB process. [Figure 10] FIG. 2 is a second hardware configuration diagram of the parallel computing system. [Figure 11] FIG. 13 is a diagram illustrating the configuration of a calculation circuit having a LUT that includes overlapping sections. [Figure 12] FIG. 2 is a configuration diagram of a selection device. [Figure 13] FIG. 2 is a configuration diagram of a selection unit. [Figure 14] FIG. 13 illustrates an LUT including overlapping sections. [Figure 15] 13 is a flowchart of a second LB process. [Figure 16] FIG. 2 is a hardware configuration diagram of a first information processing device. [Figure 17] FIG. 11 is a hardware configuration diagram of a second information processing device. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0016] Hereinafter, the embodiments will be described in detail with reference to the drawings.
[0017] In a parallel computing system, the host computer performs load balancing processing, including load estimation and load balancing. The load balancing algorithms are broadly divided into static load balancing and dynamic load balancing. In static load balancing, the load on each PE is determined in advance and does not change throughout the computation process.
[0018] On the other hand, in dynamic LB, the load on each PE is estimated for each calculation period, and the load is redistributed during the calculation. Dynamic LB is a flexible algorithm suitable for scientific and technological calculations that use iterative calculations, such as molecular dynamics simulations, adaptive finite element method simulations, and weather simulations.
[0019] In scientific and technological calculations that use iterative calculations, complex function processing such as square roots and exponential functions occurs frequently. In reconfigurable architectures such as CGRAs and systolic arrays, each PE is often equipped with an LUT to efficiently execute these function processing.
[0020] However, since the storage capacity of the local memory of the PE is limited, the amount of LUT data that each PE can store is also limited. In addition, when distributing the load among PEs, it is important to dynamically change the load and consider the range of input data that occurs. If all PEs are equipped with LUTs for the entire range of input data, the hardware cost will increase.
[0021] Fig. 1 shows an example of a functional configuration of a parallel computing distribution system according to an embodiment. The parallel computing distribution system 101 in Fig. 1 includes an allocation unit 111 and calculation units 112-1 to 112-N (N is an integer of 2 or more).
[0022] The calculation units 112-1 to 112-N perform parallel calculations to obtain output data from input data, using reference information including output data associated with input data.
[0023] The allocation unit 111 allocates to each calculation unit 112-i (i=1 to N) a calculation for obtaining output data from input data that belongs to a part of the range of the input data.
[0024] Each calculation unit 112-i stores a part of the reference information including output data associated with the input data belonging to the part of the range. Then, each calculation unit 112-i uses the part of the reference information to obtain output data associated with the input data belonging to the part of the range from the input data belonging to the part of the range.
[0025] According to the parallel computing distribution system 101 in FIG. 1, in the parallel computing performed by the computing units 112-1 to 112-N, it is possible to reduce the amount of reference information stored in each computing unit 112-i for memory-based computing.
[0026] Fig. 2 shows a first hardware configuration example of a parallel computing system. A parallel computing system 201 in Fig. 2 corresponds to the parallel computing distribution system 101 in Fig. 1, and includes a host computer 211 and PEs 212-1 to 212-N. The host computer 211 and PEs 212-i (i = 1 to N) are hardware. Each PE 212-i corresponds to a computing unit 112-i in Fig. 1.
[0027] The parallel computing system 201 performs parallel computation such as scientific and technological computation using iterative computation. The scientific and technological computation is, for example, a molecular dynamics simulation, an adaptive finite element method simulation, or a meteorological simulation.
[0028] The host computer 211 is an information processing device (computer) and performs LB processing in parallel calculation. The LB processing is a process of estimating the calculation load of each of the PE212-1 to PE212-N in the parallel calculation and distributing the calculation tasks to the PE212-1 to PE212-N so that the calculation loads are equalized.
[0029] The PE212-1 to PE212-N perform parallel calculations using the LUT. The LUT corresponds to reference information including output data associated with input data. Each PE212-i stores a partial LUT corresponding to a part of the LUT. The partial LUT uses input data belonging to a part of the range of the input data as an address and stores output data calculated in advance for each input data.
[0030] Fig. 3 shows an example of a functional configuration of the host computer 211 of Fig. 2. The host computer 211 of Fig. 3 includes a control unit 311, a communication unit 312, and a storage unit 313. The control unit 311 corresponds to the allocation unit 111 of Fig. 1.
[0031] The communication unit 312 communicates with each PE 212-i. The control unit 311 performs LB processing. In the LB processing, the control unit 311 assigns, to each PE 212-i, a calculation for obtaining output data from input data that belongs to the range of the LUT stored in that PE 212-i.
[0032] Molecular dynamics simulation is used in research and development such as drug discovery and material discovery, and simulates the movement or interaction of atoms and molecules. In parallel calculation of molecular dynamics simulation, for example, a physical quantity between two points is calculated for each time step. The physical quantity between two points is, for example, the force acting between two atoms. In particular, calculation of non-bonding forces such as Coulomb force and van der Waals force accounts for the majority of calculations in molecular dynamics simulation.
[0033] In such molecular dynamics simulations, the calculation of non-bonding forces can be accelerated by using hardware circuits such as FPGAs and ASICs (Application Specific Integrated Circuits) as the PEs 212-i.
[0034] Moreover, by adopting a reconfigurable architecture such as a CGRA or a systolic array as the configuration of PE212-1 to PE212-N, the molecular dynamics simulation can be further accelerated. In the reconfigurable architecture, a reconfigurable matrix is formed by interconnecting PE212-i with a word-width data path.
[0035] Fig. 4 shows an example of the configuration of an FPGA including a pipeline for non-bonding force calculation in a molecular dynamics simulation. The FPGA 401 in Fig. 4 is used as the PE 212-i in Fig. 2, and calculates the non-bonding force f acting between the atom A1 and the atom A2 included in the atom pair.
[0036] The FPGA 401 includes squaring circuits (Sqr) 411-1 to squaring circuits 411-3, an addition circuit 412, an addition circuit 413, multiplication circuits 414 to 419, multiplication circuits 420-1 to 420-3, and calculation circuits 421 to 428. These components are hardware.
[0037] x, y, and z respectively represent the x, y, and z components of vector u starting from the position of atom A1 and ending at the position of atom A2. q(1) represents the charge of atom A1, and q(2) represents the particle species of atom A2. t(1) represents the type of atom A1, and t(2) represents the type of atom A2. fx, fy, and fz respectively represent the x, y, and z components of non-bonding force f. Non-bonding force f is expressed by the following equation.
[0038] f = u(φc + φv) = uφc + uφv (1) φc=((q(1)q(2)) / r 3 )gc(r) (2) r=(x2 +y 2 +z 2 ) 1 / 2 (3) gc(r) = erfc(αr) +(2αr / (π) 1 / 2 )exp(-α 2 r 2 ) (4) φv=(ε(1,2) / r 2 )× (12(σ(1,2) / r) 12 -6(σ(1,2) / r) 6 ) (5) ε(1,2)=(ε(1,1)ε(2,2)) 1 / 2 (6) σ(1,2)=(1 / 2)(σ(1,1)+σ(2,2)) (7)
[0039] uφc represents the Coulomb force acting between atoms A1 and A2, and uφv represents the van der Waals force acting between atoms A1 and A2. r represents the distance between atoms A1 and A2. α is a parameter of the Ewald method. erfc() represents the complementary error function, and exp() represents the natural exponential function.
[0040] ε(1,2) is a parameter between different particles that represents the depth of the potential energy between particles of the Lennard-Jones potential. ε(1,1) represents the depth of the potential energy between homogeneous particles of type t(1), and ε(2,2) represents the depth of the potential energy between homogeneous particles of type t(2).
[0041] σ(1,2) is a parameter between different particles that represents the distance at which the potential energy between particles becomes 0. σ(1,1) represents the distance at which the potential energy between homogeneous particles of type t(1) becomes 0, and σ(2,2) represents the distance at which the potential energy between homogeneous particles of type t(2) becomes 0.
[0042] The FPGA 401 receives atom pair data including x, y, z, q(1), q(2), t(1), and t(2) of each atom pair from the host computer 211, calculates fx, fy, and fz, and sends them to the host computer 211.
[0043] The squaring circuit 411-1 squares x to obtain 2 The square circuit 411-2 calculates y by squaring it, and outputs the result to the adder circuit 412. 2 The square circuit 411-3 calculates z by squaring it, and outputs it to the adder circuit 412. 2 and outputs it to the adding circuit 412.
[0044] The adder circuit 412 calculates x 2 , y 2 , and z 2 By adding 2 and outputs it to the calculation circuit 424 and the calculation circuit 427.
[0045] The calculation circuit 424 calculates r 2 From 1 / r 2 The calculation circuit 425 calculates 1 / r 2 The calculation circuit 426 calculates 1 / r from 1 / r and outputs the result to the calculation circuit 426 and the multiplication circuit 417. 3 and outputs it to the multiplication circuit 415.
[0046] The multiplication circuit 414 multiplies q(1) and q(2) to obtain q(1)q(2), and outputs the result to the multiplication circuit 415. The multiplication circuit 415 multiplies q(1)q(2) and 1 / r 3 Multiplying by (q(1)q(2)) / r 3 and outputs it to the multiplication circuit 416.
[0047] The calculation circuit 427 calculates r 2 The multiplication circuit 416 calculates gc(r) from (q(1)q(2)) / r 3 and gc(r) to obtain φc, which is output to the adder circuit 413.
[0048] The calculation circuit 421 calculates ε(1,1) and σ(1,1) from t(1) and outputs them to the calculation circuit 423. The calculation circuit 422 calculates ε(2,2) and σ(2,2) from t(2) and outputs them to the calculation circuit 423.
[0049] The calculation circuit 423 calculates σ(1,2) from σ(1,1) and σ(2,2) and outputs the result to the multiplication circuit 417. Furthermore, the calculation circuit 423 calculates ε(1,2) from ε(1,1) and ε(2,2) and outputs the result to the multiplication circuit 418.
[0050] The multiplication circuit 417 multiplies 1 / r by σ(1,2) to obtain σ(1,2) / r, and outputs the result to the calculation circuit 428. 2 Multiplying ε(1,2) by ε(1,2) / r 2 and outputs it to the multiplication circuit 419.
[0051] The calculation circuit 428 calculates σ(1,2) / r to 12(σ(1,2) / r) 12 -6(σ(1,2) / r) 6 The multiplication circuit 419 calculates ε(1,2) / r 2 and 12(σ(1,2) / r) 12 -6(σ(1,2) / r) 6 The addition circuit 413 multiplies φc and φv to obtain φv, and outputs the result to the addition circuit 413. The addition circuit 413 adds φc and φv to obtain φc+φv, and outputs the result to the multiplication circuits 420-1 to 420-3.
[0052] The multiplication circuit 420-1 multiplies x by φc+φv to obtain x(φc+φv), and outputs x(φc+φv) as fx to the host computer 211. The multiplication circuit 420-2 multiplies y by φc+φv to obtain y(φc+φv), and outputs y(φc+φv) as fy to the host computer 211. The multiplication circuit 420-3 multiplies z by φc+φv to obtain z(φc+φv), and outputs z(φc+φv) as fz to the host computer 211.
[0053] The calculation circuits 424 to 428 calculate the output F(p) from the input p, for example, by performing interpolation using the approximation function F(p). When Newton interpolation is used as an example, F(p) is represented by the following equation.
[0054] F(p)=Σa(i,k)F(k,p) (8) F(k,p)=Π(p - p(h)) (9)
[0055] F(p) is a polynomial of p. The summation symbol Σ represents the sum with respect to k = 0 to m (m is an integer greater than or equal to 1). The product symbol Π represents the product with respect to h = 0 to k - 1. However, F(0,p)=1.
[0056] In the case of the calculation circuit 424, p = r 2 and F(p) represents 1 / r 2 = 1 / p. In the case of the calculation circuit 425, p = 1 / r 2 and F(p) represents 1 / r = p 1 / 2 In the case of the calculation circuit 426, p = 1 / r and F(p) represents 1 / r 3 = p 3 In the case of the calculation circuit 427, p = r
[0057] and F(p) represents gc(r)=erfc(α(p) 2 )+(2α(p) 1 / 2 ) / (π) 1 / 2 )exp(-α 1 / 2 p). In the case of the calculation circuit 428, p = σ(1,2) / r and F(p) represents 12(σ(1,2) / r) 2 - 6(σ(1,2) / r) 12 = 12p 6 - 6p 12 In the case of the calculation circuit 428, p = σ(1,2) / r and F(p) represents 12(σ(1,2) / r) 6 = 12p - 6p
[0058] p(h) represents the h-th (h is an integer greater than or equal to 0) discrete value when the discrete values of the variable p are arranged in ascending order. a(i,k) represents the coefficient of F(k,p) for p belonging to the interval p(i) ≦ p < p(i + 1). a(i,k) is calculated using a LUT.
[0059] Fig. 5 shows an example of a LUT that stores the coefficients a(i,k) of equation (8). In this example, m = 3. The LUT in Fig. 5 uses p(i) as input data and stores a(i,0) to a(i,3) calculated in advance for each p(i) as output data.
[0060] In the case of the calculation circuit 424 and the calculation circuit 427, p(i) is (r(i)) 2 is used. r(i) is the i-th discrete value of the distance r. In the case of the calculation circuit 425, 1 / (r(i)) is used as p(i). 2 In the case of the calculation circuit 426, 1 / r(i) is used as p(i). In the case of the calculation circuit 428, σ(1,2) / r(i) is used as p(i).
[0061] The control unit 311 of the host computer 211 divides the space to be simulated into a plurality of unit spaces, and calculates r 2 Calculate.
[0062] r 2 =x 2 +y 2 +z 2 (10)
[0063] Next, the control unit 311 uses the cutoff distance R to <r 2 <R 2 r belongs to the interval 2 Next, the control unit 311 classifies each of the extracted atom pairs into a group corresponding to the distance r of the atom pair among a plurality of groups corresponding to different ranges of distance r. Then, the control unit 311 generates an atom pair list indicating the atom pairs belonging to each of the plurality of groups, and stores the list in the storage unit 313. The distance r is an example of reference data corresponding to the input data.
[0064] An example of the atom pair list is shown in Fig. 6. The atom pair list in Fig. 6 includes identification information indicating atom pairs classified into each of groups G1 to G4.
[0065] The distance r between atom pairs included in group G1 belongs to the range 0 < r ≦ R / 4, and the distance r between atom pairs included in group G2 belongs to the range R / 4 < r ≦ R / 2. The distance r between atom pairs included in group G3 belongs to the range R / 2 < r ≦ 3R / 4, and the distance r between atom pairs included in group G4 belongs to the range 3R / 4 < r ≦ R. The r ranges for each group are examples of the ranges to which the reference data belongs.
[0066] Group G1 contains n1 atom pairs, and group G2 contains n2 atom pairs. Group G3 contains n3 atom pairs, and group G4 contains n4 atom pairs.
[0067] The distance r for each atom pair is an example of specific reference data corresponding to specific input data. The process of classifying each atom pair into one of a plurality of groups is an example of the process of obtaining a specific group corresponding to a specific range to which the specific reference data belongs.
[0068] FIG. 7 shows a configuration example of a calculation circuit used as the calculation circuits 424 to 428 in FIG. 4. The calculation circuit 701 in FIG. 7 includes a storage unit 711 and an interpolation unit 712. The storage unit 711 and the interpolation unit 712 are hardware.
[0069] The storage unit 711 is, for example, a RAM (Random Access Memory), and stores a LUT 721 for any one of the groups included in the atom pair list. The LUT 721 stores a(i,0) to a(i,m) calculated in advance for each p(i) as output data, using p(i) belonging to a predetermined range as input data.
[0070] As p(i), a discrete value calculated from r(i) belonging to the range of any one of the groups is used. Therefore, the predetermined range to which p(i) belongs is determined by the minimum value and the maximum value of r(i) belonging to the range of that group.
[0071] LUT721 corresponds to a partial LUT, and the predetermined interval to which p(i) belongs corresponds to a partial range within the range of the input data. The predetermined intervals for each of the plurality of groups are an example of a plurality of ranges obtained by dividing the range of the input data, and each predetermined interval corresponds to each of the plurality of ranges. The LUT721 for each of the plurality of groups is an example of a plurality of parts obtained by dividing the reference information, and each LUT721 corresponds to each part of the reference information.
[0072] FIG. 8 shows an example of the LUT721 for each of groups G1 to G4 in FIG. 6. The LUT801-1 for group G1 includes a(i,0) to a(i,3) for p(i) obtained from r(i) belonging to the interval 0 < r ≦ R / 4. The LUT801-2 for group G2 includes a(i,0) to a(i,3) for p(i) obtained from r(i) belonging to the interval R / 4 < r ≦ R / 2.
[0073] The LUT801-3 for group G3 includes a(i,0) to a(i,3) for p(i) obtained from r(i) belonging to the interval R / 2 < r ≦ 3R / 4. The LUT801-4 for group G4 includes a(i,0) to a(i,3) for p(i) obtained from r(i) belonging to the interval 3R / 4 < r ≦ R.
[0074] When the value of p input as the input data belongs to the interval p(i) ≦ p < p(i + 1), the storage unit 711 outputs a(i,0) to a(i,m) associated with p(i) in the LUT721 as the output data.
[0075] The interpolation unit 712 calculates the value of F(p) by performing interpolation according to Equation (8) using the input value of p and a(i,0) to a(i,m) output from the storage unit 711. Then, the interpolation unit 712 outputs the calculated value of F(p) to the subsequent circuit.
[0076] The control unit 311 of the host computer 211 classifies each PE 212-i into one of a plurality of groups. For example, the control unit 311 determines the number of PE 212-i belonging to each group based on the number of atom pairs belonging to the group, and classifies the determined number of PE 212-i into the group. The number of atom pairs belonging to each group is equal to the number of r's belonging to the interval of the group.
[0077] By determining the number of PEs 212-i that belong to each group based on the number of atom pairs that belong to that group, the calculation loads of the PEs 212-1 to PE212-N are equalized.
[0078] The number of atom pairs belonging to each group is an example of the number of reference data belonging to a specific range, and the number of PEs 212-i belonging to each group is an example of the number of calculation units belonging to a specific group.
[0079] For example, when the atom pair list of FIG. 6 is generated, the control unit 311 uses n1 to n4 to calculate the number of PEs 212-i belonging to each group according to the following formula.
[0080] N1 = N × (n1 / (n1 + n2 + n3 + n4)) (11) N2 = N × (n2 / (n1 + n2 + n3 + n4)) (12) N3 = N × (n3 / (n1 + n2 + n3 + n4)) (13) N4 = N × (n4 / (n1 + n2 + n3 + n4)) (14)
[0081] N1 represents the number of PEs 212-i that belong to group G1, N2 represents the number of PEs 212-i that belong to group G2, N3 represents the number of PEs 212-i that belong to group G3, and N4 represents the number of PEs 212-i that belong to group G4.
[0082] The control unit 311 writes a(i,0) to a(i,m) for p(i) of the group to which the PE212-i belongs into each of the LUTs 721 of the calculation circuits 424 to 428 of each PE212-i.
[0083] For example, each LUT801-j (j = 1 to 4) in FIG. 8 includes only a(i,0) to a(i,3) for p(i) obtained from r(i) belonging to a quarter interval of the interval of 0 < r ≤ R. Therefore, the amount of information of each LUT801-j is about 1 / 4 of the amount of information of the LUT in FIG. 5.
[0084] As described above, according to the parallel computing system 201 in FIG. 2, the amount of information of the LUTs stored in each PE212-i for memory-based computing can be reduced.
[0085] The control unit 311 assigns the calculation for each atomic pair belonging to each group to the PE212-i belonging to the same group. Then, the control unit 311 outputs the atomic pair data including x, y, z, q(1), q(2), t(1), and t(2) of the atomic pair to the assigned PE212-i.
[0086] By classifying each atomic pair into a group corresponding to the interval to which the distance r of the atomic pair belongs, it is possible to easily identify the PE212-i including the LUT721 corresponding to the interval to which r belongs.
[0087] In the case of molecular dynamics simulation, since the position of each atom is updated in one iteration, in subsequent iterations, the distance r between each atomic pair changes, and it may not fall within the interval of r of the original group. In this case, the number of atomic pairs belonging to each group changes.
[0088] However, since the number of PEs 212-i belonging to each group does not change, the calculations assigned to the PEs 212-i of a particular group may increase during multiple iterations, causing an imbalance in the calculation loads of the PEs 212-1 to PE212-N. Therefore, the control unit 311 estimates the calculation loads of the PEs 212-1 to PE212-N at regular intervals, and changes the number of PEs 212-i belonging to each group based on the estimation result.
[0089] FIG. 9 is a flowchart showing an example of the first LB processing performed by the host computer 211 of FIG.
[0090] First, the control unit 311 sets 0 to a control variable C indicating a time step of the molecular dynamics simulation (step 901). Then, the control unit 311 selects one unit space from among the plurality of unit spaces, selects one atom pair in the selected unit space, and calculates r 2 is calculated using equation (10) (step 902).
[0091] Next, the control unit 311 2 R 2 (step 903). 2 <R 2 If so (step 903, YES), the control unit 311 classifies the atom pair into a group corresponding to the interval to which r belongs, and registers the identification information of the atom pair into the corresponding group in the atom pair list (step 904).
[0092] Next, the control unit 311 checks whether or not all atom pairs in the unit space have been selected (step 905). 2 ≧R 2 If so (step 903, NO), or if an unselected atom pair remains (step 905, NO), the control unit 311 selects the next atom pair and repeats the processes from step 902 onwards.
[0093] When all atom pairs are selected (step 905, YES), the control unit 311 checks whether all unit spaces have been selected (step 906). If there are unselected unit spaces remaining (step 906, NO), the control unit 311 selects the next unit space and repeats the processing from step 902 onwards.
[0094] When all unit spaces are selected (step 906, YES), the control unit 311 checks the value of C (step 907). If C = 0 (step 907, YES), the control unit 311 determines the number of atom pairs belonging to each group in the atom pair list (step 908). Thereby, the computational load for each group is estimated. Then, the control unit 311 determines the number of PE212-i belonging to that group based on the number of atom pairs belonging to each group (step 909).
[0095] Next, the control unit 311 classifies the determined number of PE212-i for each group into that group (step 910). Then, the control unit 311 writes a(i,0) to a(i,m) for p(i) of the group to which the PE212-i belongs to the LUT721 of each of the calculation circuits 424 to 428 of each PE212-i via the communication unit 312.
[0096] Next, the control unit 311 assigns the calculation for each atom pair in the atom pair list to any one of the PE212-i belonging to the same group as the atom pair (step 911). Then, the control unit 311 transmits the atom pair data of each atom pair to the assigned PE212-i via the communication unit 312 and receives fx, fy, and fz from that PE212-i.
[0097] Next, the control unit 311 increments C by 1 (step 912) and compares C with a predetermined value T (step 913). If C < T (step 913, NO), the control unit 311 repeats the processing from step 902 onwards. If C > 0 (step 907, NO), the control unit 311 performs the processing from step 911 onwards.
[0098] If C=T (YES at step 913), the control unit 311 repeats the processes from step 901 onward. Therefore, the processes from step 908 to step 910 are performed every T time steps, and the number of PEs 212-i belonging to each group is changed. This makes it possible to correct the imbalance in the calculation loads of the PEs 212-1 to PE 212-N.
[0099] In order to correct the imbalance in the calculation load, it is also effective to set the r intervals of each of the multiple groups so that two adjacent intervals among the r intervals of each of the multiple groups overlap with each other. In this case, the LUTs of the two groups corresponding to each of the two adjacent intervals also include intervals that overlap with each other.
[0100] Fig. 10 shows a second hardware configuration example of a parallel computing system using a LUT including overlapping sections. A parallel computing system 1001 in Fig. 10 corresponds to the parallel computing distribution system 101 in Fig. 1, and includes a host computer 1011, a selection device 1012, and PEs 1013-1 to PEs 1013-N. The host computer 1011, the selection device 1012, and PEs 1013-i (i = 1 to N) are hardware. Each PE 1013-i corresponds to a calculation unit 112-i in Fig. 1.
[0101] The host computer 1011 has a configuration similar to that of the host computer 211 in FIG. 3, and the PE 1013-i has a configuration similar to that of the FPGA 401 in FIG. 4, for example.
[0102] The control unit 311 of the host computer 1011 divides the space to be simulated into a plurality of unit spaces, and calculates r 2 Next, the control unit 311 calculates 0 <r 2 <R 2 r belongs to the interval 2 The atom pairs having the distance r are extracted, and the extracted atom pairs are classified into a plurality of groups corresponding to different ranges of the distance r. Among the ranges of r in each of the plurality of groups, two adjacent ranges overlap each other.
[0103] FIG. 11 shows a configuration example of a calculation circuit having a LUT including overlapping intervals. The calculation circuit 1101 in FIG. 11 is used as the calculation circuits 424 to 428 of each PE1013-i, and includes a reception unit 1111, a storage unit 1112, and an interpolation unit 1113. The reception unit 1111, the storage unit 1112, and the interpolation unit 1113 are hardware.
[0104] The storage unit 1112 is, for example, a RAM, and stores the LUT 1121 for any group. The LUT 1121 uses p(i) belonging to a predetermined interval as input data, and stores a(i,0) to a(i,m) calculated in advance for each p(i) as output data.
[0105] When the value of p input from the reception unit 1111 belongs to the interval of p(i) ≦ p < p(i + 1), the storage unit 1112 outputs a(i,0) to a(i,m) associated with p(i) in the LUT 1121 as output data.
[0106] The interpolation unit 1113 calculates the value of F(p) by performing interpolation according to Equation (8) using the input value of p and a(i,0) to a(i,m) output from the storage unit 1112. Then, the interpolation unit 1113 outputs the calculated value of F(p) to a subsequent circuit.
[0107] The interpolation unit 1113 outputs a busy signal having a logical value of either "1" or "0" to the reception unit 1111 and the selection device 1012. "1" indicates in use, and "0" indicates an idle state. The interpolation unit 1113 outputs a busy signal indicating "1" while calculating F(p).
[0108] When the busy signal indicates "0", the reception unit 1111 receives the value of p input as input data and outputs it to the storage unit 1112. When the busy signal indicates "1", the reception unit 1111 does not receive the input value of p.
[0109] The control unit 311 of the host computer 1011 assigns the calculation for each atom pair to the PE 1013-i of the group corresponding to the interval to which the distance r of the atom pair belongs. If the distance r belongs to only one group's interval, the control unit 311 assigns the calculation for that atom pair to the PE 1013-i of that group. If the distance r belongs to overlapping intervals of two groups, the control unit 311 assigns the calculation for that atom pair to the PE 1013-i of those two groups.
[0110] The process of allocating calculations to the two groups of PEs 1013-i is an example of a process of determining two groups corresponding to two ranges based on specific reference data corresponding to specific input data belonging to overlapping ranges.
[0111] Then, the control unit 311 outputs the group information and atom pair data of the atom pair to the selection device 1012. The group information of the atom pair includes identification information of the group to which the calculation for the atom pair is assigned, and the atom pair data includes x, y, z, q(1), q(2), t(1), and t(2).
[0112] Fig. 12 shows an example of the configuration of the selection device 1012 in Fig. 10. The selection device 1012 in Fig. 12 includes a control unit 1211 and selection units 1212-1 to 1212-(J-1) (J is an integer equal to or greater than 2). J represents the number of groups. The control unit 1211 and the selection units 1212-j (j=1 to J-1) are hardware.
[0113] Among groups G1 to GJ, the section of r in group Gj and the section of r in group G(j+1) overlap with each other. The LUT 1121 stored in the PE 1013-i of group Gj includes an overlapping section of p(i) corresponding to the overlapping section of r. In addition, the LUT 1121 stored in the PE 1013-i of group G(j+1) includes the same overlapping section of p(i) as the LUT 1121 of group Gj.
[0114] The selection unit 1212-j is provided corresponding to the group Gj and the group G(j+1). For example, the selection unit 1212-1 is provided corresponding to the group G1 and the group G2, and the selection unit 1212-2 is provided corresponding to the group G2 and the group G3.
[0115] When a calculation for an atom pair is assigned only to a group Gj (j=1 to J-1), the control unit 1211 outputs the atom pair data of the atom pair to the selection unit 1212-j corresponding to the group Gj. Then, the selection unit 1212-j selects any one of the PEs 1013-i belonging to the group Gj, and outputs the atom pair data to the selected PE 1013-i.
[0116] When a calculation for an atom pair is assigned only to group GJ, the control unit 1211 outputs the atom pair data of the atom pair to the selection unit 1212-(J-1) corresponding to group G(J-1). Then, the selection unit 1212-(J-1) selects any PE 1013-i belonging to group GJ, and outputs the atom pair data to the selected PE 1013-i.
[0117] When a calculation for an atom pair is assigned to group Gj and group G(j+1), the control unit 1211 outputs the atom pair data of the atom pair to the selection unit 1212-j corresponding to group Gj and group G(j+1). Then, the selection unit 1212-j selects any PE 1013-i belonging to group Gj or group G(j+1), and outputs the atom pair data to the selected PE 1013-i. Group Gj and group G(j+1) are an example of two groups corresponding to two ranges.
[0118] The selection device 1012 receives fx, fy, and fz from the selected PE 1013 - i , and transmits the received fx, fy, and fz to the host computer 1011 .
[0119] Fig. 13 shows an example of the configuration of the selection unit 1212-j in Fig. 12. The selection unit 1212-j in Fig. 13 includes a generation circuit 1311, a selection circuit 1312, an AND circuit 1313-1, and an AND circuit 1313-2. The selection unit 1212-j further includes OR circuits 1314-1 to 1314-Na (Na is an integer equal to or greater than 1) and OR circuits 1315-1 to 1315-Nb (Nb is an integer equal to or greater than 1). These components are hardware.
[0120] Na represents the number of PEs 1013-i that belong to group Gj, and Nb represents the number of PEs 1013-i that belong to group G(j+1).
[0121] A signal B(j,s,1) input to an OR circuit 1314-s (s=1 to Na) represents a busy signal output from the calculation circuit 424 of the s-th PE 1013-i belonging to the group Gj. A signal B(j,s,2) represents a busy signal output from the calculation circuit 425 of the s-th PE 1013-i belonging to the group Gj.
[0122] Signal B(j,s,3) represents a busy signal output from the calculation circuit 426 of the s-th PE 1013-i belonging to group Gj. Signal B(j,s,4) represents a busy signal output from the calculation circuit 427 of the s-th PE 1013-i belonging to group Gj. Signal B(j,s,5) represents a busy signal output from the calculation circuit 428 of the s-th PE 1013-i belonging to group Gj.
[0123] The OR circuit 1314-s outputs a signal indicating the logical sum of the signals B(j,s,1) to B(j,s,5) to the AND circuit 1313-1. When the output signal of the OR circuit 1314-s indicates "1", one or more of the calculation circuits 424 to 428 of the s-th PE 1013-i belonging to the group Gj are in use. Therefore, the PE 1013-i is in a busy state.
[0124] The AND circuit 1313-1 outputs to the generation circuit 1311 a signal indicating the logical AND of the output signals of the OR circuits 1314-1 to 1314-Na.
[0125] When the output signal of the AND circuit 1313-1 indicates "1", all PEs 1013-i belonging to the group Gj are busy. When the output signal of the AND circuit 1313-1 indicates "0", one or more PEs 1013-i belonging to the group Gj are idle. Therefore, the output signal of the AND circuit 1313-1 represents the load of one or more PEs 1013-i belonging to the group Gj.
[0126] A signal B(j+1,s,1) input to an OR circuit 1315-s (s=1 to Nb) represents a busy signal output from the calculation circuit 424 of the s-th PE 1013-i belonging to group G(j+1). A signal B(j+1,s,2) represents a busy signal output from the calculation circuit 425 of the s-th PE 1013-i belonging to group G(j+1).
[0127] Signal B(j+1,s,3) represents a busy signal output from the calculation circuit 426 of the s-th PE 1013-i belonging to group G(j+1). Signal B(j+1,s,4) represents a busy signal output from the calculation circuit 427 of the s-th PE 1013-i belonging to group G(j+1). Signal B(j+1,s,5) represents a busy signal output from the calculation circuit 428 of the s-th PE 1013-i belonging to group G(j+1).
[0128] The OR circuit 1315-s outputs a signal indicating the logical sum of signals B(j+1,s,1) to B(j+1,s,5) to the AND circuit 1313-2. When the output signal of the OR circuit 1315-s indicates "1", one or more of the calculation circuits 424 to 428 of the s-th PE 1013-i belonging to the group G(j+1) are in use. Therefore, the PE 1013-i is in a busy state.
[0129] The AND circuit 1313-2 outputs to the generation circuit 1311 a signal indicating the logical AND of the output signals of the OR circuits 1315-1 to 1315-Nb.
[0130] When the output signal of the AND circuit 1313-2 indicates "1", all PEs 1013-i belonging to group G(j+1) are busy. When the output signal of the AND circuit 1313-2 indicates "0", one or more PEs 1013-i belonging to group G(j+1) are idle. Therefore, the output signal of the AND circuit 1313-2 represents the load of one or more PEs 1013-i belonging to group G(j+1).
[0131] The generation circuit 1311 generates a selection signal based on the output signals of the AND circuit 1313-1 and the AND circuit 1313-2, and outputs the selection signal to the selection circuit 1312. The selection signal has a value of "0", "1", or "2". "0" indicates group Gj, and "1" indicates group G(j+1). "2" indicates standby.
[0132] When the output signal of the AND circuit 1313-1 indicates "0" and the output signal of the AND circuit 1313-2 indicates "1", the generation circuit 1311 generates a selection signal indicating "0".
[0133] When the output signal of the AND circuit 1313-1 indicates "1" and the output signal of the AND circuit 1313-2 indicates "0", the generation circuit 1311 generates a selection signal indicating "1".
[0134] When the output signal of the AND circuit 1313-1 indicates "0" and the output signal of the AND circuit 1313-2 indicates "0", the generation circuit 1311 generates a selection signal indicating a predetermined value of "0" or "1". The predetermined value may be, for example, "0".
[0135] When the output signal of the AND circuit 1313-1 indicates "1" and the output signal of the AND circuit 1313-2 indicates "1", the generation circuit 1311 generates a selection signal indicating "2".
[0136] When j=1 to J-1 and the calculation for the atom pair is assigned only to the group Gj, the selection circuit 1312 selects any PE 1013-i that is not busy among the PEs 1013-i that belong to the group Gj. Then, the selection circuit 1312 outputs the atom pair data to the selected PE 1013-i. When all the PEs 1013-i that belong to the group Gj are busy, the selection circuit 1312 delays the output of the atom pair data until any of the PEs 1013-i becomes free.
[0137] When j=J-1 and the calculation for the atom pair is assigned only to group GJ, the selection circuit 1312 selects any PE 1013-i that is not busy among the PEs 1013-i that belong to group G(j+1). Then, the selection circuit 1312 outputs the atom pair data to the selected PE 1013-i. When all the PEs 1013-i that belong to group G(j+1) are busy, the selection circuit 1312 delays the output of the atom pair data until any of the PEs 1013-i becomes free.
[0138] When j=1 to J-1 and the calculation for the atom pair is assigned to the group Gj and the group G(j+1), the selection circuit 1312 selects the PE 1013-i in accordance with the selection signal.
[0139] When the selection signal indicates "0", the selection circuit 1312 selects one of the PEs 1013-i that is not in a busy state among the PEs 1013-i that belong to the group Gj, and outputs the atom pair data to the selected PE 1013-i.
[0140] When the selection signal indicates “1”, the selection circuit 1312 selects one of the PEs 1013-i belonging to the group G(j+1) that is not in a busy state, and outputs the atom pair data to the selected PE 1013-i.
[0141] When the selection signal indicates "2", the selection circuit 1312 delays the output of the atomic pair data until any of the PEs 1013-i belonging to group Gj or group G(j + 1) becomes available.
[0142] In this way, by generating a selection signal based on the output signals of the AND circuit 1313-1 and the AND circuit 1313-2, an available PE 1013-i can be automatically selected as the destination for calculation.
[0143] FIG. 14 shows an example of the LUT 1121 including overlapping intervals. The LUT 1401-1 for group G1 includes a(i,0) to a(i,3) for p(i) obtained from r(i) belonging to the interval 0 < r ≦ 0.4R. The LUT 1401-2 for group G2 includes a(i,0) to a(i,3) for p(i) obtained from r(i) belonging to the interval 0.2R < r ≦ 0.6R.
[0144] The LUT 1401-3 for group G3 includes a(i,0) to a(i,3) for p(i) obtained from r(i) belonging to the interval 0.4R < r ≦ 0.8R. The LUT 1401-4 for group G4 includes a(i,0) to a(i,3) for p(i) obtained from r(i) belonging to the interval 0.6R < r ≦ R.
[0145] In this case, between the LUT 1401-1 and the LUT 1401-2, the interval of p(i) corresponding to 0.2R < r ≦ 0.4R overlaps. Between the LUT 1401-2 and the LUT 1401-3, the interval of p(i) corresponding to 0.4R < r ≦ 0.6R overlaps. Between the LUT 1401-3 and the LUT 1401-4, the interval of p(i) corresponding to 0.6R < r ≦ 0.8R overlaps.
[0146] Each LUT 1401-j (j = 1 to 4) includes only a(i,0) to a(i,3) for p(i) obtained from r(i) belonging to 2 / 5 of the interval 0 < r ≦ R. Therefore, the amount of information of each LUT 1401-j is about 2 / 5 of the amount of information of the LUT in FIG. 5.
[0147] Thus, according to the parallel computing system 1001 in FIG. 10, the amount of information of the LUTs stored by each PE1013-i for memory-based computing can be reduced.
[0148] Also, among the r intervals of each of the multiple groups, by overlapping two adjacent intervals, the assignment destination of the calculation for the atomic pairs having r belonging to the overlapping interval can be flexibly changed, and the calculation load is redistributed for each iteration. Therefore, the imbalance in the calculation loads of PE1013-1 to PE1013-N can be corrected.
[0149] As an example, assume that group G1 includes three PE1013-i and group G2 includes two PE1013-i. After multiple iterations, when the number of atomic pairs having r belonging to the interval of 0.2R < r ≤ 0.6R increases, the two PE1013-i in group G2 may become busy, and one of the PE1013-i in group G1 may become idle.
[0150] In this case, the calculation for the atomic pairs having r belonging to the overlapping interval of 0.2R < r ≤ 0.4R is assigned to the idle PE1013-i in group G1 instead of group G2. Therefore, the imbalance in the calculation load between the groups is corrected, and the reusability of the PE1013-i is improved.
[0151] FIG. 15 is a flowchart showing an example of the second LB process performed by the host computer 1011 in FIG. 10.
[0152] First, the control unit 311 classifies each of PE1013-1 to PE1013-N into one of the multiple groups (step 1501). Then, the control unit 311 writes a(i,0) to a(i,m) for p(i) of the group to which the PE1013-i belongs into the LUT1121 of each of the calculation circuits 424 to 428 of the PE1013-i via the communication unit 312.
[0153] Next, the control unit 311 selects one unit space from the plurality of unit spaces, selects one atom pair in the selected unit space, and calculates r 2 is calculated using equation (10) (step 1502).
[0154] Next, the control unit 311 2 R 2 (Step 1503). 2 <R 2 If so (step 1503, YES), the control unit 311 assigns the calculation for the atom pair to the group corresponding to the interval to which r belongs (step 1504).
[0155] If the distance r belongs to only one group's interval, the control unit 311 assigns the calculation for the atom pair to that group. If the distance r belongs to the overlapping intervals of two groups, the control unit 311 assigns the calculation for the atom pair to those two groups.
[0156] Next, the control unit 311 checks whether or not all atom pairs in the unit space have been selected (step 1505). 2 ≧R 2 If so (step 1503, NO), or if an unselected atom pair remains (step 1505, NO), the control unit 311 selects the next atom pair and repeats the processes from step 1502 onwards.
[0157] When all atom pairs have been selected (step 1505, YES), the control unit 311 checks whether all unit spaces have been selected (step 1506). When an unselected unit space remains (step 1506, NO), the control unit 311 selects the next unit space and repeats the processes from step 1502 onward.
[0158] When all unit spaces have been selected (step 1506, YES), the control unit 311 transmits group information and atom pair data of each atom pair to the selection device 1012 via the communication unit 312 (step 1507). Then, the control unit 311 receives fx, fy, and fz of each atom pair from the selection device 1012 via the communication unit 312.
[0159] Thereafter, the control unit 311 repeats the processes from step 1502 onwards for the next time step.
[0160] 4. As the PE 212-i of the parallel computing system 201 of FIG. 2 and the PE 1013-i of the parallel computing system 1001 of FIG. 10, an information processing device can be used instead of the FPGA 401 of FIG.
[0161] Fig. 16 shows an example of the hardware configuration of a first information processing device used as the PE 212-i and the PE 1013-i. The information processing device 1601 in Fig. 16 includes a CPU 1611, a memory 1612, and a communication device 1613. These components are hardware and are connected to each other via a bus 1614.
[0162] The memory 1612 is, for example, a semiconductor memory such as a ROM (Read Only Memory), a RAM, or a flash memory, and stores programs and data used in processing. The data stored in the memory 1612 includes the LUT 721 in FIG. 7 or the LUT 1121 in FIG.
[0163] 4 by executing a program using the memory 1612. The CPU 1611 (processor) performs calculations similar to those of the FPGA 401 in Fig. 4 by referring to the LUT 721 or LUT 1121 in the memory 1612.
[0164] The communication device 1613 communicates with the host computer 211 in Fig. 2 or the selection device 1012 in Fig. 10. The communication device 1613 can also communicate with other PEs 212-i or other PEs 1013-i.
[0165] The configuration of the parallel computing distribution system 101 in FIG. 1 is merely an example, and some of the components may be omitted or changed depending on the application or conditions of the parallel computing distribution system 101.
[0166] The configurations of the parallel computing system 201 in Fig. 2 and the parallel computing system 1001 in Fig. 10 are merely examples, and some of the components may be omitted or changed depending on the application or conditions of the parallel computing system. The configuration of the host computer 211 in Fig. 3 is merely an example, and some of the components may be omitted or changed depending on the application or conditions of the parallel computing system.
[0167] The configuration of the FPGA 401 in FIG. 4 is merely an example, and the configuration of the FPGA 401 varies depending on the application of the parallel computing system.
[0168] The configurations of the calculation circuit 701 in Fig. 7 and the calculation circuit 1101 in Fig. 11 are merely examples, and some of the components may be omitted or changed depending on the application or conditions of the parallel computing system. The configurations of the selection device 1012 in Fig. 12 and the selection unit 1212-j in Fig. 13 are merely examples, and some of the components may be omitted or changed depending on the application or conditions of the parallel computing system.
[0169] The configuration of the information processing device 1601 in FIG. 16 is merely an example, and some of the components may be omitted or changed depending on the application or conditions of the parallel computing system.
[0170] The flowcharts of FIG. 9 and FIG. 15 are merely examples, and the LB process varies depending on the application of the parallel computing system.
[0171] The LUT shown in Fig. 5 is only an example, and the input data and output data of the LUT change depending on the calculation performed using the LUT. The atom pair list shown in Fig. 6 is only an example, and the atom pair list changes depending on the interval to which the distance r of each atom pair belongs. The LUTs shown in Fig. 8 and Fig. 14 are only an example, and an LUT corresponding to another interval of the distance r may be used as the LUT for each group.
[0172] Equations (1) to (14) are merely examples, and the parallel computing system 201 and the parallel computing system 1001 may perform parallel computation using other computational equations.
[0173] Fig. 17 shows an example of the hardware configuration of a second information processing device used as the allocation unit 111 in Fig. 1, the host computer 211 in Fig. 2, and the host computer 1011 in Fig. 10. The information processing device in Fig. 17 includes a CPU 1701, a memory 1702, an input device 1703, an output device 1704, an auxiliary storage device 1705, a media drive device 1706, and a network connection device 1707. These components are hardware, and are connected to each other via a bus 1708.
[0174] The memory 1702 is, for example, a semiconductor memory such as a ROM, a RAM, a flash memory, etc., and stores programs and data used in processing. The memory 1702 may operate as the storage unit 313 in FIG.
[0175] A CPU 1701 (processor) executes a program using a memory 1702, for example, to operate as the allocation unit 111 in FIG. 1 and the control unit 311 in FIG.
[0176] The input device 1703 is, for example, a keyboard, a pointing device, etc., and is used to input instructions or information from a user or operator. The output device 1704 is, for example, a display device, a printer, a speaker, etc., and is used to output inquiries or processing results to a user or operator. The processing results may be calculation results such as scientific and technological calculations.
[0177] The auxiliary storage device 1705 is, for example, a magnetic disk device, an optical disk device, a magneto-optical disk device, a tape device, or the like. The auxiliary storage device 1705 may be a hard disk drive or a solid state drive (SSD). The information processing device can store programs and data in the auxiliary storage device 1705 and use them by loading them into the memory 1702. The auxiliary storage device 1705 may operate as the storage unit 313 in FIG. 3.
[0178] The medium drive device 1706 drives the portable recording medium 1709 and accesses the recorded contents. The portable recording medium 1709 is a memory device, a flexible disk, an optical disk, a magneto-optical disk, etc. The portable recording medium 1709 may be a CD-ROM (Compact Disk Read Only Memory), a DVD (Digital Versatile Disk), a USB (Universal Serial Bus) memory, etc. A user or operator can store programs and data in the portable recording medium 1709 and load them into the memory 1702 for use.
[0179] Thus, the computer-readable recording medium that stores the program and data used in the processing is a physical (non-transitory) recording medium such as the memory 1702, the auxiliary storage device 1705, or the portable recording medium 1709.
[0180] The network connection device 1707 is a communication interface circuit that is connected to a communication network and performs data conversion associated with communication. The information processing device can receive programs and data from an external device via the network connection device 1707 and load them into the memory 1702 for use. The network connection device 1707 may operate as the communication unit 312 in FIG. 3.
[0181] It is not necessary for the information processing device to include all of the components in Fig. 17, and some of the components may be omitted or changed depending on the application or conditions. For example, if an interface with a user or operator is not required, the input device 1703 and the output device 1704 may be omitted. If the information processing device does not use a portable recording medium 1709, the medium drive device 1706 may be omitted.
[0182] Although the disclosed embodiments and their advantages have been described in detail, it will be appreciated that those skilled in the art may make various modifications, additions and omissions therein without departing from the scope of the invention as clearly set forth in the claims.
[0183] The following notes are further disclosed regarding the embodiment described with reference to FIGS. (Appendix 1) by using reference information including output data associated with input data, a calculation for obtaining output data from input data belonging to a part of a range of the input data is assigned to each of a plurality of calculation units that perform parallel calculation for obtaining the output data from the input data; The process is executed by a computer, a first input data set that is associated with the first input data and a second input data set that is associated with the first input data, the first input data set being a first input data set, and the second input data set being an input data set that is associated with the first input data set. (Appendix 2) the range of input data is divided into a plurality of ranges; the partial range corresponds to each of the plurality of ranges, the reference information including the output data associated with the input data is divided into a plurality of portions; the portion of reference information corresponds to each of the plurality of portions; The process of allocating a calculation for obtaining output data from input data belonging to a part of the range of the input data to each of the plurality of calculation units includes: A process of classifying each of the plurality of calculation units into one of groups corresponding to each of a plurality of ranges of reference data corresponding to the input data; A process of obtaining a specific group corresponding to a specific range to which a specific reference data belongs, based on specific reference data corresponding to specific input data among a plurality of input data in the parallel computing; A process of allocating a calculation for obtaining output data from the specific input data to the calculation units belonging to the specific group among the plurality of calculation units; 2. The parallel computing distribution program according to claim 1, (Appendix 3) 3. The parallel computing distribution program according to claim 2, further comprising: determining a number of computing units that belong to the specific group, based on a number of reference data that belong to the specific range, among reference data corresponding to each of the plurality of input data. (Appendix 4) the range of input data includes a plurality of ranges; Two of the ranges include overlapping ranges, the partial range corresponds to each of the plurality of ranges, The reference information including the output data associated with the input data includes a plurality of portions, the portion of reference information corresponds to each of the plurality of portions; The process of allocating a calculation for obtaining output data from input data belonging to a part of the range of the input data to each of the plurality of calculation units includes: A process of classifying each of the plurality of calculation units into one of groups corresponding to each of a plurality of ranges of reference data corresponding to the input data; A process of obtaining two groups corresponding to the two ranges based on specific reference data corresponding to specific input data belonging to the overlapping range among the plurality of input data; A process of allocating a calculation for obtaining output data from the specific input data to any one of the calculation units belonging to the two groups among the plurality of calculation units; 2. The parallel computing distribution program according to claim 1, (Appendix 5) 5. The parallel computing distribution program according to claim 4, wherein one of the computing units is selected based on a load of one or more computing units belonging to one of the two groups and a load of one or more computing units belonging to the other of the two groups. (Appendix 6) a plurality of calculation units that perform parallel calculations to obtain the output data from the input data by using reference information including the output data associated with the input data; an allocation unit that allocates, to each of the plurality of calculation units, a calculation for obtaining output data from input data that belongs to a part of the range of the input data; Equipped with a first input data set that is associated with the first input data and a second input data set that is associated with the first input data, the first input data set being associated with the first input data and the second input data set being associated with the first input data. (Appendix 7) the range of input data is divided into a plurality of ranges; the partial range corresponds to each of the plurality of ranges, the reference information including the output data associated with the input data is divided into a plurality of portions; the portion of reference information corresponds to each of the plurality of portions; the allocating unit classifies each of the plurality of computing units into one of groups corresponding to each of a plurality of ranges of reference data corresponding to the input data, determines a specific group corresponding to a specific range to which the specific reference data belongs based on specific reference data corresponding to specific input data among the plurality of input data in the parallel computing, and allocates a computation for obtaining output data from the specific input data to a computing unit among the plurality of computing units belonging to the specific group. (Appendix 8) 8. The parallel computing distribution system according to claim 7, wherein the allocating unit determines the number of computing units belonging to the specific group based on the number of reference data items belonging to the specific range among the reference data items corresponding to each of the plurality of input data items. (Appendix 9) the range of input data includes a plurality of ranges; Two of the ranges include overlapping ranges, the partial range corresponds to each of the plurality of ranges, The reference information including the output data associated with the input data includes a plurality of portions, the portion of reference information corresponds to each of the plurality of portions; The parallel computing distribution system according to claim 6, wherein the allocation unit classifies each of the plurality of computing units into one of groups corresponding to each of a plurality of ranges of reference data corresponding to the input data, determines two groups corresponding to the two ranges based on specific reference data corresponding to specific input data belonging to the overlapping range among the plurality of input data, and allocates a calculation for obtaining output data from the specific input data to one of the computing units belonging to the two groups among the plurality of computing units. (Appendix 10) 10. The parallel computing distribution system according to claim 9, further comprising a selection unit that selects one of the computing units based on a load of one or more computing units belonging to one of the two groups and a load of one or more computing units belonging to the other of the two groups. (Appendix 11) by using reference information including output data associated with input data, a calculation for obtaining output data from input data belonging to a part of a range of the input data is assigned to each of a plurality of calculation units that perform parallel calculation for obtaining the output data from the input data; The computer executes the process, each of the plurality of computing units stores a portion of the reference information including output data associated with input data belonging to the portion of the range, and uses the portion of the reference information to determine output data associated with the input data belonging to the portion of the range from the input data belonging to the portion of the range. (Appendix 12) the range of input data is divided into a plurality of ranges; the partial range corresponds to each of the plurality of ranges, the reference information including the output data associated with the input data is divided into a plurality of portions; the portion of reference information corresponds to each of the plurality of portions; The process of allocating a calculation for obtaining output data from input data belonging to a part of the range of the input data to each of the plurality of calculation units includes: A process of classifying each of the plurality of calculation units into one of groups corresponding to each of a plurality of ranges of reference data corresponding to the input data; A process of obtaining a specific group corresponding to a specific range to which a specific reference data belongs, based on specific reference data corresponding to specific input data among a plurality of input data in the parallel computing; A process of allocating a calculation for obtaining output data from the specific input data to the calculation units belonging to the specific group among the plurality of calculation units; 12. The parallel computation distribution method according to claim 11, comprising: (Appendix 13) 13. The parallel computing distribution method according to claim 12, further comprising the step of: determining a number of computing units belonging to the specific group, based on a number of reference data items belonging to the specific range among reference data items corresponding to each of the plurality of input data items. (Appendix 14) the range of input data includes a plurality of ranges; Two of the ranges include overlapping ranges, the partial range corresponds to each of the plurality of ranges, The reference information including the output data associated with the input data includes a plurality of portions, the portion of reference information corresponds to each of the plurality of portions; The process of allocating a calculation for obtaining output data from input data belonging to a part of the range of the input data to each of the plurality of calculation units includes: A process of classifying each of the plurality of calculation units into one of groups corresponding to each of a plurality of ranges of reference data corresponding to the input data; A process of obtaining two groups corresponding to the two ranges based on specific reference data corresponding to specific input data belonging to the overlapping range among the plurality of input data; A process of allocating a calculation for obtaining output data from the specific input data to any one of the calculation units belonging to the two groups among the plurality of calculation units; 12. The parallel computation distribution method according to claim 11, comprising: (Appendix 15) 15. The parallel computing distribution method according to claim 14, wherein one of the computing units is selected based on a load of one or more computing units belonging to one of the two groups and a load of one or more computing units belonging to the other of the two groups. [Explanation of symbols]
[0184] 101 Parallel Computing Distribution System 111 Allocation Section 112-1~112-N Calculation section 201, 1001 Parallel Computing System 211, 1011 Host computer 311, 1211 Control section 312 Communications Department 313, 711, 1112 Storage section 401 FPGA 412, 413 Addition circuit 414~419, 420-1~420-3 Multiplication circuit 421~428, 701, 1101 calculation circuit 712, 1113 Interpolation section 1012 Selection device 1111 Reception 1212-1~1212-(J-1) Selection section 1311 Generation circuit 1312 Selection circuit 1313-1, 1313-2 AND circuit 1314-1~1314-Na, 1315-1~1315-Nb OR circuit 1601 Information processing equipment 1611, 1701 CPU 1612, 1702 Memory 1613 Communication equipment 1614, 1708 Bus 1703 Input Device 1704 Output Device 1705 Auxiliary storage device 1706 Media Drive Unit 1707 Network connection device 1709 Portable recording media
Claims
1. assigning a calculation for obtaining output data from input data belonging to a part of a range of the input data to each of a plurality of calculation units that perform parallel calculation for obtaining the output data from the input data by using reference information including the output data associated with the input data; The process is executed by a computer, a first input data set that is associated with the first input data and a second input data set that is associated with the first input data, the first input data set being a first input data set, and the second input data set being an input data set that is associated with the first input data set.
2. the range of input data is divided into a plurality of ranges; the partial range corresponds to each of the plurality of ranges, the reference information including the output data associated with the input data is divided into a plurality of portions; the portion of reference information corresponds to each of the plurality of portions; The process of allocating a calculation for obtaining output data from input data belonging to a part of the range of the input data to each of the plurality of calculation units includes: A process of classifying each of the plurality of calculation units into one of groups corresponding to each of a plurality of ranges of reference data corresponding to the input data; A process of obtaining a specific group corresponding to a specific range to which a specific reference data belongs, based on specific reference data corresponding to specific input data among a plurality of input data in the parallel computing; A process of allocating a calculation for obtaining output data from the specific input data to the calculation units belonging to the specific group among the plurality of calculation units; 2. The parallel computing distribution program according to claim 1, further comprising:
3. 3. The parallel computing distribution program according to claim 2, further comprising: determining a number of computing units that belong to the specific group based on a number of reference data that belong to the specific range among the reference data corresponding to each of the plurality of input data.
4. the range of input data includes a plurality of ranges; Two of the ranges include overlapping ranges, the partial range corresponds to each of the plurality of ranges, The reference information including the output data associated with the input data includes a plurality of portions, the portion of reference information corresponds to each of the plurality of portions; The process of allocating a calculation for obtaining output data from input data belonging to a part of the range of the input data to each of the plurality of calculation units includes: A process of classifying each of the plurality of calculation units into one of groups corresponding to each of a plurality of ranges of reference data corresponding to the input data; A process of obtaining two groups corresponding to the two ranges based on specific reference data corresponding to specific input data belonging to the overlapping range among the plurality of input data; A process of allocating a calculation for obtaining output data from the specific input data to any one of the calculation units belonging to the two groups among the plurality of calculation units; 2. The parallel computing distribution program according to claim 1, further comprising:
5. 5. The parallel computing distribution program according to claim 4, wherein one of the computing units is selected based on a load of one or more computing units belonging to one of the two groups and a load of one or more computing units belonging to the other of the two groups.
6. a plurality of calculation units that perform parallel calculations to obtain the output data from the input data by using reference information including the output data associated with the input data; an allocation unit that allocates, to each of the plurality of calculation units, a calculation for obtaining output data from input data that belongs to a part of the range of the input data; Equipped with a first input data set that is associated with the first input data and a second input data set that is associated with the first input data, the first input data set being associated with the first input data and the second input data set being associated with the first input data.
7. assigning a calculation for obtaining output data from input data belonging to a part of a range of the input data to each of a plurality of calculation units that perform parallel calculation for obtaining the output data from the input data by using reference information including the output data associated with the input data; The computer executes the process, a first input data set that is associated with the first input data and a second input data set that is associated with the first input data, the first input data set being associated with the first input data and the second input data set being associated with the first input data and the second input data set being associated with the first input data and the third input data set being associated with the first input data and the second input data set being associated with the second input data and the third input data set being associated with the second input data and the fourth input data set being associated with the first input data and the fourth input data set being associated with the second input data and the fourth input data set being associated with the second input data and the fourth input data set being associated with the second input data and the fourth input data set being associated with the second input data and the fourth input data set being associated with the second input data and the fourth input data set being associated with the second input data and the fourth input data set being associated with the second input data and the fourth input data set being associated with the second input data and the fourth input data set being associated with the second input data and the fourth input data set being associated with the third input data and the fourth input data set being associated with the fourth ...
Citation Information
Patent Citations
Look-up table containing processor-in-memory cluster for data-intensive applications
US20220326958A1