WO2012020474A1 - ジョブ管理装置及びジョブ管理方法 - Google Patents
ジョブ管理装置及びジョブ管理方法 Download PDFInfo
- Publication number
- WO2012020474A1 WO2012020474A1 PCT/JP2010/063534 JP2010063534W WO2012020474A1 WO 2012020474 A1 WO2012020474 A1 WO 2012020474A1 JP 2010063534 W JP2010063534 W JP 2010063534W WO 2012020474 A1 WO2012020474 A1 WO 2012020474A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- job
- search
- node
- information
- mask pattern
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F15/17356—Indirect interconnection networks
- G06F15/17368—Indirect interconnection networks non hierarchical topologies
- G06F15/17381—Two dimensional, e.g. mesh, torus
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
Definitions
- the present invention relates to a job management apparatus and a job management method.
- a parallel computer system that is a computer system that executes parallel processing
- a plurality of computers that are computation node groups are connected by a network.
- connection forms of computation nodes via a network perfect connection, fat-tree connection, mesh connection, torus connection, and the like are known.
- the mesh connection and the torus connection connect neighboring calculation nodes to each other, and therefore, several thousand or more calculation nodes can be connected at low cost. For this reason, in a parallel computer system including several thousand or more calculation nodes, a two-dimensional torus connection or a three-dimensional mesh connection is often used.
- the super scheduler of the parent node creates a lattice model composed of logical nodes according to the connection form of a plurality of nodes and inter-node connection devices in the lattice computer system
- the lattice computer system Determines the number of child nodes that are the base points for securing the number of nodes required for each service request in the lattice model according to the service request analysis function consisting of multiple tasks given and the analysis result of the service request It has been proposed to have a function and a function to distribute and arrange a determined number of child nodes in a lattice model.
- an empty record management area for managing the inheritance information file is provided in the memory so that the disk can be used effectively. If each record of the file is in use, the management area is “1”. It has been proposed to express the usage status with a corresponding 1 bit such as 0 ".
- the job execution time in a plurality of computers as a group of calculation nodes is roughly divided into an actual calculation time in the calculation node and a communication time between the calculation nodes. Therefore, an increase in communication time between the computation nodes causes an increase in job execution time.
- a communication path between adjacent nodes has a wide bandwidth, and a plurality of unit jobs are assigned to a continuous rectangular or rectangular parallelepiped computation node group.
- the unit job is obtained by dividing one job submitted by the user.
- the assignment processing for allocating a plurality of unit jobs to a continuous rectangular or rectangular parallelepiped computation node group is executed by the job management device.
- the job management device searches for free nodes and assigns free nodes to unit jobs.
- An empty node is a calculation node to which a new unit job can be assigned. If the time for searching for a free node is long, the user will see a long job execution waiting time. Also, if the time for searching for a free node is long, the operating rate of the parallel computer system decreases.
- An object of the present invention is to provide a job management apparatus that can efficiently search for a free node in a computer system that executes parallel processing.
- the disclosed job management apparatus searches for a free node to which a job can be allocated, which is a computation node in a computer network in which n (n is an integer of 2 or more) -dimensional mesh connection or n-dimensional torus connection.
- the job management apparatus includes a one-dimensional search information generation unit, a search information generation unit, and an empty node search unit.
- the one-dimensional search information generating unit is search information for one dimension in n dimensions, and includes a plurality of bits, and each of a plurality of calculation nodes belonging to one dimension in the n dimensions,
- One-dimensional search information indicating whether or not job assignment is possible is generated by 1-bit information.
- the search information generation unit is a search mask pattern having a number of bits corresponding to a plurality of bits, and sets consecutive bits corresponding to the size required by the job for one dimension among n dimensions to a predetermined value.
- the generated search mask pattern is generated.
- the empty node search unit searches for an empty node by executing a predetermined logical operation using one-dimensional search information and a search mask pattern for one of the n dimensions.
- a free node that is a calculation node that assigns a continuous rectangular shape or a rectangular parallelepiped shape to a plurality of unit jobs.
- the present inventor has examined a search process for an empty node in a parallel computer system.
- the job submitted by the user is accepted by the job management device and divided into a plurality of unit jobs.
- a plurality of unit jobs are assigned to a calculation node executed by the job management apparatus, and are executed by the assigned calculation node.
- the job management apparatus searches for a free node in order to assign a job to a calculation node.
- the job management apparatus executes a search process for the free node 531 as shown in FIG.
- the job management apparatus starts a loop of the job assignment information list (step S501). Specifically, the job management apparatus selects one job allocation information list according to a predetermined order.
- the job management apparatus starts a six-fold loop process for allocating a job defined in the selected job allocation information list, in other words, a calculation job.
- the job management apparatus starts a loop in the z direction in the computation node group 530, in other words, a loop in the z direction of the system (step S502). Specifically, the job management apparatus selects the coordinate in the z direction in the calculation node group 530 according to a predetermined order.
- the loop range of the loop in the z direction in the computation node group 530 is from “1” to “system size ⁇ job size + 1”.
- the job management apparatus starts a loop in the y direction in the calculation node group 530, in other words, a loop in the y direction of the system (step S503). Specifically, the job management apparatus selects the coordinates in the y direction in the calculation node group 530 according to a predetermined order.
- the loop range of the loop in the y direction in the calculation node group 530 is from “1” to “system size ⁇ job size + 1”.
- the job management apparatus starts a loop in the x direction in the computation node group 530, in other words, a loop in the x direction of the system (step S504). Specifically, the job management apparatus selects coordinates in the x direction in the calculation node group 530 in accordance with a predetermined order.
- the loop range of the loop in the x direction in the computation node group 530 is from “1” to “system size ⁇ job size + 1”.
- steps S502 to S504 the job allocation start point in the calculation node group 530, in other words, the start node 531 is selected.
- the job management apparatus starts a loop in the z direction of the job size in the job allocation information list selected in step S501 (step S505). Specifically, the job management apparatus selects a position in the z direction of the job size in the job assignment information list according to a predetermined order.
- the loop range of the loop in the z direction of the job size is from “1” to “job size”.
- the job management apparatus starts a loop in the y direction of the job size in the job allocation information list (step S506). Specifically, the job management apparatus selects a position in the y direction of the job size in the job assignment information list in a predetermined order.
- the loop range of the loop in the y direction of the job size is from “1” to “(job size)”.
- the job management apparatus starts a loop in the x direction of the job size in the job allocation information list (step S507). Specifically, the job management apparatus selects a position in the x direction of the job size in the job assignment information list in a predetermined order.
- the loop range of the loop in the x direction of the job size is from “1” to “(job size)”.
- steps S505 to S507 a calculation node 531 corresponding to a certain position in the job allocation information list is selected with reference to the start point described above.
- the job management apparatus determines whether or not the selected calculation node 531 is an empty node (step S508). If the selected calculation node 531 is not an empty node, in other words, if the selected calculation node 531 is an assigned node, the job management apparatus omits steps S509 to S512 and executes step S513.
- step S509 the job management apparatus ends the loop in the x direction of the job size in the job allocation information list. Specifically, the job management apparatus repeats step S507 when the execution of the loop range in the x direction of the job size is not completed, and the execution of the loop range in the x direction of the job size is completed. In that case, step S510 is executed.
- step S510 the job management apparatus ends the loop in the y direction of the job size in the job allocation information list (step S510). Specifically, the job management apparatus repeats step S506 when the execution of the loop range in the y direction of the job size is not completed, and the execution of the loop range in the y direction of the job size is completed. In that case, step S511 is executed.
- step S5 the job management apparatus ends the loop in the z direction of the job size in the job assignment information list. Specifically, if the execution of the loop range for the job size in the z direction is not completed, the job management apparatus repeats step S505 to complete the execution of the loop range for the job size in the z direction. In that case, step S512 is executed.
- step S512 determines whether the job can be assigned to the computation node group 530 as a result of the above processing. If the job can be assigned to the computation node group 530, the job management apparatus executes step S516. If the job cannot be assigned to the computation node group 530, the job management apparatus executes step S513.
- step S513 the job management apparatus ends the loop in the x direction in the computation node group 530 (step S513). Specifically, the job management apparatus repeats step S504 when the execution of the loop range in the x direction in the computation node group 530 does not end. When the execution of the above-described loop range in the x direction in the calculation node group 530 is completed, the job management apparatus executes step S514.
- step S514 the job management apparatus ends the loop in the y direction in the computation node group 530 (step S514). Specifically, the job management apparatus repeats step S503 when the execution of the loop range in the y direction in the calculation node group 530 does not end. When the execution of the above-described loop range in the y direction in the calculation node group 530 is completed, the job management apparatus executes step S515.
- step S516 the job management apparatus ends the loop in the z direction in the computation node group 530 (step S515). Specifically, the job management apparatus repeats step S502 when the execution of the loop range in the z direction in the computation node group 530 does not end. When the execution of the above-described loop range in the z direction in the computation node group 530 is completed, the job management apparatus executes step S516.
- the job management apparatus ends the loop of the job assignment information list (step S516). Specifically, the job management apparatus checks whether or not the current job allocation information list is the last, and if it is not the last, repeats step S501, and if it is the last, ends the processing.
- the disclosed job management apparatus and job management method efficiently search for a free node that is a calculation node that assigns a continuous rectangular shape or a rectangular parallelepiped shape to a plurality of unit jobs in a computer system that executes parallel processing.
- FIG. 1 and 2 are diagrams showing the configuration of the job management apparatus.
- FIG. 3 is an explanatory diagram of job management processing.
- the parallel computer system includes a job management apparatus 1, a user terminal 2, and a computation node group 3 as shown in FIG.
- the job management apparatus 1 is connected to the user terminal 2 via the first network 4 and is connected to the computing node group 3 via the second network 5.
- the first network 4 and the second network 5 may be the same network.
- the calculation node group 3 includes a plurality of calculation nodes 31 connected as shown in FIG.
- the computing node group 3 shown in FIG. 2A is a three-dimensional mesh-connected computer network, in other words, a three-dimensional mesh network. Therefore, in the example of FIG. 1, the calculation node group 3 is a three-dimensional mesh network.
- the three-dimensional mesh network is a connection in which only adjacent calculation nodes 31 are connected.
- the computation node group 3 may be a two-dimensional torus-coupled computer network, in other words, a two-dimensional torus network, as shown in FIG.
- the two-dimensional torus network is also a connection in which only adjacent calculation nodes 31 are connected. Note that the calculation nodes 31 at both ends may be considered to be adjacent.
- the computation node group 3 may be an n-dimensional computer network.
- n is an integer of 2 or more.
- the job management apparatus 1 searches for a free node 31 and assigns a job to the calculation node 31 based on the search result.
- a calculation node 31 that can be assigned a job in the calculation node group 3 is referred to as an empty node 31.
- the job management apparatus 1 includes a job reception processing unit 11, a job execution control unit 12, a storage unit 13, a job assignment processing unit 14, and a calculation node information storage unit 15.
- the job reception processing unit 11 includes an allocation information generation unit 111.
- the storage unit 13 includes an X-axis search information storage unit 131, a job assignment information storage unit 132, and a search information storage unit 133.
- the job assignment processing unit 14 includes a free node search unit 141 and a calculation node management unit 142.
- the calculation node information storage unit 15 includes a three-dimensional system information storage unit 151.
- the storage unit 13 is a memory used by the job reception processing unit 11, the job execution control unit 12, and the job allocation processing unit 14.
- the calculation node information storage unit 15 is a memory used by the calculation node management unit 142.
- the job reception processing unit 11, the job execution control unit 12, and the job assignment processing unit 14 are realized by a processing program.
- the calculation node management unit 142 generates three-dimensional system information 151 ′ for the calculation node group 3. For example, the calculation node management unit 142 generates the three-dimensional system information 151 ′ illustrated in FIG. 3A based on the structure information and the empty information. The structure information and the empty information are input to the calculation node management unit 142 and held in the information storage unit 15. The generated three-dimensional system information 151 ′ is stored in the three-dimensional system information storage unit 151 of the calculation node information storage unit 15. The three-dimensional system information 151 'will be described later.
- the structure information indicates the position of each calculation node 31 in the calculation node group 3.
- the free information indicates whether each calculation node 31 is “free” or “in use”.
- the position in the calculation node group 3 is represented by an x coordinate indicating the position in the x direction of the calculation node group 3, a y coordinate indicating the position in the y direction, and a z coordinate indicating the position in the z direction.
- an empty node is represented by a logical “1”
- a busy node is represented by a logical “0”.
- the job reception processing unit 11 receives and executes a job submission command transmitted from the user terminal 2. In other words, the job reception processing unit 11 receives the received job input command and sends it to the job assignment processing unit 14.
- the allocation information generation unit 111 of the job reception processing unit 11 generates job allocation information 132 ′ shown in FIG. 3C based on the job input command, and transmits it to the job allocation processing unit 14.
- the job assignment information 132 ′ at this time only stores initial values as will be described later.
- the job assignment processing unit 14 stores the received job assignment information 132 ′ in the job assignment information storage unit 132 of the storage unit 13.
- the free node search unit 141 of the job allocation processing unit 14 allocates a job to the computation node group 3. Specifically, the empty node search unit 141 generates x-axis search information 131 ′ illustrated in FIG. 3B based on the three-dimensional system information 151 ′. The generated x-axis search information 131 ′ is stored in the x-axis search information storage unit 131 of the storage unit 13. The x-axis search information 131 'will be described later.
- the free node search unit 141 generates search information 133 'shown in FIG. 3D based on the job assignment information 132'.
- the generated search information 133 ′ is stored in the search information storage unit 133 of the storage unit 13.
- the job assignment information 132 ' will be described later.
- the search information 133 includes a search mask pattern, as will be described later.
- the search mask pattern is used for searching for a free node 31.
- the empty node search unit 141 searches the empty node 31 in the calculation node group 3 using the x-axis search information 131 ′ and the search information 133 ′. At this time, actually, the empty node search unit 141 searches for the empty node 31 mainly by executing a logical operation using the x-axis search information 131 ′ and the search mask pattern. The empty node search unit 141 assigns a job to the empty node 31 based on the search result of the empty node 31. In other words, the empty node search unit 141 completes the job assignment information 132 ′ and transmits it to the job execution control unit 12.
- the job execution control unit 12 controls job execution based on the received job assignment information 132 '. In other words, the job execution control unit 12 causes the calculation node 31 to which the job is assigned to execute the job.
- FIG. 4 shows an example of 3D system information.
- the calculation node management unit 142 generates three-dimensional system information 151 ′ for each of the calculation nodes 31 of the calculation node group 3 as illustrated in FIG. 4.
- the three-dimensional system information 151 ′ actually represents the structure of the computation node group 3 by a three-dimensional array.
- [systemX] takes a value in the x-direction range of the computation node group 3
- [systemY] takes a value in the y-direction range of the computation node group 3.
- [SystemZ] takes a value that falls within the range of the computation node group 3 in the z direction.
- the calculation node management unit 142 sets [systemX] as the minimum value to the maximum value in the x coordinates of the plurality of calculation nodes 31 based on the structure information, and sets the y value in the y coordinates of the plurality of calculation nodes 31.
- the minimum value to the maximum value is set as [systemY], and the minimum value to the maximum value among the z coordinates of the plurality of calculation nodes 31 are set as [systemZ].
- the calculation node group 3 can be represented as a rectangular parallelepiped shape.
- the x coordinate is 0-7
- the y coordinate is 0-7
- the z coordinate is 0-7. Therefore, the maximum value of [systemX] is 8, the maximum value of [systemY] is 8, and the maximum value of [systemZ] is 8.
- the configuration of the computation node group 3 is 8 ⁇ 8 ⁇ 8.
- the ranges of [systemX], [systemY], and [systemZ] may be different from each other.
- the three-dimensional system information 151 ′ includes free node information for each calculation node 31 included in the calculation node group 3.
- the empty node information is either a logic “1” indicating that the calculation node 31 is an empty node or a logic “0” indicating that the calculation node 31 is a busy node.
- FIG. 5 shows an example of x-axis search information.
- the empty node search unit 141 generates x-axis search information 131 ′ based on the three-dimensional system information 151 ′.
- the x-axis search information 131 ′ is search information for one of the three dimensions.
- the x-axis search information 131 ' is one-dimensional search information.
- the one-dimensional search information includes a plurality of bits.
- the x-axis search information 131 ' indicates by 1-bit information whether or not a job can be assigned to each of a plurality of calculation nodes belonging to the x-axis which is one of the three dimensions.
- the x-axis search information 131 ′ represents each of the plurality of elements of the array x in the three-dimensional system information 151 ′ by 1 bit, and stores the plurality of elements of the array x as one variable. Is.
- y-axis search information or z-axis search information may be generated.
- the x-axis search information 131 ′ in FIG. 3 (B) x is all values in the x direction of the computation node group 3.
- [systemY] takes a value in the y-direction range of the computation node group 3
- [systemZ] takes a value in the z-direction range of the computation node group 3. Therefore, the x-axis search information 131 'includes a plurality of x-axis search information 131A, 131B,.
- the x-axis search information 131 ′ is generated for each calculation node 31 having different x coordinates and common coordinates (y, z).
- the number of x-axis search information 131 ′ is [systemY] ⁇ [systemZ].
- the calculation node group 3 is represented as the calculation node group 3' shown in FIG.
- the calculation node group 3 ' is obtained by replacing the three-dimensional calculation node group 3 with a two-dimensional array in the y direction and the z direction, each element being an 8-bit data string.
- FIG. 6 shows an example of a search mask pattern.
- the empty node search unit 141 generates a search mask pattern 134 as shown in FIG.
- the search mask pattern 134 includes the number of bits corresponding to a plurality of bits in the x-axis search information 131A. In other words, the number of bits of the search mask pattern 134 is the same as the number of bits of the x-axis search information 131A.
- the search mask pattern 134 is a pattern in which consecutive bits corresponding to the size required by the job for one of the three dimensions are set to a predetermined value. In other words, the search mask pattern 134 is generated for the same coordinate axis as the x-axis search information 131A. Therefore, the search mask pattern 134 in FIG. 6 is for x-axis search.
- the y-axis search mask pattern or the z-axis is used instead of the search mask pattern 134.
- a mask pattern for the search is generated.
- the search mask pattern 134 is included in the search information 133 ′, and the search information 133 ′ is generated based on the job assignment information 132 ′.
- the job assignment information 132 'shown in FIG. 3C will be described.
- the job start coordinate (x) is the minimum value of [systemX] in FIG. 3A
- the job start coordinate (y) is shown in FIG. It is the minimum value of [systemY]
- the start coordinate (z) of the job is the minimum value of [systemZ] in FIG.
- the minimum value of [systemX], the minimum value of [systemY], and the minimum value of [systemZ] are all “0”. In other words, job assignment is determined in order from the calculation node 31 having the coordinates (0, 0, 0).
- the job shape (x) is the size of the job in the x direction
- the job shape (y) is the size of the job in the y direction
- (Z) is the size of the job in the z direction.
- the job shape (x), the job shape (y), and the job shape (z) are specified in the job input command input from the user terminal 2.
- the required shape 6 of the entire job is determined based on the job shape (x), the job shape (y), and the job shape (z). For example, when the job shape (x) is “4”, the job shape (y) is “4”, and the job shape (z) is “4”, the overall required shape 6 of the job is As shown in FIG. At this time, if the overall required shape 6 of the job is expressed as “job shape (x) ⁇ job shape (y) ⁇ job shape (z)”, the overall required shape 6 of the job in this case is “4 ⁇ 4 ⁇ 4”. In other words, the overall request shape 6 of the job includes a job request element 61 of “4 ⁇ 4 ⁇ 4”. Each job request element 61 corresponds to and is assigned to each computation node 31.
- the assignable flag is set to “1” when the job can be assigned to the computation node group 3, and is set to “1” when the job cannot be assigned. 0 ”. At this time, the assignable flag is set to “0” because it is unclear whether assignment is possible.
- the number of calculation nodes 31 required by the job in other words, the number of unit jobs obtained by dividing the job is, for example, “64”.
- the required shape 6 of the entire job may be “4 ⁇ 4 ⁇ 4”, “2 ⁇ 8 ⁇ 4”, or “2 ⁇ 2 ⁇ 16”.
- the allocation information generation unit 111 actually generates a plurality of job allocation information lists as the job allocation information 132 '.
- the number of job assignment information lists generated is the number of combinations of the overall shape 6 of the job.
- a plurality of job allocation information lists only the job shape (x), the job shape (y), and the job shape (z) are different from each other.
- the job shape (x) is “4”, the job shape (y) is “4”, and the job shape (z) is “4”.
- the job shape (x) is “2”, the job shape (y) is “8”, and the job shape (z) is “4”.
- the job shape (x) is “2”, the job shape (y) is “2”, and the job shape (z) is “16”.
- Search information 133 ' is generated for each of the plurality of job assignment information lists, and it is searched whether job assignment is possible.
- the job start coordinate (x) is obtained from the job start coordinate (x) in the job assignment information 132 ′, and the job start coordinate (y) is the job assignment coordinate.
- the start coordinate (y) of the job in the information 132 ′ is obtained, and the start coordinate (z) of the job is obtained from the start coordinate (z) of the job in the job assignment information 132 ′.
- the job start coordinate (y) is used as the initial value of the loop in the y direction in the parallel computer system, and the job start coordinate (z) is used as the initial value of the loop in the z direction in the parallel computer system.
- the job shape (x) is obtained from the job shape (x) in the job assignment information 132 ′, and the job shape (y) is obtained from the job assignment information 132 ′.
- the job shape (y) is obtained from the job shape (z), and the job shape (z) is obtained from the job shape (z) in the job assignment information 132 ′.
- the job shape (x), the job shape (y), and the job shape (z) are fixed.
- the search mask pattern is obtained as the search mask pattern 134 shown in FIG. 6.
- the number of bits of the search mask pattern 134 is the same as the number of bits of the x-axis search information 131A. Therefore, the number of bits of the search mask pattern 134 for searching the calculation node group 3 in FIGS. 4 and 5 is “8”.
- the search mask pattern 134 is obtained by setting the consecutive bits bit7 to bit4 corresponding to the size “4” required by the job to the predetermined value “0” for the x-axis. It is done. At this time, in the search mask pattern 134, 4 bits continuous from the first bit bit7 are set to “0”. Thereby, continuous empty nodes 31 can be detected in the x-axis direction.
- bit 3 to bit 0 corresponding to the calculation node 31 outside the job allocation range is set to “1”.
- the computation node 31 outside the job assignment range is a range that is ignored in the job assignment process. Note that the size “4” required by the job with respect to the x-axis corresponds to the partial shape 62 of the job in the overall required shape 6 of the job.
- FIG. 7 shows an example of a search for a free node.
- the free node search unit 141 searches the free node 31 by executing a predetermined logical operation for the x axis using the x-axis search information 131 ′ and the search mask pattern 134. Therefore, as described above, in the x-axis search information 131 ′, the in-use node is represented by “0” and the free node is represented by “1”. Further, in the search mask pattern 134, a calculation node requesting allocation is represented by “0”, and a node outside the allocation range is represented by “1”.
- the bit value of the search mask pattern 134 is “0”. Determines that assignment is impossible. This is the case where the original assignment is impossible. In this case, it is possible to determine that the assignment is impossible by using an operation result “0” obtained by a logical sum of “0” indicating in-use and “0” indicating an allocation request.
- the bit value of the search mask pattern 134 is “1” for the calculation node 31 whose bit value is “1”. In this case, any determination may be made, and it is determined that the assignment is possible. In this case, it can be determined that the assignment is possible using the operation result “1” obtained by the logical sum of “1” indicating empty and “1” indicating neglect.
- FIGS. 8 and 9 show an example of determination regarding job assignment. Note that the examples shown in FIGS. 8 and 9 are different from the examples shown in FIGS. 4 to 6 for the convenience of explanation of the shift processing in the search mask pattern 134.
- the empty node search unit 141 executes the shift process in the search mask pattern 134 when the logical OR operation result described above is “0”.
- the case where the logical sum operation result is “0” means that the logical sum of the x-axis search information 131 ′ and the search mask pattern 134 cannot assign a job for the x-axis. Is shown.
- the shift process in the search mask pattern 134 is, for example, to shift the continuous bits bit7 to bit4 corresponding to the size “4” requested by the job by 1 bit in a predetermined direction.
- the predetermined direction is a direction in which the coordinate value in the x-axis direction increases, in other words, a direction toward bit0.
- bits 7 to 5 are “0”, bits 4 to 2 are “1”, and bits 1 to 0 are “0”. To do.
- This state is a state in which the calculation node 31 corresponding to bit 7 to bit 5 is in use, the calculation node 31 corresponding to bit 4 to bit 2 is empty, and the calculation node 31 corresponding to bit 1 to bit 0 is in use. .
- This state is a state in which the calculation nodes 31 corresponding to bit 7 to bit 5 are the target of the allocation request, and the calculation nodes 31 corresponding to bit 4 to bit 0 are irrelevant to the allocation and can be ignored.
- the empty node search unit 141 obtains a logical sum of the x-axis search information 131C in FIG. 8A and the search mask pattern 134B in FIG. 8B. As shown in FIG. 8C, the result of the logical sum is that bits 7 to 5 are “0” and bits 4 to 0 are “1”. Therefore, it is required that bits 7 to 5 cannot be assigned and bits 4 to 0 can be assigned.
- the calculation node 31 corresponding to bit 7 to bit 5 is the target of the allocation request, and the calculation node 31 corresponding to bit 4 to bit 0 is irrelevant to the allocation. Therefore, a job cannot be assigned to the computation node 31 corresponding to the bit 7 to bit 5 that is the target of the assignment request.
- the empty node search unit 141 shifts the consecutive bits 7 to 5 corresponding to the size “3” requested by the job in the search mask pattern 134B of FIG. 8B by 1 bit in the bit 0 direction. Thereby, the search mask pattern 134C of FIG. 8D is obtained.
- the empty node search unit 141 obtains a logical node again by obtaining a logical sum using the x-axis search information 131 ′ and the shifted search mask pattern 134C. Search for.
- the result of the logical sum of the x-axis search information 131C in FIG. 8A and the search mask pattern 134C in FIG. 8D is “1”.
- Bits 6 to 5 are “0”, and bits 4 to 0 are “1”. Therefore, it is required that bit 7 can be assigned, bits 6 to 5 cannot be assigned, and bits 4 to 0 can be assigned.
- the calculation node 31 corresponding to bit 7 to bit 5 is the target of the allocation request, and the calculation node 31 corresponding to bit 4 to bit 0 is irrelevant to the allocation. Therefore, a job cannot be assigned to the computation node 31 corresponding to the bit 7 to bit 5 that is the target of the assignment request.
- the empty node search unit 141 shifts the consecutive bits 6 to 4 corresponding to the size “3” requested by the job in the search mask pattern 134C of FIG. 8D by 1 bit in the bit0 direction. Thereby, the search mask pattern 134D of FIG. 9A is obtained.
- the empty node search unit 141 obtains a logical node again by obtaining a logical sum using the x-axis search information 131 ′ and the shifted search mask pattern 134D. Search for.
- the result of the logical sum of the x-axis search information 131C in FIG. 8A and the search mask pattern 134D in FIG. 9A is “1”.
- Bit 5 becomes “0”
- bit 4 to bit 0 become “1”. Accordingly, it is required that bit 7 to bit 6 can be allocated, bit 5 cannot be allocated, and bit 4 to bit 0 can be allocated.
- the calculation node 31 corresponding to bit 7 to bit 5 is the target of the allocation request, and the calculation node 31 corresponding to bit 4 to bit 0 is irrelevant to the allocation. Therefore, a job cannot be assigned to the computation node 31 corresponding to the bit 7 to bit 5 that is the target of the assignment request.
- the empty node search unit 141 shifts the continuous bits bit5 to bit3 corresponding to the size “3” required by the job in the search mask pattern 134D of FIG. 9A by 1 bit in the bit0 direction. As a result, the search mask pattern 134E of FIG. 9C is obtained.
- the empty node search unit 141 After the shift process in the search mask pattern 134D, the empty node search unit 141 obtains a logical sum by using the x-axis search information 131 ′ and the shifted search mask pattern 134E, so that an empty node is obtained again. Search for.
- the operation result of the logical sum of the x-axis search information 131C in FIG. 8A and the search mask pattern 134E in FIG. 9C is “1” in bit7 to bit0. " Therefore, it is required that bits 7 to 0 can be assigned.
- the calculation node 31 corresponding to bit 7 to bit 5 is the target of the allocation request, and the calculation node 31 corresponding to bit 4 to bit 0 is irrelevant to the allocation. Therefore, a job can be assigned to the computation node 31 corresponding to bit 7 to bit 5 that is the target of the assignment request.
- the above is search information about the x-axis.
- the empty node search unit 141 searches for an empty node 31 by repeating the process of determining whether or not it is an empty node 31 for the remaining y-axis and z-axis other than the x-axis in a predetermined order from the start point.
- the process for determining the start point of the job is limited to the z-direction loop and the y-direction loop in the parallel computer system, and the x-direction loop can be omitted.
- the process for assigning jobs to a continuous rectangular parallelepiped shape is limited to the z-direction loop and the y-direction loop of the job size, and the x-direction loop can be omitted. Therefore, a job is assigned to a parallel computer system by executing a quadruple loop instead of a six-fold loop. Therefore, it is possible to reduce the execution waiting time of the submitted job and to improve the operation rate of the parallel computer system.
- FIG. 10 shows a job management processing flow.
- the empty node search unit 141 executes an initialization process, and generates x-axis search information 131 'based on the three-dimensional system information 151' (step S10).
- the free node search unit 141 starts a loop of the job assignment information list (step S11).
- the loop of the job assignment information list is a process for performing loop control for the number of job assignment lists included in the job assignment information 132 '.
- the empty node search unit 141 selects one job allocation information list from the job allocation information 132 ′ in accordance with a predetermined order.
- the assignable flag is set to “false” in the job assignment information list which is the job assignment information 132 ′.
- the free node search unit 141 starts a quadruple loop process for assigning a job defined in the selected job assignment information list, in other words, a calculation job.
- the free node search unit 141 starts a loop in the z direction in the computation node group 3, in other words, in the parallel computer system (step S12). Specifically, the empty node search unit 141 selects the coordinate in the z direction in the calculation node group 3 according to a predetermined order.
- the z-direction loop in the computation node group 3 is referred to as a “system z-loop”.
- the z loop of the system is a loop that controls the search start point in the z direction.
- the loop range of the z loop of the system is from “1” to “system size ⁇ job size + 1”.
- the empty node search unit 141 starts a loop in the y direction in the computation node group 3, in other words, the parallel computer system (step S13). Specifically, the empty node search unit 141 selects the coordinates in the y direction in the calculation node group 3 according to a predetermined order. Thereby, one piece of x-axis search information 131 'is selected.
- a loop in the y direction in the computation node group 3 is referred to as a “system y loop”.
- the y loop of the system is a loop that controls the search start point in the y direction.
- the loop range of the system y loop is from “1” to “system size ⁇ job size + 1”.
- Steps S12 to S13 select the job allocation start point in the computation node group 3, in other words, the x-axis search information 131 'for the start point.
- the free node search unit 141 determines whether or not the number of free nodes 31 is less than the number of calculation nodes 31 requested by the job in the selected x-axis search information 131 ′ (step S14). ). Specifically, the empty node search unit 141 counts the number of “1” in the x-axis search information 131 ′, and compares the count value with the job size in the x direction. When the number of free nodes 31 is less than the job size, it is possible to avoid the search process of the free nodes 31 being wasted and to shorten the processing time.
- step S115 When the number of free nodes 31 is less than the number of calculation nodes 31 requested by the job (Yes in step S14), the free node search unit 141 executes step S115.
- the free node search unit 141 When the number of free nodes 31 is not less than the number of calculation nodes 31 requested by the job (No at Step S14), the free node search unit 141 initializes search information 133 '(Step S15).
- the empty node search unit 141 sets “0” in the job start coordinates (x), job start coordinates (y), and job start coordinates (z) in the search information 133 ′. Also, the empty node search unit 141 sets the job shape (x) in the job assignment information 132 ′ as the job shape (x) in the search information 133 ′, and sets the job assignment information 132 ′ as the job shape (y). The job shape (y) is set, and the job shape (z) in the job assignment information 132 ′ is set as the job shape (z). Furthermore, the empty node search unit 141 generates a search mask pattern 134 in the search information 133 ′.
- search mask pattern 134 “0” corresponding to the number of job shapes (x) is set in order from the leftmost bit 7 and “1” is set to the remaining bits. Thereby, for example, a search mask pattern 134 shown in FIG. 6 is obtained. Furthermore, the empty node search unit 141 sets “0” as the total number of shifts and “0” as the number of shifts in the search information 133 ′.
- the free node search unit 141 shifts “0” corresponding to the number of job shapes (x) in the search mask pattern 134 by the number of shifts in the search information 133 ′ in the direction of bit 0. If it does, it shifts to the right (step S16). When the shift number is “0”, the shift process is not executed. Therefore, when the shift number is the initial value, the shift process is not executed. The empty node search unit 141 adds the number of shifts to the total number of shifts in the search information 133 ′.
- the sum of the total number of shifts and the job size in the x direction is the x-axis search information 131 ′ or the search mask pattern 134.
- the size exceeds this size, processing is performed as described later with reference to FIG.
- the empty node search unit 141 performs a logical sum operation using the x-axis search information 131 ′ and the search mask pattern 134 to determine whether a job can be assigned (step S17). .
- step S17 If job assignment is not possible (No in step S17), the free node search unit 141 adds +1 to the number of shifts, and then performs the next shift for “0” corresponding to the number of job shapes (x). It is determined whether the upper limit of the right shift is reached (step S18). When the next shift is the upper limit of the right shift (step S18, Yes), the free node search unit 141 executes step S115. When the next shift is not the upper limit of the right shift (No at Step S18), the free node search unit 141 executes Step S16.
- the upper limit of the right shift is that when the calculation node group 3 is the mesh combination of FIG. 2A, the sum of the total number of shifts and the job size in the x direction is the x-axis search information 131 ′ or the search mask. This is a case where the size of the pattern 134 is exceeded. In other words, when the sum of the total number of shifts and the job size in the x direction is less than the size of the x-axis search information 131 ′ or the search mask pattern 134, it is not the upper limit of the right shift.
- the job size in the x direction is “4”, and the size of the search mask pattern 134 is “8”. Therefore, when the total number of shifts is “3” or less, the upper limit of the right shift is not reached, and when the total number of shifts is “4” or more, the upper limit of the right shift is set.
- step S16 is executed. If the total number of shifts is equal to or larger than the size of the x-axis search information 131 'or the search mask pattern 134, it is the upper limit of the right shift, and step S115 is executed.
- step S17 if job assignment is possible (step S17 Yes), the free node search unit 141 starts a loop in the z direction of the job size in the job assignment information list selected in step S11 (step S19). Specifically, the empty node search unit 141 selects a position in the z direction of the job size in the job assignment information list according to a predetermined order.
- the z-direction loop in the job assignment information list is referred to as a “job size z-loop”.
- the job size z-loop is a loop for controlling the search for an empty node by the search mask pattern 134 in the z direction.
- the z-loop range of the job size is from “1” to “job size”.
- the free node search unit 141 starts a loop in the y direction of the job size in the job allocation information list (step S110). Specifically, the empty node search unit 141 selects a position in the y direction of the job size in the job assignment information list in a predetermined order.
- the loop in the y direction in the job allocation information list is referred to as “job size y loop”.
- the job size y loop is a loop for controlling the search for an empty node by the search mask pattern 134 in the y direction.
- the loop range of the y loop of job size is from “1” to “job size”.
- the x-axis search information 131 'corresponding to a certain position in the job assignment information list is selected on the basis of the aforementioned start point.
- the empty node search unit 141 determines whether or not a job can be assigned by executing a logical sum operation using the x-axis search information 131 ′ and the search mask pattern 134 (step S111). .
- step S111 If job assignment is not possible (No in step S111), the free node search unit 141 adds +1 to the number of shifts, and then performs the next shift for “0” corresponding to the number of job shapes (x). It is determined whether the upper limit of the right shift is reached (step S118). When the next shift is the upper limit of the right shift (step S118, Yes), the free node search unit 141 executes step S115. When the next shift is not the upper limit of the right shift (No at Step S118), the free node search unit 141 executes Step S16. The upper limit of the right shift is as described above.
- step S111 If it is possible to assign a job in step S111 (Yes in step S111), the empty node search unit 141 then ends the loop in the y direction of the job size in the job assignment information list (step S112). Specifically, the empty node search unit 141 repeats step S110 when the execution of the loop range in the y direction of the job size is not completed, and executes the loop range in the y direction of the job size. If completed, step S113 is executed.
- step S113 the free node searching unit 141 ends the loop of the job size in the job allocation information list in the z direction. Specifically, the empty node search unit 141 repeats step S19 when the execution of the loop range in the z direction of the job size does not end, and executes the loop range in the z direction of the job size. If completed, step S114 is executed.
- the free node search unit 141 determines whether or not the entire requested job shape 6 of FIG. 6 can be allocated (step S114). If it is possible to assign the entire requested job shape 6 in FIG. 6, the free node search unit 141 executes step S117.
- the free node search unit 141 ends the loop in the y direction in the computation node group 3 (step S115). Specifically, the empty node search unit 141 repeats Step S13 when the execution of the loop range in the y direction in the calculation node group 3 does not end. When the execution of the above-described loop range in the y direction in the computation node group 3 is completed, the free node search unit 141 executes step S116.
- the free node search unit 141 ends the loop in the z direction in the computation node group 3 (step S116). Specifically, the empty node search unit 141 repeats Step S12 when the execution of the loop range in the z direction in the computation node group 3 does not end. When the execution of the above-described loop range in the z direction in the computation node group 3 is completed, the free node search unit 141 executes Step S117.
- the free node searching unit 141 ends the loop of the job assignment information list (step S117). Specifically, the free node search unit 141 checks whether or not the current job allocation information list is the last, and repeats step S11 if it is not the last, and ends the process if it is the last. At this time, the free node search unit 141 sets the job shape (x) of the search information 133 ′ in the job assignment information shape (x) of the job assignment information 132 ′, and sets the job assignment information 132 ′ in the job assignment information 132 ′.
- the job shape (y) of the search information 133 ′ is set in the shape (y), and the job shape (z) of the search information 133 ′ is set in the job allocation information shape (z) of the job allocation information 132 ′. Further, the free node search unit 141 sets “true” to the assignable flag of the job assignment information 132 ′.
- FIG. 11 shows an example of the effect of reducing the number of loops.
- the size in the z direction in the calculation node group 3 is “systemZ”
- the size in the y direction is “systemY”
- the size in the x direction is “systemX”.
- the job size in the z direction is “jobZ”
- the job size in the y direction is “jobY”
- the job size in the x direction is “jobX”.
- the number of loops in the z direction in the computation node group 3 is “systemZ-jobZ + 1”
- the number of loops in the y direction is “systemY-jobY + 1”
- the number of loops in the x direction is The number of times is “systemX ⁇ jobX + 1”.
- the number of loops in the z direction of the job size is “jobZ”
- the number of loops in the y direction of the job size is “jobY”
- the number of loops in the x direction of the job size is “jobX”.
- the number of loops in the z direction in the computation node group 3 is “systemZ-jobZ + 1”, and the number of loops in the y direction is “systemY-jobY + 1”.
- the number of direction loops is “1”.
- the number of loops in the z direction of the job size is “jobZ”
- the number of loops in the y direction of the job size is “jobY”
- the number of loops in the x direction of the job size is “1”.
- the search mask pattern 134 is shifted bit by bit.
- the number of calculation nodes 31 that is less than the number of calculation nodes 31 requested by the job matches the number of bits of shift until the empty node 31 is detected. In other words, the number of bits whose operation result is “0” matches the minimum shift amount required to detect the empty node 31.
- the empty node search unit 141 has a bit with an operation result of “0” based on a logical sum operation using the x-axis search information 131 ′ and the search mask pattern 134 for the x-axis. Calculate the number.
- the number of bits whose operation result is “0” is the number of bits indicating that job assignment is impossible.
- the empty node search unit 141 shifts the continuous bits set to the value “0” in the search mask pattern 134 in the direction of bit 0 by the number of bits whose operation result is “0”.
- a shifted search mask pattern 134 is obtained.
- the empty node search unit 141 searches for the empty node 31 again by performing a logical sum operation using the x-axis search information 131 ′ and the shifted search mask pattern 134.
- the shift process for the bit whose calculation result is “0” is executed once, in other words, it can be skipped and the number of calculation processes can be further reduced.
- bits 7 to 5 are “0”, bits 4 to 2 are “1”, and bits 1 to 0 are “0”. To do.
- This state is a state in which the calculation node 31 corresponding to bit 7 to bit 5 is in use, the calculation node 31 corresponding to bit 4 to bit 2 is empty, and the calculation node 31 corresponding to bit 1 to bit 0 is in use. .
- This state is a state in which the calculation nodes 31 corresponding to bit 7 to bit 5 are the target of the allocation request, and the calculation nodes 31 corresponding to bit 4 to bit 0 are irrelevant to the allocation and can be ignored.
- the empty node search unit 141 obtains a logical sum of the x-axis search information 131D in FIG. 12A and the search mask pattern 134F in FIG. As shown in FIG. 12C, the logical sum operation result is that bits 7 to 5 are “0” and bits 4 to 0 are “1”. Therefore, it is required that bits 7 to 5 cannot be assigned and bits 4 to 0 can be assigned.
- the calculation node 31 corresponding to bit 7 to bit 5 is the target of the allocation request, and the calculation node 31 corresponding to bit 4 to bit 0 is irrelevant to the allocation. Therefore, a job cannot be assigned to the computation node 31 corresponding to the bit 7 to bit 5 that is the target of the assignment request.
- the empty node search unit 141 calculates the number of “0” bits in the logical OR operation result of the x-axis search information 131D in FIG. 12A and the search mask pattern 134F in FIG. calculate.
- the number of bits whose operation result is “0” is “3” as shown in FIG.
- the number of bits whose operation result is “0” is “total number of shifts”.
- the calculated total number of shifts is set to the total number of shifts in the search information 133 ′ in FIG.
- the free node search unit 141 sets the consecutive bits bit7 to bit5 corresponding to the size “3” requested by the job in the search mask pattern 134F in FIG. Shift by 3 bits instead of 1 bit. Thereby, the search mask pattern 134G of FIG. 12D is obtained.
- the empty node search unit 141 calculates the logical sum using the x-axis search information 131 ′ and the shifted search mask pattern 134G, An empty node 31 is searched.
- the calculation node 31 corresponding to bit 7 to bit 5 is the target of the allocation request, and the calculation node 31 corresponding to bit 4 to bit 0 is irrelevant to the allocation. Therefore, a job can be assigned to the computation node 31 corresponding to bit 7 to bit 5 that is the target of the assignment request.
- the number of shift processes and the number of OR operations in the search mask pattern 134 can be further reduced. Therefore, the execution waiting time of the submitted job can be shortened, and the operating rate of the computing node group 3 can be improved.
- the computation node group 3 may be a torus-coupled computer network shown in FIG.
- the search mask pattern 134H bits 7 to 3 are “1”, bits 2 to 0 are “0”, and the calculation result is “0”.
- the number of bits may be “3”. In other words, the sum of the total number of shifts and the job size in the x-axis direction required by the job may be greater than or equal to the size in the x-axis direction in the calculation node 3.
- the continuous bits bit2 to bit0 corresponding to the size “3” required by the job are shifted by 3 bits in the direction of bit0.
- the empty node search unit 141 moves “0” of bit0 to bit7 because bit7 is adjacent to bit0. Thereby, the bit whose operation result is “0” can be shifted.
- FIG. 14 shows another job management processing flow.
- the free node search unit 141 basically executes the same processing as the processing shown in FIG. 10, but executes steps S28 and S219 in addition to the processing shown in FIG.
- the free node search unit 141 executes steps S20 to S27 in the same manner as steps S10 to S17 in FIG.
- step S27 the free node search unit 141 calculates the shift number based on the position where the job cannot be allocated (step S28). Specifically, the empty node search unit 141 calculates the number of bits whose operation result is “0”.
- the empty node search unit 141 determines that the calculation result is “0” based on the number of bits whose calculation result is “0” and the number of bits of the x-axis search information 131 ′ or the search mask pattern 134. It is determined whether or not the shift corresponding to the number of bits is the upper limit of the right shift (step S29). In other words, it is determined whether or not consecutive bits corresponding to the size “3” requested by the job can be shifted by the number of bits whose operation result is “0”.
- step S26 When the shift corresponding to the number of bits whose operation result is “0” is not the upper limit of the right shift (No in step S29), the free node search unit 141 executes step S26. As a result, consecutive bits corresponding to the size “3” requested by the job are shifted by the number of bits whose operation result is “0”.
- step S216 When the shift corresponding to the number of bits whose operation result is “0” is the upper limit of the right shift (Yes in step S29), the free node search unit 141 executes step S216.
- step S27 Yes when it is possible to assign a job in step S27 (step S27 Yes), the free node search unit 141 executes steps S210 to S212.
- Step S212 the free node search unit 141 calculates the shift number based on the position where the job cannot be allocated (Step S219). Specifically, the empty node search unit 141 calculates the number of bits whose operation result is “0”.
- the empty node search unit 141 determines that the calculation result is “0” based on the number of bits whose calculation result is “0” and the number of bits of the x-axis search information 131 ′ or the search mask pattern 134. It is determined whether or not the shift corresponding to the number of bits is the upper limit of the right shift (step S220). In other words, it is determined whether or not consecutive bits corresponding to the size “3” requested by the job can be shifted by the number of bits whose operation result is “0”.
- step S220 When the shift corresponding to the number of bits whose operation result is “0” is not the upper limit of the right shift (No in step S220), the free node search unit 141 executes step S26. As a result, consecutive bits corresponding to the size “3” requested by the job are shifted by the number of bits whose operation result is “0”.
- step S220 When the shift corresponding to the number of bits whose operation result is “0” is the upper limit of the right shift (step S220: Yes), the free node search unit 141 executes step S216.
- x-axis search information 131 ′ is generated, and double loops related to the x-axis are reduced.
- the size of the computation node group 3 is small, the number of times of shift processing of the search mask pattern 134 is reduced.
- the overhead of the generation processing of the x-axis search information 131 ′, the OR operation of the x-axis search information 131 ′ and the search mask pattern 134, and the shift processing of the search mask pattern 134 may increase. There is sex.
- the empty node search unit 141 determines that the size of the x-axis of the computation node group 3, in other words, if the maximum value of [systemX] is equal to or greater than a predetermined first value, As described above, continuous bit shift processing in the search mask pattern 134 is performed based on the result of the logical operation.
- the size of the x-axis of the calculation node group 3 is the maximum value of [systemX].
- the first value is predetermined empirically.
- y-axis search information or z-axis search information is generated, if the y-axis size or z-axis size is greater than or equal to a predetermined value, the search is based on the result of the logical operation. Shift processing of consecutive bits in the mask pattern 134 is performed.
- the free node search unit 141 starts the determination process for determining whether the x-axis is the free node 31 or not. To search for an empty node 31 by repeating in the predetermined order. In other words, the empty node search unit 141 executes a loop in the x direction in the computation node group 3 when the size of the x-axis of the computation node group 3 is smaller than a predetermined first value. As a result, it is possible to avoid an increase in the shift processing overhead of the search mask pattern 134.
- the free node search unit 141 shifts consecutive bits in the search mask pattern 134 based on the result of the logical operation when the size in the x-axis direction requested by the job is equal to or larger than a predetermined second value. May be performed.
- the size requested by the job in the x-axis direction is the maximum value of [jobX].
- the second value is predetermined empirically.
- the consecutive bit shift processing in the search mask pattern 134 may be performed based on the result of the logical operation.
- the free node search unit 141 searches based on the result of the logical operation.
- the consecutive bits in the mask pattern 134 may be shifted.
- the third value is predetermined empirically.
- the x-axis is selected as one of the three dimensions, the x-axis search information 131 ′ is generated, and the double loop related to the x-axis is reduced.
- the shape of the computation node group 3 is a rectangular parallelepiped, if the loop to be reduced is applied in the axial direction having the largest possible size, the effect of shortening the processing time by reducing the loop is great. Even when the required shape of the job is a rectangular parallelepiped, if the reduced loop is applied in the axial direction having the largest possible size, the effect of reducing the processing time by reducing the loop is great.
- the calculation node management unit 142 selects the dimension having the longest side in the calculation node group 3 in FIG. 2A as one dimension among the n dimensions, and the selected axis Generate search information.
- the longest side is a coordinate axis having the largest value among the maximum value of [systemX], the maximum value of [systemY], and the maximum value of [systemZ].
- the calculation node management unit 142 rotates the calculation node group 3 so that the dimension that is the longest side in the calculation node group 3 is the x axis, with the coordinate axes being left as they are. .
- the free node search unit 142 assigns a job to the calculation node group 3.
- the computation node management unit 142 keeps the coordinate axes in FIG. 2A and keeps the longest dimension in the computation node group 3 from the x axis to the original coordinate axis. Rotate in the opposite direction.
- the job execution control unit 12 assigns and executes the job to the calculation node group 3 returned to the original coordinate axis. As a result, the time for job assignment processing can be further reduced.
- the calculation node management unit 142 selects the dimension having the longest side in the requested shape 6 of the job in FIG. 6 as one dimension among the n dimensions, and generates search information for the selected axis. You may do it.
- the longest side is a coordinate axis having the largest value among the maximum value of [jobX], the maximum value of [jobY], and the maximum value of [jobZ].
- the calculation node management unit 142 keeps the coordinate axes in FIG. 2A, and sets the calculation node group so that the longest dimension in the requested shape 6 of the job in FIG. 6 is the x axis. Rotate 3
- the free node search unit 142 assigns a job to the calculation node group 3.
- the calculation node management unit 142 keeps the coordinate axis in FIG. 2A as it is, so that the dimension with the longest side in the requested shape 6 of the job in FIG. 6 becomes the original coordinate axis from the x axis.
- the calculation node group 3 is rotated in the reverse direction.
- the job execution control unit 12 assigns and executes the job to the calculation node group 3 returned to the original coordinate axis. As a result, the time for job assignment processing can be further reduced.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
空きノード検索部141は、3次元メッシュ結合の計算ノード群3における空きノード31を検索するために、x軸に属する複数の計算ノード31の各々について、ジョブの割り当てが可能か否かを1ビットの情報で示すx軸検索用情報を生成する。空きノード検索部141は、x軸について、ジョブが要求するサイズに対応する連続ビットを「0」に設定された検索用マスクパターンを生成する。空きノード検索部141は、x軸について、x軸検索用情報と検索用マスクパターンとを用いて、論理和演算を実行することにより、空きノード31を検索する。
Description
本発明は、ジョブ管理装置及びジョブ管理方法に関する。
並列処理を実行するコンピュータシステムである並列コンピュータシステムにおいて、計算ノード群である複数のコンピュータの間は、ネットワークにより接続される。計算ノードのネットワークによる接続の形態としては、完全結合、Fat-Tree結合、メッシュ結合、トーラス結合等が知られている。これらの中で、メッシュ結合及びトーラス結合は、近傍の計算ノードを相互に接続するので、数千個以上の計算ノードを低コストで接続することができる。このため、数千個以上の計算ノードを含む並列コンピュータシステムにおいては、2次元トーラス結合や3次元メッシュ結合が使用されることが多い。
なお、格子型コンピュータシステムにおいて、親ノードのスーパースケジューラが、格子型コンピュータシステムにおける複数のノードとノード間接続装置の接続形態にしたがって論理ノードからなる格子モデルを作成する機能と、格子型コンピュータシステムに与えられる複数タスクからなるサービス要求を分析する機能と、サービス要求の分析結果にしたがって、サービス要求毎に必要となるノード数を格子モデル内に確保するための基点となる子ノードの数を決定する機能と、決定された数の子ノードを格子モデル内に分散して配置する機能と、を有することが、提案されている。
また、例えば、メモリ中に引き継ぎ情報ファイルを管理する空きレコード管理エリアを設けてディスクの有効利用を図り、管理エリアをファイルの各レコードが使用中であれば“1”、未使用であれば“0”というように対応する1ビットで使用状況を表現することが、提案されている。
並列コンピュータシステムにおいて、計算ノード群である複数のコンピュータにおけるジョブの実行時間は、概略、計算ノードにおける実際の計算時間と、計算ノードの間における通信時間とに大別される。従って、計算ノードの間における通信時間の増加は、ジョブの実行時間を増加させる原因となる。
そこで、メッシュ結合又はトーラス結合された並列コンピュータシステムにおいて、隣接するノードの間における通信路が広帯域とされ、かつ、複数の単位ジョブを連続した長方形状又は直方体形状の計算ノード群に割り当てる。単位ジョブは、ユーザが投入した1個のジョブを分割したものである。複数の単位ジョブを連続した長方形状又は直方体形状の計算ノード群に割り当てることにより、ジョブの実行時間の増加を回避することができる。
複数の単位ジョブを連続した長方形状又は直方体形状の計算ノード群へ割り当てる割り当て処理は、ジョブ管理装置により実行される。ジョブ管理装置は、空きノードを検索して、単位ジョブに空きノードを割り当てる。空きノードは、新たに単位ジョブを割り当てることが可能な計算ノードである。空きノードを検索する時間が長いと、ユーザからは、ジョブの実行待ち時間が長く見える。また、空きノードを検索する時間が長いと、並列コンピュータシステムの稼働率が低下する。
本発明は、並列処理を実行するコンピュータシステムにおいて、空きノードを効率良く検索することができるジョブ管理装置を提供することを目的とする。
開示されるジョブ管理装置は、n(nは2以上の整数)次元メッシュ結合又はn次元トーラス結合されたコンピュータネットワークにおける計算ノードであって、ジョブの割り当てが可能な空きノードを検索する。ジョブ管理装置は、1次元検索用情報生成部と、検索情報生成部と、空きノード検索部とを含む。1次元検索用情報生成部は、n次元の中の1つの次元についての検索用情報であって、複数のビットを含み、n次元の中の1つの次元に属する複数の計算ノードの各々について、ジョブの割り当てが可能か否かを1ビットの情報で示す1次元検索用情報を生成する。検索情報生成部は、複数のビットに対応するビット数の検索用マスクパターンであって、n次元の中の1つの次元についてジョブが要求するサイズに対応する連続ビットを予め定められた値に設定された検索用マスクパターンを生成する。空きノード検索部は、n次元の中の1つの次元について、1次元検索用情報と検索用マスクパターンとを用いて予め定められた論理演算を実行することにより、空きノードを検索する。
開示されるジョブ管理装置によれば、並列処理を実行するコンピュータシステムにおいて、複数の単位ジョブを連続した長方形状又は直方体形状を割り当てる計算ノードである空きノードを、効率良く検索することができる。
本発明者は、並列コンピュータシステムにおける、空きノードの検索処理について検討した。
ユーザが投入したジョブは、ジョブ管理装置によって受け付けられ、複数の単位ジョブに分割される。複数の単位ジョブは、ジョブ管理装置によって実行する計算ノードに割り当てられ、割り当てられた計算ノードによって実行される。ジョブ管理装置は、ジョブを計算ノードに割り当てるため、空きノードを検索する。
例えば、図15に示すように、計算ノード群530が、3次元メッシュネットワークにより接続されているとする。この場合、ジョブ管理装置は、図16に示すように、空きノード531の検索処理を実行する。
ジョブ管理装置は、ジョブ割り当て情報リストのループを開始する(ステップS501)。具体的には、ジョブ管理装置は、予め定められた順に従って、1つのジョブ割り当て情報リストを選択する。
この後、ジョブ管理装置は、選択されたジョブ割り当て情報リストに定義されたジョブ、換言すれば、計算ジョブを割り当てるための6重ループ処理を開始する。
最初に、ジョブ管理装置は、計算ノード群530におけるz方向のループ、換言すれば、システムのz方向のループを開始する(ステップS502)。具体的には、ジョブ管理装置は、予め定められた順に従って、計算ノード群530におけるz方向の座標を選択する。計算ノード群530におけるz方向のループのループ範囲は、「1」から、「システムサイズ-ジョブサイズ+1」までである。
次に、ジョブ管理装置は、計算ノード群530におけるy方向のループ、換言すれば、システムのy方向のループを開始する(ステップS503)。具体的には、ジョブ管理装置は、予め定められた順に従って、計算ノード群530におけるy方向の座標を選択する。計算ノード群530におけるy方向のループのループ範囲は、「1」から、「システムサイズ-ジョブサイズ+1」までである。
次に、ジョブ管理装置は、計算ノード群530におけるx方向のループ、換言すれば、システムのx方向のループを開始する(ステップS504)。具体的には、ジョブ管理装置は、予め定められた順に従って、計算ノード群530におけるx方向の座標を選択する。計算ノード群530におけるx方向のループのループ範囲は、「1」から、「システムサイズ-ジョブサイズ+1」までである。
ステップS502~S504により、計算ノード群530におけるジョブ割り当ての開始点、換言すれば、開始ノード531が選択される。
次に、ジョブ管理装置は、ステップS501において選択したジョブ割り当て情報リストにおけるジョブサイズのz方向のループを開始する(ステップS505)。具体的には、ジョブ管理装置は、予め定められた順に従って、ジョブ割り当て情報リストにおけるジョブサイズのz方向における位置を選択する。ジョブサイズのz方向のループのループ範囲は、「1」から、「ジョブサイズ」までである。
次に、ジョブ管理装置は、ジョブ割り当て情報リストにおけるジョブサイズのy方向のループを開始する(ステップS506)。具体的には、ジョブ管理装置は、予め定められた順に従って、ジョブ割り当て情報リストにおけるジョブサイズのy方向における位置を選択する。ジョブサイズのy方向のループのループ範囲は、「1」から、「(ジョブサイズ)」までである。
次に、ジョブ管理装置は、ジョブ割り当て情報リストにおけるジョブサイズのx方向のループを開始する(ステップS507)。具体的には、ジョブ管理装置は、予め定められた順に従って、ジョブ割り当て情報リストにおけるジョブサイズのx方向における位置を選択する。ジョブサイズのx方向のループのループ範囲は、「1」から、「(ジョブサイズ)」までである。
ステップS505~S507により、前述の開始点を基準として、ジョブ割り当て情報リストにおけるある位置に対応する計算ノード531が選択される。
次に、ジョブ管理装置は、選択した計算ノード531が空きノードであるか否かを判断する(ステップS508)。選択した計算ノード531が空きノードでない場合、換言すれば、選択した計算ノード531が割り当て済みノードである場合、ジョブ管理装置は、ステップS509~S512を省略して、ステップS513を実行する。
選択した計算ノード531が空きノードである場合、ジョブ管理装置は、ジョブ割り当て情報リストにおけるジョブサイズのx方向のループを終了する(ステップS509)。具体的には、ジョブ管理装置は、ジョブサイズのx方向についての前述のループ範囲の実行が終了しない場合にはステップS507を繰り返し、ジョブサイズのx方向についての前述のループ範囲の実行が終了した場合にはステップS510を実行する。
次に、ジョブ管理装置は、ジョブ割り当て情報リストにおけるジョブサイズのy方向のループを終了する(ステップS510)。具体的には、ジョブ管理装置は、ジョブサイズのy方向についての前述のループ範囲の実行が終了しない場合にはステップS506を繰り返し、ジョブサイズのy方向についての前述のループ範囲の実行が終了した場合にはステップS511を実行する。
次に、ジョブ管理装置は、ジョブ割り当て情報リストにおけるジョブサイズのz方向のループを終了する(ステップS511)。具体的には、ジョブ管理装置は、ジョブサイズのz方向についての前述のループ範囲の実行が終了しない場合にはステップS505を繰り返し、ジョブサイズのz方向についての前述のループ範囲の実行が終了した場合にはステップS512を実行する。
次に、ジョブ管理装置は、以上の処理の結果、ジョブが計算ノード群530に割り当て可能であるか否かを判断する(ステップS512)。ジョブが計算ノード群530に割り当て可能である場合、ジョブ管理装置は、ステップS516を実行する。ジョブが計算ノード群530に割り当て可能でない場合、ジョブ管理装置は、ステップS513を実行する。
次に、ジョブ管理装置は、計算ノード群530におけるx方向のループを終了する(ステップS513)。具体的には、ジョブ管理装置は、計算ノード群530におけるx方向についての前述のループ範囲の実行が終了しない場合にはステップS504を繰り返す。計算ノード群530におけるx方向についての前述のループ範囲の実行が終了した場合には、ジョブ管理装置は、ステップS514を実行する。
次に、ジョブ管理装置は、計算ノード群530におけるy方向のループを終了する(ステップS514)。具体的には、ジョブ管理装置は、計算ノード群530におけるy方向についての前述のループ範囲の実行が終了しない場合にはステップS503を繰り返す。計算ノード群530におけるy方向についての前述のループ範囲の実行が終了した場合には、ジョブ管理装置は、ステップS515を実行する。
次に、ジョブ管理装置は、計算ノード群530におけるz方向のループを終了する(ステップS515)。具体的には、ジョブ管理装置は、計算ノード群530におけるz方向についての前述のループ範囲の実行が終了しない場合にはステップS502を繰り返す。計算ノード群530におけるz方向の前述のループ範囲の実行が終了した場合には、ジョブ管理装置は、ステップS516を実行する。
次に、ジョブ管理装置は、ジョブ割り当て情報リストのループを終了する(ステップS516)。具体的には、ジョブ管理装置は、現在のジョブ割り当て情報リストが最後か否かを調べ、最後でない場合にはステップS501を繰り返し、最後である場合には処理を終了する。
以上によれば、ジョブの開始点を定めるためには、計算ノード群530におけるz方向のループ、y方向のループ、x方向のループの3重のループの実行が必要になる。従って、合計で6重のループの実行が必要になる。また、ジョブを連続した直方体形状に割り当てるためには、ジョブ割り当て情報リストにおけるジョブサイズのz方向のループ、y方向のループ、x方向のループの3重のループの実行が必要になる。従って、6重のループの実行により、計算ノード群530へジョブが割り当てられる。
このため、計算ノード群530の規模が大きくなると、空きノード検索の6重ループの処理時間が大きくなる。これは、投入されたジョブの実行待ち時間が長くなる原因となり、また、計算ノード群530の稼動率が悪化する原因となる。
開示のジョブ管理装置及びジョブ管理方法は、並列処理を実行するコンピュータシステムにおいて、複数の単位ジョブを連続した長方形状又は直方体形状を割り当てる計算ノードである空きノードを、効率良く検索する。
(第1の実施態様)
図1及び図2は、ジョブ管理装置の構成を示す図である。図3は、ジョブ管理処理の説明図である。
図1及び図2は、ジョブ管理装置の構成を示す図である。図3は、ジョブ管理処理の説明図である。
並列コンピュータシステムは、図1に示すように、ジョブ管理装置1、利用者端末2、計算ノード群3を含む。ジョブ管理装置1は、利用者端末2と第1のネットワーク4を介して接続され、計算ノード群3と第2のネットワーク5を介して接続される。第1のネットワーク4と第2のネットワーク5とは、同一のネットワークであっても良い。
計算ノード群3は、図2(A)のように接続された複数の計算ノード31を含む。図2(A)に示す計算ノード群3は、3次元メッシュ結合されたコンピュータネットワーク、換言すれば、3次元メッシュネットワークである。従って、図1の例において、計算ノード群3は、3次元メッシュネットワークである。3次元メッシュネットワークは、隣接する計算ノード31のみが接続される結合である。
なお、計算ノード群3は、図2(B)に示すように、2次元トーラス結合されたコンピュータネットワーク、換言すれば、2次元トーラスネットワークであっても良い。2次元トーラスネットワークも、隣接する計算ノード31のみが接続される結合である。なお、両端の計算ノード31は、隣接すると考えてよい。また、計算ノード群3は、n次元のコンピュータネットワークであって良い。ここで、nは2以上の整数である。
ジョブ管理装置1は、空きノード31を検索して、検索結果に基づいて計算ノード31にジョブを割り当てる。計算ノード群3におけるジョブの割り当てが可能な計算ノード31を、空きノード31ということとする。このために、ジョブ管理装置1は、ジョブ受付処理部11、ジョブ実行制御部12、記憶部13、ジョブ割り当て処理部14、計算ノード情報記憶部15を含む。ジョブ受付処理部11は割り当て情報生成部111を含む。記憶部13は、X軸検索用情報記憶部131、ジョブ割り当て情報記憶部132、検索情報記憶部133を含む。ジョブ割り当て処理部14は、空きノード検索部141、計算ノード管理部142を含む。計算ノード情報記憶部15は3次元システム情報記憶部151を含む。
記憶部13は、ジョブ受付処理部11、ジョブ実行制御部12、ジョブ割り当て処理部14が使用するメモリである。計算ノード情報記憶部15は計算ノード管理部142が使用するメモリである。ジョブ受付処理部11、ジョブ実行制御部12、ジョブ割り当て処理部14は、処理プログラムにより実現される。
計算ノード管理部142は、計算ノード群3について、3次元システム情報151’を生成する。例えば、計算ノード管理部142は、構造情報と空き情報とに基づいて、図3(A)に示す3次元システム情報151’を生成する。構造情報と空き情報は、計算ノード管理部142に入力され情報記憶部15に保持される。生成された3次元システム情報151’は、計算ノード情報記憶部15の3次元システム情報記憶部151に格納される。3次元システム情報151’については後述する。
構造情報は、計算ノード群3における各々の計算ノード31の位置を示す。空き情報は、各々の計算ノード31が「空き」であるか「使用中」であるかを示す。計算ノード群3における位置は、計算ノード群3のx方向の位置を示すx座標、y方向の位置を示すy座標、z方向の位置を示すz座標により表される。3次元システム情報において、空きノードは論理「1」で表され、使用中ノードは論理「0」で表される。
ジョブ受付処理部11は、利用者端末2から送信されたジョブ投入コマンドを受信して実行する。換言すれば、ジョブ受付処理部11は、受信したジョブ投入コマンドを受け付けて、ジョブ割り当て処理部14に送る。
また、ジョブ受付処理部11の割り当て情報生成部111は、ジョブ投入コマンドに基づいて、図3(C)に示すジョブ割り当て情報132’を生成して、ジョブ割り当て処理部14に送信する。この時点でのジョブ割り当て情報132’は、後述するように、初期値を格納するのみである。ジョブ割り当て処理部14は、受信したジョブ割り当て情報132’を、記憶部13のジョブ割り当て情報記憶部132に格納する。ジョブ割り当て情報132’については後述する。
ジョブ割り当て処理部14の空きノード検索部141は、計算ノード群3にジョブを割り当てる。具体的には、空きノード検索部141は、3次元システム情報151’に基づいて、図3(B)に示すx軸検索用情報131’を生成する。生成されたx軸検索用情報131’は、記憶部13のx軸検索用情報記憶部131に格納される。x軸検索用情報131’については後述する。
空きノード検索部141は、ジョブ割り当て情報132’に基づいて、図3(D)に示す検索情報133’を生成する。生成された検索情報133’は、記憶部13の検索情報記憶部133に格納される。ジョブ割り当て情報132’については後述する。
検索情報133’は、後述するように、検索用マスクパターンを含む。検索用マスクパターンは、空きノード31の検索に用いられる。
空きノード検索部141は、x軸検索用情報131’と検索情報133’とを用いて、計算ノード群3における空きノード31を検索する。この時、実際には、空きノード検索部141は、主として、x軸検索用情報131’と検索用マスクパターンとを用いた論理演算を実行することにより、空きノード31を検索する。空きノード検索部141は、空きノード31の検索結果に基づいて、ジョブを空きノード31に割り当てる。換言すれば、空きノード検索部141は、ジョブ割り当て情報132’を完成させて、ジョブ実行制御部12に送信する。
ジョブ実行制御部12は、受信したジョブ割り当て情報132’に基づいて、ジョブの実行を制御する。換言すれば、ジョブ実行制御部12は、ジョブを割り当てられた計算ノード31にジョブを実行させる。
以下、並列コンピュータシステムにおけるジョブ割り当て処理について、図4~図9を参照して具体的に説明する。
図4は、3次元システム情報の一例を示す。
計算ノード管理部142は、図4に示すように、計算ノード群3の計算ノード31の各々について、3次元システム情報151’を生成する。3次元システム情報151’は、実際には、3次元の配列により計算ノード群3の構造を表したものである。
図3(A)の3次元システム情報151’において、[systemX]は計算ノード群3のx方向の範囲となる値を取り、[systemY]は計算ノード群3のy方向の範囲となる値を取り、[systemZ]は計算ノード群3のz方向の範囲となる値を取る。このために、計算ノード管理部142は、構造情報に基づいて、複数の計算ノード31のx座標の中の最小値~最大値を[systemX]とし、複数の計算ノード31のy座標の中の最小値~最大値を[systemY]とし、複数の計算ノード31のz座標の中の最小値~最大値を[systemZ]とする。これにより、図4に示すように、計算ノード群3を直方体の形状として表すことができる。
例えば、図4において、x座標は0~7であり、y座標は0~7であり、z座標は0~7である。従って、[systemX]の最大値が8、[systemY]の最大値が8、[systemZ]の最大値が8である。この場合、計算ノード群3の構成は、8×8×8となる。[systemX]、[systemY]、[systemZ]の範囲は、相互に異なっていても良い。
また、3次元システム情報151’は、計算ノード群3に含まれる各々の計算ノード31についての空きノード情報を含む。空きノード情報は、当該計算ノード31が空きノードであることを示す論理「1」、又は、当該計算ノード31が使用中ノードであることを示す論理「0」のいずれか一方である。
図5は、x軸検索用情報の一例を示す。
空きノード検索部141は、図5に示すように、3次元システム情報151’に基づいて、x軸検索用情報131’を生成する。x軸検索用情報131’は、3次元の中の1つの次元についての検索用情報である。換言すれば、x軸検索用情報131’は1次元検索用情報である。1次元検索用情報は、複数のビットを含む。x軸検索用情報131’は、3次元の中の1つの次元であるx軸に属する複数の計算ノードの各々について、ジョブの割り当てが可能か否かを1ビットの情報で示す。換言すれば、x軸検索用情報131’は、3次元システム情報151’における配列xの複数の要素の各々を1ビットで表現し、かつ、配列xの複数の要素を1つの変数で格納するものである。
なお、x軸検索用情報131’に代えて、y軸検索用情報又はz軸検索用情報を生成するようにしても良い。
図3(B)のx軸検索用情報131’において、xは、計算ノード群3のx方向の全ての値である。一方、[systemY]は計算ノード群3のy方向の範囲となる値を取り、[systemZ]は計算ノード群3のz方向の範囲となる値を取る。従って、x軸検索用情報131’は、複数のx軸検索用情報131A、131B、・・・を含む。換言すれば、x軸検索用情報131’は、x座標が異なりかつ共通の座標(y,z)を有する計算ノード31毎に生成される。また、x軸検索用情報131’の数は、[systemY]×[systemZ]である。
例えば、x軸検索用情報131Aは、共通の座標(y,z)=(0,0)を有する計算ノード31についての情報である。x軸検索用情報131Aは、図5に示すように、座標(x,y,z)=(0,0,0)から座標(x,y,z)=(7,0,0)までの複数の計算ノード31についての、空きノード情報を含む。例えば、座標(0,0,0)の計算ノード31が空きノードである場合、x軸検索用情報131Aのbit7は「1」とされる。bit6~bit0も、空きノード情報に従って定まる。x軸検索用情報131Aのビットの数は、[systemX]、換言すれば、計算ノード群3のx方向の範囲に一致し、図5においては8ビットである。
x軸検索用情報131’を用いることにより、計算ノード群3は、図5に示す計算ノード群3’として表される。計算ノード群3’は、個々の要素が8ビットのデータ列である、y方向及びz方向の2次元の配列により、3次元の計算ノード群3を置換したものである。
図6は、検索用マスクパターンの一例を示す。
空きノード検索部141は、図6に示すように、検索用マスクパターン134を生成する。検索用マスクパターン134は、x軸検索用情報131Aにおける複数のビットに対応するビット数を含む。換言すれば、検索用マスクパターン134のビットの数は、x軸検索用情報131Aのビットの数と同一とされる。検索用マスクパターン134は、3次元の中の1つの次元についてジョブが要求するサイズに対応する連続ビットを予め定められた値に設定されたものである。換言すれば、検索用マスクパターン134は、x軸検索用情報131Aと同一の座標軸について生成される。従って、図6の検索用マスクパターン134は、x軸の検索用である。
なお、x軸検索用情報131’に代えてy軸検索用情報又はz軸検索用情報が生成された場合には、検索用マスクパターン134に代えてy軸の検索用のマスクパターン又はz軸の検索用のマスクパターンが生成される。
前述したように、検索用マスクパターン134は検索情報133’に含まれ、検索情報133’はジョブ割り当て情報132’に基づいて生成される。そこで、まず、図3(C)に示すジョブ割り当て情報132’について説明する。
図3(C)のジョブ割り当て情報132’において、ジョブの開始座標(x)は図3(A)の[systemX]の最小値であり、ジョブの開始座標(y)は図3(A)の[systemY]の最小値であり、ジョブの開始座標(z)は図3(A)の[systemZ]の最小値である。なお、[systemX]の最小値、[systemY]の最小値、[systemZ]の最小値は、いずれも「0」とされる。換言すれば、ジョブの割り当ては、(0,0,0)の座標を有する計算ノード31から順に判断される。
また、図3(C)のジョブ割り当て情報132’において、ジョブの形状(x)はジョブのx方向のサイズであり、ジョブの形状(y)はジョブのy方向のサイズであり、ジョブの形状(z)はジョブのz方向のサイズである。ジョブの形状(x)、ジョブの形状(y)及びジョブの形状(z)は、利用者端末2から入力されたジョブ投入コマンドにおいて指示される。
ジョブの全体の要求形状6は、ジョブの形状(x)、ジョブの形状(y)及びジョブの形状(z)に基づいて定まる。例えば、ジョブの形状(x)が「4」であり、ジョブの形状(y)が「4」であり、ジョブの形状(z)が「4」である場合、ジョブの全体の要求形状6は、図6に示すように定まる。この時、ジョブの全体の要求形状6を「ジョブの形状(x)×ジョブの形状(y)×ジョブの形状(z)」と表すとすると、この場合のジョブの全体の要求形状6は、「4×4×4」である。換言すれば、ジョブの全体の要求形状6は、「4×4×4」のジョブの要求の要素61を含む。各々のジョブの要求の要素61は、各々の計算ノード31に対応し、かつ、割り当てられる。
また、図3(C)のジョブ割り当て情報132’において、割り当て可能フラグは、当該ジョブが計算ノード群3に割り当て可能である場合には「1」とされ、割り当て不可能である場合には「0」とされる。この時点では、割り当て可能フラグは、割り当て可能か否かが不明であるので、「0」とされる。
ここで、ジョブが要求する計算ノード31の数、換言すれば、ジョブを分割した単位ジョブの数が、例えば「64」であるとする。この場合、「64」を満足するジョブの全体の形状6の組合せは、複数存在し得る。具体的には、ジョブの全体の要求形状6は、「4×4×4」、「2×8×4」、「2×2×16」のいずれであっても良い。
そこで、割り当て情報生成部111は、実際には、ジョブ割り当て情報132’として、複数のジョブ割り当て情報リストを生成する。生成されるジョブ割り当て情報リストの数は、ジョブの全体の形状6の組合せの数である。
複数のジョブ割り当て情報リストにおいては、ジョブの形状(x)、ジョブの形状(y)及びジョブの形状(z)のみが相互に異なる。例えば、第1のジョブ割り当て情報リストにおいては、ジョブの形状(x)が「4」、ジョブの形状(y)が「4」、ジョブの形状(z)が「4」とされ、第2のジョブ割り当て情報リストにおいては、ジョブの形状(x)が「2」、ジョブの形状(y)が「8」、ジョブの形状(z)が「4」とされ、第3のジョブ割り当て情報リストにおいては、ジョブの形状(x)が「2」、ジョブの形状(y)が「2」、ジョブの形状(z)が「16」とされる。複数のジョブ割り当て情報リストの各々について、検索情報133’が生成され、ジョブの割り当てが可能か否かが検索される。
次に、図3(D)の検索情報133’において、ジョブの開始座標(x)はジョブ割り当て情報132’におけるジョブの開始座標(x)から得られ、ジョブの開始座標(y)はジョブ割り当て情報132’におけるジョブの開始座標(y)から得られ、ジョブの開始座標(z)はジョブ割り当て情報132’におけるジョブの開始座標(z)から得られる。ジョブの開始座標(y)は並列コンピュータシステムにおけるy方向のループの初期値として用いられ、ジョブの開始座標(z)は並列コンピュータシステムにおけるz方向のループの初期値として用いられる。
また、図3(D)の検索情報133’において、ジョブの形状(x)はジョブ割り当て情報132’におけるジョブの形状(x)から得られ、ジョブの形状(y)はジョブ割り当て情報132’におけるジョブの形状(y)から得られ、ジョブの形状(z)はジョブ割り当て情報132’におけるジョブの形状(z)から得られる。ジョブの形状(x)、ジョブの形状(y)及びジョブの形状(z)は、固定である。
また、図3(D)の検索情報133’において、検索用マスクパターンは、図6に示す検索用マスクパターン134として得られる。前述したように、検索用マスクパターン134のビットの数は、x軸検索用情報131Aのビットの数と同一とされる。従って、図4及び図5の計算ノード群3を検索するための検索用マスクパターン134のビットの数は「8」である。
一方、ジョブの全体の要求形状6において、例えば、図6に示すように、ジョブの形状(x)が「4」であり、ジョブの形状(y)が「4」であり、ジョブの形状(z)が「4」であるとする。従って、前述したように、検索用マスクパターン134は、x軸について、ジョブが要求するサイズ「4」に対応する連続ビットbit7~bit4を、予め定められた値「0」に設定することにより得られる。この時、検索用マスクパターン134において、先頭のビットbit7から連続する4ビットが「0」とされる。これにより、x軸の方向において、連続した空きノード31を検出することができる。また、この時、ジョブが割り当て要求するサイズ以外のサイズ、換言すれば、ジョブの割り当ての範囲外の計算ノード31に対応するビットであるbit3~bit0を「1」とする。ジョブの割り当ての範囲外の計算ノード31は、ジョブの割り当て処理において無視される範囲である。なお、x軸についてジョブが要求するサイズ「4」が、ジョブの全体の要求形状6における、ジョブの部分形状62に対応する。
図7は、空きノードの検索の一例を示す。
空きノード検索部141は、x軸について、x軸検索用情報131’と検索用マスクパターン134とを用いて予め定められた論理演算を実行することにより、空きノード31を検索する。このために、前述したように、x軸検索用情報131’において、使用中ノードを「0」で表し、空きノードを「1」で表す。また、検索用マスクパターン134において、割り当て要求する計算ノードを「0」で表し、割り当て範囲外のノードを「1」で表す。
従って、図7に示すように、使用中である計算ノード31について割り当て要求を無視して良い場合、換言すれば、ビットの値が「0」である計算ノード31について検索用マスクパターン134のビットの値が「1」である場合には、どのように判定しても良いので、割り当てが可能であると判定することとする。
ここで、割り当てが可能である場合を「1」で表し、割り当てが不可能である場合を「0」で表すこととする。このように表す場合、使用中を示す「0」と無視を示す「1」との論理和(OR演算)により求められる演算結果「1」を用いて、割り当てが可能であると判定することができる。
なお、割り当てが可能であるかの演算は、論理和に限られない。従って、図7に示す判定の論理の設定に応じて、種々の論理演算を用いることができる。
また、使用中である計算ノード31について割り当て要求がある場合、換言すれば、ビットの値が「0」である計算ノード31について検索用マスクパターン134のビットの値が「0」である場合には、割り当てが不可能であると判定する。これは、本来の割り当てが不可能な場合である。この場合、使用中を示す「0」と割り当て要求を示す「0」との論理和により求められる演算結果「0」を用いて、割り当てが不可能であると判定することができる。
また、空きである計算ノード31について割り当て要求を無視して良い場合、換言すれば、ビットの値が「1」である計算ノード31について検索用マスクパターン134のビットの値が「1」である場合には、どのように判定しても良いので、割り当てが可能であると判定することとする。この場合、空きを示す「1」と無視を示す「1」との論理和により求められる演算結果「1」を用いて、割り当てが可能であると判定することができる。
また、空きである計算ノード31について割り当て要求がある場合、換言すれば、ビットの値が「1」である計算ノード31について検索用マスクパターン134のビットの値が「0」である場合には、割り当てが可能であると判定する。これは、本来の割り当てが可能な場合である。この場合、空きを示す「1」と割り当て要求を示す「0」との論理和により求められる演算結果「1」を用いて、割り当てが可能であると判定することができる。
図8及び図9は、ジョブの割り当てについての判定の一例を示す。なお、図8及び図9に示す例は、検索用マスクパターン134におけるシフト処理の説明の便宜のために、図4~図6に示す例とは異なる。
空きノード検索部141は、以上に述べた論理和の演算結果が「0」である場合、検索用マスクパターン134におけるシフト処理を実行する。ここで、論理和の演算結果が「0」である場合とは、x軸検索用情報131’と検索用マスクパターン134との論理和が、x軸について、ジョブの割り当てが不可能であることを示す場合である。検索用マスクパターン134におけるシフト処理とは、例えば、ジョブが要求するサイズ「4」に対応する連続ビットbit7~bit4を、予め定められた方向に1ビットだけシフトすることである。予め定められた方向とは、x軸方向の座標値が増す方向、換言すれば、bit0に向かう方向である。
例えば、x軸検索用情報131Cにおいて、図8(A)に示すように、bit7~bit5が「0」であり、bit4~bit2が「1」であり、bit1~bit0が「0」であるとする。この状態は、bit7~bit5に対応する計算ノード31が使用中であり、bit4~bit2に対応する計算ノード31が空きであり、bit1~bit0に対応する計算ノード31が使用中である状態である。
また、例えば、検索用マスクパターン134Bにおいて、図8(B)に示すように、bit7~bit5が「0」であり、bit4~bit0が「1」であるとする。この状態は、bit7~bit5に対応する計算ノード31が割り当て要求の対象であり、bit4~bit0に対応する計算ノード31が割り当てに無関係であり無視して良い状態である。
空きノード検索部141は、図8(A)のx軸検索用情報131Cと、図8(B)の検索用マスクパターン134Bとの論理和を求める。この論理和の演算結果は、図8(C)に示すように、bit7~bit5が「0」となり、bit4~bit0が「1」となる。従って、bit7~bit5が割り当て不可能であり、bit4~bit0が割り当て可能であることが求められる。
ここで、前述したように、bit7~bit5に対応する計算ノード31が割り当て要求の対象であり、bit4~bit0に対応する計算ノード31は割り当てに無関係である。従って、割り当て要求の対象であるbit7~bit5に対応する計算ノード31について、ジョブを割り当てることができない。
そこで、空きノード検索部141は、図8(B)の検索用マスクパターン134Bにおける、ジョブが要求するサイズ「3」に対応する連続ビットbit7~bit5を、bit0の方向に1ビットだけシフトする。これにより、図8(D)の検索用マスクパターン134Cが得られる。
検索用マスクパターン134Bにおけるシフト処理の後、空きノード検索部141は、x軸検索用情報131’とシフトされた検索用マスクパターン134Cとを用いて論理和を求めることにより、再度、空きノードを検索する。
図8(A)のx軸検索用情報131Cと、図8(D)の検索用マスクパターン134Cとの論理和の演算結果は、図8(E)に示すように、bit7が「1」となり、bit6~bit5が「0」となり、bit4~bit0が「1」となる。従って、bit7が割り当て可能であり、bit6~bit5が割り当て不可能であり、bit4~bit0が割り当て可能であることが求められる。
ここで、前述したように、bit7~bit5に対応する計算ノード31が割り当て要求の対象であり、bit4~bit0に対応する計算ノード31は割り当てに無関係である。従って、割り当て要求の対象であるbit7~bit5に対応する計算ノード31について、ジョブを割り当てることができない。
そこで、空きノード検索部141は、図8(D)の検索用マスクパターン134Cにおける、ジョブが要求するサイズ「3」に対応する連続ビットbit6~bit4を、bit0の方向に1ビットだけシフトする。これにより、図9(A)の検索用マスクパターン134Dが得られる。
検索用マスクパターン134Cにおけるシフト処理の後、空きノード検索部141は、x軸検索用情報131’とシフトされた検索用マスクパターン134Dとを用いて論理和を求めることにより、再度、空きノードを検索する。
図8(A)のx軸検索用情報131Cと、図9(A)の検索用マスクパターン134Dとの論理和の演算結果は、図9(B)に示すように、bit7~bit6が「1」となり、bit5が「0」となり、bit4~bit0が「1」となる。従って、bit7~bit6が割り当て可能であり、bit5が割り当て不可能であり、bit4~bit0が割り当て可能であることが求められる。
ここで、前述したように、bit7~bit5に対応する計算ノード31が割り当て要求の対象であり、bit4~bit0に対応する計算ノード31は割り当てに無関係である。従って、割り当て要求の対象であるbit7~bit5に対応する計算ノード31について、ジョブを割り当てることができない。
そこで、空きノード検索部141は、図9(A)の検索用マスクパターン134Dにおける、ジョブが要求するサイズ「3」に対応する連続ビットbit5~bit3を、bit0の方向に1ビットだけシフトする。これにより、図9(C)の検索用マスクパターン134Eが得られる。
検索用マスクパターン134Dにおけるシフト処理の後、空きノード検索部141は、x軸検索用情報131’とシフトされた検索用マスクパターン134Eとを用いて論理和を求めることにより、再度、空きノードを検索する。
図8(A)のx軸検索用情報131Cと、図9(C)の検索用マスクパターン134Eとの論理和の演算結果は、図9(D)に示すように、bit7~bit0が「1」となる。従って、bit7~bit0が割り当て可能であることが求められる。
ここで、前述したように、bit7~bit5に対応する計算ノード31が割り当て要求の対象であり、bit4~bit0に対応する計算ノード31は割り当てに無関係である。従って、割り当て要求の対象であるbit7~bit5に対応する計算ノード31について、ジョブを割り当てることができる。
以上は、x軸についての検索情報である。空きノード検索部141は、x軸以外の残りのy軸及びz軸について、空きノード31か否かの判定処理を、開始点から予め定められた順に繰り返すことにより、空きノード31を検索する。
これにより、ジョブの開始点を定めるための処理を、並列コンピュータシステムにおけるz方向のループとy方向のループのみとして、x方向のループを省略することができる。また、ジョブを連続した直方体形状に割り当てるための処理を、ジョブサイズのz方向のループとy方向のループのみとして、x方向のループを省略することができる。従って、6重のループではなく、4重のループの実行により、並列コンピュータシステムへジョブが割り当てられる。従って、投入されたジョブの実行待ち時間を短縮することができ、また、並列コンピュータシステムの稼動率を向上することができる。
図10は、ジョブ管理処理フローである。
空きノード検索部141は、初期化処理を実行して、3次元システム情報151’に基づいて、x軸検索用情報131’を生成する(ステップS10)。
次に、空きノード検索部141は、ジョブ割り当て情報リストのループを開始する(ステップS11)。ジョブ割り当て情報リストのループは、ジョブ割り当て情報132’に含まれる複数のジョブ割り当てリストの数分のループ制御を行う処理である。具体的には、空きノード検索部141は、予め定められた順に従って、ジョブ割り当て情報132’の中から1つのジョブ割り当て情報リストを選択する。この時点では、ジョブ割り当て情報132’であるジョブ割り当て情報リストにおいて、割り当て可能フラグは、不可能(false)が設定されている。
この後、空きノード検索部141は、選択されたジョブ割り当て情報リストに定義されたジョブ、換言すれば、計算ジョブを割り当てるための4重ループ処理を開始する。
最初に、空きノード検索部141は、計算ノード群3、換言すれば、並列コンピュータシステムにおけるz方向のループを開始する(ステップS12)。具体的には、空きノード検索部141は、予め定められた順に従って、計算ノード群3におけるz方向の座標を選択する。なお、計算ノード群3におけるz方向のループを「システムのzループ」と言うこととする。システムのzループは、検索の開始点をz方向に制御するループである。システムのzループのループ範囲は、「1」から、「システムサイズ-ジョブサイズ+1」までである。
次に、空きノード検索部141は、計算ノード群3、換言すれば、並列コンピュータシステムにおけるy方向のループを開始する(ステップS13)。具体的には、空きノード検索部141は、予め定められた順に従って、計算ノード群3におけるy方向の座標を選択する。これにより、1個のx軸検索用情報131’が選択される。なお、計算ノード群3におけるy方向のループを「システムのyループ」と言うこととする。システムのyループは、検索の開始点をy方向に制御するループである。システムのyループのループ範囲は、「1」から、「システムサイズ-ジョブサイズ+1」までである。
ステップS12~S13により、計算ノード群3におけるジョブ割り当ての開始点、換言すれば、開始点についてのx軸検索用情報131’が選択される。
次に、空きノード検索部141は、選択されたx軸検索用情報131’において、空きノード31の数が、ジョブが要求する計算ノード31の数未満であるか否かを判断する(ステップS14)。具体的には、空きノード検索部141は、x軸検索用情報131’における「1」の数をカウントし、カウント値とx方向のジョブサイズとを比較する。空きノード31の数がジョブサイズ未満の場合、空きノード31の検索処理が無駄になることを回避して、処理時間を短縮することができる。
空きノード31の数がジョブが要求する計算ノード31の数未満である場合(ステップS14 Yes)、空きノード検索部141は、ステップS115を実行する。
空きノード31の数がジョブが要求する計算ノード31の数未満でない場合(ステップS14 No)、空きノード検索部141は、検索情報133’を初期化する(ステップS15)。
具体的には、空きノード検索部141は、検索情報133’において、ジョブの開始座標(x)、ジョブの開始座標(y)及びジョブの開始座標(z)に「0」を設定する。また、空きノード検索部141は、検索情報133’において、ジョブの形状(x)にジョブ割り当て情報132’におけるジョブの形状(x)を設定し、ジョブの形状(y)にジョブ割り当て情報132’におけるジョブの形状(y)を設定し、ジョブの形状(z)にジョブ割り当て情報132’におけるジョブの形状(z)を設定する。更に、空きノード検索部141は、検索情報133’において、検索用マスクパターン134を生成する。検索用マスクパターン134は、最左端のbit7から順にジョブの形状(x)の数の分の「0」を設定し、残りのbitに「1」を設定する。これにより、例えば図6に示す検索用マスクパターン134が得られる。更に、空きノード検索部141は、検索情報133’において、シフト総数に「0」を設定し、シフト数に「0」を設定する。
次に、空きノード検索部141は、検索用マスクパターン134において、ジョブの形状(x)の数の分の「0」を、検索情報133’におけるシフト数だけ、bit0の方向へシフトする、換言すれば、右シフトする(ステップS16)。シフト数が「0」である場合には、シフト処理は実行されない。従って、シフト数が初期値である場合、シフト処理は実行されない。空きノード検索部141は、検索情報133’において、シフト総数にシフト数を加算する。
なお、計算ノード群3が図2(B)に示すトーラス結合されたコンピュータネットワークである場合において、シフト総数とx方向のジョブサイズとの合計がx軸検索用情報131’又は検索用マスクパターン134のサイズ以上になった場合、図13を参照して後述するように処理される。
次に、空きノード検索部141は、x軸検索用情報131’と検索用マスクパターン134とを用いた論理和演算を実行することにより、ジョブが割り当て可能か否かを判断する(ステップS17)。
ジョブの割り当てが可能でない場合(ステップS17 No)、空きノード検索部141は、シフト数に+1を加算した後に、ジョブの形状(x)の数の分の「0」についての次回のシフトが、右シフトの上限か否かを判断する(ステップS18)。次回のシフトが右シフトの上限である場合(ステップS18 Yes)、空きノード検索部141は、ステップS115を実行する。次回のシフトが右シフトの上限でない場合(ステップS18 No)、空きノード検索部141は、ステップS16を実行する。
ここで、右シフトの上限とは、計算ノード群3が図2(A)のメッシュ結合である場合、シフト総数とx方向のジョブサイズとの合計がx軸検索用情報131’又は検索用マスクパターン134のサイズ以上となった場合である。換言すれば、シフト総数とx方向のジョブサイズとの合計がx軸検索用情報131’又は検索用マスクパターン134のサイズ未満の場合は、右シフトの上限ではない。
例えば、図6の検索用マスクパターン134において、x方向のジョブサイズが「4」であり、検索用マスクパターン134のサイズが「8」である。従って、シフト総数が「3」以下であれば右シフトの上限とならず、シフト総数が「4」以上であれば右シフトの上限となる。
また、計算ノード群3が図2(B)のトーラス結合である場合において、シフト総数がx軸検索用情報131’又は検索用マスクパターン134のサイズ未満の場合には、右シフトの上限ではないので、ステップS16が実行される。シフト総数がx軸検索用情報131’又は検索用マスクパターン134のサイズ以上の場合には、右シフトの上限であり、ステップS115が実行される。
ステップS17において、ジョブの割り当てが可能である場合(ステップS17 Yes)、空きノード検索部141は、ステップS11において選択したジョブ割り当て情報リストにおけるジョブサイズのz方向のループを開始する(ステップS19)。具体的には、空きノード検索部141は、予め定められた順に従って、ジョブ割り当て情報リストにおけるジョブサイズのz方向における位置を選択する。なお、ジョブ割り当て情報リストにおけるz方向のループを「ジョブサイズのzループ」と言うこととする。ジョブサイズのzループは、検索マスクパターン134による空きノードの検索をz方向に制御するループである。ジョブサイズのzループのループ範囲は、「1」から、「ジョブサイズ」までである。
次に、空きノード検索部141は、ジョブ割り当て情報リストにおけるジョブサイズのy方向のループを開始する(ステップS110)。具体的には、空きノード検索部141は、予め定められた順に従って、ジョブ割り当て情報リストにおけるジョブサイズのy方向における位置を選択する。なお、ジョブ割り当て情報リストにおけるy方向のループを「ジョブサイズのyループ」と言うこととする。ジョブサイズのyループは、検索マスクパターン134による空きノードの検索をy方向に制御するループである。ジョブサイズのyループのループ範囲は、「1」から、「ジョブサイズ」までである。ステップS19~S110により、前述の開始点を基準として、ジョブ割り当て情報リストにおけるある位置に対応するx軸検索用情報131’が選択される。
次に、空きノード検索部141は、x軸検索用情報131’と検索用マスクパターン134とを用いた論理和演算を実行することにより、ジョブが割り当て可能か否かを判断する(ステップS111)。
ジョブの割り当てが可能でない場合(ステップS111 No)、空きノード検索部141は、シフト数に+1を加算した後に、ジョブの形状(x)の数の分の「0」についての次回のシフトが、右シフトの上限か否かを判断する(ステップS118)。次回のシフトが右シフトの上限である場合(ステップS118 Yes)、空きノード検索部141は、ステップS115を実行する。次回のシフトが右シフトの上限でない場合(ステップS118 No)、空きノード検索部141は、ステップS16を実行する。右シフトの上限については前述した通りである。
ステップS111において、ジョブの割り当てが可能である場合(ステップS111 Yes)、次に、空きノード検索部141は、ジョブ割り当て情報リストにおけるジョブサイズのy方向のループを終了する(ステップS112)。具体的には、空きノード検索部141は、ジョブサイズのy方向についての前述のループ範囲の実行が終了しない場合にはステップS110を繰り返し、ジョブサイズのy方向についての前述のループ範囲の実行が終了した場合にはステップS113を実行する。
次に、空きノード検索部141は、ジョブ割り当て情報リストにおけるジョブサイズのz方向のループを終了する(ステップS113)。具体的には、空きノード検索部141は、ジョブサイズのz方向についての前述のループ範囲の実行が終了しない場合にはステップS19を繰り返し、ジョブサイズのz方向についての前述のループ範囲の実行が終了した場合にはステップS114を実行する。
次に、空きノード検索部141は、図6のジョブの要求形状6の全体が割り当て可能か否かを判断する(ステップS114)。図6のジョブの要求形状6の全体の割り当てが可能である場合、空きノード検索部141は、ステップS117を実行する。
図6のジョブの要求形状6の全体の割り当てが可能でない場合、空きノード検索部141は、計算ノード群3におけるy方向のループを終了する(ステップS115)。具体的には、空きノード検索部141は、計算ノード群3におけるy方向についての前述のループ範囲の実行が終了しない場合にはステップS13を繰り返す。計算ノード群3におけるy方向についての前述のループ範囲の実行が終了した場合には、空きノード検索部141は、ステップS116を実行する。
次に、空きノード検索部141は、計算ノード群3におけるz方向のループを終了する(ステップS116)。具体的には、空きノード検索部141は、計算ノード群3におけるz方向についての前述のループ範囲の実行が終了しない場合にはステップS12を繰り返す。計算ノード群3におけるz方向の前述のループ範囲の実行が終了した場合には、空きノード検索部141は、ステップS117を実行する。
次に、空きノード検索部141は、ジョブ割り当て情報リストのループを終了する(ステップS117)。具体的には、空きノード検索部141は、現在のジョブ割り当て情報リストが最後か否かを調べ、最後でない場合にはステップS11を繰り返し、最後である場合には処理を終了する。この時、空きノード検索部141は、ジョブ割り当て情報132’のジョブ割り当て情報の形状(x)に検索情報133’のジョブの形状(x)を設定し、ジョブ割り当て情報132’のジョブ割り当て情報の形状(y)に検索情報133’のジョブの形状(y)を設定し、ジョブ割り当て情報132’のジョブ割り当て情報の形状(z)に検索情報133’のジョブの形状(z)を設定する。また、空きノード検索部141は、ジョブ割り当て情報132’の割り当て可能フラグに「可能(true)」を設定する。
図11は、ループ数の削減効果の一例を示す。
図11において、計算ノード群3におけるz方向のサイズが「systemZ」であり、y方向のサイズが「systemY」であり、x方向のサイズが「systemX」であるものとする。また、z方向のジョブサイズが「jobZ」であり、y方向のジョブサイズが「jobY」であり、x方向のジョブサイズが「jobX」であるものとする。
この場合、図16に示す処理によれば、計算ノード群3におけるz方向のループの回数は「systemZ-jobZ+1」となり、y方向のループの回数は「systemY-jobY+1」となり、x方向のループの回数は「systemX-jobX+1」となる。また、ジョブサイズのz方向のループの回数は「jobZ」となり、ジョブサイズのy方向のループの回数は「jobY」となり、ジョブサイズのx方向のループの回数は「jobX」となる。
これに対して、図10に示す処理によれば、計算ノード群3におけるz方向のループの回数は「systemZ-jobZ+1」となり、y方向のループの回数は「systemY-jobY+1」となるが、x方向のループの回数は「1」となる。また、ジョブサイズのz方向のループの回数は「jobZ」となり、ジョブサイズのy方向のループの回数は「jobY」となるが、ジョブサイズのx方向のループの回数は「1」となる。
ここで、図2(A)の3次元メッシュ結合が立方体であり、図6のジョブサイズも立方体であるとする。この場合、「systemZ=systemY=systemX」が成立するので、これらの値を「system」と表すこととする。また、「jobZ=jobY=jobX」が成立するので、これらの値を「job」と表すこととする。これにより、下記の式に示すように、ループ回数を削減することができる。
(第2の実施態様)
第1の実施態様においては、検索用マスクパターン134のシフト処理が1ビットずつ実行される。ここで、図8及び図9に着目すると、ジョブが要求している計算ノード31の数に足りない計算ノード31の数は、空きノード31を検出するまでのシフトのビット数に一致する。換言すれば、演算結果が「0」のビットの数は、空きノード31を検出するために必要な最小のシフト量に一致する。
第1の実施態様においては、検索用マスクパターン134のシフト処理が1ビットずつ実行される。ここで、図8及び図9に着目すると、ジョブが要求している計算ノード31の数に足りない計算ノード31の数は、空きノード31を検出するまでのシフトのビット数に一致する。換言すれば、演算結果が「0」のビットの数は、空きノード31を検出するために必要な最小のシフト量に一致する。
そこで、この例では、空きノード検索部141は、x軸について、x軸検索用情報131’と検索用マスクパターン134とを用いた論理和演算に基づいて、演算結果が「0」のビットの数を算出する。演算結果が「0」のビットの数は、ジョブの割り当てが不可能であることを示すビットの数である。更に、空きノード検索部141は、検索用マスクパターン134における値「0」に設定された連続ビットを、bit0の方向に、演算結果が「0」のビットの数の分だけシフトする。
この結果、シフトされた検索用マスクパターン134が得られる。この後、空きノード検索部141は、x軸検索用情報131’とシフトされた検索用マスクパターン134とを用いた論理和演算を実行することにより、再度、空きノード31を検索する。これにより、演算結果が「0」のビットについてのシフト処理を1回で実行する、換言すれば、スキップして、更に、演算処理の回数を削減することができる。
図12及び図13は、ジョブの割り当てについての判定の他の一例を示す。
例えば、x軸検索用情報131Dにおいて、図12(A)に示すように、bit7~bit5が「0」であり、bit4~bit2が「1」であり、bit1~bit0が「0」であるとする。この状態は、bit7~bit5に対応する計算ノード31が使用中であり、bit4~bit2に対応する計算ノード31が空きであり、bit1~bit0に対応する計算ノード31が使用中である状態である。
また、例えば、検索用マスクパターン134Fにおいて、図12(B)に示すように、bit7~bit5が「0」であり、bit4~bit0が「1」であるとする。この状態は、bit7~bit5に対応する計算ノード31が割り当て要求の対象であり、bit4~bit0に対応する計算ノード31が割り当てに無関係であり無視して良い状態である。
空きノード検索部141は、図12(A)のx軸検索用情報131Dと、図12(B)の検索用マスクパターン134Fとの論理和を求める。この論理和の演算結果は、図12(C)に示すように、bit7~bit5が「0」となり、bit4~bit0が「1」となる。従って、bit7~bit5が割り当て不可能であり、bit4~bit0が割り当て可能であることが求められる。
ここで、前述したように、bit7~bit5に対応する計算ノード31が割り当て要求の対象であり、bit4~bit0に対応する計算ノード31は割り当てに無関係である。従って、割り当て要求の対象であるbit7~bit5に対応する計算ノード31について、ジョブを割り当てることができない。
そこで、空きノード検索部141は、図12(A)のx軸検索用情報131Dと、図12(B)の検索用マスクパターン134Fとの論理和の演算結果における「0」のビットの数を算出する。演算結果が「0」のビットの数は、図12(C)に示すように、「3」である。演算結果が「0」のビットの数は、「シフト総数」である。算出されたシフト総数は、図3(D)の検索情報133’におけるシフト総数に設定される。
シフト総数は、以下のようにして算出される。例えば、x軸検索用情報131Dと検索用マスクパターン134Fとの論理和の演算結果において、最左端のbit7の方向に向かって「0」が始めて出現する位置は、「bit5」である。換言すれば、「bit5」は「0」の出現位置の最右端である。この場合において、シフト総数は、「計算ノード群3のサイズ-「0」の出現位置の最右端」により求めることができる。従って、シフト総数は、8-5=3により、「3」となる。
この算出の結果に基づいて、空きノード検索部141は、図12(B)の検索用マスクパターン134Fにおける、ジョブが要求するサイズ「3」に対応する連続ビットbit7~bit5を、bit0の方向に、1ビットではなく、3ビットだけシフトする。これにより、図12(D)の検索用マスクパターン134Gが得られる。
検索用マスクパターン134Fにおける3ビットのシフト処理の後、空きノード検索部141は、x軸検索用情報131’とシフトされた検索用マスクパターン134Gとを用いて論理和を求めることにより、再度、空きノード31を検索する。
図12(A)のx軸検索用情報131Dと、図12(D)の検索用マスクパターン134Gとの論理和の演算結果は、図12(E)に示すように、bit7~bit0が「1」となる。従って、bit7~bit0が割り当て可能であることが求められる。
ここで、前述したように、bit7~bit5に対応する計算ノード31が割り当て要求の対象であり、bit4~bit0に対応する計算ノード31は割り当てに無関係である。従って、割り当て要求の対象であるbit7~bit5に対応する計算ノード31について、ジョブを割り当てることができる。
これにより、ジョブを連続した直方体形状に割り当てるための処理において、検索用マスクパターン134におけるシフト処理の回数及び論理和演算の回数をより少なくすることができる。従って、投入されたジョブの実行待ち時間を短縮することができ、また、計算ノード群3の稼動率を向上することができる。
なお、計算ノード群3が、図2(B)に示すトーラス結合されたコンピュータネットワークである場合がある。この場合において、図13(A)に示すように、検索用マスクパターン134Hにおいて、bit7~bit3が「1」であり、bit2~bit0が「0」であり、かつ、演算結果が「0」のビットの数が「3」である場合がある。換言すれば、シフト総数とジョブが要求するx軸方向のジョブサイズとの合計が、計算ノード3におけるx軸方向のサイズ以上になる場合がある。
この場合、ジョブが要求するサイズ「3」に対応する連続ビットbit2~bit0を、bit0の方向に、3ビットだけシフトする。この時、空きノード検索部141は、図13(B)に示すように、bit0に隣接してbit7が存在するので、bit0の「0」をbit7に移動する。これにより、演算結果が「0」のビットをシフトさせることができる。
なお、他の実施態様においても、計算ノード群3が、図2(B)に示すトーラス結合されたコンピュータネットワークである場合には、図13に示すようにして、演算結果が「0」のビットがシフトされる。
図14は、他のジョブ管理処理フローである。
空きノード検索部141は、図14に示すように、基本的には、図10に示す処理と同様の処理を実行するが、図10に示す処理に加えてステップS28及びステップS219を実行する。
以下、図14に示す処理における、図10に示す処理との相違点について説明する。
空きノード検索部141は、図10のステップS10~S17と同様に、ステップS20~S27を実行する。
この後、空きノード検索部141は、ステップS27において、ジョブの割り当てが可能でない場合(ステップS27 No)、ジョブの割り当てが不可能な位置に基づいてシフト数を算出する(ステップS28)。具体的には、空きノード検索部141は、演算結果が「0」のビットの数を算出する。
この後、空きノード検索部141は、演算結果が「0」のビットの数と、x軸検索用情報131’又は検索用マスクパターン134のビットの数とに基づいて、演算結果が「0」のビットの数の分のシフトが、右シフトの上限か否かを判断する(ステップS29)。換言すれば、ジョブが要求するサイズ「3」に対応する連続ビットが、演算結果が「0」のビットの数だけシフトすることができるか否かが判断される。
演算結果が「0」のビットの数の分のシフトが右シフトの上限でない場合(ステップS29 No)、空きノード検索部141は、ステップS26を実行する。これにより、ジョブが要求するサイズ「3」に対応する連続ビットが、演算結果が「0」のビットの数だけシフトされる。
演算結果が「0」のビットの数の分のシフトが右シフトの上限である場合(ステップS29 Yes)、空きノード検索部141は、ステップS216を実行する。
一方、ステップS27において、ジョブの割り当てが可能である場合(ステップS27 Yes)、空きノード検索部141は、ステップS210~S212を実行する。
この後、空きノード検索部141は、ステップS212において、ジョブの割り当てが可能でない場合(ステップS212 No)、ジョブの割り当てが不可能な位置に基づいてシフト数を算出する(ステップS219)。具体的には、空きノード検索部141は、演算結果が「0」のビットの数を算出する。
この後、空きノード検索部141は、演算結果が「0」のビットの数と、x軸検索用情報131’又は検索用マスクパターン134のビットの数とに基づいて、演算結果が「0」のビットの数の分のシフトが、右シフトの上限か否かを判断する(ステップS220)。換言すれば、ジョブが要求するサイズ「3」に対応する連続ビットが、演算結果が「0」のビットの数だけシフトすることができるか否かが判断される。
演算結果が「0」のビットの数の分のシフトが右シフトの上限でない場合(ステップS220 No)、空きノード検索部141は、ステップS26を実行する。これにより、ジョブが要求するサイズ「3」に対応する連続ビットが、演算結果が「0」のビットの数だけシフトされる。
演算結果が「0」のビットの数の分のシフトが右シフトの上限である場合(ステップS220 Yes)、空きノード検索部141は、ステップS216を実行する。
(第3の実施態様)
第1~第2の実施態様においては、x軸検索用情報131’が生成され、x軸に関する2重のループが削減される。これに対して、例えば、計算ノード群3のサイズが小さい場合には、検索用マスクパターン134のシフト処理回数が少なくなる。この場合には、x軸検索用情報131’の生成処理、x軸検索用情報131’と検索用マスクパターン134との論理和演算処理、検索用マスクパターン134のシフト処理のオーバーヘッドが大きくなる可能性がある。
第1~第2の実施態様においては、x軸検索用情報131’が生成され、x軸に関する2重のループが削減される。これに対して、例えば、計算ノード群3のサイズが小さい場合には、検索用マスクパターン134のシフト処理回数が少なくなる。この場合には、x軸検索用情報131’の生成処理、x軸検索用情報131’と検索用マスクパターン134との論理和演算処理、検索用マスクパターン134のシフト処理のオーバーヘッドが大きくなる可能性がある。
そこで、この例では、空きノード検索部141は、計算ノード群3のx軸のサイズ、換言すれば、[systemX]の最大値が予め定められた第1の値以上である場合には、前述したように、論理演算の結果に基づいて検索用マスクパターン134における連続ビットのシフト処理を行う。計算ノード群3のx軸のサイズは、[systemX]の最大値である。第1の値は経験的に予め定められる。y軸検索用情報又はz軸検索用情報が生成される場合には、y軸のサイズ又はz軸のサイズが予め定められた値以上である場合には、論理演算の結果に基づいて検索用マスクパターン134における連続ビットのシフト処理を行う。
一方、空きノード検索部141は、計算ノード群3のx軸のサイズが予め定められた第1の値より小さい場合には、x軸についても、空きノード31か否かの判定処理を開始点から予め定められた順に繰り返すことにより、空きノード31を検索する。換言すれば、空きノード検索部141は、計算ノード群3のx軸のサイズが予め定められた第1の値より小さい場合には、計算ノード群3におけるx方向のループを実行する。これにより、検索用マスクパターン134のシフト処理のオーバーヘッドが大きくなることを回避することができる。
なお、空きノード検索部141が、ジョブが要求するx軸方向のサイズが予め定められた第2の値以上である場合に、論理演算の結果に基づいて検索用マスクパターン134における連続ビットのシフトを行うようにしても良い。ジョブが要求するx軸方向のサイズは、[jobX]の最大値である。第2の値は経験的に予め定められる。また、y軸検索用情報又はz軸検索用情報が生成される場合には、ジョブが要求するy軸のサイズ又はジョブが要求するz軸のサイズが予め定められた値以上である場合には、論理演算の結果に基づいて検索用マスクパターン134における連続ビットのシフト処理を行うようにしても良い。
また、空きノード検索部141が、計算ノード群3のx軸のサイズとジョブが要求するサイズとの差分が予め定められた第3の値以上である場合に、論理演算の結果に基づいて検索用マスクパターン134における連続ビットのシフトを行うようにしても良い。第3の値は経験的に予め定められる。また、y軸検索用情報又はz軸検索用情報が生成される場合には、y軸方向における前記差分又はz軸方向における前記差分が予め定められた値以上である場合には、論理演算の結果に基づいて検索用マスクパターン134における連続ビットのシフト処理を行うようにしても良い。
(第4の実施態様)
第1~第3の実施態様においては、3次元の中の1つの次元としてx軸が選択され、x軸検索用情報131’が生成され、x軸に関する2重のループが削減される。これに対して、計算ノード群3の形状が直方体である場合には、削減されるループをできるだけサイズの大きな軸方向に適用すると、ループの削減による処理時間の短縮の効果が大きい。また、ジョブの要求形状が直方体である場合にも、削減されるループをできるだけサイズの大きな軸方向に適用すると、ループの削減による処理時間の短縮の効果が大きい。
第1~第3の実施態様においては、3次元の中の1つの次元としてx軸が選択され、x軸検索用情報131’が生成され、x軸に関する2重のループが削減される。これに対して、計算ノード群3の形状が直方体である場合には、削減されるループをできるだけサイズの大きな軸方向に適用すると、ループの削減による処理時間の短縮の効果が大きい。また、ジョブの要求形状が直方体である場合にも、削減されるループをできるだけサイズの大きな軸方向に適用すると、ループの削減による処理時間の短縮の効果が大きい。
そこで、この例では、計算ノード管理部142が、図2(A)の計算ノード群3における最も長辺である次元を、n次元の中の1つの次元として選択し、当該選択された軸の検索用情報を生成する。ここで、最も長辺とは、[systemX]の最大値、[systemY]の最大値、及び、[systemZ]の最大値の中で、最も大きい値を持つ座標軸である。換言すれば、計算ノード管理部142は、図2(A)において、座標軸はそのままにして、計算ノード群3における最も長辺である次元がx軸となるように、計算ノード群3を回転する。
この状態で、空きノード検索部142は、計算ノード群3にジョブを割り当てる。この後、計算ノード管理部142が、図2(A)において、座標軸はそのままにして、計算ノード群3における最も長辺である次元がx軸から元の座標軸となるように、計算ノード群3を逆方向に回転する。この後、ジョブ実行制御部12が、本来の座標軸に戻された計算ノード群3にジョブを割り当てて実行させる。これにより、ジョブの割り当て処理の時間を一層短縮することができる。
また、計算ノード管理部142が、図6のジョブの要求形状6における最も長辺である次元を、n次元の中の1つの次元として選択し、当該選択された軸の検索用情報を生成するようにしても良い。ここで、最も長辺とは、[jobX]の最大値、[jobY]の最大値、及び、[jobZ]の最大値の中で、最も大きい値を持つ座標軸である。換言すれば、計算ノード管理部142は、図2(A)において、座標軸はそのままにして、図6のジョブの要求形状6における最も長辺である次元がx軸となるように、計算ノード群3を回転する。
この状態で、空きノード検索部142は、計算ノード群3にジョブを割り当てる。この後、計算ノード管理部142が、図2(A)において、座標軸はそのままにして、図6のジョブの要求形状6における最も長辺である次元がx軸からもとの座標軸となるように、計算ノード群3を逆方向に回転する。この後、ジョブ実行制御部12が、本来の座標軸に戻された計算ノード群3にジョブを割り当てて実行させる。これにより、ジョブの割り当て処理の時間を一層短縮することができる。
1 ジョブ管理装置
2 利用者端末
3 計算ノード群
31 計算ノード
11 ジョブ受付処理部
12 ジョブ実行制御部
13 記憶部
14 ジョブ割り当て処理部
15 計算ノード情報記憶部
111 割り当て情報生成部
131 X軸検索用情報記憶部
132 ジョブ割り当て情報記憶部
133 検索情報記憶部
141 空きノード検索部
142 計算ノード管理部
151 3次元システム情報記憶部
2 利用者端末
3 計算ノード群
31 計算ノード
11 ジョブ受付処理部
12 ジョブ実行制御部
13 記憶部
14 ジョブ割り当て処理部
15 計算ノード情報記憶部
111 割り当て情報生成部
131 X軸検索用情報記憶部
132 ジョブ割り当て情報記憶部
133 検索情報記憶部
141 空きノード検索部
142 計算ノード管理部
151 3次元システム情報記憶部
Claims (8)
- n(nは2以上の整数)次元メッシュ結合又はn次元トーラス結合されたコンピュータネットワークにおける計算ノードであって、ジョブの割り当てが可能な空きノードを検索するジョブ管理装置であって、
前記n次元の中の1つの次元についての検索用情報であって、複数のビットを含み、前記n次元の中の1つの次元に属する複数の計算ノードの各々について、前記ジョブの割り当てが可能か否かを1ビットの情報で示す1次元検索用情報を生成する1次元検索用情報生成部と、
前記複数のビットに対応するビット数の検索用マスクパターンであって、前記n次元の中の1つの次元について前記ジョブが要求するサイズに対応する連続ビットを予め定められた値に設定された検索用マスクパターンを生成する検索情報生成部と、
前記n次元の中の1つの次元について、前記1次元検索用情報と前記検索用マスクパターンとを用いて予め定められた論理演算を実行することにより、前記空きノードを検索する空きノード検索部とを含む
ことを特徴とするジョブ管理装置。 - 前記空きノード検索部が、前記n次元の中の前記1つの次元以外の残りの(n-1)次元について、前記空きノードか否かの判定処理を開始点から予め定められた順に繰り返すことにより、前記空きノードを検索する
ことを特徴とする請求項1に記載のジョブ管理装置。 - 前記空きノード検索部が、前記n次元の中の1つの次元についての前記論理演算の結果が前記n次元の中の1つの次元について前記ジョブの割り当てが不可能であることを示す場合、前記検索用マスクパターンにおける前記予め定められた値に設定された前記連続ビットを、予め定められた方向に1ビットだけシフトし、前記1次元検索用情報とシフトされた前記検索用マスクパターンとを用いて前記予め定められた論理演算を実行することにより、前記空きノードを検索する
ことを特徴とする請求項1に記載のジョブ管理装置。 - 前記空きノード検索部が、前記n次元の中の1つの次元についての前記論理演算に基づいて、前記ジョブの割り当てが不可能であることを示すビットの数を算出し、前記検索用マスクパターンにおける前記予め定められた値に設定された前記連続ビットを、前記予め定められた方向に前記ジョブの割り当てが不可能であることを示すビットの数の分だけシフトし、前記1次元検索用情報とシフトされた前記検索用マスクパターンとを用いて前記予め定められた論理演算を実行することにより、前記空きノードを検索する
ことを特徴とする請求項3に記載のジョブ管理装置。 - 前記空きノード検索部が、前記n次元メッシュ結合又はn次元トーラス結合されたコンピュータネットワークのサイズが予め定められた第1の値以上である場合、前記ジョブが要求するサイズが予め定められた第2の値以上である場合、又は、前記コンピュータネットワークのサイズと前記ジョブが要求するサイズとの差分が予め定められた第3の値以上である場合に、前記論理演算の結果に基づいて、前記検索用マスクパターンにおける前記連続ビットのシフトを行う
ことを特徴とする請求項3に記載のジョブ管理装置。 - 前記ジョブ管理装置が、更に、
前記n次元メッシュ結合又はn次元トーラス結合されたコンピュータネットワークにおける計算ノードの各々について、前記空きノードか否かを示すn次元システム情報を生成する計算ノード管理部を含み、
前記空きノード検索部が、前記n次元システム情報に基づいて、前記1次元検索用情報を生成する
ことを特徴とする請求項1に記載のジョブ管理装置。 - 前記ジョブ管理装置が、更に、
前記n次元メッシュ結合又はn次元トーラス結合されたコンピュータネットワークにおける最も長辺である次元を、前記n次元の中の1つの次元として選択する計算ノード管理部を含む
ことを特徴とする請求項1に記載のジョブ管理装置。 - n(nは2以上の整数)次元メッシュ結合又はn次元トーラス結合されたコンピュータネットワークにおける計算ノードであって、ジョブの割り当てが可能な空きノードを検索するジョブ管理方法であって、
1次元検索用情報生成部が、前記n次元の中の1つの次元についての検索用情報であって、複数のビットを含み、前記1つの次元に属する複数の計算ノードの各々について、前記ジョブの割り当てが可能か否かを1ビットの情報で示す1次元検索用情報を生成するステップと、
検索情報生成部が、前記複数のビットに対応するビット数の検索用マスクパターンであって、前記n次元の中の1つの次元について前記ジョブが要求するサイズに対応する連続ビットを予め定められた値に設定された検索用マスクパターンを生成するステップと、
空きノード検索部が、前記n次元の中の1つの次元について、前記1次元検索用情報と前記検索用マスクパターンとを用いて予め定められた論理演算を実行することにより、前記空きノードを検索するステップとを含む
ことを特徴とするジョブ管理方法。
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2012528532A JP5429382B2 (ja) | 2010-08-10 | 2010-08-10 | ジョブ管理装置及びジョブ管理方法 |
| PCT/JP2010/063534 WO2012020474A1 (ja) | 2010-08-10 | 2010-08-10 | ジョブ管理装置及びジョブ管理方法 |
| US13/760,119 US9201694B2 (en) | 2010-08-10 | 2013-02-06 | Job management apparatus and job management method |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2010/063534 WO2012020474A1 (ja) | 2010-08-10 | 2010-08-10 | ジョブ管理装置及びジョブ管理方法 |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US13/760,119 Continuation US9201694B2 (en) | 2010-08-10 | 2013-02-06 | Job management apparatus and job management method |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2012020474A1 true WO2012020474A1 (ja) | 2012-02-16 |
Family
ID=45567454
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/JP2010/063534 Ceased WO2012020474A1 (ja) | 2010-08-10 | 2010-08-10 | ジョブ管理装置及びジョブ管理方法 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US9201694B2 (ja) |
| JP (1) | JP5429382B2 (ja) |
| WO (1) | WO2012020474A1 (ja) |
Cited By (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2015036924A (ja) * | 2013-08-14 | 2015-02-23 | 富士通株式会社 | 並列計算機システム、管理装置の制御プログラムおよび並列計算機システムの制御方法 |
| JP2015041302A (ja) * | 2013-08-22 | 2015-03-02 | 富士通株式会社 | 並列計算機システム、並列計算機システムの制御方法及び管理装置の制御プログラム |
| JP2015064746A (ja) * | 2013-09-25 | 2015-04-09 | 富士通株式会社 | 情報処理システム、情報処理システムの制御方法及び制御プログラム |
| JP2015069577A (ja) * | 2013-09-30 | 2015-04-13 | 富士通株式会社 | 情報処理システム、管理装置制御プログラム及び情報処理システムの制御方法 |
| JP2015088134A (ja) * | 2013-11-01 | 2015-05-07 | 富士通株式会社 | 並列計算機システム、制御装置、並列計算機システムの制御方法及び制御装置の制御プログラム |
| US9329898B1 (en) | 2014-10-30 | 2016-05-03 | Fujitsu Limited | Method and apparatus for job management |
| JP2016081285A (ja) * | 2014-10-16 | 2016-05-16 | 富士通株式会社 | 計算機システム,処理方法及びジョブ処理プログラム |
| JP2016134120A (ja) * | 2015-01-22 | 2016-07-25 | 富士通株式会社 | ジョブ管理プログラム、ジョブ管理方法及びジョブ管理装置 |
| JP2016522488A (ja) * | 2013-05-14 | 2016-07-28 | 華為技術有限公司Huawei Technologies Co.,Ltd. | タスク割り当て方法、タスク割り当て装置、およびネットワークオンチップ |
| EP3115895A1 (en) | 2015-07-06 | 2017-01-11 | Fujitsu Limited | Information processing apparatus, parallel computer system, job schedule setting program, and job schedule setting method |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2018092328A (ja) * | 2016-12-01 | 2018-06-14 | 富士通株式会社 | ジョブ割り当てプログラム、並列処理装置およびジョブ割り当て方法 |
| KR102610984B1 (ko) * | 2017-01-26 | 2023-12-08 | 한국전자통신연구원 | 토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 운영 방법 |
| US11263052B2 (en) * | 2019-07-29 | 2022-03-01 | International Business Machines Corporation | Determining optimal compute resources for distributed batch based optimization applications |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH09198358A (ja) * | 1996-01-23 | 1997-07-31 | Hitachi Ltd | 問題領域分割・割り当て方式およびそれを用いた計算機ライブラリ |
| JP2005310139A (ja) * | 2004-04-15 | 2005-11-04 | Raytheon Co | トポロジを意識したジョブ・スケジューリングとバックフィルとをhpc環境において行うシステム及び方法 |
| JP2007206987A (ja) * | 2006-02-01 | 2007-08-16 | Nomura Research Institute Ltd | 格子型コンピュータシステム、タスク割り当てプログラム |
| JP2008516346A (ja) * | 2004-10-12 | 2008-05-15 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 超並列型スーパーコンピュータでのアプリケーション・レイアウトの最適化 |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5264840A (en) * | 1989-09-28 | 1993-11-23 | Sun Microsystems, Inc. | Method and apparatus for vector aligned dithering |
| JPH0689262A (ja) | 1992-09-09 | 1994-03-29 | Nec Corp | 会話型処理における動的レコード制御方式 |
| US5903888A (en) * | 1997-02-28 | 1999-05-11 | Oracle Corporation | Method and apparatus for using incompatible types of indexes to process a single query |
| JP2007206986A (ja) | 2006-02-01 | 2007-08-16 | Nomura Research Institute Ltd | スケジューラプログラム、格子型コンピュータシステム、タスク割り当て装置 |
| JP5402226B2 (ja) * | 2009-05-13 | 2014-01-29 | 富士通株式会社 | 管理装置、情報処理システム、情報処理システムの制御プログラムおよび情報処理システムの制御方法 |
-
2010
- 2010-08-10 JP JP2012528532A patent/JP5429382B2/ja not_active Expired - Fee Related
- 2010-08-10 WO PCT/JP2010/063534 patent/WO2012020474A1/ja not_active Ceased
-
2013
- 2013-02-06 US US13/760,119 patent/US9201694B2/en not_active Expired - Fee Related
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH09198358A (ja) * | 1996-01-23 | 1997-07-31 | Hitachi Ltd | 問題領域分割・割り当て方式およびそれを用いた計算機ライブラリ |
| JP2005310139A (ja) * | 2004-04-15 | 2005-11-04 | Raytheon Co | トポロジを意識したジョブ・スケジューリングとバックフィルとをhpc環境において行うシステム及び方法 |
| JP2008516346A (ja) * | 2004-10-12 | 2008-05-15 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 超並列型スーパーコンピュータでのアプリケーション・レイアウトの最適化 |
| JP2007206987A (ja) * | 2006-02-01 | 2007-08-16 | Nomura Research Institute Ltd | 格子型コンピュータシステム、タスク割り当てプログラム |
Cited By (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2016522488A (ja) * | 2013-05-14 | 2016-07-28 | 華為技術有限公司Huawei Technologies Co.,Ltd. | タスク割り当て方法、タスク割り当て装置、およびネットワークオンチップ |
| US10671447B2 (en) | 2013-05-14 | 2020-06-02 | Huawei Technologies Co., Ltd. | Method, apparatus, and network-on-chip for task allocation based on predicted traffic in an extended area |
| US9965335B2 (en) | 2013-05-14 | 2018-05-08 | Huawei Technologies Co., Ltd. | Allocating threads on a non-rectangular area on a NoC based on predicted traffic of a smallest rectangular area |
| JP2015036924A (ja) * | 2013-08-14 | 2015-02-23 | 富士通株式会社 | 並列計算機システム、管理装置の制御プログラムおよび並列計算機システムの制御方法 |
| JP2015041302A (ja) * | 2013-08-22 | 2015-03-02 | 富士通株式会社 | 並列計算機システム、並列計算機システムの制御方法及び管理装置の制御プログラム |
| JP2015064746A (ja) * | 2013-09-25 | 2015-04-09 | 富士通株式会社 | 情報処理システム、情報処理システムの制御方法及び制御プログラム |
| US9710311B2 (en) | 2013-09-25 | 2017-07-18 | Fujitsu Limited | Information processing system, method of controlling information processing system, and recording medium |
| JP2015069577A (ja) * | 2013-09-30 | 2015-04-13 | 富士通株式会社 | 情報処理システム、管理装置制御プログラム及び情報処理システムの制御方法 |
| JP2015088134A (ja) * | 2013-11-01 | 2015-05-07 | 富士通株式会社 | 並列計算機システム、制御装置、並列計算機システムの制御方法及び制御装置の制御プログラム |
| JP2016081285A (ja) * | 2014-10-16 | 2016-05-16 | 富士通株式会社 | 計算機システム,処理方法及びジョブ処理プログラム |
| US10171574B2 (en) | 2014-10-16 | 2019-01-01 | Fujitsu Limited | Computer system, processing method, and computer-readable recording medium having job processing program |
| EP3015982A1 (en) | 2014-10-30 | 2016-05-04 | Fujitsu Limited | Program, method, and apparatus for job management |
| US9329898B1 (en) | 2014-10-30 | 2016-05-03 | Fujitsu Limited | Method and apparatus for job management |
| JP2016134120A (ja) * | 2015-01-22 | 2016-07-25 | 富士通株式会社 | ジョブ管理プログラム、ジョブ管理方法及びジョブ管理装置 |
| EP3115895A1 (en) | 2015-07-06 | 2017-01-11 | Fujitsu Limited | Information processing apparatus, parallel computer system, job schedule setting program, and job schedule setting method |
| US10185591B2 (en) | 2015-07-06 | 2019-01-22 | Fujitsu Limited | Information processing apparatus scheduling job start time |
Also Published As
| Publication number | Publication date |
|---|---|
| US20130152089A1 (en) | 2013-06-13 |
| JP5429382B2 (ja) | 2014-02-26 |
| US9201694B2 (en) | 2015-12-01 |
| JPWO2012020474A1 (ja) | 2013-10-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP5429382B2 (ja) | ジョブ管理装置及びジョブ管理方法 | |
| JP6241300B2 (ja) | ジョブスケジューリング装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム | |
| JP6364880B2 (ja) | 並列計算機システム,ジョブ管理装置の制御プログラム,及び並列計算機システムの制御方法 | |
| JP4781089B2 (ja) | タスク割り当て方法およびタスク割り当て装置 | |
| US8434085B2 (en) | Scalable scheduling of tasks in heterogeneous systems | |
| JP5756271B2 (ja) | 並列計算の親和性駆動分散スケジューリングのための装置、方法、およびコンピュータ・プログラム(並列計算の親和性駆動分散スケジューリングのためのシステムおよび方法) | |
| TW202246977A (zh) | 一種任務調度方法、任務調度裝置、電腦設備、電腦可讀儲存媒介和電腦程式產品 | |
| US9563474B2 (en) | Methods for managing threads within an application and devices thereof | |
| KR101332840B1 (ko) | 병렬 컴퓨팅 프레임워크 기반의 클러스터 시스템, 호스트 노드, 계산 노드 및 어플리케이션 실행 방법 | |
| KR102340277B1 (ko) | 고효율 부정확 컴퓨팅 스토리지 장치 | |
| US20110022706A1 (en) | Method and System for Job Scheduling in Distributed Data Processing System with Identification of Optimal Network Topology | |
| Haghbayan et al. | Mappro: Proactive runtime mapping for dynamic workloads by quantifying ripple effect of applications on networks-on-chip | |
| JP2010108153A (ja) | スケジューラ、プロセッサシステム、プログラム生成方法およびプログラム生成用プログラム | |
| WO2015001850A1 (ja) | タスク割り当て判定装置、制御方法、及びプログラム | |
| KR102742714B1 (ko) | 중요 경로 기반 스케줄링 및 후처리를 통한 리소스 활용을 극대화할 수 있는 multi-GPU 기반 딥러닝 모델 추론 기법 | |
| JP6221588B2 (ja) | 情報処理システム、管理装置制御プログラム及び情報処理システムの制御方法 | |
| JP7815278B2 (ja) | コンシューマにリソースを割り当てるためのリソース割り当て制限をセットするための制約プログラミングの使用 | |
| US8028291B2 (en) | Method and computer program product for job selection and resource allocation of a massively parallel processor | |
| JP5577745B2 (ja) | クラスタシステム、プロセス配置方法、及びプログラム | |
| JP2011141703A (ja) | 資源配置システム、資源配置方法、及び資源配置用プログラム | |
| KR101470695B1 (ko) | 그리드 컴퓨팅 스케쥴링을 위한 생물지리학적 최적화 방법 및 시스템 | |
| CN116635840B (zh) | 基于多指令引擎的指令处理方法及处理器 | |
| EP3495960A1 (en) | Program, apparatus, and method for communicating data between parallel processor cores | |
| CN114661430A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
| Moreira et al. | Evolutionary acyclic graph partitioning |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 10855875 Country of ref document: EP Kind code of ref document: A1 |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2012528532 Country of ref document: JP |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 10855875 Country of ref document: EP Kind code of ref document: A1 |
