INFORMATION PROCESSING APPARATUS, ARITHMETIC PROCESSING APPARATUS, AND CONTROL METHOD FOR INFORMATION PROCESSING APPARATUS

An information processing apparatus includes a plurality of arithmetic processing apparatuses each of which is coupled to a first plurality of other arithmetic processing apparatuses among the plurality of arithmetic processing apparatuses via a first path and a second path, to a second plurality of other arithmetic processing apparatuses among the plurality of arithmetic processing apparatuses via a third path. Each of the plurality of arithmetic processing apparatuses includes first positional information on the first path, second positional information on the second path, and third positional information on the third path. Each of the plurality of arithmetic processing apparatuses performs a communication with the first plurality of other arithmetic processing apparatuses or the second plurality of other arithmetic processing apparatuses using address information in which the first positional information and the second positional information corresponding to each of the first plurality of other arithmetic processing apparatuses are identical.

CROSS-REFERENCE TO RELATED APPLICATION

This application is based upon and claims the benefit of priority of the prior Japanese Patent Application No. 2017-217025, filed on Nov. 10, 2017, the entire contents of which are incorporated herein by reference.

FIELD

The embodiments discussed herein are related to an information processing apparatus, an arithmetic processing apparatus, and a control method for an information processing apparatus.

BACKGROUND

When a large-scale calculation such as a scientific technology calculation is performed using a computer system, a parallel calculation using a plurality of calculators is performed. An information processing apparatus capable of performing the parallel calculation is called a parallel computer. For example, the parallel computer includes a plurality of processors, and each process operating on each of the processors performs an overall calculation process while communicating data between the processes, thereby implementing a high arithmetic performance. A computational resource in the parallel computer, such as a processor, is called a node.

The parallel computer includes an inter-node connection network in which nodes are connected to each other via the Interconnect. In the inter-node connection network, it is general to use a direct network that uses an interconnect of connecting nodes each other. As a connection topology of a direct network which connects tens of thousands of nodes in a super parallel computer, a multidimensional mesh or a multidimensional torus is generally used.

Each node includes multiple connection ports. The inter-node connection may be grasped as a configuration in which coordinates are assigned to each connection port. For example, when a node includes six connection ports, it may be grasped that two connection ports represent the positive/negative direction of an X axis, the other two connection ports represent the positive/negative direction of a Y axis, and the remaining two connection ports represent the positive/negative direction of a Z axis. In this case, the connection port in the positive direction of the X axis is connected to the connection port in the negative direction of the X axis of the other node. By connecting the positive direction and the negative direction of the X axis, the X axis is represented by a connection path in which a plurality of nodes are continuously connected. Similarly, by connecting the positive direction and the negative direction of the Y axis, the Y axis is represented by a connection path in which a plurality of nodes are continuously connected, and by connecting the positive direction and the negative direction of the Z axis, the Z axis is represented by a connection path in which a plurality of nodes are continuously connected. That is, the parallel computer includes a three-dimensional inter-node connection network.

In the case of a high-dimensional connection, each node is assigned, for example, with an address represented by each coordinate. For example, in a three-dimensional inter-node network, an address expressed in three-dimensional coordinates (X, Y, Z) is assigned to each node. Then, as the address of each node advances in the positive direction of each coordinate, the value of the coordinate is added. Conversely, as the address of each node advances in the positive direction of each coordinate, the address of each node is subtracted from the value of the coordinate.

When an inter-node communication is performed, a source node transmits a packet adopting the address of a destination node as a destination address. The node that has received the packet compares the destination address with the own address, and when the destination address does not match the own address, the node that has received the packet transmits the packet to the other node. When the destination address matches the own address, the node processes the received packet as the own packet.

Since many nodes are connected in a high-dimensional connection in a packet routing method, each nodes does not have a routing table. Instead, there is a method of determining which connection port is used as an output port according to each node rule.

For example, as a technology of inter-node connection, in an inter-node connection having a connection topology of a three-dimensional torus, communication between nodes is carried out by the wavelength multiplexing, and the degree of multiplexing is changed to increase or decrease the communication capacity of individual transmission paths.

Related technologies are disclosed in, for example, Japanese Laid-open Patent Publication No. 2006-215815.

SUMMARY

According to an aspect of the embodiments, an information processing apparatus includes a plurality of arithmetic processing apparatuses each of the plurality of arithmetic processing apparatuses is coupled to a first plurality of other arithmetic processing apparatuses among the plurality of arithmetic processing apparatuses via a first path and a second path, each of the plurality of arithmetic processing apparatuses is coupled to a second plurality of other arithmetic processing apparatuses among the plurality of arithmetic processing apparatuses via a third path, each of the plurality of arithmetic processing apparatuses includes first positional information on the first path, second positional information on the second path, and third positional information on the third path. Each of the plurality of arithmetic processing apparatuses performs a communication with the first plurality of other arithmetic processing apparatuses or the second plurality of other arithmetic processing apparatuses using address information in which the first positional information and the second positional information corresponding to each of the first plurality of other arithmetic processing apparatuses are identical.

DESCRIPTION OF EMBODIMENTS

In a parallel computer of the related art, all the buses are connected with the same performance. For this reason, when there is a route on which communication is frequently performed, there is a possibility that the bus bandwidth on the route is insufficient. Therefore, it is considered that multiplexing is performed using another route in order to solve the bandwidth shortage. However, when another route is used, a process such as creating a protocol that expresses the order guarantee or redundancy may be added, and there is a possibility that the latency may vary for each route.

In addition, when a plurality of buses are simply used as routes for the same dimension, it may be difficult to represent a single node with a single address. When a plurality of addresses is assigned to one node, for example, in order to connect a bus to a node that uses a bus as in the related art, a plurality of address expressions is represented such that each node is connected via a different route. As a result, the assignment of addresses may be complicated. In addition, when assigning the plurality of addresses to a single node, management of addresses may become troublesome in the software or hardware that requests a transmission of packets.

For these reasons, it has been difficult to speed up the bus designated as the route on which frequent communication is performed. Therefore, it has been difficult to improve the processing speed of the parallel computer.

Embodiments of an information processing apparatus, an arithmetic processing apparatus, and a control method of the information processing apparatus according to the present disclosure will be described in detail below with reference to the accompanying drawings. The embodiments described below do not limit the information processing apparatus, the arithmetic processing apparatus, and the control method of the information processing apparatus disclosed herein.

First Embodiment

FIG. 1is a diagram illustrating the state of an inter-node connection of calculators in a parallel computer. As illustrated inFIG. 1, a parallel computer1, which is an information processing apparatus according to the present embodiment, includes nine calculators10which are arithmetic processing apparatuses. Here, the number of the calculators10of the parallel computer1is not particularly limited.

Each calculator10has six connection ports as illustrated inFIG. 2.FIG. 2is a diagram illustrating a connection port of the calculator. As illustrated inFIG. 2, paths to which the connection ports of the calculator10according to the present embodiment are connected are represented as the X axis, the Y axis, and the Z axis, respectively.

As illustrated inFIG. 2, one of the connection ports of the calculator10is connected to a path extending in the positive direction of the X axis represented by X(+), and the other is connected to a path extending in the negative direction of the X axis represented by X(−). That is, one of the combinations of two connection ports of the calculator10becomes a portion of a path representing the X axis. Further, one of the connection ports of the calculator10is connected to a path extending in the positive direction of the Y axis represented by Y(+), and the other is connected to a path extending in the negative direction of the Y axis represented by Y(−). That is, one of the combinations of two connection ports of the calculator10becomes a portion of a path representing the Y axis. In addition, one of the connection ports of the calculator10is connected to a path extending in the positive direction of the Z axis represented by Z(+), and the other is connected to a path extending in the negative direction of the Z axis represented by Z(−). That is, one of the combinations of two connection ports of the calculator10becomes a portion of a path representing the Z axis.

The connection port extending in the positive direction of the X axis of the calculator10is connected to the connection port extending in the negative direction of the X axis of the other calculator10. Further, the connection port extending in the positive direction of the Y axis of the calculator10is connected to the connection port extending in the negative direction of the Y axis of the other calculator10. The connection port extending in the positive direction of the Z axis of the calculator10is connected to the connection port extending in the negative direction of the Z axis of the other calculator10. Furthermore, in the parallel computer1according to the present embodiment, the calculator10is the same in a connection destination of the Z axis and a connection destination of the X axis.

In the present embodiment, when three calculators10are connected in a row for each coordinate axis, the connection port extending in the positive direction of the calculator10at both ends of the row is connected to the connection port extending in the negative direction thereof. Thus, the calculator10according to the present embodiment is connected in a torus shape by a path representing the X axis, a path representing the Y axis, and a path representing the Z axis.

The state of a torus-shaped connection corresponds to an example of a state of “a ring-shaped connection.” Further, the path representing the X axis corresponds to an example of a “first path,” the path representing the Y axis corresponds to an example of a “third path,” and the path representing the Z axis corresponds to an example of a “second path.” In addition, when viewed from the specific calculator10, the other calculator10connected by the path representing the X axis and the path representing the Z axis corresponds to an example of a “first plurality of other arithmetic processing apparatuses” for the specific calculator10. When viewed from the specific calculator10, the other calculator10connected by the path representing the Y axis corresponds to an example of a “second plurality of arithmetic processing apparatuses” for the specific calculator10.

As illustrated inFIG. 1, the nine calculators10are connected by the paths151to153which connect the three calculators10in a row. Path151represents the X axis. Further, path152represents the Y axis. Path153also represents the Z axis.

As described above, the connection destination of the connection port representing the Z axis and the connection destination of the connection port representing the X axis in each calculator10are the same calculator10. The structure of the connection port, which represents the same coordinate axis as the connection ports representing the X axis and the Z axis, is referred to as a “multi-port structure.”

The path151corresponding to the X axis and the path153corresponding to the Z axis in this case may be referred to as a path representing the same coordinate axes as illustrated inFIG. 3.FIG. 3is a diagram illustrating a state in which coordinate axes are integrated when a multi-port structure is provided. Thus, in this case, the path in the direction of the coordinate axis corresponding to paths151and153has twice the bus width. That is, a connection port having a multi-port structure is a connection port that multiplexes one coordinate axis.

In addition, each calculator10is assigned a coordinate represented by a value on each coordinate axis. In the following description, a coordinate represented by the value on the coordinate axis generated by connecting each connection port is referred to as a “connection port coordinate.” The connection port coordinate of the calculator10according to the present embodiment is a three-dimensional coordinate, and is represented in the form of (X, Y, Z).

Specifically, the connection port coordinate of each calculator10is determined by the following procedure. First, the calculator10is selected as a reference among the connection port coordinates. Then, the connection port coordinate of the reference calculator10becomes (0, 0, 0). The value incremented by one every time the X axis of the path151connected to the reference calculator10moves in the positive direction of the X axis becomes a value of the X axis of the connection port coordinate of the calculator10on the path151connected to the reference calculator10. However, when the calculator10proceeds to the positive direction of the path151and returns to the reference calculator10, assignment of the value of the X axis of the connection port coordinates of the calculator10on the path151connected to the reference calculator10is completed. In each calculator10to which the value of the X axis is assigned, the same value as the coordinate value of the X axis is assigned as the value of the coordinate of the Z axis indicated by the connection port representing the X axis and the connection port having the multi-port structure. Thus, the value of the Z axis of the connection port coordinate of the calculator10on the path153connected to the reference calculator10is assigned. In addition, the value of the Y axis of the calculator10on the paths151and153connected to the reference calculator10becomes zero which is the same as that of the reference calculator10.

Further, the value of the Y axis of the connection port coordinate of the calculator10on the path152connected to the reference calculator10is set to a value that increases by one every time the calculator10moves in the positive direction of the Y axis in the path152connected to the reference calculator10. However, when the calculator10proceeds to the positive direction of the path152and returns to the reference calculator10, assignment of the value of the X axis of the connection port coordinates of the calculator10on the path152connected to the reference calculator10is completed. In addition, the values of the X and Y axes of the connection port coordinates of the calculator10on the path152connected to the reference calculator10become zero which is the same as that of the reference calculator10.

In addition, the connection port coordinates obtained by incrementing the value of the Y axis one by one every time the calculator10moves from the calculator10on the paths151and153connected to the reference calculator10in the positive direction of the Y axis become the connection port coordinates of the calculator10at each position. Thus, the connection port coordinates assigned to the respective calculators10illustrated inFIG. 1are assigned to the respective calculators10.

That is, the connection port coordinates which are in an ascending order in one direction for each of the paths151to153and in which the values of the plurality of coordinates represented by the connection ports having the multi-port structure are set to the same value are assigned to the respective calculators10. Then, the connection port coordinates assigned to each of the calculators10become the addresses of the respective calculators10. An X coordinate in the connection port coordinates at this address corresponds to an example of “first positional information,” a Y coordinate corresponds to an example of “third positional information,” and a Z coordinate corresponds to an example of “second positional information.” Further, in the present embodiment, the fact that the X coordinate and the Z coordinate, which are the coordinates indicated by the connection ports having the multi-port structure have the same value, corresponds to an example that “the first positional information and the second positional information are identical.”

In addition, the calculator10has the configuration illustrated inFIG. 4.FIG. 4is a block diagram of the calculator. The calculator10includes a central processing unit (CPU)11, a transmitting/receiving circuit12, a crossbar switch13, and connection ports141to146. The transmitting/receiving circuit12also includes a plurality of transmitting/receiving engines120.

The CPU11serving as a processing device or a processor determines a destination of a packet. Then, the CPU11selects an empty transmitting/receiving engine120. Thereafter, the CPU11designates a destination address and outputs the packet to the selected transmitting/receiving engine120.

In addition, the CPU11receives an input of a packet transmitted from the other calculator10which designates the own device as a destination address from the transmitting/receiving engine120. The CPU11then performs a process using the acquired packet.

The transmitting/receiving engine120receives the input of the packet to be transmitted from the CPU11together with the destination address. The transmitting/receiving engine120then determines whether the acquired packet is a packet for which an order guarantee is requested.

When the acquired packet is a packet for which an order guarantee is requested, the transmitting/receiving engine120determines whether there is a preceding packet for which an order guarantee is requested for the acquired packet. When there is a preceding packet for which an order guarantee is requested for the acquired packet, the transmitting/receiving engine120sets a transmission route that has transmitted the preceding packet as the transmission route of the received packet. Then, the transmitting/receiving engine120outputs the packet to one of the connection ports141to146that have transmitted the preceding packet according to the transmission route.

When there is no preceding packet for which an order guarantee is requested for the acquired packet, the transmitting/receiving engine120determines the transmission route using the empty state of the connection port140and the destination address. Then, the transmitting/receiving engine120outputs the packet to the connection port140based on the determined transmitting/receiving route.

In the meantime, when no order guarantee is requested for the acquired packet, the transmitting/receiving engine120determines the transmission route using the empty state of the connection port140and the destination address. Thereafter, the transmitting/receiving engine120outputs the packet to any of the connection ports141to146via the crossbar switch13according to the determined transmission route.

In addition, the transmitting/receiving engine120receives the input of packets transmitted from the other calculator10which designates the own device as a destination address from the connection ports141to146via the crossbar switch13. The transmitting/receiving engine120then outputs the acquired packet to the CPU11. The transmitting/receiving engine120corresponds to an example of a “transmission/reception control circuit.”

The crossbar switch13is a switch that switches the connection path between the transmitting/receiving engine120and the connection ports141to146. When a packet is transmitted/received, the crossbar switch13switches the connection path in response to an instruction from the transmitting/receiving engine120.

The connection ports141to146are ports which connect the calculator10to another calculator10. The connection port141is a port which is connected to the path extending in the positive direction of the X axis. InFIG. 4, the X(+) port is marked so that it is easy to understand that the port extends in the positive direction of the X axis. Further, the connection port142is a port which is connected to the path extending in the negative direction of the X axis. InFIG. 4, the connection port142is marked with the X(−) port so that it is easy to understand that the port extends in the negative direction of the X axis. Also, the connection port143is a port which is connected to the path extending in the positive direction of the Y axis. InFIG. 4, the connection port143is marked with the Y(+) port so that it is easy to understand that the port extends in the positive direction of the Y axis. Further, the connection port144is a port which is connected to the path extending in the negative direction of the Y axis. InFIG. 4, the connection port144is marked with the Y(−) port so that it is easy to understand that the port extends in the negative direction of the Y axis. Also, the connection port145is a port which is connected to the path extending in the positive direction of the Z axis. InFIG. 4, the connection port145is marked with the Z(+) port so that it is easy to understand that the port extends in the positive direction of the Z axis. In addition, the connection port146is a port which is connected to the path extending in the negative direction of the Z axis. InFIG. 4, the connection port146is marked with the Z(−) port so that it is easy to understand that the port extends in the negative direction of the Z axis. In the following description, when the connection ports141to146are not distinguished from each other, they are referred to as “connection port140.”

Each of the connection ports140has a determination circuit40. The determination circuit40stores the address of the calculator10on which the calculator10itself is mounted. Then, when the connection port140on which the connection port140itself is mounted receives the packet transmitted from another calculator10, the determination circuit40acquires a destination address of the received packet. Then, the determination circuit40compares the acquired destination address with the address of the calculator10on which the calculator10itself is mounted. When the acquired destination address matches the address of the calculator10on which the calculator10itself is mounted, the determination circuit40outputs the received packet to the transmitting/receiving engine120via the crossbar switch13. In addition, when the acquired destination address matches the address of the calculator10on which the calculator10itself is mounted, the determination circuit40determines the transmission route of the packet. Thereafter, the connection port140outputs the packet to any of the other connection ports140via the crossbar switch13according to the determined transmission route.

Next, the flow of a packet transmission process in the parallel computer1according to the present embodiment will be described with reference toFIG. 5.FIG. 5is a flowchart of a transmission process of a packet by a parallel computer according to a first embodiment.

The connection port140specified as the multi-port structure of each calculator10is connected to the same other calculator10(step S1).

In addition, the connection port coordinates of each calculator10are determined such that the values of the coordinates to which the connection ports140specified as the multi-port structure of each calculator10are connected are the same. Then, the determined connection port coordinates are assigned to each calculator10as an address (step S2).

Thereafter, upon receiving a packet transmitted from the CPU11, the transmitting/receiving engine120determines whether the acquired packet is a packet for which an order guarantee is requested (step S3).

When the acquired packet is a packet for which an order guarantee is requested (“YES” in step S3), the transmitting/receiving engine120determines whether there is a preceding packet for which an order guarantee is requested for the acquired packet (step S4). When there is the preceding packet (“YES” in step S4), the transmitting/receiving engine120determines that the same transmission route as the preceding packet is the transmission route of the acquired packet, and transmits the packet to the connection port140that has transmitted the preceding packet (step S5).

In the meantime, when the acquired packet is not a packet for which an order guarantee is requested (“NO” in step S3) or when there is no preceding packet in the acquired packet (“NO” in step S4), the transmitting/receiving engine120performs the following process. The transmitting/receiving engine120selects an empty connection port140among the connection ports140that are connected to the transmission route for sending the packet to the destination address. The transmitting/receiving engine120then transmits the packet to the selected connection port140(step S6).

Thereafter, the transmitting/receiving engine120determines whether to continue the transmission of the packet (step S7). When the transmission of the packet is continued (“YES” in step S7), the transmitting/receiving engine120returns to step S3.

When the transmission of the packet is terminated (“NO” in step S7), the transmitting/receiving engine120ends the transmission process of the packet.

As described above, in the present embodiment, each calculator of the parallel computer is connected so that the connection ports corresponding to different coordinate axes are connected to the same calculator, so that the connection port has a multi-port structure. The calculator is then given, as an address, the coordinate that has the same value on the coordinate axis corresponding to the connection port having the multi-port structure. This expands the bus with the calculator to which the connection port having the multi-port structure is connected. That is, by assigning a path to which connection ports having a multi-port structure are connected to a path on which communication is performed frequently, it is possible to speed up the bus that performs a frequent communication. Thus, the processing speed may be improved.

In addition, all paths to which connection ports having a multi-port structure are connected are represented by addresses having the same connection destination. Thus, one calculator may be represented by one address, so that the assignment of addresses may be easily performed. It is then possible to reduce the additional elements of the hardware and the processing of the software in transmitting the packet.

Second Embodiment

FIG. 6is a block diagram of a management system of a parallel computer according to a second embodiment. The management system according to the present embodiment is different from the first embodiment in that the determination of the connection paths between the calculators10and assignment of the addresses is automatically performed. In the following description, the operation of each portion which is the same as that of the first embodiment will be omitted.

A management apparatus2is connected to the parallel computer1. Here, inFIG. 6, the management apparatus2is a device different from the parallel computer1, but the present disclosure is not limited thereto. For example, the management apparatus2may be arranged in the parallel computer1using any one of these calculators10of the parallel computer1as the management apparatus2. The management apparatus2includes a connection determination circuit21, a connection switching circuit22, and an address assignment circuit23.

The connection determination circuit21has information of the calculator10of the parallel computer1. Then, the connection determination circuit21receives the input of the number of the calculators10on each coordinate axis. In addition, the connection determination circuit21receives the input of information on whether to expand the bus width and information on the bus width to be secured. Next, when the extension of the path width is specified, the connection determination circuit21selects the connection port140to be a multi-port structure so as to secure the specified bus width.

Then, the connection determination circuit21determines the calculator10to which each of the connection ports140of the respective calculators10is connected so that the connection port140having a multi-port structure is connected to the same calculator10and the number of the calculators10on the coordinate axis becomes a specified number. The connection determination circuit21then outputs the information of the connection destination of each of the connection ports140of the determined calculators10to the connection switching circuit22and the address assignment circuit23.

The connection switching circuit22receives the input of the information of the connection destination of the connection port140of each calculator10from the connection determination circuit21. Then, the connection switching circuit22switches connection between the calculators10so that the connection port140of each calculator10is connected to the specified calculator10of the connection destination.

The address assignment circuit23receives the input of the information of the connection destination of the connection port140of each calculator10from the connection determination circuit21. The address assignment circuit23then determines the connection port coordinates of each calculator10so that the coordinate values on the coordinate axes indicated by the connection ports140having the multi-port structure in the respective calculators10coincide with each other. Then, the address assignment circuit23assigns the determined connection port coordinates to each calculator10as an address of each calculator10.

Next, a flow of the connection path determination process performed by the connection determination circuit21will be described with reference toFIG. 7.FIG. 7is a flowchart of a process of determining a connection path.

The connection determination circuit21determines whether the bus width is to be extended depending on whether a designation of the path that extends the bus width has been received from the operator (step S101).

When the bus width is to be expanded (“YES” in step S101), the connection determination circuit21selects one unselected coordinate axis from the coordinate axes (step S102).

Next, the connection determination circuit21assigns the connection port140corresponding to the selected coordinate axis to the port having the multi-port structure (step S103).

Next, the connection determination circuit21determines whether the bus width of the path integrating the connection port140assigned as the port having the multi-port structure may secure the specified bus width (step S104). When the bus width has not yet been secured (“NO” in step S104), the connection determination circuit21returns to step S102.

When the bus width may be secured (“YES” in step S104), the connection determination circuit21assigns the address to the calculator10in association with the multi-port structure (step S105).

In the meantime, when the bus width is not extended (“NO” in step S101), the connection determination circuit21assigns the address in a normal procedure (step S106). That is, the connection determination circuit21connects the calculator10so that the connection ports140of each calculator10correspond to the respectively different coordinate axes.

Next, the flow of the address assignment process to the calculator10by the address assignment circuit23will be described with reference toFIGS. 8A and 8B.FIGS. 8A and 8Bare flowcharts of an address assignment process.

The address assignment circuit23selects the calculator10serving as a reference among the calculators10of the parallel computer1. Then, the address assignment circuit23sets the connection port coordinates of the selected calculator10as (0, 0, 0) (step S201).

Next, the address assignment circuit23initializes the connection port coordinates for assignment (step S202). That is, the address assignment circuit23sets each coordinate of the connection port coordinates for assignment as X=0, Y=0, and Z=0.

Next, the address assignment circuit23selects the X axis as the selection axis and increments one X coordinate value of the connection port coordinates for assignment (step S203).

Next, the address assignment circuit23selects the calculator10at the position shifted by the number of coordinate values of the selected coordinate axes in the connection port coordinates for assignment in the positive direction of the selected coordinate axis as a target to be assigned (step S204).

Next, the address assignment circuit23determines whether there is a coordinate axis having the same coordinate value as the selected coordinate axis, depending on whether the connection port140corresponding to the selected coordinate axis in the calculator10to be assigned has a multi-port structure (step S205). When there is no coordinate axis having the same coordinate value (“NO” in step S205), the address assignment circuit23proceeds to step S207.

In the meantime, when there is a coordinate axis having the same coordinate value (“YES” in step S205), the address assignment circuit23sets the coordinate value of the coordinate axis having the same coordinate value as the selected coordinate axis in the connection port coordinate for assignment to the same value as the coordinate value of the selected coordinate axis (step S206).

Next, the address assignment circuit23sets the current connection port coordinates for assignment to the connection port coordinates of the calculator10to be assigned. Then, the address assignment circuit23assigns the connection port coordinates of the calculator10to be assigned as an address (step207).

Next, the address assignment circuit23determines whether there is a coordinate axis which may move in the positive direction from the calculator10to be assigned (step S208).

When there is a coordinate axis which may move in the positive direction (“YES” in step S208), the address assignment circuit23determines whether the calculator10serving as a reference has been reached when moving from the calculator10to be assigned one by one in the X axis direction (step S209). When the calculator10serving as a reference has not been reached (“NO” in step S209), the address assignment circuit23returns to step S203.

In the meantime, when it is difficult to move in the positive direction of the selected coordinate axis (“NO” in step S208) and when the calculator10serving as a reference has been reached (“YES” in step S209), the address assignment circuit23determines whether the X coordinate of the connection port coordinate for assignment is the maximum value (step S210). When the X coordinate of the connection port coordinate for assignment is not the maximum value (“NO” in step S210), the address assignment circuit23returns to step S203.

When the X coordinate of the connection port coordinate for assignment is the maximum value (“YES” in step S210), the address assignment circuit23determines whether the Y coordinate of the connection port coordinate for assignment is the maximum value (step S211). When the Y coordinate of the connection port coordinate for assignment is not the maximum value (“NO” in step S211), the address assignment circuit23selects the Y axis as a selection axis, increments the Y coordinate value of the connection port coordinate for assignment by one (step S212), and the process returns to step S204.

When the Y coordinate of the connection port coordinate for assignment is the maximum value (“YES” in step S211), the address assignment circuit23determines whether the Z coordinate of the connection port coordinate for assignment is the maximum value (step S213). When the Z coordinate of the connection port coordinate for assignment is not the maximum value (“NO” in step S213), the address assignment circuit23selects the Z axis as a selection axis and increments the value of the Z coordinate of the connection port coordinate for assignment (step S214), and the process returns to step S204.

When the Z coordinate of the connection port coordinate for assignment is the maximum value (“YES” in step S213), the address assignment circuit23ends the address assignment process.

As described above, the calculator of the parallel computer according to the present embodiment is automatically connected so that the connection ports corresponding to different coordinate axes are connected to the same calculator, and the connection ports have a multi-port structure. In the calculator according to the present embodiment, the coordinates having the same value on coordinate axes corresponding to the connection ports having a multi-port structure are automatically given as an address. Thus, the bus width may be easily expanded. Further, in the inter-node connection having the multi-port structure, it is possible to reduce the number of additional elements of the hardware and the processing of the software in the packet transmission.

Here, in the present embodiment, a case of automatically performing the connection between the calculators10and the assignment of addresses has been described. However, a configuration may be employed in which addresses are automatically assigned to the calculators10connected in advance so as to have a multi-port structure. In this case as well, in the inter-node connection having the multi-port structure, it is possible to reduce the number of additional elements of the hardware and the processing of the software in the packet transmission.

Third Embodiment

Hereinafter, a third embodiment will be described. The calculator in the parallel computer1according to the present embodiment is different from the first embodiment in that the transmitting/receiving engine120selects a port which outputs packets in accordance with the priority order. A block diagram of the calculator10according to the present embodiment is also illustrated inFIG. 4. In the following description, the operation of each portion which is the same as that of the first embodiment will not be described.

The CPU11determines whether an order guarantee is requested for the packet to be transmitted. In the case of a packet for which an order guarantee is requested, the CPU11determines whether there is a preceding packet which performs an order guarantee on the packet to be transmitted.

When there is a preceding packet, the CPU11selects the transmitting/receiving engine120that has transmitted the preceding packet. Then, the CPU11outputs the packet transmission command to the selected transmitting/receiving engine120.

When there is no preceding packet, the CPU11selects an empty transmitting/receiving engine120. Then, the CPU11outputs the packet transmission command to the selected transmitting/receiving engine120.

Further, in the case of a packet for which an order guarantee is not requested, the CPU11selects the empty transmitting/receiving engine120. Then, the CPU11outputs the packet transmission command to the selected transmitting/receiving engine120.

Each of the transmitting/receiving engines120has any of the priority order patterns illustrated inFIG. 9in advance.FIG. 9is a diagram illustrating a priority order pattern. For example, one transmitting/receiving engine120stores a first pattern as a priority order pattern. In addition, the other transmitting/receiving engine120stores a second pattern as a priority order pattern.

InFIG. 9, the connection port140is indicated by a coordinate axis. For example, the connection port140having the highest priority in the first pattern is the connection port140connected in the positive and negative directions of the X axis, and is the connection ports141and142inFIG. 4.

The transmitting/receiving engine120receives an input of a packet transmission command from the CPU11. When the packet is a packet for which an order guarantee is requested, the transmitting/receiving engine120determines whether there is a preceding packet. When there is a preceding packet, the transmitting/receiving engine120determines transmitting the received packet using the same transmission route. The transmitting/receiving engine120then selects the connection port140that has transmitted the preceding packet as an output port. Then, the transmitting/receiving engine120transmits the received packet to the selected connection port140.

In the meantime, when there is no preceding packet, or when the packet is not requested for order guarantee, the transmitting/receiving engine120performs the following process. The transmitting/receiving engine120specifies a route which transmits a packet to a destination address. Next, the transmitting/receiving engine120specifies empty connection ports140among the connection ports140that may pass through a specific route. Then, the transmitting/receiving engine120selects, as an output port, the connection port140which has the highest priority order in the own priority order pattern among the specified connection ports140. Thereafter, the transmitting/receiving engine120transmits the packet to the selected connection port140.

For example, descriptions will be made on a case where the transmitting/receiving engine120uses the first pattern among the output patterns illustrated inFIG. 9. When an order guarantee is not requested and all the connection ports140are empty, the transmitting/receiving engine120sets the connection port141or142inFIG. 4, which is the connection port140in the positive and negative directions of the X axis, as the output port. Further, when an order guarantee is not requested and the portion other than the connection port140in the positive and negative directions of the X axis is empty, the transmitting/receiving engine120sets, as the output port, the connection port143or144illustrated inFIG. 4, which is the connection port140in the positive and negative directions of the Y axis.

Next, the flow of the packet transmission process by the parallel computer1according to the present embodiment will be described with reference toFIG. 10.FIG. 10is a flowchart of the packet transmission process by the parallel computer according to the third embodiment.

The connection port140specified as the multi-port structure of each calculator10is connected to the same other calculator10(step S301).

Further, the connection port coordinates of each calculator10are determined such that the values of the coordinates to which the connection ports140specified as the multi-port structure of each calculator10are connected are the same. Then, the determined connection port coordinates are assigned to the respective calculators10as addresses (step S302).

Thereafter, when the packet transmission is determined, the CPU11determines whether the packet to be transmitted is a packet for which an order guarantee is requested (step S303).

When the packet is a packet for which an order guarantee is requested (“YES” in step S303), the CPU11determines whether there is a preceding packet for which an order guarantee is requested for the packet to be transmitted (step S304).

When there is a preceding packet (“YES” in step S304), the CPU11selects the transmitting/receiving engine120that has transmitted the preceding packet (step S305). Then, the CPU11outputs a packet transmission command to the transmitting/receiving engine120that has transmitted the preceding packet.

The transmitting/receiving engine120receives an input of the packet transmission command from the CPU11. Then, the transmitting/receiving engine120determines that the same transmission route as the preceding packet is the transmission route of the acquired packet, and transmits the packet to the connection port140that has transmitted the preceding packet (step S306).

In the meantime, when the acquired packet is not a packet for which an order guarantee is requested (“NO” in step S303) or when there is no preceding packet in the acquired packet (“NO” in step S304), the CPU11selects an empty transmitting/receiving engine120. Then, the CPU11outputs a packet transmission command to the selected transmitting/receiving engine120.

The transmitting/receiving engine120receives an input of the packet transmission command from the CPU11. Then, the transmitting/receiving engine120selects the connection port140to be an output port in accordance with the destination address of the packet, the empty state of the connection port140, and the priority order. The transmitting/receiving engine120then transmits the packet to the selected connection port140(step S308).

Thereafter, the transmitting/receiving engine120determines whether to continue the transmission of the packet (step S309). When the transmission of the packet is continued (“YES” in step S309), the transmitting/receiving engine120returns to step S303.

When the packet transmission is not continued but ends (“NO” in step S309), the transmitting/receiving engine120ends the packet transmission process.

As described above, in each calculator of the parallel computer according to the present embodiment, the transmitting/receiving engine selects the output port of the packet in accordance with the priority order. As a result, it is possible to preferentially select a path having a wide bus width, and the processing speed may be improved.

Fourth Embodiment

FIG. 11is a block diagram of a calculator according to a fourth embodiment. The calculator10according to the present embodiment includes a plurality of command queues200. The calculator10according to the present embodiment is different from the third embodiment in that the command queue200selects a port from which packets are output according to the priority order. In the following description, similarly to the third embodiment, the operation of each portion which is similar to that of the first embodiment will not be described.

The transmitting/receiving engine120receives a packet transmission command from the CPU11. Then, the transmitting/receiving engine120determines whether the packet to be transmitted is a packet for which an order guarantee is requested. In the case of a packet for which an order guarantee is requested, the transmitting/receiving engine120determines whether there is a preceding packet which performs an order guarantee for the packet to be transmitted.

When there is a preceding packet, the transmitting/receiving engine120selects the command queue200that has transmitted the preceding packet. Then, the transmitting/receiving engine120outputs a packet transmission command to the selected command queue200.

When there is no preceding packet, the transmitting/receiving engine120selects an empty command queue200. Then, the transmitting/receiving engine120outputs a packet transmission command to the selected command queue200.

In addition, in the case of a packet for which an order guarantee is not requested, the transmitting/receiving engine120selects an empty command queue200. Then, the transmitting/receiving engine120outputs a packet transmission command to the selected command queue200.

The command queue200is disposed between the transmitting/receiving engine120and the crossbar switch13so that a predetermined number corresponds to each transmitting/receiving engine120. The command queue200stores commands such as transmission commands transmitted from the transmitting/receiving engine120, and processes the commands in the order of the stored timings.

Packet transmission will be described in more detail. The command queue200has any one of the priority order patterns illustrated inFIG. 9in advance. Then, the command queue200receives an input of the transmission command of the packet from the transmitting/receiving engine120.

When the packet is a packet for which an order guarantee is requested, the command queue200determines whether there is a preceding packet. When there is a preceding packet, the command queue200determines to transmit the received packet using the same transmission route. Then, the command queue200selects the connection port140that has transmitted the preceding packet as the output port. The command queue200then transmits the packet received by the selected connection port140.

When there is no preceding packet or when the packet is not requested for an order guarantee, the command queue200performs the following process. The command queue200specifies a route which transmits a packet to a destination address. Next, the command queue200specifies empty connection ports140among the connection ports140that may pass through a specific route. The command queue200selects, as an output port, the connection port140having the highest priority order in the own priority order pattern among the specified connection ports140. Thereafter, the command queue200transmits the packet to the selected connection port140.

For example, descriptions will be made on a case where the command queue200uses the second pattern among the patterns indicating the priority order illustrated inFIG. 9. When an order guarantee is not requested and all connection ports140are empty, the command queue200sets the connection port145or146illustrated inFIG. 11, which is the connection port140in the positive and negative directions of the Z axis, as the output port. Further, when an order guarantee is not requested and the portion other than the connection port140in the positive and negative directions of the Z axis is empty, the command queue200sets the connection port141or142illustrated inFIG. 11, which is the connection port140in the positive and negative directions of the Z axis, as the output port.

In addition, the command queue200acquires the packets transmitted from the other calculator10via the crossbar switch13. The command queue200outputs the packets to the transmitting/receiving engine120in order of acquisition while adjusting the transmission timings of the packets with the command queue200connected to the same transmitting/receiving engine120. This command queue200corresponds to an example of a “temporary holding circuit.”

Next, the flow of the packet transmission process by the parallel computer1according to the present embodiment will be described with reference toFIG. 12.FIG. 12is a flowchart of a packet transmission process by the parallel computer according to the fourth embodiment.

The connection port140specified as the multi-port structure of each calculator10is connected to the same other calculator10(step S401).

The connection port coordinates of each calculator10are determined such that the values of the coordinates to which the connection ports140specified as the multi-port structure of each calculator10are connected are the same. Then, the determined connection port coordinates are assigned to the respective computers10as addresses (step S402).

Thereafter, upon receiving the input of the packet transmitted from the CPU11, the transmitting/receiving engine120determines whether the acquired packet is a packet for which an order guarantee is requested (step S403).

In the case of a packet for which an order guarantee is requested (“YES” in step S403), the transmitting/receiving engine120determines whether there is a preceding packet for which an order guarantee is requested for the acquired packet (step S404).

When there is a preceding packet (“YES” in step S404), the transmitting/receiving engine120selects the command queue200that has transmitted the preceding packet (step S405).

Then, the transmitting/receiving engine120transmits a packet transmission command to the command queue200that has transmitted the preceding packet (step S406).

The command queue200receives an input of a packet transmission command from the transmitting/receiving engine120. Then, the command queue200transmits the packet to the same connection port140as the connection port140that has transmitted the preceding packet (step S407).

In the meantime, when the acquired packet is not a packet for which an order guarantee is requested (“NO” in step S403) or when there is no preceding packet in the acquired packet (“NO” in step S404), the transmitting/receiving engine120performs the following process. The transmitting/receiving engine120selects an empty command queue200(step S408).

Then, the transmitting/receiving engine120transmits a packet transmission command to the selected command queue200(step S409).

The command queue200receives an input of a packet transmission command from the transmitting/receiving engine120. Then, the command queue200selects the connection port140to be an output port in accordance with the empty state and priority order of the connection port140. The command queue200then transmits the packet to the selected access port140(step S410).

Thereafter, the transmitting/receiving engine120determines whether to continue the transmission of the packet (step S411). When the transmission of the packet is continued (“YES” in step S411), the transmitting/receiving engine120returns to step S403.

When the packet transmission is ended without connection (“NO” in step S411), the transmitting/receiving engine120ends the packet transmission process.

As described above, each of the calculators in the parallel computer according to the present embodiment selects the output port of the packet in accordance with the priority order of the command queue. As a result, it is possible to preferentially select a path having a wide bus width, and the processing speed may be improved. In addition, in general, the setting register of each command queue may often be a bit difference of the same address. Therefore, the command queue corresponding to each transmitting/receiving engine may have the same setting by storing the same value in the setting register. From this, the setting of the priority order for the command queue may be performed collectively by broadcasting. Therefore, compared with the case where the priority order is determined by the transmitting/receiving engine, the cost and time required to rewrite the priority order may be reduced.

FIG. 11is used in the description of the present embodiment in which the output port is selected according to the priority order by the command queue. However, even the configuration ofFIG. 11may cause the transmitting/receiving engine120to select the output port according to the priority order as in the third embodiment.

Fifth Embodiment

FIG. 13is a diagram for explaining the transmission and reception of the packets in a parallel computer according to a fifth embodiment. The calculator10according to the present embodiment is different from the first embodiment in that packets are divided and the divided packets are transmitted using each of the connection ports140having a multi-port structure. In the following description, similarly to the third embodiment, the operation of each portion which is similar to that of the first embodiment will not be described.

InFIG. 13, the packets401and the divided packets402and403described below the calculator10toward the ground indicate the state of the packets when the divided packets are transmitted between the calculators10. Here, in the present embodiment, descriptions will be made on a case where the connection ports141and142and the connection ports145and146corresponding to the X and Z axes have a multi-port structure.

The transmitting/receiving engine120receives from the CPU11a packet transmission command directed to the calculator10connected to the connection port140connected in the positive direction of the X and Z axes. Here, as an example, descriptions will be made on a case where the packets401are transmitted in the positive direction of the X and Z axes. When transmitting the packets401toward the calculator10connected to the connection port140having the multi-port structure, the transmitting/receiving engine120divides the packets401and generates divided packets402and403.

The transmitting/receiving engine120determines to transmit the divided packets402to the other calculator10using the connection port141connected in the positive direction of the X axis. Further, the transmitting/receiving engine120determines to transmit the divided packets403to the other calculator10using the connection port145connected in the positive direction of the X axis. Thereafter, the transmitting/receiving engine120outputs the divided packets402from the connection port141and outputs the divided packets403from the connection port145.

The transmitting/receiving engine120of the calculator10on the receiving side receives the input of the divided packets402via the connection port142connected in the negative direction of the X axis. Further, the transmitting/receiving engine120of the calculator10on the receiving side receives the input of the divided packets403via the connection port146connected in the negative direction of the Z axis.

The transmitting/receiving engine120of the calculator10on the receiving side combines the divided packets402and the divided packets403to generate the original packets401. Then, the transmitting/receiving engine120outputs the generated packets401to the CPU11.

In addition, as illustrated inFIG. 13, a case of a communication between the calculators10directly connected to each other has been described here. However, even when a communication is performed via another calculator10, the calculator10may transmit and receive the divided packets402and403in the same manner.

As described above, in the calculator according to the present embodiment, when packets are transmitted using a connection port having a multi-port structure, the calculator on the transmitting side divides and transmits the packets, and the calculator on the receiving side combines the received packets to return the packets to the original packets. Thus, since the bus width may be effectively used, the communication efficiency and the processing speed may be improved.

Further, in each of the above embodiments, a case has been described in which the two-dimensional connection port of the calculator having three-dimensional connection port coordinates is set as a multi-port structure, but the connection of the multi-port structure is not limited to this. For example, in the calculator having three-dimensional connection port coordinates, the three-dimensional connection port may be set as a multi-port structure. In a calculator having three or more dimensional connection port coordinates, it is also possible to multiply the connection ports by any number equal to or smaller than the dimension, thereby forming a multi-port structure. For example, in a calculator having six-dimensional connection port coordinates, it is also possible to set each of two coordinates as a multi-port structure.

Further, in each of the above embodiments, a case has been described in which each of the calculators is connected in a torus shape (ring shape). However, the network configuration in which the processing speed is improved in the communication using the connection port having the multi-port structure by using the functions described in each embodiment is not limited to this. For example, each path from the X axis to the Z axis may be a network configuration that connects each calculator in a series of connections and terminates at both ends of the calculator. In this way, the network configuration that connects each calculator in a series of connections and terminates at both ends of the calculator corresponds to a state of “connected in a row.”