WO2021009901A1 - 並列計算方法およびシステム - Google Patents
並列計算方法およびシステム Download PDFInfo
- Publication number
- WO2021009901A1 WO2021009901A1 PCT/JP2019/028252 JP2019028252W WO2021009901A1 WO 2021009901 A1 WO2021009901 A1 WO 2021009901A1 JP 2019028252 W JP2019028252 W JP 2019028252W WO 2021009901 A1 WO2021009901 A1 WO 2021009901A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- calculation
- nodes
- parallel
- small data
- matrix
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Definitions
- the present invention relates to a parallel calculation method and a system.
- Matrix product calculation is an example of parallel calculation.
- Matrix multiplication calculation is one of the most basic calculation elements widely used in fields such as scientific and technological calculation in general, big data analysis, and artificial intelligence.
- Non-Patent Document 1 is known as a conventional method of performing matrix multiplication by parallel calculation.
- Speeding up parallel computing is important for reducing system power consumption in data centers and the like.
- the present invention has been made in view of the above points, and one of the purposes thereof is to speed up parallel computing.
- one aspect of the present invention is a method of performing parallel computing in a parallel computing system including a plurality of computing nodes, wherein each of the plurality of first-level small data in which the data is divided is described.
- the first step of arranging each of the computing nodes of the above and the first computing node group including at least one computing node among the plurality of computing nodes the first-level small data is further added to the second-level small data.
- the present invention provides a parallel calculation method including a fifth step of reconstructing the first-level small data using the second-level small data transferred from the relay node group.
- another aspect of the present invention provides a parallel calculation method further comprising a sixth step in the above aspect of performing the part of the parallel calculation using the reconstructed first-level small data. To do.
- parallel transfer from the first computing node group in the third step can be used between the first computing node group and the relay node group.
- a parallel computing method is provided in which the first computing node group transfers each of the second level small data in parallel so that all communication links are used.
- the parallel transfer to the second computing node group in the fourth step can be used between the relay node group and the second computing node group.
- a parallel computing method is provided in which the relay node group transfers the second level small data in parallel so that all communication links are used.
- each of the computing nodes is provided with a plurality of communication ports, and data communication from the first computing node group to the relay node group in the third step or The data communication from the relay node group to the second calculation node group in the fourth step provides a parallel calculation method performed via the plurality of communication ports.
- Another aspect of the present invention provides a parallel calculation method in which the plurality of calculation nodes are logically connected by a full mesh in the above aspect.
- the parallel calculation is a matrix operation
- the data is data representing a matrix
- the small data of the first level is the row direction of the matrix
- a parallel calculation method which is data representing a small matrix divided in the column direction.
- the submatrix is a submatrix obtained by dividing the matrix into N (where N is the number of calculation nodes), and the second level small data is Provided is a parallel calculation method which is data obtained by further dividing the submatrix into N.
- Another aspect of the present invention provides a parallel calculation method in which the matrix operation is a calculation of a matrix product in the above aspect.
- another aspect of the present invention is a method of performing parallel computing in a parallel computing system including a plurality of computing nodes, in which each of the first-level small data obtained by dividing the data is further subjected to a second-level small data.
- the step of parallel transfer to at least one compute node among the compute nodes, and the first level minor data using the second level minor data transferred from the plurality of compute nodes in the at least one compute node.
- another aspect of the present invention is a parallel computing system including a plurality of computing nodes, in which each of the first-level small data obtained by dividing the data is arranged in each of the plurality of computing nodes. At least one of the computing nodes of the first computing node further divides the first level small data into second level minor data, and each of the second level minor data is of the plurality of computing nodes. It is configured to transfer in parallel to a group of relay nodes which is a subset, and at least one second computing node among the plurality of computing nodes acquires the small data of the second level from the group of relay nodes by parallel transfer. Then, provide a parallel computing system configured to reconstruct the first-level small data using the second-level small data transferred from the relay node group.
- another aspect of the present invention is a parallel computing system including a plurality of computing nodes, in which each of the first-level small data obtained by dividing the data is further divided into the second-level small data.
- Each of the two levels of small data is placed in each of the plurality of compute nodes, and at least one compute node of the plurality of compute nodes transfers the second level of minor data from each of the plurality of compute nodes.
- a parallel computing system configured to reconstruct the first level small data using the second level small data acquired by parallel transfer and transferred from the plurality of computing nodes.
- An example of parallel computing targeted by the parallel computing system according to the embodiment of the present invention is shown. It is a flowchart which shows the operation of the parallel computing system by the conventional algorithm (SUMMA). The progress of matrix calculation in the conventional algorithm (SUMMA) is conceptually shown. It is a table which shows the routing of the submatrix between the calculation nodes in the conventional algorithm (SUMMA). It is a flowchart which shows the operation of the parallel computing system which concerns on 1st Embodiment of this invention.
- the progress of matrix calculation in the conventional algorithm (Canon algorithm) is conceptually shown. It is a table which shows the routing between calculation nodes in 5th Embodiment of this invention.
- the progress of matrix calculation in the conventional algorithm (Fox algorithm) is conceptually shown. It is a table which shows the routing between calculation nodes in the 6th Embodiment of this invention.
- FIG. 1 is a configuration diagram of a parallel computing system 10 according to an embodiment of the present invention.
- the parallel computing system 10 includes a plurality of computing nodes 100.
- FIG. 1 shows a logical topology between compute nodes 100.
- Each calculation node 100 is a computer that executes a predetermined calculation assigned to each calculation node 100 in parallel with another calculation node 100.
- the parallel calculation system 10 has nine calculation nodes 100, that is, calculation node N0, calculation node N1, calculation node N2, calculation node N3, calculation node N4, calculation node N5, calculation node N6, and calculation. It is composed of a node N7 and a calculation node N8.
- the number of calculation nodes 100 is only an example, and an arbitrary number, for example, tens, hundreds, or thousands of calculation nodes 100 may form the parallel computing system 10.
- Each calculation node 100 is connected by a communication link 20.
- the communication link 20 is a transmission line that enables the calculation nodes 100 at both ends to which it is connected to send and receive data to and from each other.
- the communication link 20 transmits data in the form of an electrical signal or an optical signal.
- the communication link 20 may be wired or wireless.
- the compute node N0 is all the other compute nodes 100, namely compute node N1, compute node N2, compute node N3, compute node N4, compute node N5, compute node N6, compute node N7, and It is connected to the calculation node N8 by the communication link 20.
- the other calculation nodes 100 are connected to all the calculation nodes 100 other than themselves by the communication link 20.
- each computing node 100 is "full mesh" connected by a communication link 20.
- the connection between the computing nodes 100 does not have to be full mesh, and the communication link 20 between certain computing nodes 100 may be omitted.
- Communication between the calculation nodes 100 in which the communication link 20 does not exist may be performed, for example, via another calculation node 100.
- the number of communication links 20 is counted as one for each communication in one direction.
- each communication link 20 connecting the calculation nodes 100 is shown by one line for simplification, but in reality, bidirectional communication is possible between the calculation nodes 100 at the same time.
- Each calculation node 100 is connected by two communication links 20. Therefore, in the example of FIG.
- FIG. 1 shows that the logical topology between the calculation nodes 100 is a full mesh connection, and the physical topology between the calculation nodes 100 does not necessarily have to be a full mesh connection.
- a parallel computing system having a configuration in which the logical topology is a full mesh connection but the physical topology is a star type connection, as in the parallel computing system using wavelength routing described later (FIGS. 22 to 24). Including.
- the parallel computing system 10 has a configuration in which each computing node 100 is logically connected by a full mesh.
- the link between the computing node and the packet switch is used in a time-divided manner, which is highly flexible, but on the other hand, the packet Complex procedures are required to avoid collisions, which causes communication delays and increased power consumption.
- the parallel computing system 10 of the present embodiment in which the computing nodes 100 are logically connected in full mesh, all the computing nodes 100 are always directly connected, so that it is necessary to consider the collision between packets. It is possible to reduce communication delay and power consumption because it can be completed by simpler processing.
- the parallel calculation system 10 divides the processing of the calculation into a plurality of parts, and assigns the divided sub-processing to each calculation node 100. That is, each calculation node 100 is in charge of a part of the calculation performed by the parallel calculation system 10 as a whole. Further, the parallel calculation system 10 divides the data used in the calculation or the data to be calculated into a plurality of pieces, and distributes and arranges the divided small data in each calculation node 100. Each calculation node 100 executes the calculation that it is in charge of, but may not hold the data necessary for the calculation. The compute node 100 obtains such data from another compute node 100 that holds the data via the communication link 20. By executing the sub-processing assigned to each calculation node 100 in this way, the calculation in the parallel calculation system 10 is processed in parallel by the cooperation of the plurality of calculation nodes 100.
- FIG. 2 is a configuration diagram of a calculation node 100 according to an embodiment of the present invention.
- FIG. 2 shows the configuration of a certain calculation node 100 among the plurality of calculation nodes 100 in FIG.
- the other calculation node 100 among the plurality of calculation nodes 100 may have the same configuration as that of FIG. 2, or may be configured differently from that of FIG.
- the calculation node 100 includes a processor 110, a memory 120, and a transmission / reception unit 130.
- the memory 120 includes at least a program storage area 122 and a data storage area 124.
- a computer program for causing the calculation node 100 to perform the operation described later according to the embodiment of the present invention is stored.
- the processor 110 reads the computer program from the memory 120 and executes it, the calculation node 100 performs the operation described later according to the embodiment of the present invention.
- the data storage area 124 small data that is one of the small data obtained by dividing the entire data used in the parallel calculation into a plurality of pieces and in which the calculation node 100 is designated as the allocation destination is stored in advance. Further, in the data storage area 124, small data required by the calculation node 100 for calculation and obtained from another calculation node 100 is temporarily stored. Further, the data storage area 124 also stores the data generated by the calculation node 100 executing the calculation.
- the transmission / reception unit 130 transmits / receives small data required for calculation by each calculation node 100 between the calculation node 100 and another calculation node 100. Specifically, the transmission / reception unit 130 performs the other calculation so that the other calculation node 100 can use the small data distributed in the calculation node 100 and stored in advance in the data storage area 124 of the memory 120 for the calculation. Send to node 100. Further, the transmission / reception unit 130 receives small data not held by the calculation node 100 but required for calculation from another calculation node 100.
- the transmission / reception unit 130 includes a plurality of communication ports 132 for transmitting / receiving data in parallel with each of the plurality of calculation nodes 100. Each communication port 132 is connected to the corresponding calculation node 100 by a communication link 20. In the example of FIG. 2, the transmission / reception unit 130 includes eight communication ports 132. For example, focusing on the calculation node N0, the communication port P0 is connected to the calculation node N1, the communication port P1 is connected to the calculation node N2, the communication port P2 is connected to the calculation node N3, and the communication port P3 is connected to the calculation node N4.
- the communication port P4 is connected to the calculation node N5, the communication port P5 is connected to the calculation node N6, the communication port P6 is connected to the calculation node N7, and the communication port P7 is connected to the calculation node N8.
- each communication port 132 is similarly connected to the other calculation nodes 100.
- each calculation node 100 can transmit data to the other plurality of calculation nodes 100 at the same time, and can receive data from the other plurality of calculation nodes 100 at the same time. Even if one communication port 132 fails due to each calculation node 100 having a large number of communication ports 132 having a relatively small granularity and being connected to another calculation node 100 via a large number of communication links 20. Communication can be continued via the other communication port 132 and the communication link 20, and high availability can be expected.
- FIG. 3 shows an example of parallel calculation targeted by the parallel calculation system 10 according to the embodiment of the present invention.
- the parallel calculation applicable to the parallel calculation system 10 is not limited to the calculation of matrix products.
- Data A and B do not have to be matrices.
- a calculation using only one data for example, data A
- a calculation using three or more data may be performed.
- the parallel computing system 10 divides at least one data (for example, data A) into small data and distributes them to a plurality of computing nodes 100, and each computing node 100 distributes the small data required for calculation to another computing node 100. It can cover all kinds of parallel computations that can be performed as obtained from.
- the matrix product can be calculated for the submatrix of the matrix A and the submatrix of the matrix B.
- the matrix product can be calculated for the submatrix of the matrix A and the submatrix of the matrix B.
- the matrix product can be calculated for the submatrix of the matrix A and the submatrix of the matrix B.
- the matrices A and B are divided into 3 in the row direction and in the column direction, respectively. It is divided into three parts.
- the submatrix of the matrix A is defined as a11, a12, a13, a21, a22, a23, a31, a32, a33.
- the submatrix of the matrix B is defined as b11, b12, b13, b21, b22, b23, b31, b32, b33.
- the small matrix is defined as c11, c12, c13, c21, c22, c23, c31, c32, c33. From the above assumption, the number of rows and the number of columns of each submatrix cij of the matrix C are I / p and J / p, respectively.
- Each submatrix cij of the matrix C is calculated by the following equation.
- Each calculation node 100 of the parallel computing system 10 is in charge of processing to calculate one of these nine minor matrices cij.
- FIG. 4 is a flowchart showing the operation of the parallel computing system 10 when SUMMA (Scalable Universal Matrix Multiplication Algorithm), which is one of the conventional matrix product calculation algorithms, is adopted.
- FIG. 5 is a conceptual diagram showing how each calculation node 100 of the parallel calculation system 10 advances matrix calculation by SUMMA.
- FIG. 5 shows some boxes consisting of 9 cells in 3 rows and 3 columns. Of the nine cells in 3 rows and 3 columns in each box, the upper left cell represents the calculation node N0, the upper center cell represents the calculation node N1, the upper right cell represents the calculation node N2, and the middle left cell.
- the cell in the middle row represents the calculation node N3
- the cell in the center of the middle row represents the calculation node N4
- the cell on the right in the middle row represents the calculation node N5
- the cell on the lower left represents the calculation node N6
- the cell in the center of the lower row represents the calculation node N7.
- the lower right cell represents the calculation node N8.
- the submatrix a22 is placed in the calculation node N4, the submatrix a22 is placed in the calculation node N5, the submatrix a31 is placed in the calculation node N6, and the submatrix a32 is placed in the calculation node N7. , The submatrix a33 is arranged at the calculation node N8.
- the fact that the data is arranged in the calculation node 100 means that the data is stored in the data storage area 124 of the memory 120 of the calculation node 100.
- each submatrix bij of the matrix B is similarly arranged at the corresponding calculation node Nn.
- each calculation node Nn secures an area for storing the minor matrix cij as a part of the data storage area 124 of the respective memory 120, and initializes all the elements of the minor matrix cij with 0.
- n / 3 means the integer part of the quotient of n divided by 3
- n% 3 means the remainder of n divided by 3.
- the compute node N0 only holds the minor matrix a11 of the matrix A and the minor matrix b11 of the matrix B. Therefore, the calculation node N0 cannot yet perform the calculation of the submatrix c11 in charge of the calculation of the matrix product C. The same applies to the other calculation nodes 100.
- This is the preparatory stage before performing the following iterative processing. After that, steps 406 to 410, steps 412 to 416, and steps 418 to 422 are repeated three times.
- step 406 the submatrix of the matrix A held by the calculation nodes N0, N3, and N6 is transferred to the other two calculation nodes 100 "in the same row” by "Broadcast communication".
- Send with. “Inside the same line” means that they belong to the same line in the box shown in FIG.
- the compute node N0, the compute node N1 and the compute node N2 are in the same row.
- “Broadcast communication” is communication in which the same data is sent from a certain calculation node 100 to a plurality of other calculation nodes 100.
- the compute node N0 transmits the small matrix a11 to the compute node N1 and the compute node N2, the compute node N3 transmits the minor matrix a21 to the compute node N4 and the compute node N5, and the compute node N6 transmits the minor matrix a31. Is transmitted to the calculation node N7 and the calculation node N8.
- step 408 the submatrix of the matrix B held by the calculation nodes N0, N1, and N2 is transmitted to the other two calculation nodes 100 "in the same column" by Broadcast communication.
- "In the same column” means belonging to the same column in the box shown in FIG.
- the calculation node N0, the calculation node N3, and the calculation node N6 exist in the same column. More specifically, compute node N0 transmits small matrix b11 to compute node N3 and compute node N6, compute node N1 transmits minor matrix b12 to compute node N4 and compute node N7, and compute node N2 transmits minor matrix b13. Is transmitted to the calculation node N5 and the calculation node N8.
- the calculation node N0 calculates the matrix product a11 ⁇ b11 by using the minor matrix a11 and the minor matrix b11 stored in the data storage area 124 of the memory 120 in step 402 and step 404, respectively.
- the calculation node N1 calculates the matrix product a11 ⁇ b12 using the minor matrix b12 stored in the data storage area 124 of the memory 120 in step 404 and the minor matrix a11 obtained from the calculation node N0 in step 406. To do. Further, for example, the calculation node N4 calculates the matrix product a21 ⁇ b12 by using the minor matrix a21 obtained from the calculation node N3 in step 406 and the minor matrix b12 obtained from the calculation node N1 in step 408. See FIG. 5 for the other compute nodes 100.
- Each calculation node Nn adds each element of the matrix product ai1 ⁇ b1j obtained by calculation to each element of the minor matrix cij in the data storage area 124 of the respective memory 120 for each element.
- the data of ai1 ⁇ b1j is stored in the data storage area 124 of the memory 120 of each calculation node Nn as the progress data of the submatrix cij at this time.
- step 412 the submatrix of the matrix A held by the calculation nodes N1, N4, and N7 is transmitted to the other two calculation nodes 100 in the same row by Broadcast communication.
- the calculation node N1 transmits the small matrix a12 to the calculation node N0 and the calculation node N2
- the calculation node N4 transmits the small matrix a22 to the calculation node N3 and the calculation node N5
- the calculation node N7 transmits the small matrix a32. It is transmitted to the calculation node N6 and the calculation node N8.
- step 414 the submatrix of the matrix B held by the calculation nodes N3, N4, and N5 is transmitted to the other two calculation nodes 100 in the same column by Broadcast communication.
- the calculation node N3 transmits the small matrix b21 to the calculation node N0 and the calculation node N6, the calculation node N4 transmits the small matrix b22 to the calculation node N1 and the calculation node N7, and the calculation node N5 transmits the small matrix b23. It is transmitted to the calculation node N2 and the calculation node N8.
- each calculation node Nn calculates the matrix product ai2 ⁇ b2j between the two submatrixes, which is a part of the calculation in charge of each, in the same manner as in step 410 described above, and the obtained matrix product.
- Each element of ai2 ⁇ b2j is added to each element of the submatrix cij in the data storage area 124 of each memory 120 for each element. Details will be omitted to avoid complication of the explanation, but those skilled in the art can easily understand the specific contents of the calculation in step 416 from the above-mentioned explanation in step 410 and the description in FIG. Let's do it.
- step 416 the data of ai1 ⁇ b1j + ai2 ⁇ b2j is stored in the data storage area 124 of the memory 120 of each calculation node Nn as the progress data of the minor matrix cij at this time.
- step 418 the submatrix of the matrix A held by the calculation nodes N2, N5, and N8 is transmitted to the other two calculation nodes 100 in the same row by Broadcast communication.
- the calculation node N2 transmits the small matrix a13 to the calculation node N0 and the calculation node N1
- the calculation node N5 transmits the small matrix a23 to the calculation node N3 and the calculation node N4
- the calculation node N8 transmits the small matrix a33. It is transmitted to the calculation node N6 and the calculation node N7.
- step 420 the submatrix of the matrix B held by the calculation nodes N6, N7, and N8 is transmitted to the other two calculation nodes 100 in the same column by Broadcast communication.
- the calculation node N6 transmits the small matrix b31 to the calculation node N0 and the calculation node N3
- the calculation node N7 transmits the small matrix b32 to the calculation node N1 and the calculation node N4
- the calculation node N8 transmits the small matrix b33. It is transmitted to the calculation node N2 and the calculation node N5.
- each calculation node Nn calculates and obtains a matrix product ai3 ⁇ b3j between two submatrixes, which is a part of the calculation in charge of each, in the same manner as in steps 410 and 416 described above.
- Each element of the matrix product ai3 ⁇ b3j is added to each element of the submatrix cij in the data storage area 124 of each memory 120 for each element.
- step 422 the data of ai1 ⁇ b1j + ai2 ⁇ b2j + ai3 ⁇ b3j is stored in the data storage area 124 of the memory 120 of each calculation node Nn as the data of the final minor matrix cij.
- each calculation node 100 obtains a calculation result for the submatrix cij, which is a part of the matrix C representing the matrix product A ⁇ B and is in charge of the calculation.
- FIG. 6 visually shows in tabular form how the minor matrix was routed between the compute nodes 100 in each of steps 406, 408, 412, 414, 418, and 420 of the conventional algorithm described above.
- Each compute node 100 on the transmitting side is shown vertically in the table, and each compute node 100 on the receiving side is shown horizontally in the table.
- a minor matrix is transferred between the transmitting side calculation node 100 and the receiving side calculation node 100 corresponding to the cell, that is, between the two calculation nodes 100. Indicates that the communication link 20 of is used.
- the blank cell means that the transfer of the minor matrix is not performed between the computing node 100 on the transmitting side and the computing node 100 on the receiving side corresponding to the cell, that is, the communication link 20 between the two computing nodes 100. Indicates that it is unused.
- the number "ij" represents the minor matrix aij or bij.
- the number "11" described in the second cell from the left in the uppermost row is the communication between the computing node N0 on the transmitting side and the computing node N1 on the receiving side.
- the number "21" described in the fifth cell from the left in the fourth row from the top is the calculation node N3 on the transmitting side and the calculation node on the receiving side. It indicates that the small matrix a21 was transferred using the communication link 20 between N4.
- the transfer of these minor matrices is as described above for step 406. Any other number "ij" listed in each table of FIG. 6 is similarly understood.
- each step out of a total of 72 ( 9 ⁇ 8) communication links 20 connecting the nine calculation nodes 100 of the parallel computing system 10 to each other. Only 12 communication links 20 are used simultaneously in each of the 406, 408, 412, 414, 418, and 420. The remaining 60 communication links 20 are unused in each step. Therefore, the entire communication band of the parallel computing system 10 is not effectively utilized. Therefore, in the embodiment of the present invention described below, the speed of parallel computing can be increased by increasing the utilization efficiency of the communication band of the parallel computing system 10.
- FIG. 7 is a flowchart showing the operation of the parallel computing system 10 according to the first embodiment of the present invention.
- FIG. 8 is a diagram visually showing how the submatrix is routed between the calculation nodes 100 in the first embodiment of the present invention in a tabular form, which corresponds to FIG. 6 described above in the conventional example. To do.
- step 702 each minor matrix aij of the matrix A and each minor matrix bij of the matrix B are arranged at the corresponding calculation nodes 100.
- This step is the same as steps 402 and 404 of the conventional example described above.
- each calculation node 100 secures an area for storing the minor matrix cij as a part of the data storage area 124 of each memory 120, as in step 405 of the conventional example, and the minor matrix Initialize all elements of cij with 0.
- step 704 the submatrix of the matrix A held by the calculation nodes N0, N3, and N6 is transmitted to all the calculation nodes 100 by "Scatter communication".
- “Scatter communication” is to subdivide the data held by a certain calculation node 100 into small data and send each small data to the corresponding calculation node 100 to separate different parts of the original data. It is a communication to be distributed to the calculation node 100 of.
- the calculation node N0 divides the small matrix a11 into nine small data a110, a111, a112, a113, a114, a115, a116, a117, and a118, and divides the small data a111 into the calculation node N1.
- the small data a118 is transmitted to the node N7 and the small data a118 is transmitted to the calculation node N8.
- the calculation node N3 similarly divides the minor matrix a21 into nine small data, and transmits each small data to another calculation node 100. The same applies to the calculation node N6.
- the transfer of these small data is indicated by the number "ijk".
- step 706 the calculation nodes N1, N2, N4, N5, N7, and N8 collect the small data distributed to each calculation node 100 in step 704 by "Alligator communication", and the collected small data are collected.
- the submatrix of the matrix A is reconstructed from the data.
- the "Alligator communication” is to execute a plurality of processes in parallel for collecting and combining data distributed in a plurality of calculation nodes 100 in one calculation node 100.
- the calculation node N1 converts the minor data a110, a111, a112, a113, a114, a115, a116, a117, and a118 into the calculation nodes N0, N1, N2, N3, N4, N5, N6, N7, respectively. Obtained from N8, the submatrix a11 of the matrix A is reconstructed using each of these small data.
- the transfer of each small data from each compute node 100 to compute node N1 is shown in the second column from the left of the table shown as step 706 in FIG.
- the compute node N2 reconstructs the minor matrix a11
- the compute nodes N4 and N5 reconstruct the minor matrix a21
- the compute nodes N7 and N8 reconstruct the minor matrix a31.
- the compute nodes N0, N1, and N2 hold the submatrix a11 of the matrix A, as in the case where step 406 in the conventional algorithm described above is performed.
- the calculation nodes N3, N4, and N5 hold the submatrix a21 of the matrix A, and the calculation nodes N6, N7, and N8 hold the submatrix a31 of the matrix A.
- the number of communication links 20 used is 9 times, although the number of communication steps is doubled in this embodiment. It should be noted that the data size transmitted through each communication link 20 is 1/9, and as a result, the communication time required to transfer the submatrix is reduced by 2/9 times.
- step 708 the submatrix of the matrix B held by the calculation nodes N0, N1 and N2 is transmitted to all the calculation nodes 100 by Scatter communication.
- the compute node N0 divides the minor matrix b11 into nine minor data, and the minor data b111, b112, b113, b114, b115, b116, b117.
- And B118 are transmitted to the calculation nodes N1, N2, N3, N4, N5, N6, N7, and N8, respectively.
- the calculation node N1 transmits the small data obtained by dividing the minor matrix b12 to each calculation node 100
- the calculation node N2 transmits the small data obtained by dividing the minor matrix b13 to each calculation node 100.
- the calculation nodes N3, N4, N5, N6, N7, and N8 collect the small data distributed to each calculation node 100 in the above step 708 by Alligator communication, and from the collected small data.
- Each submatrix of matrix B is reconstructed.
- the calculation node N3 converts the minor data b110, b111, b112, b113, b114, b115, b116, b117, and b118 into the calculation nodes N0, N1, N2, N3, N4, N5, N6, N7, respectively. Obtained from N8, the submatrix b11 of the matrix B is reconstructed using each of these small data.
- each small data from each compute node 100 to compute node N3 is shown in the fourth column from the left of the table shown as step 710 in FIG.
- the compute node N6 reconstructs the minor matrix b11
- the compute nodes N4 and N7 reconstruct the minor matrix b12
- the compute nodes N5 and N8 reconstruct the minor matrix b13.
- the compute nodes N0, N3, and N6 hold the submatrix b11 of the matrix B, as in the case where step 408 in the conventional algorithm described above is performed.
- the calculation nodes N1, N4, and N7 hold the submatrix b12 of the matrix B, and the calculation nodes N2, N5, and N8 hold the submatrix b13 of the matrix B.
- step 408 in the conventional algorithm with steps 708 and 710 in this embodiment, similar to steps 704 and 706 described above, in this embodiment the number of communication steps is doubled, but the communication used.
- the number of links 20 has increased 9 times, and the data size transmitted through each communication link 20 has been reduced to 1/9, resulting in a 2/9 times reduction in the communication time required to transfer a minor matrix. Will be done.
- each calculation node 100 calculates the matrix product ai1 ⁇ b1j between the two submatrixes, which is a part of the calculation in charge of each, and each element of the obtained matrix product is divided into elements. It is added to each element of the submatrix cij in the data storage area 124 of each memory 120.
- This step corresponds to step 410 of the conventional algorithm described above.
- the calculation node N1 acquires the minor matrix a11 required for the calculation of the matrix product by the Scatter communication in step 704 and the Alligator communication in step 706.
- the calculation node N4 acquires the minor matrix a21 required for the calculation of the matrix product by the Scatter communication in step 704 and the Alligator communication in step 706, and obtains the minor matrix b12 by the Scatter communication in step 708 and the Allgather communication in step 710. Obtained by.
- the other calculation nodes 100 also acquire the minor matrix required for the calculation by sequentially performing the Scatter communication and the Alligator communication.
- each submatrix aij and bij is not directly transferred from the source calculation node 100 to the destination calculation node 100, but the small data obtained by dividing each submatrix aij and bij is used for Scatter communication and It is transferred from the source calculation node 100 to the destination calculation node 100 by being relayed to another calculation node 100 in the two-step communication of Allgather communication.
- steps 714 to 722 are performed in the same manner as steps 704 to 712 described above.
- the submatrix a12 of the matrix A is delivered to the calculation nodes N0 and N2
- the minor matrix a22 is delivered to the calculation nodes N3 and N5
- the minor matrix a12 is delivered to the calculation nodes N3 and N5 by the same Scatter communication and Alligator communication as in steps 704 and 706. This is a process of delivering the matrix a32 to the calculation nodes N6 and N8.
- the minor matrix b21 of the matrix B is delivered to the calculation nodes N0 and N6, and the minor matrix b22 is delivered to the calculation nodes N1 and N7 by the same Scatter communication and Alligator communication as in steps 708 and 710.
- Step 722 is a process in which each calculation node 100 calculates the matrix product ai2 ⁇ b2j of the submatrix and adds it to the memory 120, which corresponds to step 416 in the conventional algorithm.
- step 722 the data of ai1 ⁇ b1j + ai2 ⁇ b2j is stored in the data storage area 124 of the memory 120 of each calculation node 100 as the progress data of the minor matrix cij at this time.
- steps 724 to 732 are performed in the same manner as steps 704 to 712 and steps 714 to 722 described above.
- steps 724 and 726 the minor matrix a13 of the matrix A is delivered to the calculation nodes N0 and N1
- the minor matrix a23 is delivered to the calculation nodes N3 and N4
- the minor matrix a33 is delivered by the same Scatter communication and Alligator communication as described above. This is a process of delivering to the calculation nodes N6 and N7.
- the submatrix b31 of the matrix B is delivered to the calculation nodes N0 and N3
- the minor matrix b32 is delivered to the calculation nodes N1 and N4
- the minor matrix b31 is delivered to the calculation nodes N1 and N4 by the same Scatter communication and Alligator communication as described above.
- This is a process of delivering b33 to the calculation nodes N2 and N5.
- Each of these processes is shown in the table corresponding to each step in FIG.
- Step 732 is a process in which each calculation node 100 calculates the matrix product ai3 ⁇ b3j of the submatrix and adds it to the memory 120, which corresponds to step 422 in the conventional algorithm.
- step 732 the data of ai1 ⁇ b1j + ai2 ⁇ b2j + ai3 ⁇ b3j is stored in the data storage area 124 of the memory 120 of each calculation node 100 as the data of the final minor matrix cij.
- each calculation node 100 finally obtains a calculation result for the submatrix cij, which is a part of the matrix C representing the matrix product A ⁇ B and is in charge of the calculation.
- the relative communication time when the parallel calculation method according to the first embodiment of the present invention is used is 2 / N when the conventional algorithm is used, and the relative theoretical performance (that is, 1 / T). Is N / 2 times faster.
- FIG. 9 is a flowchart showing the operation of the parallel computing system 10 according to the second embodiment of the present invention. Further, FIG. 10 is a diagram visually showing how the submatrix is routed between the calculation nodes 100 in the second embodiment of the present invention, and corresponds to FIG. 8 of the first embodiment. To do.
- the difference between the second embodiment and the first embodiment of the present invention is that in the second embodiment, the three Scatter communications in the first embodiment are integrated into one "Alltoall communication". That is, the Scatter communication in steps 704, 714, and 724 of the first embodiment is aggregated as the Alltoall communication in step 904 of the second embodiment, and the Scatter communication in steps 708, 718, and 728 of the first embodiment is , Is aggregated as Alltoall communication in step 906 of the second embodiment.
- the steps other than steps 904 and 906 are the same as the corresponding steps in the flowchart of FIG. 7 of the first embodiment.
- steps 902, 903, 908, 910, 912, 914, 916, 918, 920, 922, and 924 of the second embodiment are the steps 702, 703, 706, 710, 712 of the first embodiment, respectively. , 716, 720, 722, 726, 730, 732.
- steps 904 and 906 will be described.
- step 904 all the calculation nodes 100 transmit the submatrix aij of the matrix A, which is owned by each, to all the calculation nodes 100 by "Alltoall communication".
- "Alltoall communication” is a process in which data held by a certain calculation node 100 is subdivided into small data and each small data is sent to the corresponding calculation node 100 in parallel by all the calculation nodes 100. It is what you do. As a result, the subdivided and different parts of all the minor matrices aij are simultaneously distributed to the separate compute nodes 100.
- the calculation node N0 divides the minor matrix a11 into nine small data, and divides the small data a111, a112, a113, a114, a115, a116, a117, and a118 into the calculation nodes N1, N2, and N3, respectively. , N4, N5, N6, N7, N8.
- the transfer of each small piece of data from this compute node N0 to each compute node 100 is shown at the top of the table shown as step 904 in FIG.
- the calculation node N4 divides the minor matrix a22 into nine small data, and divides the small data a220, a221, a222, a223, a225, a226, a227, and a228 into the calculation nodes N0, N1, N2, and N3, respectively. , N5, N6, N7, N8.
- the transfer of each small data from the calculation node N4 to each calculation node 100 is shown in the fifth row from the top of the table in step 904 of FIG. The same applies to the other calculation nodes 100, and the specific contents thereof can be easily understood from the description in each stage of the table in step 904 of FIG.
- step 904 all the communication links 20 of the parallel computing system 10 are used, and the communication band of the parallel computing system 10 is fully utilized without waste. Note that data transfer has been achieved.
- step 906 all the calculation nodes 100 transmit the submatrix bij of the matrix B each possessed to all the calculation nodes 100 by Alltoall communication.
- the specific contents are shown in the table of step 906 of FIG. 10, and can be easily understood by referring to the above description of step 904.
- all communication links 20 of the parallel computing system 10 are utilized without waste by Alltoall communication.
- each minor matrix aij and bij is relayed to another compute node 100 by the two-step communication of Alltoall communication and Alligator communication, so that the minor data of each minor matrix aij and bij is relayed to the other compute node 100. It is transferred from 100 to the destination calculation node 100.
- Alltoall communication is performed in steps 904 and 906 as described above, and Allgather communication is performed in steps 908, 910, 914, 916, 920, and 922 as a whole.
- the number of communications is 2 + 2 ⁇ N.
- the relative communication time when the parallel calculation method according to the second embodiment of the present invention is used is (1 + ⁇ N) / (N ⁇ N) when the conventional algorithm is used, and the relative theoretical performance. Is (N ⁇ N) / (1 + ⁇ N) times faster.
- FIG. 11 is a flowchart showing the operation of the parallel computing system 10 according to the third embodiment of the present invention.
- FIG. 12 is a diagram visually showing how the submatrix is routed between the calculation nodes 100 in the third embodiment of the present invention in a tabular form.
- the third embodiment of the present invention is an improved efficiency of the transfer of small data in the second embodiment described above.
- the Alligator communication in steps 908, 910, 914, 916, 920, and 922 of the second embodiment does not completely exhaust the communication band of the parallel computing system 10.
- the process of step 908 as can be seen from the fact that the leftmost column, the fourth column from the left, and the seventh column from the left of the table in step 908 in FIG. 10 are shown as blank cells.
- the difference between the third embodiment and the second embodiment of the present invention is that, in the third embodiment, the three Alllgather communications in the second embodiment can be performed by using the above-mentioned "blank cell" to obtain two Alltoallv. The point is that it is concentrated in communication.
- the calculation nodes N0, N3, and N6 of the Alllgather communication of step 920 of the second embodiment are each of the minor matrix a13 from each of the other calculation nodes 100.
- the process of acquiring the small data a13k, the small data a23k of the small matrix a23, and the small data a33k of the small matrix a33 is incorporated into the blank cell of the Alligator communication in step 908 of the second embodiment. This is shown in the table of step 1108 in FIG. 12 with a dotted box.
- the calculation nodes N1, N4, and N7 of the Alllgather communication of step 920 of the second embodiment are each minor of the submatrix a13 from each of the other calculation nodes 100.
- the process of acquiring the data a13k, the minor data a23k of the minor matrix a23, and the minor data a33k of the minor matrix a33 is incorporated into the blank cell of the Alligator communication in step 914 of the second embodiment. This is shown in the table of step 1114 in FIG. 12 with a dotted box.
- the calculation node N0 acquires the minor matrix a13
- the calculation nodes N1 and N2 acquire the minor matrix a11
- the calculation node N3 acquires the minor matrix a23
- the calculation nodes N4 and N5. Acquires the minor matrix a21
- the compute node N6 acquires the minor matrix a33
- the compute nodes N7 and N8 acquire the minor matrix a31.
- the calculation node N1 acquires the minor matrix a13
- the calculation nodes N0 and N2 acquire the minor matrix a12
- the calculation node N4 acquires the minor matrix a23
- the calculation nodes N3 and N5 acquire the minor matrix a23.
- the minor matrix a22 is acquired
- the calculation node N7 acquires the minor matrix a33
- the calculation nodes N6 and N8 acquire the minor matrix a32.
- the calculation nodes N0, N1, and N2 of the Alllgather communication of step 922 of the second embodiment are each small data of the submatrix b31 from each of the other calculation nodes 100.
- the process of acquiring each small data b32k of the b31k and the small matrix b32 and each small data b33k of the small matrix b33 is incorporated into the blank cell of the Alligator communication in step 910 of the second embodiment. This is shown in the table of step 1110 in FIG. 12 with a dotted box.
- the calculation nodes N3, N4, and N5 of the Alllgather communication of step 922 of the second embodiment are each small data of the submatrix b31 from each of the other calculation nodes 100.
- the process of acquiring the small data b32k of the b31k and the small matrix b32 and the small data b33k of the small matrix b33 is incorporated into the blank cell of the Alligator communication in step 916 of the second embodiment. This is shown in the table of step 1116 in FIG. 12 with a dotted box.
- the calculation node N0 acquires the minor matrix b31
- the calculation node N1 acquires the minor matrix b32
- the calculation node N2 acquires the minor matrix b33
- the calculation nodes N3 and N6 are small.
- the matrix b11 is acquired
- the calculation nodes N4 and N7 acquire the minor matrix b12
- the calculation nodes N5 and N8 acquire the minor matrix b13.
- the calculation node N3 acquires the minor matrix b31
- the calculation node N4 acquires the minor matrix b32
- the calculation node N5 acquires the minor matrix b33
- the calculation nodes N0 and N6 acquire the minor matrix.
- Acquire b21, compute nodes N1 and N7 acquire the minor matrix b22
- compute nodes N2 and N8 acquire the minor matrix b23.
- steps 1102, 1103, 1104, 1106, 1112, 1118, and 1120 are the same as steps 902, 903, 904, 906, 912, 918, and 924 of the second embodiment, respectively.
- all communication links of the parallel computing system 10 are performed by performing Alltoall communication or Alltoallv communication in any of steps 1104-1110, 1114, and 1116. 20 is used without waste.
- each submatrix aij and bij is relayed to another calculation node 100 by the two-step communication of Alltoall communication and Alltoallv communication, so that the small data of each minor matrix aij and bij is relayed to the other calculation node 100. It is transferred from 100 to the destination calculation node 100.
- Alltoall communication is performed in steps 1104 and 1106, Alltoallv communication is performed in steps 1108, 1110, 1114, and 1116, and the total number of communications is reached. Is 2 ⁇ N.
- small data obtained by dividing the minor matrix aij or bij into the number of calculation nodes 100 is transferred, so that the data transferred in each communication is transferred.
- the relative communication time when the parallel calculation method according to the third embodiment of the present invention is used is 1 / N when the conventional algorithm is used, and the relative theoretical performance is increased by N times. ..
- FIG. 13 is a flowchart showing the operation of the parallel computing system 10 according to the fourth embodiment of the present invention.
- FIG. 14 is a diagram visually showing the initial arrangement of data to each calculation node 100 and the routing of data between calculation nodes 100 in the fourth embodiment of the present invention in a tabular format.
- the submatrix aij of the matrix A is distributed to each calculation node 100 by Alltoall communication in step 904 of the second embodiment described above (or step 1104 of the third embodiment), and the second embodiment
- the submatrix aij and bij are small in advance so that the state is the same as when the minor matrix bij of the matrix B is distributed to each calculation node 100 by Alltoall communication in step 906 of the embodiment (or step 1106 of the third embodiment). It differs from each of the above-described embodiments in that the data is distributed and arranged in each calculation node 100.
- each submatrix aij of the matrix A is divided into a plurality of small data, and the divided small data are distributed and arranged in the corresponding calculation nodes 100.
- each small data a110, a111, a112, a113, a114, a115, a116, a117, and a118 obtained by dividing the minor matrix a11 are calculated nodes, respectively. It is arranged at N0, N1, N2, N3, N4, N5, N6, N7, N8.
- the small data a120, a121, a122, a123, a124, a125, a126, a127, and a128 obtained by dividing the minor matrix a12 are the calculation nodes N0, N1, N2, N3, N4, N5, N6, N7, respectively. , N8.
- the small data of the other minor matrix aij is also arranged in each calculation node 100 in the same manner.
- the calculation node N0 includes the small data a110 of the submatrix a11, the small data a120 of the submatrix a12, the small data a130 of the submatrix a13, and the small data a210 of the submatrix a21.
- the small data a220 of the submatrix a22, the small data a230 of the submatrix a23, the small data a310 of the submatrix a31, the small data a320 of the submatrix a32, and the small data a330 of the submatrix a33 are held.
- the calculation node N1 includes the small data a111 of the submatrix a11, the small data a121 of the submatrix a12, the small data a131 of the submatrix a13, the small data a211 of the submatrix a21, and the small data a22 of the submatrix a22.
- the data a221, the small data a231 of the submatrix a23, the small data a311 of the submatrix a31, the small data a321 of the submatrix a32, and the small data a331 of the submatrix a33 are held. The same applies to the other calculation nodes 100.
- each minor matrix bij of the matrix B is divided into a plurality of minor data, and the divided minor data are distributed and arranged in the corresponding calculation nodes 100.
- step 1306, 1312, and 1318 the small data of the minor matrix aij possessed by each calculation node 100 is sequentially exchanged between the calculation nodes 100 by Alltoallv communication.
- the calculation nodes N0, N3, and N6 from each calculation node 100 each small data a11k of the minor matrix a11, each small data a21k of the minor matrix a21, and each small of the minor matrix a31.
- the process of acquiring the data a31k is incorporated into a blank cell of the Alligator communication in step 908 of the second embodiment.
- the calculation nodes N1, N4, and N7 from each calculation node 100 each small data a12k of the minor matrix a12, each small data a22k of the minor matrix a22, and each small data a32k of the minor matrix a32.
- the compute nodes N0, N1, and N2 acquire the minor matrix a11
- the compute nodes N3, N4, and N5 acquire the minor matrix a21
- the compute nodes N6, N7, and N8 Gets the minor matrix a31.
- the calculation nodes N0, N1, and N2 acquire the minor matrix a12
- the calculation nodes N3, N4, and N5 acquire the minor matrix a22
- the calculation nodes N6, N7, and N8 Acquire the minor matrix a32.
- the calculation nodes N0, N1, and N2 acquire the minor matrix a13
- the calculation nodes N3, N4, and N5 acquire the minor matrix a23
- the calculation nodes N6, N7, and N8 Acquire the minor matrix a33.
- steps 1308, 1314, and 1320 the small data of the minor matrix bij possessed by each calculation node 100 is sequentially exchanged between the calculation nodes 100 by Alltoallv communication.
- the calculation nodes N0, N1, and N2 from each calculation node 100 each small data b11k of the minor matrix b11, each minor data b12k of the minor matrix b12, and each minor of the minor matrix b13.
- the process of acquiring the data b13k is incorporated in the blank cell of the Alligator communication in step 910 of the second embodiment.
- the calculation nodes N3, N4, and N5 from each calculation node 100 each small data b21k of the minor matrix b21, each minor data b22k of the minor matrix b22, and each minor data b23k of the minor matrix b23.
- the compute nodes N0, N3, and N6 acquire the minor matrix b11, the compute nodes N1, N4, and N7 acquire the minor matrix b12, and the compute nodes N2, N5, and N8. Gets the minor matrix b13. Further, by the Alltoallv communication in step 1314, the calculation nodes N0, N3, and N6 acquire the minor matrix b21, the calculation nodes N1, N4, and N7 acquire the minor matrix b22, and the calculation nodes N2, N5, and N8 Acquire the minor matrix b23.
- the compute nodes N0, N3, and N6 acquire the minor matrix b31
- the compute nodes N1, N4, and N7 acquire the minor matrix b32
- the compute nodes N2, N5, and N8 Acquire the minor matrix b33.
- Alltoalllv communication is performed in steps 1306, 1308, 1312, 1314, 1318, and 1320, and the number of communications is 2 ⁇ N.
- the relative communication time when the parallel calculation method according to the fourth embodiment of the present invention is used is 1 / N when the conventional algorithm is used, and the relative theoretical performance is increased by N times. ..
- FIG. 15 is a list summarizing the performance of the parallel calculation method based on the conventional algorithm and the parallel calculation method according to each embodiment of the present invention.
- FIG. 16 is a graph showing the results of simulating parallel calculation by each method and measuring the execution time required for the calculation.
- the horizontal axis of the graph represents the size of the matrix to be calculated (that is, the number of rows (columns)), and the vertical axis is the calculation execution time obtained by simulation.
- a parallel computing system in which 64 computing nodes 100 are connected by a full mesh was modeled.
- the results for the largest size matrix in the simulation are shown in the rightmost column of the table in FIG.
- This numerical value shows the relative performance of the method of each embodiment when the calculation execution time in the case of the conventional algorithm is 1.
- FIG. 17 is a conceptual diagram showing a procedure in which each calculation node 100 of the parallel calculation system 10 performs matrix calculation by the Canon algorithm, and corresponds to FIG. 5 described above in the case of SUMMA. Further, FIG. 18 is an example of a routing table between the calculation nodes 100 according to the fifth embodiment of the present invention based on the Canon algorithm of FIG.
- the operation of the calculation node N1 is as follows.
- the calculation node N1 calculates the matrix product a12 ⁇ b22 in step 1710 by using the minor matrix a12 stored in the memory 120 in step 1702 and the minor matrix b22 obtained from the calculation node N4 in steps 1808 and 1810. Further, the calculation node N1 calculates the matrix product a11 ⁇ b12 in step 1716 by using the minor matrix a11 obtained from the calculation node N0 in steps 1814 and 1816 and the minor matrix b12 stored in the memory 120 in step 1704. ..
- calculation node N1 uses the minor matrix a13 obtained from the calculation node N2 in steps 1824 and 1826 and the minor matrix b32 obtained from the calculation node N7 in steps 1828 and 1830 to obtain the matrix product a13 ⁇ b32 in step 1722. calculate.
- the operation of the calculation node 100 other than the calculation node N1 can be similarly understood by referring to FIGS. 17 and 18.
- FIG. 19 is a conceptual diagram showing a procedure in which each calculation node 100 of the parallel calculation system 10 performs matrix calculation by the Fox algorithm.
- FIG. 20 is an example of a routing table between the calculation nodes 100 according to the sixth embodiment of the present invention based on the Fox algorithm of FIG.
- the operation of the calculation node N1 is as follows.
- the calculation node N1 calculates the matrix product a11 ⁇ b12 in step 1910 by using the minor matrix a11 obtained from the calculation node N0 in steps 2004 and 2006 and the minor matrix b12 stored in the memory 120 in step 1904. Further, the calculation node N1 calculates the matrix product a12 ⁇ b22 in step 1916 by using the minor matrix a12 stored in the memory 120 in step 1902 and the minor matrix b22 obtained from the calculation node N4 in steps 2018 and 2020. ..
- the calculation node N1 uses the minor matrix a13 obtained from the calculation node N2 in steps 2024 and 2026 and the minor matrix b32 obtained from the calculation node N7 in steps 2018 and 2030 to obtain the matrix product a13 ⁇ b32 in step 1922. calculate.
- the operation of the calculation node 100 other than the calculation node N1 can be similarly understood by referring to FIGS. 19 and 20.
- the parallel computing system 10 is configured such that each computing node 100 is fully mesh-connected to all computing nodes 100 other than itself, as shown in FIG.
- Such a connection form of the calculation node 100 can be called a "one-dimensional full mesh connection".
- the present invention can also be applied to a parallel computing system in which the computing node 100 is connected in a different form.
- FIG. 21 is a configuration diagram of a parallel computing system 210 according to another embodiment of the present invention.
- the parallel computing system 210 includes a plurality of computing nodes 100.
- Each calculation node 100 is the same as the calculation node 100 in the parallel computing system 10 of FIG.
- the parallel computing system 210 is composed of nine calculation nodes N0 to N8 like the parallel computing system 10 of FIG.
- the number N (where N is a square number) of the calculation nodes 100 constituting the parallel computing system 210 may be any number.
- the nine computing nodes N0 to N8 of the parallel computing system 210 are divided into three groups G1, G2, and G3, each including three computing nodes 100.
- the first group G1 contains compute nodes N0, N1, and N2, the second group G2 comprises compute nodes N3, N4, and N5, and the third group G3 comprises compute nodes N6, N7, and N8. ..
- Computation nodes 100 are fully meshed within each of these groups. For example, in the first group G1, the compute nodes N0, N1, and N2 are fully meshed (ie, connected to all compute nodes 100 except themselves). The same applies to the second group G2 and the third group G3. As a result, three full-mesh connection networks G1, G2, and G3 that do not overlap each other are formed.
- the nine compute nodes N0 to N8 of the parallel computing system 210 further include three compute nodes 100, respectively, and three other groups G4, G5, and G6 different from the above groups G1, G2, and G3. It is also divided into.
- the fourth group G4 includes compute nodes N0, N3, and N6, the fifth group G5 includes compute nodes N1, N4, and N7, and the sixth group G6 includes compute nodes N2, N5, and N8. ..
- the calculation node 100 is fully mesh-connected within each of these groups G4, G5, and G6, as in the case of the groups G1, G2, and G3.
- the compute nodes N0, N3, and N6 are fully meshed.
- three full-mesh connection networks G4, G5, and G6 are formed, which are independent of the above-mentioned full-mesh connection networks G1, G2, and G3.
- the calculation node N0 is a component of the full-mesh connection network G1 composed of the calculation nodes arranged in the horizontal direction in FIG. 21, and is a full-mesh connection network G4 composed of the calculation nodes arranged in the vertical direction in FIG. It is also a component of.
- each of the calculation nodes 100 is a component of both a full-mesh connection network consisting of calculation nodes arranged horizontally and a full-mesh connection network consisting of calculation nodes arranged vertically in FIG. 21.
- Such a connection form of the calculation node 100 in FIG. 21 can be called a “two-dimensional full mesh connection”.
- the parallel computing system 210 includes three full-mesh connection networks G1, G2, and G3 consisting of computing nodes arranged horizontally in FIG. 21, and three full networks consisting of computing nodes arranged vertically in FIG. 21. It has mesh connection networks G4, G5, and G6. Within each of these full-mesh connection networks, the submatrix is divided into small data and transferred between the compute nodes 100 according to the same method as in any of the embodiments described above.
- the calculation nodes N0, N1, and N2 divide the small matrix a1j held by each into three small data, and divide the divided small data into the full-mesh connection network. It is transmitted to each calculation node 100 in G1 by Scatter communication or Alltoall communication.
- the calculation nodes N0, N1, and N2 collect the above-mentioned small data distributed in the full-mesh connection network G1 by Alligator communication or Alltoallv communication, and reconstruct the original minor matrix a1j.
- the minor matrices a2j and a3j are divided into three small data and transferred between the calculation nodes 100 in the full mesh connection network.
- the full mesh connection network G4 the small data obtained by dividing the minor matrix bi1 into three is transferred between the calculation nodes N0, N3, and N6 in the same manner as described above. Further, in the full mesh connection networks G5 and G6, the small data of the minor matrices bi2 and bi3 are similarly transferred between the calculation nodes 100.
- each computing node 100 can acquire data necessary for the calculation of the minor matrix cij from the other computing nodes 100.
- the communication time when the Alltoall communication and the Alltoallv communication are used for the transfer of the minor matrix is compared with the above-mentioned third embodiment (note that the Alltoall communication and the Alltoallv communication are similarly used).
- the small matrix is divided into the number of calculation nodes included in one group of the parallel calculation system 210 (not the total number of calculation nodes of the parallel calculation system 210), so that the communication per communication is performed.
- the communication band per computing node is a constant value "1”
- each computing node 100 communicates with (N-1) computing nodes other than itself, so that a communication link is provided.
- the parallel computing system 210 according to the seventh embodiment of the present invention can perform the same high-speed processing as the parallel computing system 10 according to each of the above-described embodiments. Further, assuming that wavelength division multiplexing communication is performed between calculation nodes connected by (one-dimensional or two-dimensional) full mesh, N different wavelengths are prepared in the parallel computing system 10 of FIG. 1 by one-dimensional full mesh connection. However, in the parallel computing system 210 of FIG. 21 by two-dimensional full mesh connection, the number of wavelengths required is ⁇ N. In general, the wavelength band that can be used for communication is limited, and therefore the number of wavelengths that can be used is also limited.
- FIG. 22 is a configuration diagram of a parallel computing system 220 according to an embodiment of the present invention, showing a physical topology between computing nodes 300. Although eight computing nodes 300 are shown in FIG. 22, the number of computing nodes 300 constituting the parallel computing system 220 may be arbitrary.
- Each calculation node 300 is physically connected to the wavelength router 225 by an optical fiber 227.
- the parallel computing system 220 has a star-shaped physical topology in which all computing nodes 300 are physically connected to the wavelength router 225.
- Each compute node 300 can communicate with any other compute node 300 via the wavelength router 225. Therefore, the parallel computing system 220 is logically configured to have a one-dimensional full-mesh connection logical topology as shown in FIG. 1 or a two-dimensional full-mesh connection logical topology as shown in FIG. Has been done.
- the wavelength router 225 includes a plurality of input / output ports P1 to P8, and the corresponding one of the calculation nodes N1 to N8 is connected to each of them.
- the optical signal transmitted from each calculation node 300 is input to any of ports P1 to P8 of the wavelength router 225.
- the wavelength router 225 has a function of distributing the optical signal input to each port to one of the output ports of ports P1 to P8 according to the wavelength. By this wavelength routing, the optical signal from the source calculation node 300 is routed to the destination calculation node 300. For example, as shown in FIG.
- the optical signals of the wavelengths ⁇ 1, ⁇ 2, ⁇ 3, ⁇ 4, ⁇ 5, ⁇ 6, and ⁇ 7 transmitted from the calculation node N1 are the calculation nodes N2, N3, N4, N5, and N6, respectively. , N7, N8.
- FIG. 23 is a table showing the routing by the wavelength router 225.
- the calculation node N1 illustrated above is the source, it is shown at the top of the routing table in FIG.
- the optical signals of wavelengths ⁇ 1, ⁇ 2, ⁇ 3, ⁇ 4, ⁇ 5, ⁇ 6, and ⁇ 7 transmitted from the calculation node N2 are the calculation nodes N3, N4, respectively. It has been shown to be routed to N5, N6, N7, N8, N1.
- a wavelength router 225 having such a cyclic wavelength routing function can be realized by using a known passive optical circuit.
- FIG. 24 is a configuration diagram of a calculation node 300 applied to the parallel calculation system 220 using wavelength routing.
- the compute node 300 includes a processor 110, a memory 120, a crossbar switch 330, a plurality of light source / modulator units 340, a plurality of photodetectors 350, a multiplexer 360, and a demultiplexer 370.
- the processor 110 supplies data to be transmitted to each light source / modulator unit 340 provided corresponding to each of the other computing nodes 300 via the crossbar switch 330.
- Each light source / modulator unit 340 generates carrier light of a specific wavelength (one wavelength of ⁇ 1 to ⁇ 7 assigned in advance to the light source / modulator unit 340), and uses the input data from the crossbar switch 330 as input data. Based on this, the carrier light is modulated and output to the multiplexer 360.
- the optical signals of each wavelength from each light source / modulator unit 340 are wavelength-multiplexed by the multiplexer 360 and sent to the transmitting side optical fiber 227-1. Further, the wavelength division multiplexing optical signal transmitted from the other plurality of computing nodes 300 is input to the demultiplexer 370 through the receiving side optical fiber 227-2.
- the wavelength division multiplexing signal is wavelength-separated by the demultiplexer 370, and each signal of each wavelength is received by each photodetector 350 provided corresponding to each of the other calculation nodes 300.
- FIG. 24 shows that data transfer between the memory 120 and the crossbar switch 330 is performed via the processor 110, but a direct memory access controller between the memory 120 and the crossbar switch 330. (DMAC) may be installed to offload data transfer between the memory 120 and the crossbar switch 330 from the processor 110 and performed via the DMAC.
- DMAC direct memory access controller
- the light source / modulator unit 340 of FIG. 24 has a built-in light source, the light source is installed outside the calculation node 300, and carrier light is transmitted from the light source installed outside the light source via an optical fiber or the like to the modulator unit. You may enter it in 340.
- each calculation node 300 is physically connected via an optical fiber 227 and a wavelength router 225, and each calculation node is used by wavelength routing by the wavelength router 225. It has a configuration in which 300 are logically connected by a full mesh.
- the advantages of this parallel computing system 220 as compared with the conventional parallel computing system in which each computing node is connected via a packet switch will be described below.
- the power consumption required for communication between computing nodes the power consumption of a conventional electric packet switch is proportional to the throughput (line rate x number of ports), while the power consumption of the wavelength router 225 is independent of the throughput. Therefore, the parallel calculation system 220 of the present embodiment has lower power consumption, especially when the throughput is high.
- the upper limit of the number of ports of the conventional electric packet switch is mainly determined by the number of electric connectors that can be mounted on the front panel, and is about 36 per 1U.
- the upper limit of the number of ports of the wavelength router is mainly determined by the number of wavelengths, and if the symbol rate of the signal is 25 GBaud and the channel interval is 50 GHz, about 80 ports are possible in the entire C band used in long-distance optical fiber communication. Is. If an MT connector or the like is used as the optical fiber, it can be arrayed at a pitch of 250 ⁇ m or less, and the connector for 160 optical fibers required for connection with 80 computing nodes can be stored in the 1U front panel. Is.
- the parallel computing system 220 of the present embodiment can be miniaturized as compared with the conventional one.
- conventional electric packet switches depend on the bit rate and modulation method, so when increasing the communication speed between computing nodes, electricity is used.
- the wavelength router 225 does not include electrical signal processing and is independent of the bit rate and modulation method, it can be used as it is. Therefore, the parallel computing system 220 of the present embodiment has the advantages of being more economical than the conventional one and being friendly to the global environment.
- Parallel computing system 20 Communication link 100 Computing node 110 Processor 120 Memory 122 Program storage area 124 Data storage area 130 Transmission / reception unit 132 Communication port 210 Parallel computing system 220 Parallel computing system 225 Wavelength router 227 Optical fiber 300 Computational node 330 Crossbar switch 340 Light Source / Modulator Unit 350 Optical Detector 360 Multiplexer 370 Demultiplexer
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computer Hardware Design (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Multi Processors (AREA)
- Complex Calculations (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
並列計算の高速化を図る。 並列計算方法は、データを分割した第1レベルの小データの各々を複数の計算ノードの各々に配置するステップと、複数の計算ノードのうちの少なくとも1つの第1計算ノードにおいて、第1レベルの小データをさらに第2レベルの小データに分割するステップと、第2レベルの小データの各々を、少なくとも1つの第1計算ノードから複数の計算ノードへ並列転送するステップと、転送された第2レベルの小データを、複数の計算ノードの各々から複数の計算ノードのうちの少なくとも1つの第2計算ノードへ並列転送するステップと、少なくとも1つの第2計算ノードにおいて、複数の計算ノードから転送された第2レベルの小データを用いて第1レベルの小データを再構成するステップと、を含む。
Description
本発明は、並列計算方法およびシステムに関する。
従来、複数の計算ノードを用いて並列計算を行うシステムが開発されている。並列計算の一例として、行列積計算がある。行列積計算は、科学技術計算全般、ビッグデータ解析、人工知能等の分野で幅広く使われている最も基本的な計算要素の一つである。
行列積を並列計算で行う従来の方法として、例えば非特許文献1が知られている。
Robert A. van de Geijn 他、"SUMMA: Scalable Universal Matrix Multiplication Algorithm"、Concurrency Practice and Experience 9(4)、1997年4月、p. 255-274
並列計算の高速化は、データセンタ等におけるシステムの消費電力量の削減にとって重要である。
本発明は、上記の点に鑑みてなされたものであり、その目的の1つは、並列計算の高速化を図ることにある。
上述した課題を解決するために、本発明の一態様は、複数の計算ノードを備える並列計算システムにおいて並列計算を行う方法であって、データを分割した第1レベルの小データの各々を前記複数の計算ノードの各々に配置する第1ステップと、前記複数の計算ノードのうちの少なくとも1つの計算ノードを含む第1計算ノード群において、前記第1レベルの小データをさらに第2レベルの小データに分割する第2ステップと、前記第2レベルの小データの各々を、前記第1計算ノード群から前記複数の計算ノードの部分集合である中継ノード群へ並列転送する第3ステップと、前記転送された第2レベルの小データを、前記中継ノード群から前記複数の計算ノードのうちの少なくとも1つの計算ノードを含む第2計算ノード群へ並列転送する第4ステップと、前記第2計算ノード群において、前記中継ノード群から転送された第2レベルの小データを用いて前記第1レベルの小データを再構成する第5ステップと、を含む並列計算方法を提供する。
また、本発明の他の一態様は、上記一態様において、前記再構成された第1レベルの小データを用いて前記並列計算の一部分を実行する第6ステップをさらに含む、並列計算方法を提供する。
また、本発明の他の一態様は、上記一態様において、前記第3ステップにおける前記第1計算ノード群からの並列転送は、前記第1計算ノード群と前記中継ノード群との間で利用可能なすべての通信リンクが使用されるように、前記第1計算ノード群が、それぞれの前記第2レベルの小データを並列転送することを含む、並列計算方法を提供する。
また、本発明の他の一態様は、上記一態様において、前記第4ステップにおける前記第2計算ノード群への並列転送は、前記中継ノード群と前記第2計算ノード群との間で利用可能なすべての通信リンクが使用されるように、前記中継ノード群が、前記第2レベルの小データを並列転送することを含む、並列計算方法を提供する。
また、本発明の他の一態様は、上記一態様において、前記計算ノードは、それぞれ複数の通信ポートを備え、前記第3ステップにおける前記第1計算ノード群から前記中継ノード群へのデータ通信または前記第4ステップにおける前記中継ノード群から前記第2計算ノード群へのデータ通信は、前記複数の通信ポートを介して行われる、並列計算方法を提供する。
また、本発明の他の一態様は、上記一態様において、前記複数の計算ノードは論理フルメッシュ接続される、並列計算方法を提供する。
また、本発明の他の一態様は、上記一態様において、前記並列計算は行列演算であり、前記データは行列を表すデータであり、前記第1レベルの小データは、前記行列を行方向および列方向に分割した小行列を表すデータである、並列計算方法を提供する。
また、本発明の他の一態様は、上記一態様において、前記小行列は、前記行列をN分割(ただしNは計算ノードの数)した小行列であり、前記第2レベルの小データは、前記小行列をさらにN分割したデータである、並列計算方法を提供する。
また、本発明の他の一態様は、上記一態様において、前記行列演算は行列積の計算である、並列計算方法を提供する。
また、本発明の他の一態様は、複数の計算ノードを備える並列計算システムにおいて並列計算を行う方法であって、データを分割した第1レベルの小データの各々を、さらに第2レベルの小データに分割するステップと、前記第2レベルの小データの各々を前記複数の計算ノードの各々に配置するステップと、前記第2レベルの小データを、前記複数の計算ノードの各々から前記複数の計算ノードのうちの少なくとも1つの計算ノードへ並列転送するステップと、前記少なくとも1つの計算ノードにおいて、前記複数の計算ノードから転送された第2レベルの小データを用いて前記第1レベルの小データを再構成するステップと、を含む並列計算方法を提供する。
また、本発明の他の一態様は、複数の計算ノードを備える並列計算システムであって、データを分割した第1レベルの小データの各々が前記複数の計算ノードの各々に配置され、前記複数の計算ノードのうちの少なくとも1つの第1計算ノードが、前記第1レベルの小データをさらに第2レベルの小データに分割し、前記第2レベルの小データの各々を前記複数の計算ノードの部分集合である中継ノード群へ並列転送するように構成され、前記複数の計算ノードのうちの少なくとも1つの第2計算ノードが、前記第2レベルの小データを前記中継ノード群から並列転送によって取得し、前記中継ノード群から転送された第2レベルの小データを用いて前記第1レベルの小データを再構成するように構成される、並列計算システムを提供する。
また、本発明の他の一態様は、複数の計算ノードを備える並列計算システムであって、データを分割した第1レベルの小データの各々がさらに第2レベルの小データに分割され、前記第2レベルの小データの各々が前記複数の計算ノードの各々に配置され、前記複数の計算ノードのうちの少なくとも1つの計算ノードが、前記第2レベルの小データを前記複数の計算ノードの各々から並列転送によって取得し、前記複数の計算ノードから転送された第2レベルの小データを用いて前記第1レベルの小データを再構成するように構成される、並列計算システムを提供する。
本発明によれば、並列計算を高速に行うことができる。
以下、図面を参照しながら本発明の実施形態について詳しく説明する。
図1は、本発明の一実施形態に係る並列計算システム10の構成図である。並列計算システム10は、複数の計算ノード100を備える。図1は、計算ノード100間の論理トポロジーを示している。各計算ノード100は、それぞれに割り当てられた所定の計算を他の計算ノード100と並列に実行するコンピュータである。図1の例において、並列計算システム10は、9台の計算ノード100、すなわち、計算ノードN0、計算ノードN1、計算ノードN2、計算ノードN3、計算ノードN4、計算ノードN5、計算ノードN6、計算ノードN7、および計算ノードN8から構成されている。しなしながら、計算ノード100の台数は一例にすぎず、任意の台数、例えば、数十台、数百台、あるいは数千台の計算ノード100が、並列計算システム10を構成してもよい。
各計算ノード100の間は、通信リンク20によって接続されている。通信リンク20は、それが接続する両端の計算ノード100が相互にデータを送受信することを可能にする伝送路である。通信リンク20は、電気信号または光信号の形態でデータを伝送する。通信リンク20は、有線でも無線でもよい。図1の例において、計算ノードN0は、他のすべての計算ノード100、すなわち、計算ノードN1、計算ノードN2、計算ノードN3、計算ノードN4、計算ノードN5、計算ノードN6、計算ノードN7、および計算ノードN8と通信リンク20によって接続されている。他の計算ノード100も同様に、自分以外のすべての計算ノード100と通信リンク20によって接続されている。このように、図1に例示された並列計算システム10では、各計算ノード100が通信リンク20によって「フルメッシュ」接続されている。しかしながら、計算ノード100間の接続はフルメッシュでなくともよく、ある計算ノード100間の通信リンク20が省略されていてもよい。通信リンク20が存在していない計算ノード100間の通信は、例えば、他の計算ノード100を経由して行われてもよい。なお、本明細書では、通信リンク20の本数を、一方向の通信毎に1本と数えることにする。図1において、計算ノード100間を接続する各通信リンク20は簡単化のため1本の線で示しているが、実際には、各計算ノード100間では同時に双方向の通信が可能であるので、各計算ノード100間は2本の通信リンク20で結ばれている。従って、図1の例では、9×8=72本の通信リンク20が存在する。なお、図1は計算ノード100間の論理トポロジーがフルメッシュ接続であることを示しており、必ずしも計算ノード100間の物理トポロジーがフルメッシュ接続である必要はない。本発明の実施形態は、後述(図22~24)の波長ルーティングを用いる並列計算システムのように、論理トポロジーはフルメッシュ接続であるが、物理トポロジーはスター型接続である構成の並列計算システムを含む。
このように、本発明の実施形態に係る並列計算システム10は、各計算ノード100間が論理的にフルメッシュ接続された構成を有している。従来の、各計算ノード間がパケット・スイッチを介して接続された構成の並列計算システムでは、計算ノードとパケット・スイッチ間のリンクを時分割で利用するため、高い柔軟性を有する反面、パケットの衝突を回避するための複雑な手順が必要となり、通信遅延および消費電力増加の原因となる。これに対し、各計算ノード100間が論理的にフルメッシュ接続された本実施形態の並列計算システム10では、全計算ノード100間が常時直接接続されているため、パケット間の衝突を考慮する必要がなく、より簡単な処理で済ませることができ、通信遅延や消費電力の削減が可能である。
ある計算を実施する場合、並列計算システム10は、当該計算の処理を複数に分割し、分割したサブ処理を各計算ノード100に割り当てる。すなわち、各計算ノード100は、並列計算システム10が全体として実施する計算のうちの一部分を担当する。また並列計算システム10は、計算で使用するデータ、あるいは計算の対象であるデータを複数に分割し、分割した小データを各計算ノード100に分散して配置する。各計算ノード100は、自分が担当する計算を実行するが、その計算に必要なデータを保持していない場合がある。計算ノード100は、そのようなデータを、当該データを保持している他の計算ノード100から通信リンク20を介して入手する。このようにして各計算ノード100が自分に割り当てられたサブ処理を実行することで、並列計算システム10における計算が、複数の計算ノード100の協働によって並列に処理される。
図2は、本発明の一実施形態に係る計算ノード100の構成図である。図2は、図1における複数の計算ノード100のうちのある計算ノード100の構成を示している。複数の計算ノード100のうちの他の計算ノード100は、図2と同一の構成を有していてもよいし、あるいは図2とは異なるように構成されてもよい。
図2において、計算ノード100は、プロセッサ110、メモリ120、および送受信ユニット130を備える。メモリ120は、少なくともプログラム格納領域122およびデータ格納領域124を含む。プログラム格納領域122には、計算ノード100に本発明の一実施形態に係る後述の動作を行わせるコンピュータプログラムが格納される。プロセッサ110が当該コンピュータプログラムをメモリ120から読み出して実行することで、計算ノード100は、本発明の一実施形態に係る後述の動作を行う。
データ格納領域124には、並列計算で使用する全体データを複数に分割した小データの1つであって、当該計算ノード100がその配置先として指定された小データが、あらかじめ格納される。またデータ格納領域124には、当該計算ノード100が計算に必要とする小データであって、他の計算ノード100から入手した小データが、一時的に格納される。さらに、データ格納領域124には、当該計算ノード100が計算を実行することによって生成されたデータも格納される。
送受信ユニット130は、当該計算ノード100と他の計算ノード100との間で、各計算ノード100が計算に必要とする小データを送受信する。具体的に、送受信ユニット130は、当該計算ノード100に分散配置されメモリ120のデータ格納領域124にあらかじめ格納されている小データを、他の計算ノード100が計算に使用するために当該他の計算ノード100へ送信する。また送受信ユニット130は、当該計算ノード100が保持していないが計算に必要な小データを、他の計算ノード100から受信する。
送受信ユニット130は、複数の計算ノード100の各々とデータを並列に送受信するための複数の通信ポート132を備える。各通信ポート132は、通信リンク20によって対応するそれぞれの計算ノード100と接続されている。図2の例において、送受信ユニット130は、8個の通信ポート132を備える。例えば、計算ノードN0に着目すると、通信ポートP0は計算ノードN1と接続され、通信ポートP1は計算ノードN2と接続され、通信ポートP2は計算ノードN3と接続され、通信ポートP3は計算ノードN4と接続され、通信ポートP4は計算ノードN5と接続され、通信ポートP5は計算ノードN6と接続され、通信ポートP6は計算ノードN7と接続され、通信ポートP7は計算ノードN8と接続されている。計算ノードN0以外の計算ノード100においても、各通信ポート132は同様に他の計算ノード100とそれぞれ接続されている。これにより、各計算ノード100は、他の複数の計算ノード100へ同時にデータを送信することが可能であり、また、他の複数の計算ノード100から同時にデータを受信することが可能である。各計算ノード100が比較的粒度の小さい多数の通信ポート132を有し、多数の通信リンク20を介して他の計算ノード100と接続されることによって、仮に1つの通信ポート132が故障しても他の通信ポート132および通信リンク20を経由して通信を継続することができ、高い可用性が期待できる。
図3は、本発明の一実施形態に係る並列計算システム10が対象とする並列計算の一例を示す。並列計算システム10は、行列Aと行列Bの行列積C=A×Bを計算する処理を実行することができる。しかしながら、並列計算システム10に適用し得る並列計算は、行列積の計算に限られない。データAおよびBは行列でなくてもよい。また、2つのデータ(すなわちAおよびB)を使うのではなく、データを1つだけ(例えばデータA)利用する計算や、データを3つ以上利用する計算であってもよい。並列計算システム10は、少なくとも1つのあるデータ(例えばデータA)を小データに分割して複数の計算ノード100に分散配置し、各計算ノード100が計算に必要な小データを他の計算ノード100から入手するように実行可能な、あらゆる種類の並列計算を対象とすることができる。
以下、本発明の実施形態は行列積の計算に関して説明される。計算ノード100の台数がN(=p×q;ただしp、qは自然数)のとき、行列A、Bはそれぞれ行方向にp分割、列方向にq分割される。必ずしもp=qである必要はないが、p=qの場合に行列AとBの通信回数が一致し、最も効率良く計算が行えるので、以下ではp=q、すなわちN=p2の場合を説明する。行列Aと行列Bに関して行列積A×Bを計算できるためには、行列Aの列数と行列Bの行数が等しい必要がある。そこで、行列AをI行K列、行列BをK行J列とする。このとき、行列AをN(=p2)分割した小行列の行数と列数はそれぞれI/p、K/pとなり、行列BをN(=p2)分割した小行列の行数と列数はそれぞれK/p、J/pとなる。したがって、行列Aの小行列の列数と行列Bの小行列の行数が一致するので、行列Aの小行列と行列Bの小行列に関して行列積を計算することができる。例えば、図1の並列計算システム10の場合には、計算ノード100の数は9台であるのでN=9、p=3となり、行列AおよびBはそれぞれ、行方向に3分割、列方向に3分割される。具体的に、図3に示されるように、行列Aの小行列をa11、a12、a13、a21、a22、a23、a31、a32、a33と定義する。同様に、行列Bの小行列をb11、b12、b13、b21、b22、b23、b31、b32、b33と定義する。行列積A×Bを表す行列Cについても同様に、小行列をc11、c12、c13、c21、c22、c23、c31、c32、c33と定義する。なお、上記の仮定から、行列Cの各小行列cijの行数と列数はそれぞれI/p、J/pである。行列Cの各小行列cijは次式で計算される。並列計算システム10の各計算ノード100は、これら9個の小行列cijのうちの1つを計算する処理を担当する。
cij=Σk(aik×bkj)
(ただし、i=1,2,3;j=1,2,3;k=1,2,3)
cij=Σk(aik×bkj)
(ただし、i=1,2,3;j=1,2,3;k=1,2,3)
はじめに、従来知られている並列計算のアルゴリズムを説明する。図4は、従来の行列積計算アルゴリズムの一つであるSUMMA(Scalable Universal Matrix Multiplication Algorithm)を採用した場合における並列計算システム10の動作を示すフローチャートである。また図5は、並列計算システム10の各計算ノード100がSUMMAによる行列計算をどのように進展させていくかを示す概念図である。図5には、3行3列の9個のセルからなるボックスがいくつか示されている。各ボックスにおける3行3列の9個のセルのうち、上段左のセルは計算ノードN0を表し、上段中央のセルは計算ノードN1を表し、上段右のセルは計算ノードN2を表し、中段左のセルは計算ノードN3を表し、中段中央のセルは計算ノードN4を表し、中段右のセルは計算ノードN5を表し、下段左のセルは計算ノードN6を表し、下段中央のセルは計算ノードN7を表し、下段右のセルは計算ノードN8を表している。
まずステップ402において、行列Aの各小行列aijがそれぞれ対応する計算ノードNn(ただしn=3(i-1)+j-1)に配置される。具体的には、図5に示されるように、小行列a11が計算ノードN0に配置され、小行列a12が計算ノードN1に配置され、小行列a13が計算ノードN2に配置され、小行列a21が計算ノードN3に配置され、小行列a22が計算ノードN4に配置され、小行列a23が計算ノードN5に配置され、小行列a31が計算ノードN6に配置され、小行列a32が計算ノードN7に配置され、小行列a33が計算ノードN8に配置される。なお、計算ノード100に配置されるとは、データが計算ノード100のメモリ120のデータ格納領域124に格納されることを意味する。
次にステップ404において、行列Bの各小行列bijが、同様にそれぞれ対応する計算ノードNnに配置される。
次にステップ405において、各計算ノードNnは、それぞれのメモリ120のデータ格納領域124の一部として、小行列cijを格納するための領域を確保し、小行列cijの全要素を0で初期化する。ここで、小行列cijのインデックスiおよびjは、それぞれi=n/3+1、j=n%3+1と表される。ただし、n/3はnを3で割った商の整数部分、n%3はnを3で割った剰余をそれぞれ意味する。
この時点では、例えば計算ノードN0は、行列Aの小行列a11および行列Bの小行列b11を保持しているだけである。そのため計算ノードN0は、行列積Cの計算のうちの担当する小行列c11の計算をまだ行うことができない。他の計算ノード100についても同様である。ここまでが、以下の繰り返し処理を行う前の準備段階である。以降、ステップ406~410、ステップ412~416、およびステップ418~422の3回の繰り返し処理を行う。
1回目の繰り返し処理では、ステップ406において、計算ノードN0、N3、およびN6が、それぞれ保有している行列Aの小行列を、「同じ行内」の他の2つの計算ノード100へ「Broadcast通信」で送信する。「同じ行内」とは、図5に示されるボックスにおいて同一の行に所属することを意味する。例えば、計算ノードN0と計算ノードN1と計算ノードN2は同じ行内に存在する。また「Broadcast通信」とは、ある計算ノード100から他の複数の計算ノード100へ同一のデータを送る通信である。より具体的に、計算ノードN0は小行列a11を計算ノードN1および計算ノードN2へ送信し、計算ノードN3は小行列a21を計算ノードN4および計算ノードN5へ送信し、計算ノードN6は小行列a31を計算ノードN7および計算ノードN8へ送信する。
次にステップ408において、計算ノードN0、N1、およびN2が、それぞれ保有している行列Bの小行列を、「同じ列内」の他の2つの計算ノード100へBroadcast通信で送信する。「同じ列内」とは、図5に示されるボックスにおいて同一の列に所属することを意味する。例えば、計算ノードN0と計算ノードN3と計算ノードN6は同じ列内に存在する。より具体的に、計算ノードN0は小行列b11を計算ノードN3および計算ノードN6へ送信し、計算ノードN1は小行列b12を計算ノードN4および計算ノードN7へ送信し、計算ノードN2は小行列b13を計算ノードN5および計算ノードN8へ送信する。
次にステップ410において、各計算ノードNnは、各々が担当する計算の一部分である2つの小行列同士の行列積ai1×b1jを計算する(ただしi=n/3+1、j=n%3+1)。例えば、計算ノードN0は、ステップ402およびステップ404でそれぞれメモリ120のデータ格納領域124に格納済みの小行列a11と小行列b11を用いて、行列積a11×b11を計算する。また、計算ノードN1は、ステップ404でメモリ120のデータ格納領域124に格納済みの小行列b12と、ステップ406で計算ノードN0から入手した小行列a11とを用いて、行列積a11×b12を計算する。また、例えば計算ノードN4は、ステップ406で計算ノードN3から入手した小行列a21と、ステップ408で計算ノードN1から入手した小行列b12とを用いて、行列積a21×b12を計算する。他の計算ノード100については図5を参照されたい。各計算ノードNnは、計算で得た行列積ai1×b1jの各要素を、要素毎に、それぞれのメモリ120のデータ格納領域124にある小行列cijの各要素に加算する。この結果、各計算ノードNnのメモリ120のデータ格納領域124には、この時点における小行列cijの途中経過データとして、ai1×b1jのデータが格納される。
2回目の繰り返し処理では、ステップ412において、計算ノードN1、N4、およびN7が、それぞれ保有している行列Aの小行列を、同じ行内の他の2つの計算ノード100へBroadcast通信で送信する。具体的に、計算ノードN1は小行列a12を計算ノードN0および計算ノードN2へ送信し、計算ノードN4は小行列a22を計算ノードN3および計算ノードN5へ送信し、計算ノードN7は小行列a32を計算ノードN6および計算ノードN8へ送信する。
次にステップ414において、計算ノードN3、N4、およびN5が、それぞれ保有している行列Bの小行列を、同じ列内の他の2つの計算ノード100へBroadcast通信で送信する。具体的に、計算ノードN3は小行列b21を計算ノードN0および計算ノードN6へ送信し、計算ノードN4は小行列b22を計算ノードN1および計算ノードN7へ送信し、計算ノードN5は小行列b23を計算ノードN2および計算ノードN8へ送信する。
次にステップ416において、各計算ノードNnは、上述のステップ410と同様にして、各々が担当する計算の一部分である2つの小行列同士の行列積ai2×b2jを計算し、得られた行列積ai2×b2jの各要素を、要素毎に、それぞれのメモリ120のデータ格納領域124にある小行列cijの各要素に加算する。説明が煩雑になることを避けるために詳細は省略するが、当業者であれば、上述したステップ410における説明および図5の記載から、ステップ416の計算の具体的内容は容易に理解可能であろう。ステップ416の結果、各計算ノードNnのメモリ120のデータ格納領域124には、この時点における小行列cijの途中経過データとして、ai1×b1j+ai2×b2jのデータが格納される。
3回目の繰り返し処理では、ステップ418において、計算ノードN2、N5、およびN8が、それぞれ保有している行列Aの小行列を、同じ行内の他の2つの計算ノード100へBroadcast通信で送信する。具体的に、計算ノードN2は小行列a13を計算ノードN0および計算ノードN1へ送信し、計算ノードN5は小行列a23を計算ノードN3および計算ノードN4へ送信し、計算ノードN8は小行列a33を計算ノードN6および計算ノードN7へ送信する。
次にステップ420において、計算ノードN6、N7、およびN8が、それぞれ保有している行列Bの小行列を、同じ列内の他の2つの計算ノード100へBroadcast通信で送信する。具体的に、計算ノードN6は小行列b31を計算ノードN0および計算ノードN3へ送信し、計算ノードN7は小行列b32を計算ノードN1および計算ノードN4へ送信し、計算ノードN8は小行列b33を計算ノードN2および計算ノードN5へ送信する。
次にステップ422において、各計算ノードNnは、上述のステップ410およびステップ416と同様にして、各々が担当する計算の一部分である2つの小行列同士の行列積ai3×b3jを計算し、得られた行列積ai3×b3jの各要素を、要素毎に、それぞれのメモリ120のデータ格納領域124にある小行列cijの各要素に加算する。計算の具体的内容は、ステップ410における説明および図5の記載を参照されたい。ステップ422の結果、各計算ノードNnのメモリ120のデータ格納領域124には、最終的な小行列cijのデータとして、ai1×b1j+ai2×b2j+ai3×b3jのデータが格納される。
以上により、各計算ノード100は、行列積A×Bを表す行列Cの一部分であり自分が計算を担当する小行列cijについての計算結果を得る。
図6は、上述した従来のアルゴリズムのステップ406、408、412、414、418、および420の各々において、小行列が計算ノード100間でどのようにルーティングされたかを表形式で視覚的に示す。送信側の各計算ノード100が表の縦方向に示され、受信側の各計算ノード100が表の横方向に示されている。「11」等の数字が記載されたセルは、そのセルに対応する送信側の計算ノード100と受信側の計算ノード100の間で小行列が転送されたこと、つまり当該2つの計算ノード100間の通信リンク20が使用されたことを表す。また空欄のセルは、そのセルに対応する送信側の計算ノード100と受信側の計算ノード100の間で小行列の転送が行われていないこと、つまり当該2つの計算ノード100間の通信リンク20は未使用であることを表す。数字「ij」は、小行列aijまたはbijを表す。
例えば、図6のステップ406と示された表において、最上段の左から2番目のセルに記載された数字「11」は、送信側の計算ノードN0と受信側の計算ノードN1の間の通信リンク20を使って小行列a11が転送されたことを表し、上から4段目で左から5番目のセルに記載された数字「21」は、送信側の計算ノードN3と受信側の計算ノードN4の間の通信リンク20を使って小行列a21が転送されたことを表している。これらの小行列の転送についてはステップ406に関して上述したとおりである。図6の各表に記載された他の任意の数字「ij」も同様に理解される。
図6に示されるように、上述した従来のアルゴリズムでは、並列計算システム10の9台の計算ノード100を相互に接続する全部で72(=9×8)本の通信リンク20のうち、各ステップ406、408、412、414、418、420のそれぞれにおいて同時に使用される通信リンク20は12本のみである。各ステップにおいて残りの60本の通信リンク20は未使用となっている。したがって、並列計算システム10の全体の通信帯域が有効活用されていない。そこで、以下に説明する本発明の実施形態では、並列計算システム10の通信帯域の利用効率を上げることで並列計算の高速化を可能にする。
なお、上記の説明では、行列を3×3=9個の小行列に分割して、9台の計算ノード100に分散配置する例を示した。しかしながら、行列の分割数および計算ノード100の台数はこの例に限られない。一般化すると、行列をp×p=p2個(pは2以上の整数)の小行列に分割して、p2台の計算ノードNn(ただしn=0,1,…,p2-1)に分散配置することができる。図4のフローチャートに示す動作の場合には、ステップ406~410、ステップ412~416、およびステップ418~422の3回の繰り返し処理が行われたが、行列の分割数がp2個の一般化した動作においては、同様の繰り返し処理が合計p回行われる。
p回の繰り返し処理のうちのm番目(m=1,2,…,p)の繰り返し処理は次のように行われる。すなわち、まず計算ノードNn(ただしn=i×p+m-1、i=0,1,…,p-1)は、図4のフローチャートのステップ406に対応する動作として、それぞれ保有している行列Aの小行列aim(ただしi=n/3+1)を同じ行内の他の計算ノード100へBroadcast通信で送信する。次に計算ノードNn(ただしn=p×(m-1)+j、j=0,1,…,p-1)は、図4のフローチャートのステップ408に対応する動作として、それぞれ保有している行列Bの小行列bmj(ただしj=n%3+1)を同じ列内の他の計算ノード100へBroadcast通信で送信する。そして、各計算ノードNn(ただしn=0,1,…,p2-1)は、図4のフローチャートのステップ410に対応する動作として、行列積aim×bmjを計算してメモリ120内の小行列cijに加算する。このように、p回の繰り返し処理の各々において2回のBroadcast通信が行われ、総通信回数は2×p回である。
<第1実施形態>
図7は、本発明の第1実施形態に係る並列計算システム10の動作を示すフローチャートである。また図8は、本発明の第1実施形態において、計算ノード100間で小行列がどのようにルーティングされるかを表形式で視覚的に示す図であり、従来例における前述の図6に相当する。
図7は、本発明の第1実施形態に係る並列計算システム10の動作を示すフローチャートである。また図8は、本発明の第1実施形態において、計算ノード100間で小行列がどのようにルーティングされるかを表形式で視覚的に示す図であり、従来例における前述の図6に相当する。
まずステップ702において、行列Aの各小行列aijおよび行列Bの各小行列bijがそれぞれ対応する計算ノード100に配置される。このステップは、前述した従来例のステップ402および404と同じものである。
次にステップ703において、各計算ノード100は、従来例のステップ405と同様に、それぞれのメモリ120のデータ格納領域124の一部として、小行列cijを格納するための領域を確保し、小行列cijの全要素を0で初期化する。
次にステップ704において、計算ノードN0、N3、およびN6が、それぞれ保有している行列Aの小行列を「Scatter通信」ですべての計算ノード100へ送信する。「Scatter通信」とは、ある計算ノード100の保有しているデータを小データに細分化し、その各々の小データをそれぞれに対応する計算ノード100へ送ることで、元のデータの異なる部分を別々の計算ノード100に分配する通信である。
具体的に、例えば計算ノードN0は、小行列a11を9個の小データa110、a111、a112、a113、a114、a115、a116、a117、およびa118に分割し、小データa111を計算ノードN1へ、小データa112を計算ノードN2へ、小データa113を計算ノードN3へ、小データa114を計算ノードN4へ、小データa115を計算ノードN5へ、小データa116を計算ノードN6へ、小データa117を計算ノードN7へ、小データa118を計算ノードN8へ、それぞれ送信する。また計算ノードN3は、小行列a21を同様に9個の小データに分割し、各小データをそれぞれ他の計算ノード100へ送信する。計算ノードN6についても同様である。図8のステップ704と示された表には、これらの小データの転送が、数字「ijk」によって示されている。図8において、数字「ijk」は、小行列aijまたはbijを分割したk番目(k=0,1,…,8)の小データを表す。
次にステップ706において、計算ノードN1、N2、N4、N5、N7、およびN8が、上記ステップ704で各計算ノード100に分配された小データを「Allgather通信」で回収し、それら回収された小データからそれぞれ行列Aの小行列を再構成する。「Allgather通信」とは、複数の計算ノード100に分散しているデータを1つの計算ノード100に集めて結合する処理を、並列で複数実行するものである。
具体的に、例えば計算ノードN1は、小データa110、a111、a112、a113、a114、a115、a116、a117、およびa118をそれぞれ計算ノードN0、N1、N2、N3、N4、N5、N6、N7、N8から取得し、これら各小データを用いて行列Aの小行列a11を再構成する。この各計算ノード100から計算ノードN1への各小データの転送が、図8のステップ706と示された表の左から2列目に示されている。同様に、計算ノードN2は小行列a11を再構成し、計算ノードN4およびN5は小行列a21を再構成し、計算ノードN7およびN8は小行列a31を再構成する。
このようにステップ704および706が実施されることにより、前述した従来のアルゴリズムにおけるステップ406が実施された場合と同様に、計算ノードN0、N1、およびN2は行列Aの小行列a11を保持し、計算ノードN3、N4、およびN5は行列Aの小行列a21を保持し、計算ノードN6、N7、およびN8は行列Aの小行列a31を保持した状態となる。従来のアルゴリズムにおけるステップ406と本実施形態におけるステップ704および706を比較すると、本実施形態では通信ステップの数が2倍に増えているものの、使用される通信リンク20の数は9倍になり、また各通信リンク20を伝送されるデータサイズは1/9となっており、その結果、小行列を転送するのにかかる通信時間は2/9倍に短縮されることに注目されたい。
次にステップ708において、計算ノードN0、N1、およびN2が、それぞれ保有している行列Bの小行列をScatter通信ですべての計算ノード100へ送信する。具体的に、図8のステップ708の表に示されるように、計算ノードN0は、小行列b11を9個の小データに分割し、小データb111、b112、b113、b114、b115、b116、b117、およびb118をそれぞれ計算ノードN1、N2、N3、N4、N5、N6、N7、N8へ送信する。同様に、計算ノードN1は小行列b12を分割した小データを各計算ノード100へ送信し、計算ノードN2は小行列b13を分割した小データを各計算ノード100へ送信する。
次にステップ710において、計算ノードN3、N4、N5、N6、N7、およびN8が、上記ステップ708で各計算ノード100に分配された小データをAllgather通信で回収し、それら回収された小データからそれぞれ行列Bの小行列を再構成する。具体的に、例えば計算ノードN3は、小データb110、b111、b112、b113、b114、b115、b116、b117、およびb118をそれぞれ計算ノードN0、N1、N2、N3、N4、N5、N6、N7、N8から取得し、これら各小データを用いて行列Bの小行列b11を再構成する。この各計算ノード100から計算ノードN3への各小データの転送が、図8のステップ710と示された表の左から4列目に示されている。同様に、計算ノードN6は小行列b11を再構成し、計算ノードN4およびN7は小行列b12を再構成し、計算ノードN5およびN8は小行列b13を再構成する。
このようにステップ708および710が実施されることにより、前述した従来のアルゴリズムにおけるステップ408が実施された場合と同様に、計算ノードN0、N3、およびN6は行列Bの小行列b11を保持し、計算ノードN1、N4、およびN7は行列Bの小行列b12を保持し、計算ノードN2、N5、およびN8は行列Bの小行列b13を保持した状態となる。従来のアルゴリズムにおけるステップ408と本実施形態におけるステップ708および710を比較すると、上述のステップ704および706と同様に、本実施形態では通信ステップの数が2倍に増えているものの、使用される通信リンク20の数は9倍になり、また各通信リンク20を伝送されるデータサイズは1/9となっており、その結果、小行列を転送するのにかかる通信時間は2/9倍に短縮される。
次にステップ712において、各計算ノード100は、各々が担当する計算の一部分である2つの小行列同士の行列積ai1×b1jを計算し、得られた行列積の各要素を、要素毎に、それぞれのメモリ120のデータ格納領域124にある小行列cijの各要素に加算する。このステップは、前述した従来のアルゴリズムのステップ410に対応するものである。なお、例えば計算ノードN1は、当該行列積の計算に必要な小行列a11を、ステップ704のScatter通信およびステップ706のAllgather通信によって取得している。また、例えば計算ノードN4は、当該行列積の計算に必要な小行列a21をステップ704のScatter通信およびステップ706のAllgather通信によって取得し、小行列b12をステップ708のScatter通信およびステップ710のAllgather通信によって取得している。他の計算ノード100も同様に、計算に必要な小行列を、Scatter通信とAllgather通信を順に行うことによって取得している。このように、各小行列aijおよびbijは、送信元の計算ノード100から送信先の計算ノード100へ直接転送されるのではなく、各小行列aijおよびbijが分割された小データがScatter通信およびAllgather通信の2ステップ通信で他の計算ノード100に中継されることによって、送信元の計算ノード100から送信先の計算ノード100へ転送される。
次に、上述のステップ704~712と同様にして、ステップ714~722が行われる。ステップ714および716は、ステップ704および706と同様のScatter通信とAllgather通信により、行列Aの小行列a12を計算ノードN0およびN2に配送し、小行列a22を計算ノードN3およびN5に配送し、小行列a32を計算ノードN6およびN8に配送する処理である。また、ステップ718および720は、ステップ708および710と同様のScatter通信とAllgather通信により、行列Bの小行列b21を計算ノードN0およびN6に配送し、小行列b22を計算ノードN1およびN7に配送し、小行列b23を計算ノードN2およびN8に配送する処理である。図8の各ステップに対応する表に、これらの処理がそれぞれ示されている。ステップ722は、各計算ノード100が小行列の行列積ai2×b2jを計算してメモリ120に加算する処理であり、これは従来のアルゴリズムにおけるステップ416に対応している。ステップ722の結果、各計算ノード100のメモリ120のデータ格納領域124には、この時点における小行列cijの途中経過データとして、ai1×b1j+ai2×b2jのデータが格納される。
次に、上述のステップ704~712およびステップ714~722と同様にして、ステップ724~732が行われる。ステップ724および726は、上記と同様のScatter通信およびAllgather通信により、行列Aの小行列a13を計算ノードN0およびN1に配送し、小行列a23を計算ノードN3およびN4に配送し、小行列a33を計算ノードN6およびN7に配送する処理である。また、ステップ728および730は、上記と同様のScatter通信およびAllgather通信により、行列Bの小行列b31を計算ノードN0およびN3に配送し、小行列b32を計算ノードN1およびN4に配送し、小行列b33を計算ノードN2およびN5に配送する処理である。図8の各ステップに対応する表に、これらの処理がそれぞれ示されている。ステップ732は、各計算ノード100が小行列の行列積ai3×b3jを計算してメモリ120に加算する処理であり、これは従来のアルゴリズムにおけるステップ422に対応している。ステップ732の結果、各計算ノード100のメモリ120のデータ格納領域124には、最終的な小行列cijのデータとして、ai1×b1j+ai2×b2j+ai3×b3jのデータが格納される。
以上により、各計算ノード100は最終的に、行列積A×Bを表す行列Cの一部分であり自分が計算を担当する小行列cijについての計算結果を得る。
ここで、本発明の第1実施形態に係る上記の並列計算方法が、前述した従来のアルゴリズムを用いた並列計算方法に比べてどのくらい高速化されているかを評価する。両者において、各計算ノード100の計算能力および各通信リンク20の通信帯域に違いはないものとする。また、並列計算システム10を構成する計算ノード100の数をNとし(上述したとおり図1ではN=9)、各小行列aijおよびbijのデータ長を、すべて同じ規格化した値「1」とする。
従来のアルゴリズムの場合、ステップ406、408、412、414、418、および420でBroadcast通信が行われ、全体の通信回数(Mと記す)は2√Nである。また、各回の通信(すなわち各ステップ)では小行列aijまたはbijが転送されるので、1回当りの通信で転送されるデータ長(Sと記す)は1である。よって、全体の相対的な通信時間T(=MS)は2√Nとなる。例えばN=64とすると、T=16である。
本発明の第1実施形態に係る並列計算方法の場合には、ステップ704、708、714、718、724、および728でScatter通信が行われ、ステップ706、710、716、720、726、および730でAllgather通信が行われ、全体の通信回数は4√Nである。また、各回の通信では小行列aijまたはbijを計算ノード100の数に分割した小データが転送されるので、1回当りの通信で転送されるデータ長は1/Nである。よって、全体の相対的な通信時間はT=4/√Nとなる。例えばN=64とすると、T=0.5である。
このように、本発明の第1実施形態に係る並列計算方法を用いた場合における相対通信時間は、従来のアルゴリズムを用いた場合の2/Nとなり、相対的な理論性能(すなわち1/T)はN/2倍に高速化される。N=64とすると、本発明の第1実施形態に係る並列計算方法は、従来のアルゴリズムに対して32倍の高速化処理が可能である。
<第2実施形態>
図9は、本発明の第2実施形態に係る並列計算システム10の動作を示すフローチャートである。また図10は、本発明の第2実施形態において、計算ノード100間で小行列がどのようにルーティングされるかを表形式で視覚的に示す図であり、第1実施形態の図8に相当する。
図9は、本発明の第2実施形態に係る並列計算システム10の動作を示すフローチャートである。また図10は、本発明の第2実施形態において、計算ノード100間で小行列がどのようにルーティングされるかを表形式で視覚的に示す図であり、第1実施形態の図8に相当する。
本発明の第2実施形態と第1実施形態との違いは、第2実施形態では、第1実施形態における3つのScatter通信を1つの「Alltoall通信」に集約している点にある。すなわち、第1実施形態のステップ704、714、および724におけるScatter通信は、第2実施形態のステップ904におけるAlltoall通信として集約され、また第1実施形態のステップ708、718、および728におけるScatter通信は、第2実施形態のステップ906におけるAlltoall通信として集約されている。なお、図9のフローチャートにおいて、ステップ904および906以外のステップは、第1実施形態の図7のフローチャートにおける対応する各ステップと同じものである。具体的に、第2実施形態のステップ902、903、908、910、912、914、916、918、920、922、および924は、それぞれ第1実施形態のステップ702、703、706、710、712、716、720、722、726、730、732に対応している。以下、ステップ904および906について説明する。
ステップ904では、すべての計算ノード100が、それぞれ保有している行列Aの小行列aijを「Alltoall通信」ですべての計算ノード100へ送信する。「Alltoall通信」とは、ある計算ノード100の保有しているデータを小データに細分化し、その各々の小データをそれぞれに対応する計算ノード100へ送る処理を、すべての計算ノード100が並列で実行するものである。これにより、すべての小行列aijの細分化された異なる部分が、一斉に別々の計算ノード100に分配される。
具体的に、例えば計算ノードN0は、小行列a11を9個の小データに分割し、小データa111、a112、a113、a114、a115、a116、a117、およびa118をそれぞれ計算ノードN1、N2、N3、N4、N5、N6、N7、N8へ送信する。この計算ノードN0から各計算ノード100への各小データの転送は、図10のステップ904と示された表の最上段に示されている。また、例えば計算ノードN4は、小行列a22を9個の小データに分割し、小データa220、a221、a222、a223、a225、a226、a227、およびa228をそれぞれ計算ノードN0、N1、N2、N3、N5、N6、N7、N8へ送信する。この計算ノードN4から各計算ノード100への各小データの転送は、図10のステップ904の表の上から5段目に示されている。他の計算ノード100についても同様であり、その具体的内容は図10のステップ904の表の各段の記載から容易に理解される。
図10のルーティング表から明らかなように、ステップ904のAlltoall通信では、並列計算システム10のすべての通信リンク20が使用されており、並列計算システム10の通信帯域を最大限に利用した無駄のないデータ転送が実現していることに注目されたい。
同様に、ステップ906では、すべての計算ノード100が、それぞれ保有している行列Bの小行列bijをAlltoall通信ですべての計算ノード100へ送信する。その具体的内容は、図10のステップ906の表に示されており、上記のステップ904についての説明も参照することで容易に理解される。ここでも、Alltoall通信によって並列計算システム10のすべての通信リンク20が無駄なく活用されている。
このようにして、各小行列aijおよびbijは、各小行列aijおよびbijの小データがAlltoall通信およびAllgather通信の2ステップ通信で他の計算ノード100に中継されることによって、送信元の計算ノード100から送信先の計算ノード100へ転送される。
本発明の第2実施形態に係る並列計算方法では、上記のようにステップ904および906でAlltoall通信が行われ、ステップ908、910、914、916、920、および922でAllgather通信が行われ、全体の通信回数は2+2√Nである。また、各回の通信では、第1実施形態と同様に、小行列aijまたはbijを計算ノード100の数に分割した小データが転送されるので、1回当りの通信で転送されるデータ長は1/Nである。よって、全体の相対的な通信時間はT=(2+2√N)/Nとなる。例えばN=64とすると、T=0.28である。
したがって、本発明の第2実施形態に係る並列計算方法を用いた場合における相対通信時間は、従来のアルゴリズムを用いた場合の(1+√N)/(N√N)となり、相対的な理論性能は(N√N)/(1+√N)倍に高速化される。N=64とすると、本発明の第2実施形態に係る並列計算方法は、従来のアルゴリズムに対して57倍の高速化処理が可能である。
<第3実施形態>
図11は、本発明の第3実施形態に係る並列計算システム10の動作を示すフローチャートである。また図12は、本発明の第3実施形態において、計算ノード100間で小行列がどのようにルーティングされるかを表形式で視覚的に示す図である。
図11は、本発明の第3実施形態に係る並列計算システム10の動作を示すフローチャートである。また図12は、本発明の第3実施形態において、計算ノード100間で小行列がどのようにルーティングされるかを表形式で視覚的に示す図である。
本発明の第3実施形態は、上述した第2実施形態における小データの転送をさらに効率化し改良したものである。第2実施形態のステップ908、910、914、916、920、および922におけるAllgather通信は、並列計算システム10の通信帯域をすべて使い尽くしているわけではない。例えば、図10におけるステップ908の表の最左列、左から4番目の列、および左から7番目の列が空欄のセルとして示されていることから理解されるように、ステップ908の処理では、Allgather通信と並行して、さらに追加のデータをすべての計算ノード100から計算ノードN0、N3、およびN6へ送信することが可能である。
したがって、本発明の第3実施形態と第2実施形態との違いは、第3実施形態では、第2実施形態における3つのAllgather通信を、上記「空欄のセル」を利用することで2つのAlltoallv通信に集約している点にある。
具体的に、第3実施形態のステップ1108のAlltoallv通信は、第2実施形態におけるステップ920のAllgather通信のうち計算ノードN0、N3、およびN6が他の各計算ノード100からそれぞれ小行列a13の各小データa13k、小行列a23の各小データa23k、小行列a33の各小データa33kを取得する処理を、第2実施形態のステップ908におけるAllgather通信の空欄セルに組み込んだものである。これは、図12におけるステップ1108の表に点線の枠囲みで示されている。同様に、第3実施形態のステップ1114のAlltoallv通信は、第2実施形態におけるステップ920のAllgather通信のうち計算ノードN1、N4、およびN7が他の各計算ノード100からそれぞれ小行列a13の各小データa13k、小行列a23の各小データa23k、小行列a33の各小データa33kを取得する処理を、第2実施形態のステップ914におけるAllgather通信の空欄セルに組み込んだものである。これは、図12におけるステップ1114の表に点線の枠囲みで示されている。
このようなステップ1108のAlltoallv通信によって、計算ノードN0は小行列a13を取得し、計算ノードN1およびN2は小行列a11を取得し、計算ノードN3は小行列a23を取得し、計算ノードN4およびN5は小行列a21を取得し、計算ノードN6は小行列a33を取得し、計算ノードN7およびN8は小行列a31を取得する。また、ステップ1114のAlltoallv通信によって、計算ノードN1は小行列a13を取得し、計算ノードN0およびN2は小行列a12を取得し、計算ノードN4は小行列a23を取得し、計算ノードN3およびN5は小行列a22を取得し、計算ノードN7は小行列a33を取得し、計算ノードN6およびN8は小行列a32を取得する。
また、第3実施形態のステップ1110のAlltoallv通信は、第2実施形態におけるステップ922のAllgather通信のうち計算ノードN0、N1、およびN2が他の各計算ノード100からそれぞれ小行列b31の各小データb31k、小行列b32の各小データb32k、小行列b33の各小データb33kを取得する処理を、第2実施形態のステップ910におけるAllgather通信の空欄セルに組み込んだものである。これは、図12におけるステップ1110の表に点線の枠囲みで示されている。さらに、第3実施形態のステップ1116のAlltoallv通信は、第2実施形態におけるステップ922のAllgather通信のうち計算ノードN3、N4、およびN5が他の各計算ノード100からそれぞれ小行列b31の各小データb31k、小行列b32の各小データb32k、小行列b33の各小データb33kを取得する処理を、第2実施形態のステップ916におけるAllgather通信の空欄セルに組み込んだものである。これは、図12におけるステップ1116の表に点線の枠囲みで示されている。
このようなステップ1110のAlltoallv通信によって、計算ノードN0は小行列b31を取得し、計算ノードN1は小行列b32を取得し、計算ノードN2は小行列b33を取得し、計算ノードN3およびN6は小行列b11を取得し、計算ノードN4およびN7は小行列b12を取得し、計算ノードN5およびN8は小行列b13を取得する。また、ステップ1116のAlltoallv通信によって、計算ノードN3は小行列b31を取得し、計算ノードN4は小行列b32を取得し、計算ノードN5は小行列b33を取得し、計算ノードN0およびN6は小行列b21を取得し、計算ノードN1およびN7は小行列b22を取得し、計算ノードN2およびN8は小行列b23を取得する。
なお、図11のフローチャートにおいて、ステップ1102、1103、1104、1106、1112、1118、1120は、それぞれ第2実施形態のステップ902、903、904、906、912、918、924と同じものである。
図12のルーティング表から明らかなように、第3実施形態では、ステップ1104~1110、1114、および1116のいずれにおいても、Alltoall通信またはAlltoallv通信が行われることによって並列計算システム10のすべての通信リンク20が無駄なく活用されている。
このようにして、各小行列aijおよびbijは、各小行列aijおよびbijの小データがAlltoall通信およびAlltoallv通信の2ステップ通信で他の計算ノード100に中継されることによって、送信元の計算ノード100から送信先の計算ノード100へ転送される。
このように、本発明の第3実施形態に係る並列計算方法においては、ステップ1104および1106でAlltoall通信が行われ、ステップ1108、1110、1114、および1116でAlltoallv通信が行われ、全体の通信回数は2√Nである。また、各回の通信では、第1および第2実施形態と同様に、小行列aijまたはbijを計算ノード100の数に分割した小データが転送されるので、1回当りの通信で転送されるデータ長は1/Nである。よって、全体の相対的な通信時間はT=2/√Nとなる。例えばN=64とすると、T=0.25である。
したがって、本発明の第3実施形態に係る並列計算方法を用いた場合における相対通信時間は、従来のアルゴリズムを用いた場合の1/Nとなり、相対的な理論性能はN倍に高速化される。
<第4実施形態>
図13は、本発明の第4実施形態に係る並列計算システム10の動作を示すフローチャートである。また図14は、本発明の第4実施形態における、各計算ノード100へのデータの初期配置と計算ノード100間でのデータのルーティングを表形式で視覚的に示す図である。
図13は、本発明の第4実施形態に係る並列計算システム10の動作を示すフローチャートである。また図14は、本発明の第4実施形態における、各計算ノード100へのデータの初期配置と計算ノード100間でのデータのルーティングを表形式で視覚的に示す図である。
本発明の第4実施形態は、上述した第2実施形態のステップ904(または第3実施形態のステップ1104)で行列Aの小行列aijをAlltoall通信で各計算ノード100に分配し、また第2実施形態のステップ906(または第3実施形態のステップ1106)で行列Bの小行列bijをAlltoall通信で各計算ノード100に分配したのと同じ状態となるように、あらかじめ小行列aijおよびbijの小データを各計算ノード100に分散して配置しておく点が、前述の各実施形態と異なる。
まずステップ1302において、行列Aの各小行列aijがそれぞれ複数の小データに分割され、分割された小データがそれぞれに対応する計算ノード100に分散して配置される。具体的には、図14のステップ1302の表に示されるように、小行列a11を分割した各小データa110、a111、a112、a113、a114、a115、a116、a117、およびa118が、それぞれ計算ノードN0、N1、N2、N3、N4、N5、N6、N7、N8に配置される。同様に、小行列a12を分割した各小データa120、a121、a122、a123、a124、a125、a126、a127、およびa128が、それぞれ計算ノードN0、N1、N2、N3、N4、N5、N6、N7、N8に配置される。他の小行列aijの小データも同様に各計算ノード100に配置される。
上記のような初期配置の結果、例えば計算ノードN0は、小行列a11の小データa110と、小行列a12の小データa120と、小行列a13の小データa130と、小行列a21の小データa210と、小行列a22の小データa220と、小行列a23の小データa230と、小行列a31の小データa310と、小行列a32の小データa320と、小行列a33の小データa330とを保持する。また同様に、計算ノードN1は、小行列a11の小データa111と、小行列a12の小データa121と、小行列a13の小データa131と、小行列a21の小データa211と、小行列a22の小データa221と、小行列a23の小データa231と、小行列a31の小データa311と、小行列a32の小データa321と、小行列a33の小データa331とを保持する。他の計算ノード100についても同様である。
次にステップ1304において、ステップ1302と同様に、行列Bの各小行列bijがそれぞれ複数の小データに分割され、分割された小データがそれぞれに対応する計算ノード100に分散して配置される。
その後、ステップ1306、1312、および1318において、順次、各計算ノード100の所持している小行列aijの小データが、Alltoallv通信によって計算ノード100間で交換される。
具体的に、ステップ1306のAlltoallv通信は、計算ノードN0、N3、およびN6が各計算ノード100からそれぞれ小行列a11の各小データa11k、小行列a21の各小データa21k、小行列a31の各小データa31kを取得する処理を、第2実施形態のステップ908におけるAllgather通信の空欄セルに組み込んだものである。また、ステップ1312のAlltoallv通信は、計算ノードN1、N4、およびN7が各計算ノード100からそれぞれ小行列a12の各小データa12k、小行列a22の各小データa22k、小行列a32の各小データa32kを取得する処理を、第2実施形態のステップ914におけるAllgather通信の空欄セルに組み込んだものである。さらに、ステップ1318のAlltoallv通信は、計算ノードN2、N5、およびN8が各計算ノード100からそれぞれ小行列a13の各小データa13k、小行列a23の各小データa23k、小行列a33の各小データa33kを取得する処理を、第2実施形態のステップ920におけるAllgather通信の空欄セルに組み込んだものである。
このようなステップ1306のAlltoallv通信によって、計算ノードN0、N1、およびN2は小行列a11を取得し、計算ノードN3、N4、およびN5は小行列a21を取得し、計算ノードN6、N7、およびN8は小行列a31を取得する。また、ステップ1312のAlltoallv通信によって、計算ノードN0、N1、およびN2は小行列a12を取得し、計算ノードN3、N4、およびN5は小行列a22を取得し、計算ノードN6、N7、およびN8は小行列a32を取得する。さらに、ステップ1318のAlltoallv通信によって、計算ノードN0、N1、およびN2は小行列a13を取得し、計算ノードN3、N4、およびN5は小行列a23を取得し、計算ノードN6、N7、およびN8は小行列a33を取得する。
また、ステップ1308、1314、および1320において、順次、各計算ノード100の所持している小行列bijの小データが、Alltoallv通信によって計算ノード100間で交換される。
具体的に、ステップ1308のAlltoallv通信は、計算ノードN0、N1、およびN2が各計算ノード100からそれぞれ小行列b11の各小データb11k、小行列b12の各小データb12k、小行列b13の各小データb13kを取得する処理を、第2実施形態のステップ910におけるAllgather通信の空欄セルに組み込んだものである。また、ステップ1314のAlltoallv通信は、計算ノードN3、N4、およびN5が各計算ノード100からそれぞれ小行列b21の各小データb21k、小行列b22の各小データb22k、小行列b23の各小データb23kを取得する処理を、第2実施形態のステップ916におけるAllgather通信の空欄セルに組み込んだものである。さらに、ステップ1320のAlltoallv通信は、計算ノードN6、N7、およびN8が各計算ノード100からそれぞれ小行列b31の各小データb31k、小行列b32の各小データb32k、小行列b33の各小データb33kを取得する処理を、第2実施形態のステップ922におけるAllgather通信の空欄セルに組み込んだものである。
このようなステップ1308のAlltoallv通信によって、計算ノードN0、N3、およびN6は小行列b11を取得し、計算ノードN1、N4、およびN7は小行列b12を取得し、計算ノードN2、N5、およびN8は小行列b13を取得する。また、ステップ1314のAlltoallv通信によって、計算ノードN0、N3、およびN6は小行列b21を取得し、計算ノードN1、N4、およびN7は小行列b22を取得し、計算ノードN2、N5、およびN8は小行列b23を取得する。さらに、ステップ1320のAlltoallv通信によって、計算ノードN0、N3、およびN6は小行列b31を取得し、計算ノードN1、N4、およびN7は小行列b32を取得し、計算ノードN2、N5、およびN8は小行列b33を取得する。
このように、本発明の第4実施形態に係る並列計算方法においては、ステップ1306、1308、1312、1314、1318、および1320でAlltoallv通信が行われ、通信回数は2√Nである。また、各回の通信では、前述の実施形態と同様に、小行列aijまたはbijを計算ノード100の数に分割した小データが転送されるので、1回当りの通信で転送されるデータ長は1/Nである。よって、全体の相対的な通信時間は、第3実施形態と同じくT=2/√Nとなる。例えばN=64とすると、T=0.25である。
したがって、本発明の第4実施形態に係る並列計算方法を用いた場合における相対通信時間は、従来のアルゴリズムを用いた場合の1/Nとなり、相対的な理論性能はN倍に高速化される。
図15は、従来のアルゴリズムによる並列計算方法および本発明の各実施形態に係る並列計算方法の性能をまとめた一覧表である。相対通信時間および相対理論性能についてはN=64の場合の数値を併記した。図16は、それぞれの方法で並列計算のシミュレーションを行い、計算に要した実行時間を計測した結果を示すグラフである。グラフの横軸は計算対象の行列のサイズ(すなわち行(列)の数)を表し、縦軸はシミュレーションにより得られた計算実行時間である。シミュレーションでは、64台の計算ノード100がフルメッシュ接続された並列計算システムをモデル化した。シミュレーションを行った中で最大サイズの行列についての結果を図15の表の最右列に示す。この数値は、従来のアルゴリズムの場合の計算実行時間を1としたときの、各実施形態の方法の相対性能を示したものである。
以上において説明した各実施形態の並列計算は、従来の行列積計算アルゴリズムの一つであるSUMMAをベースとしたものである。しかしながら、本明細書に開示する発明の本質は、SUMMAへの適用のみに限定されるわけではない。行列積計算アルゴリズムの他の例としてCannonアルゴリズムやFoxアルゴリズムが知られており、これらのアルゴリズムをベースとして、上述した各実施形態と同様の追加の実施形態を提供することができる。
<第5実施形態>
図17は、並列計算システム10の各計算ノード100がCannonアルゴリズムによる行列計算を実施する手順を示す概念図であり、SUMMAの場合における前述の図5に相当する。また図18は、図17のCannonアルゴリズムをベースとした、本発明の第5実施形態による計算ノード100間のルーティング表の例である。
図17は、並列計算システム10の各計算ノード100がCannonアルゴリズムによる行列計算を実施する手順を示す概念図であり、SUMMAの場合における前述の図5に相当する。また図18は、図17のCannonアルゴリズムをベースとした、本発明の第5実施形態による計算ノード100間のルーティング表の例である。
図17および図18を参照すると、例えば計算ノードN1の動作は次のとおりである。計算ノードN1は、ステップ1702でメモリ120に格納済みの小行列a12と、ステップ1808および1810によって計算ノードN4から入手した小行列b22とを用いて、ステップ1710において行列積a12×b22を計算する。また計算ノードN1は、ステップ1814および1816によって計算ノードN0から入手した小行列a11と、ステップ1704でメモリ120に格納済みの小行列b12とを用いて、ステップ1716において行列積a11×b12を計算する。さらに計算ノードN1は、ステップ1824および1826によって計算ノードN2から入手した小行列a13と、ステップ1828および1830によって計算ノードN7から入手した小行列b32とを用いて、ステップ1722において行列積a13×b32を計算する。計算ノードN1以外の他の計算ノード100の動作も、図17および図18を参照することにより同様に理解することが可能である。
<第6実施形態>
図19は、並列計算システム10の各計算ノード100がFoxアルゴリズムによる行列計算を実施する手順を示す概念図である。また図20は、図19のFoxアルゴリズムをベースとした、本発明の第6実施形態による計算ノード100間のルーティング表の例である。
図19は、並列計算システム10の各計算ノード100がFoxアルゴリズムによる行列計算を実施する手順を示す概念図である。また図20は、図19のFoxアルゴリズムをベースとした、本発明の第6実施形態による計算ノード100間のルーティング表の例である。
図19および図20を参照すると、例えば計算ノードN1の動作は次のとおりである。計算ノードN1は、ステップ2004および2006によって計算ノードN0から入手した小行列a11と、ステップ1904でメモリ120に格納済みの小行列b12とを用いて、ステップ1910において行列積a11×b12を計算する。また計算ノードN1は、ステップ1902でメモリ120に格納済みの小行列a12と、ステップ2018および2020によって計算ノードN4から入手した小行列b22とを用いて、ステップ1916において行列積a12×b22を計算する。さらに計算ノードN1は、ステップ2024および2026によって計算ノードN2から入手した小行列a13と、ステップ2018および2030によって計算ノードN7から入手した小行列b32とを用いて、ステップ1922において行列積a13×b32を計算する。計算ノードN1以外の他の計算ノード100の動作も、図19および図20を参照することにより同様に理解することが可能である。
<第7実施形態>
上述した各実施形態では、並列計算システム10は、図1に示されるように、各計算ノード100が自分以外のすべての計算ノード100とフルメッシュ接続された形に構成されていた。計算ノード100のこのような接続形態を、「一次元フルメッシュ接続」と呼ぶことができる。しかしながら、本発明は、計算ノード100がこれとは異なる形態に接続された並列計算システムに適用することも可能である。
上述した各実施形態では、並列計算システム10は、図1に示されるように、各計算ノード100が自分以外のすべての計算ノード100とフルメッシュ接続された形に構成されていた。計算ノード100のこのような接続形態を、「一次元フルメッシュ接続」と呼ぶことができる。しかしながら、本発明は、計算ノード100がこれとは異なる形態に接続された並列計算システムに適用することも可能である。
図21は、本発明の別の実施形態に係る並列計算システム210の構成図である。並列計算システム210は、複数の計算ノード100を備える。各計算ノード100は、図1の並列計算システム10における計算ノード100と同じものである。図21の例において、並列計算システム210は、図1の並列計算システム10と同様に9台の計算ノードN0~N8から構成されている。なお、並列計算システム210を構成する計算ノード100の数N(ただしNは平方数とする)は、任意の数であってよい。
図示されるように、並列計算システム210の9台の計算ノードN0~N8は、それぞれ3台の計算ノード100を含む3つのグループG1、G2、およびG3に区分けされる。第1グループG1は、計算ノードN0、N1、およびN2を含み、第2グループG2は、計算ノードN3、N4、およびN5を含み、第3グループG3は、計算ノードN6、N7、およびN8を含む。計算ノード100は、これら各グループ内でフルメッシュ接続される。例えば、第1グループG1において、計算ノードN0、N1、およびN2がフルメッシュ接続(すなわち、自分以外のすべての計算ノード100と接続)される。第2グループG2および第3グループG3についても同様である。これにより、互いに重複しない3つのフルメッシュ接続ネットワークG1、G2、およびG3が形成される。
並列計算システム210の9台の計算ノードN0~N8は、さらに、それぞれ3台の計算ノード100を含む、上記のグループG1、G2、およびG3とは異なる別の3つのグループG4、G5、およびG6にも区分けされる。第4グループG4は、計算ノードN0、N3、およびN6を含み、第5グループG5は、計算ノードN1、N4、およびN7を含み、第6グループG6は、計算ノードN2、N5、およびN8を含む。計算ノード100は、上記グループG1、G2、およびG3の場合と同様に、これら各グループG4、G5、およびG6内においてもフルメッシュ接続される。例えば、第4グループG4において、計算ノードN0、N3、およびN6がフルメッシュ接続される。第5グループG5および第6グループG6についても同様である。これにより、上記のフルメッシュ接続ネットワークG1、G2、およびG3とは別個独立の、3つのフルメッシュ接続ネットワークG4、G5、およびG6が形成される。
ここで、例えば計算ノードN0は、図21において横方向に配列した計算ノードからなるフルメッシュ接続ネットワークG1の構成要素であるとともに、図21において縦方向に配列した計算ノードからなるフルメッシュ接続ネットワークG4の構成要素でもある。同様に、いずれの計算ノード100も、図21において横方向に配列した計算ノードからなるフルメッシュ接続ネットワークおよび縦方向に配列した計算ノードからなるフルメッシュ接続ネットワークの両方の構成要素となっている。図21における計算ノード100のこのような接続形態を、「二次元フルメッシュ接続」と呼ぶことができる。
このように、並列計算システム210は、図21において横方向に配列した計算ノードからなる3つのフルメッシュ接続ネットワークG1、G2、G3と、図21において縦方向に配列した計算ノードからなる3つのフルメッシュ接続ネットワークG4、G5、G6とを有している。これらの各フルメッシュ接続ネットワーク内では、前述したいずれかの実施形態と同様の方法にしたがって、小行列が小データに分割されて計算ノード100間で転送される。
例えば、フルメッシュ接続ネットワークG1に着目すると、計算ノードN0、N1、およびN2は、それぞれ保有している小行列a1jを3個の小データに分割して、分割した小データを、フルメッシュ接続ネットワークG1内の各計算ノード100へScatter通信またはAlltoall通信で送信する。次いで、計算ノードN0、N1、およびN2は、フルメッシュ接続ネットワークG1内に分散された上記の小データをAllgather通信またはAlltoallv通信で回収し、元の小行列a1jを再構成する。フルメッシュ接続ネットワークG2およびG3においても同様に、それぞれ小行列a2j、a3jが3個の小データに分割されて、当該フルメッシュ接続ネットワーク内の計算ノード100間で転送される。
一方、フルメッシュ接続ネットワークG4では、計算ノードN0、N3、およびN6間において、小行列bi1を3個に分割した小データが上記と同様にして転送される。また、フルメッシュ接続ネットワークG5およびG6では、同様に小行列bi2、bi3の小データが計算ノード100間で転送される。
こうして、計算ノード100が二次元フルメッシュ接続された並列計算システム210において、各計算ノード100は、それぞれ小行列cijの計算に必要なデータを他の計算ノード100から取得することができる。
本実施形態において小行列の転送にAlltoall通信およびAlltoallv通信を使用した場合の通信時間を、前述の第3実施形態(同様にAlltoall通信およびAlltoallv通信を使用していることに留意されたい)と比較する。第3実施形態の場合、前述したように、通信回数はM=2√Nであり、1回当りの通信で転送されるデータ長はS=1/Nである。一方、本実施形態の場合、小行列は(並列計算システム210の全計算ノード数ではなく)並列計算システム210の一つのグループに含まれる計算ノード数に分割されるので、1回当りの通信で転送されるデータ長はS=1/√Nである。また、本実施形態の場合、小行列aijの転送と小行列bijの転送を1回のAlltoall通信またはAlltoallv通信で同時に行うことができるため、通信回数はM=√Nとなる。さらに、計算ノード1台当たりの通信帯域を一定値「1」とすると、第3実施形態では、各計算ノード100は自分以外の(N-1)台の計算ノード100と通信するので、通信リンク当たりの通信帯域BはB=1/(N-1)≒1/Nであるのに対し、本実施形態では、各計算ノード100は2(√N-1)台の計算ノード100と通信するので、B=1/2(√N-1)≒1/2√Nである。したがって、すべてのデータを転送するのにかかる全体の相対的な通信時間T(=MS/B)は、第3実施形態と本実施形態で等しくなる。
このように、本発明の第7実施形態に係る並列計算システム210は、前述の各実施形態に係る並列計算システム10と同様の高速化処理が可能である。また、(一次元または二次元)フルメッシュ接続された計算ノード間で波長多重通信を行うことを想定すると、一次元フルメッシュ接続による図1の並列計算システム10においてはN個の異なる波長を用意しなければならないが、二次元フルメッシュ接続による図21の並列計算システム210においては、必要な波長の数は√N個で済む。一般に、通信に利用できる波長帯域には限りがあり、そのため利用可能な波長の数も限られている。したがって、利用可能な波長の数が同一であるならば、二次元フルメッシュ接続の構成を採用することによって、一次元フルメッシュ接続の場合と比較して、より多くの計算ノード100からなる並列計算システム210を構築することができる。例えば、利用可能な波長の数が64個であるとすると、図1の並列計算システム10は最大で64台の計算ノード100しか含むことができないが、第7実施形態の二次元フルメッシュ接続された並列計算システム210は、最大で4096(=642)台の計算ノード100を含むことが可能である。したがって、本発明の第7実施形態によれば、より大規模な並列計算システム210を構築することが可能となり、より大規模な並列計算(例えば行列計算)を実現することができる。
<第8実施形態>
図22は、本発明の一実施形態に係る並列計算システム220の構成図であり、計算ノード300間の物理トポロジーを示している。図22には8台の計算ノード300が示されているが、並列計算システム220を構成する計算ノード300の数は、任意の数であってよい。
図22は、本発明の一実施形態に係る並列計算システム220の構成図であり、計算ノード300間の物理トポロジーを示している。図22には8台の計算ノード300が示されているが、並列計算システム220を構成する計算ノード300の数は、任意の数であってよい。
各計算ノード300は、光ファイバ227によって波長ルータ225に物理的に接続されている。並列計算システム220は、波長ルータ225にすべての計算ノード300が物理的に接続されたスター型接続の物理トポロジーを有する。各計算ノード300は、波長ルータ225を介して他の任意の計算ノード300と通信することができる。したがって、並列計算システム220は、論理的には、図1に示されるような一次元フルメッシュ接続の論理トポロジー、または図21に示されるような二次元フルメッシュ接続の論理トポロジーを有するように構成されている。
波長ルータ225は、複数の入出力ポートP1~P8を備え、そのそれぞれに、計算ノードN1~N8のうちの対応する1つが接続される。各計算ノード300から送信された光信号が、波長ルータ225のポートP1~P8のいずれかに入力される。波長ルータ225は、各ポートに入力された光信号を、ポートP1~P8のうちその波長に応じたいずれかの出力ポートに振り分ける機能を有する。この波長ルーティングによって、送信元の計算ノード300からの光信号が、宛先の計算ノード300にルーティングされる。例えば、図22に示されるように、計算ノードN1から送信された波長λ1、λ2、λ3、λ4、λ5、λ6、λ7の各光信号は、それぞれ、計算ノードN2、N3、N4、N5、N6、N7、N8にルーティングされる。
図23は、波長ルータ225によるルーティングを示すテーブルである。上に例示した計算ノードN1が送信元の場合は、図23のルーティングテーブルの最上段に示されている。また例えば、このルーティングテーブルの上から2段目には、計算ノードN2から送信された波長λ1、λ2、λ3、λ4、λ5、λ6、λ7の各光信号は、それぞれ、計算ノードN3、N4、N5、N6、N7、N8、N1にルーティングされることが示されている。他の計算ノード300が送信元である場合についても、図23から同様に理解することが可能である。このようなサイクリックな波長ルーティング機能を備えた波長ルータ225は、公知のパッシブ光回路を用いて実現することができる。
図24は、波長ルーティングを用いた並列計算システム220に適用される計算ノード300の構成図である。計算ノード300は、プロセッサ110、メモリ120、クロスバー・スイッチ330、複数の光源・変調器ユニット340、複数の光検出器350、マルチプレクサ360、およびデマルチプレクサ370を備える。プロセッサ110は、他の計算ノード300のそれぞれに対応して設けられた各光源・変調器ユニット340へ、クロスバー・スイッチ330を介して送信対象のデータを供給する。各光源・変調器ユニット340は、特定波長(λ1~λ7のうち当該光源・変調器ユニット340にあらかじめ割り当てられた1つの波長)のキャリア光を発生させ、クロスバー・スイッチ330からの入力データに基づいてキャリア光を変調しマルチプレクサ360へ出力する。各光源・変調器ユニット340からの各波長の光信号は、マルチプレクサ360によって波長多重され、送信側光ファイバ227-1へ送り出される。また、受信側光ファイバ227-2を通って、他の複数の計算ノード300から送信された波長多重された光信号がデマルチプレクサ370へ入力される。この波長多重信号は、デマルチプレクサ370によって波長分離されて、各波長の信号毎に、他の計算ノード300のそれぞれに対応して設けられた各光検出器350によって受信される。
なお図24では、メモリ120とクロスバー・スイッチ330間のデータの転送はプロセッサ110を介して行うように示されているが、メモリ120とクロスバー・スイッチ330間にダイレクト・メモリ・アクセス・コントローラ(DMAC)を設置し、メモリ120とクロスバー・スイッチ330間のデータの転送をプロセッサ110からオフロードし、DMAC経由で行ってもよい。また、図24の光源・変調器ユニット340は光源を内蔵しているが、光源は計算ノード300の外に設置し、その外部に設置した光源から光ファイバ等を介してキャリア光を変調器ユニット340に入力してもよい。
このように波長ルーティングを行うように構成された並列計算システム220においても、前述の第1~第7実施形態と同様にして並列計算のためのデータ通信を行うことが可能であり、それにより、並列計算の高速化を実現することができる。
上述のとおり、本実施形態の並列計算システム220は、各計算ノード300間が光ファイバ227および波長ルータ225を介して物理的に接続されるとともに、波長ルータ225による波長ルーティングを用いて各計算ノード300間が論理的にフルメッシュ接続された構成を有している。この並列計算システム220が、各計算ノード間がパケット・スイッチを介して接続された従来の並列計算システムに比べて優れている点を以下に説明する。まず計算ノード間の通信に必要な消費電力に関して、従来の電気のパケット・スイッチではその消費電力はスループット(ラインレート×ポート数)に比例する一方、波長ルータ225の消費電力はスループットに無依存であるため、特に高スループット時に本実施形態の並列計算システム220の方が低消費電力となる。次にポート数に関して、従来の電気のパケット・スイッチのポート数の上限は、主にフロントパネルに実装できる電気コネクタ数で決まり、1U当たり36程度である。一方、波長ルータのポート数の上限は主に波長数で決まり、信号のシンボルレートを25GBaud、チャンネル間隔を50GHzとすると、長距離光ファイバ通信で用いられているC帯全域で約80ポートが可能である。光ファイバとしてMTコネクタ等を用いると、250μm以下のピッチでアレイ化が可能であり、80台の計算ノードとの接続に必要な光ファイバ160芯分のコネクタを1Uのフロントパネルに収めることが可能である。従って、本実施形態の並列計算システム220は、従来に比べて小型化が可能である。また、計算ノード間における通信速度の高速化への適応容易性に関して、従来の電気のパケット・スイッチはビットレートや変調方式に依存するため、計算ノード間の通信速度を高速化する際には電気のパケット・スイッチも一緒に交換する必要があるが、波長ルータ225は電気的な信号処理を含まずビットレートや変調方式に無依存のため、そのまま使い続けることができる。従って、本実施形態の並列計算システム220は、従来に比べて経済的であると共に地球環境にも優しいという利点を備えている。
以上、本発明の実施形態を説明したが、本発明はこれに限定されず、その要旨を逸脱しない範囲内において様々な変更が可能である。
10 並列計算システム
20 通信リンク
100 計算ノード
110 プロセッサ
120 メモリ
122 プログラム格納領域
124 データ格納領域
130 送受信ユニット
132 通信ポート
210 並列計算システム
220 並列計算システム
225 波長ルータ
227 光ファイバ
300 計算ノード
330 クロスバー・スイッチ
340 光源・変調器ユニット
350 光検出器
360 マルチプレクサ
370 デマルチプレクサ
20 通信リンク
100 計算ノード
110 プロセッサ
120 メモリ
122 プログラム格納領域
124 データ格納領域
130 送受信ユニット
132 通信ポート
210 並列計算システム
220 並列計算システム
225 波長ルータ
227 光ファイバ
300 計算ノード
330 クロスバー・スイッチ
340 光源・変調器ユニット
350 光検出器
360 マルチプレクサ
370 デマルチプレクサ
Claims (14)
- 複数の計算ノードを備える並列計算システムにおいて並列計算を行う方法であって、
データを分割した第1レベルの小データの各々を前記複数の計算ノードの各々に配置する第1ステップと、
前記複数の計算ノードのうちの少なくとも1つの計算ノードを含む第1計算ノード群において、前記第1レベルの小データをさらに第2レベルの小データに分割する第2ステップと、
前記第2レベルの小データの各々を、前記第1計算ノード群から前記複数の計算ノードの部分集合である中継ノード群へ並列転送する第3ステップと、
前記転送された第2レベルの小データを、前記中継ノード群から前記複数の計算ノードのうちの少なくとも1つの計算ノードを含む第2計算ノード群へ並列転送する第4ステップと、
前記第2計算ノード群において、前記中継ノード群から転送された第2レベルの小データを用いて前記第1レベルの小データを再構成する第5ステップと、
を含む並列計算方法。 - 前記再構成された第1レベルの小データを用いて前記並列計算の一部分を実行する第6ステップをさらに含む、請求項1に記載の並列計算方法。
- 前記第3ステップにおける前記第1計算ノード群からの並列転送は、前記第1計算ノード群と前記中継ノード群との間で利用可能なすべての通信リンクが使用されるように、前記第1計算ノード群が、それぞれの前記第2レベルの小データを並列転送することを含む、請求項1または2に記載の並列計算方法。
- 前記第4ステップにおける前記第2計算ノード群への並列転送は、前記中継ノード群と前記第2計算ノード群との間で利用可能なすべての通信リンクが使用されるように、前記中継ノード群が、前記第2レベルの小データを並列転送することを含む、請求項1から3のいずれか1項に記載の並列計算方法。
- 前記計算ノードは、それぞれ複数の通信ポートを備え、
前記第3ステップにおける前記第1計算ノード群から前記中継ノード群へのデータ通信または前記第4ステップにおける前記中継ノード群から前記第2計算ノード群へのデータ通信は、前記複数の通信ポートを介して行われる、
請求項1から4のいずれか1項に記載の並列計算方法。 - 前記複数の計算ノードは論理フルメッシュ接続される、請求項1から5のいずれか1項に記載の並列計算方法。
- 前記並列計算は行列演算であり、前記データは行列を表すデータであり、前記第1レベルの小データは、前記行列を行方向および列方向に分割した小行列を表すデータである、請求項1から6のいずれか1項に記載の並列計算方法。
- 前記小行列は、前記行列をN分割(ただしNは計算ノードの数)した小行列であり、前記第2レベルの小データは、前記小行列をさらにN分割したデータである、請求項7に記載の並列計算方法。
- 前記行列演算は行列積の計算である、請求項7または8に記載の並列計算方法。
- 複数の計算ノードを備える並列計算システムにおいて並列計算を行う方法であって、
データを分割した第1レベルの小データの各々を、さらに第2レベルの小データに分割するステップと、
前記第2レベルの小データの各々を前記複数の計算ノードの各々に配置するステップと、
前記第2レベルの小データを、前記複数の計算ノードの各々から前記複数の計算ノードのうちの少なくとも1つの計算ノードへ並列転送するステップと、
前記少なくとも1つの計算ノードにおいて、前記複数の計算ノードから転送された第2レベルの小データを用いて前記第1レベルの小データを再構成するステップと、
を含む並列計算方法。 - 複数の計算ノードを備える並列計算システムであって、
データを分割した第1レベルの小データの各々が前記複数の計算ノードの各々に配置され、
前記複数の計算ノードのうちの少なくとも1つの第1計算ノードが、
前記第1レベルの小データをさらに第2レベルの小データに分割し、
前記第2レベルの小データの各々を前記複数の計算ノードの部分集合である中継ノード群へ並列転送する
ように構成され、
前記複数の計算ノードのうちの少なくとも1つの第2計算ノードが、
前記第2レベルの小データを前記中継ノード群から並列転送によって取得し、
前記中継ノード群から転送された第2レベルの小データを用いて前記第1レベルの小データを再構成する
ように構成される、
並列計算システム。 - 複数の計算ノードを備える並列計算システムであって、
データを分割した第1レベルの小データの各々がさらに第2レベルの小データに分割され、
前記第2レベルの小データの各々が前記複数の計算ノードの各々に配置され、
前記複数の計算ノードのうちの少なくとも1つの計算ノードが、
前記第2レベルの小データを前記複数の計算ノードの各々から並列転送によって取得し、
前記複数の計算ノードから転送された第2レベルの小データを用いて前記第1レベルの小データを再構成する
ように構成される、
並列計算システム。 - 前記複数の計算ノードは、一次元フルメッシュ接続または二次元フルメッシュ接続される、請求項11または12に記載の並列計算システム。
- 前記複数の計算ノードは、波長ルーティングを用いて論理的にフルメッシュ接続される、請求項13に記載の並列計算システム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/646,901 US20210406077A1 (en) | 2019-07-18 | 2019-07-18 | Method and system for parallel computation |
PCT/JP2019/028252 WO2021009901A1 (ja) | 2019-07-18 | 2019-07-18 | 並列計算方法およびシステム |
JP2020512891A JPWO2021009901A1 (ja) | 2019-07-18 | 2019-07-18 | 並列計算方法およびシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2019/028252 WO2021009901A1 (ja) | 2019-07-18 | 2019-07-18 | 並列計算方法およびシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2021009901A1 true WO2021009901A1 (ja) | 2021-01-21 |
Family
ID=74209742
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2019/028252 WO2021009901A1 (ja) | 2019-07-18 | 2019-07-18 | 並列計算方法およびシステム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20210406077A1 (ja) |
JP (1) | JPWO2021009901A1 (ja) |
WO (1) | WO2021009901A1 (ja) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11110362A (ja) * | 1997-10-01 | 1999-04-23 | Hitachi Ltd | 計算機間データ通信方法 |
JP2005072812A (ja) * | 2003-08-21 | 2005-03-17 | Nippon Telegr & Teleph Corp <Ntt> | 光wdm伝送ネットワークシステム及びその光合分波装置 |
JP2017201733A (ja) * | 2016-05-02 | 2017-11-09 | 富士通株式会社 | データ転送管理装置、データ転送管理方法およびデータ転送管理プログラム |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3639323B2 (ja) * | 1994-03-31 | 2005-04-20 | 富士通株式会社 | メモリ分散型並列計算機による連立1次方程式計算処理方法および計算機 |
US7958513B2 (en) * | 2005-11-17 | 2011-06-07 | International Business Machines Corporation | Method, system and program product for communicating among processes in a symmetric multi-processing cluster environment |
US8578132B2 (en) * | 2010-03-29 | 2013-11-05 | International Business Machines Corporation | Direct injection of data to be transferred in a hybrid computing environment |
CN107949838B (zh) * | 2015-09-10 | 2021-02-19 | 富士胶片株式会社 | 信息处理系统、信息处理方法及存储介质 |
US10984308B2 (en) * | 2016-08-12 | 2021-04-20 | Xilinx Technology Beijing Limited | Compression method for deep neural networks with load balance |
EP3651031A1 (en) * | 2017-08-31 | 2020-05-13 | Cambricon Technologies Corporation Limited | Chip device and related products |
JP2020046713A (ja) * | 2018-09-14 | 2020-03-26 | 日本電気株式会社 | 並列計算機システム、並列計算機システムの制御方法、及びプログラム |
-
2019
- 2019-07-18 WO PCT/JP2019/028252 patent/WO2021009901A1/ja active Application Filing
- 2019-07-18 US US16/646,901 patent/US20210406077A1/en not_active Abandoned
- 2019-07-18 JP JP2020512891A patent/JPWO2021009901A1/ja active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11110362A (ja) * | 1997-10-01 | 1999-04-23 | Hitachi Ltd | 計算機間データ通信方法 |
JP2005072812A (ja) * | 2003-08-21 | 2005-03-17 | Nippon Telegr & Teleph Corp <Ntt> | 光wdm伝送ネットワークシステム及びその光合分波装置 |
JP2017201733A (ja) * | 2016-05-02 | 2017-11-09 | 富士通株式会社 | データ転送管理装置、データ転送管理方法およびデータ転送管理プログラム |
Non-Patent Citations (1)
Title |
---|
VAN DE GEIJN R. A., WATTS J.: "SUMMA: scalable universal matrix multiplication algorithm", CONCURRENCY: PRACTICE AND EXPERIENCE, vol. 9, no. 4, 1 April 1997 (1997-04-01), pages 255 - 274, XP055784652, DOI: 10.1002/%28SICI%291096-9128%28199704%299%3A4%3C255%3A%3AAID-CPE250%3E3.0.CO%3B2-2! * |
Also Published As
Publication number | Publication date |
---|---|
JPWO2021009901A1 (ja) | 2021-09-13 |
US20210406077A1 (en) | 2021-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10454585B2 (en) | Data center network system and signal transmission system | |
CN103748817B (zh) | 用于灵活网格波长交换光网络的路由选择和带宽指配 | |
Kumar et al. | Improved access to optical bandwidth in trees | |
US9800959B2 (en) | Optical switching apparatus | |
CN107113064A (zh) | 光电交换机 | |
CN103795654B (zh) | 基于阵列波导光栅的无阻塞Clos交换网络设计方法 | |
CN111126588B (zh) | 集成电路芯片装置及相关产品 | |
US20190068307A1 (en) | Optical line terminal efficiently utilizing multilane and passive optical network comprising the optical line terminal | |
WO2021009901A1 (ja) | 並列計算方法およびシステム | |
Ottino et al. | RAMP: a flat nanosecond optical network and MPI operations for distributed deep learning systems | |
RU2543612C2 (ru) | Способ обработки кросс-коммутационной нагрузки для оборудования оптической трансаортной сети (otn) и соответствующее оборудование otn | |
Liang et al. | A general approach for all-to-all routing in multihop WDM optical networks | |
JP5983176B2 (ja) | ネットワーク設計装置、ネットワーク設計方法、及びネットワーク設計プログラム | |
CN109993292B (zh) | 集成电路芯片装置及相关产品 | |
CN111091189A (zh) | 集成电路芯片装置及相关产品 | |
US10945053B2 (en) | Method and device for processing service crossing master node | |
Sabrigiriraj et al. | Wavelength assignment for all-to-all broadcast in WDM optical linear array with limited drops | |
JP6377577B2 (ja) | 並列パケット伝送装置および方法 | |
JPH08242208A (ja) | ハイパキューブ型インタコネクションネットワーク | |
Lalwaney et al. | Optical interconnects for multiprocessors cost performance trade-offs | |
JP6279982B2 (ja) | 光パスネットワークシステムおよび通信制御方法 | |
JP7263688B2 (ja) | 知恵定義光トンネルネットワークシステム | |
WO2024110752A1 (en) | Network architecture | |
Liu et al. | 3D-hyper-fleX-LION: A flat and reconfigurable hyper-X network for datacenters | |
JP3984171B2 (ja) | 中継装置及びその設定方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
ENP | Entry into the national phase |
Ref document number: 2020512891 Country of ref document: JP Kind code of ref document: A |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 19937884 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 19937884 Country of ref document: EP Kind code of ref document: A1 |