WO2011058657A1 - 並列計算装置、並列計算方法、および並列計算プログラム - Google Patents

並列計算装置、並列計算方法、および並列計算プログラム Download PDF

Info

Publication number
WO2011058657A1
WO2011058657A1 PCT/JP2009/069443 JP2009069443W WO2011058657A1 WO 2011058657 A1 WO2011058657 A1 WO 2011058657A1 JP 2009069443 W JP2009069443 W JP 2009069443W WO 2011058657 A1 WO2011058657 A1 WO 2011058657A1
Authority
WO
WIPO (PCT)
Prior art keywords
calculation
area
unit
arithmetic processing
transmission
Prior art date
Application number
PCT/JP2009/069443
Other languages
English (en)
French (fr)
Inventor
由江 稲田
Original Assignee
富士通株式会社
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to EP09851287A priority Critical patent/EP2503462A4/en
Priority to PCT/JP2009/069443 priority patent/WO2011058657A1/ja
Priority to JP2011540378A priority patent/JP5321691B2/ja
Publication of WO2011058657A1 publication Critical patent/WO2011058657A1/ja
Priority to US13/459,360 priority patent/US8549261B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Definitions

  • the present invention relates to a parallel computing device, a parallel computing method, and a parallel computing program.
  • multi-core processors for example, CPU: Central Processing Unit
  • CPU Central Processing Unit
  • a processor with several tens of cores appears in one LSI (Large Scale Integrated Circuit), and it is speculated that LSIs with multiple cores will be developed more and more in the future.
  • multi-nodes processes
  • multi-cores composed of thousands to tens of thousands of computing nodes having such LSIs
  • HPC High-Performance-Computing
  • Such supercomputers have traditionally been deeply involved in large-scale simulations in the field of weather forecasting, biological fields such as genetic analysis, and nanotechnology, and have contributed to the development of various science and technology.
  • the communication time between the processors coupled by the interconnect may adversely affect the processing time of the application program to be executed. For this reason, it is important to reduce the communication processing and speed up the application program.
  • As a technique for speeding up the processing for example, there is a technique for preventing an increase in communication load of the master device by performing boundary value data of the analysis operation by control between slave devices. In this way, the calculation algorithm and parallelization method of the application are improved for a multi-node having a plurality of calculation nodes, and the processing efficiency is improved.
  • the improvement of the conventional parallelization method is to speed up the parallel processing of the processes to be executed by each node of the multi-node system, and it is sufficient to speed up the parallel processing of threads to be executed by each core in the multi-core processor.
  • multi-node parallel processing technology that allows each core (thread) to share processing equally has been diverted to multi-core.
  • speed of parallel processing considering the characteristics of multi-core. was not considered.
  • the present invention has been made in view of these points, and an object thereof is to provide a parallel computing device, a parallel computing method, and a parallel computing program capable of realizing high-speed parallel processing by a multicore processor. .
  • a parallel computing device in which computations in a computation area, which is an entire set of element points that are computed by an arithmetic processing device, are executed in parallel by an arithmetic processing device having a plurality of arithmetic processing units.
  • the calculation area is divided into a plurality of calculation unit areas.
  • a plurality of calculation result transmission areas including at least one calculation unit area are provided.
  • Each of the plurality of arithmetic processing units in the arithmetic processing device is provided with a calculation unit region selection means for sequentially selecting an uncalculated calculation unit region in the calculation region.
  • each of the plurality of arithmetic processing units in the arithmetic processing unit the calculation in the calculation unit region selected by the calculation unit region selecting means is executed, and the calculation result is written in a storage device accessible from each of the plurality of arithmetic processing units.
  • a calculation means is provided. In at least one arithmetic processing unit in the arithmetic processing unit, the calculation results in the calculation unit area belonging to the calculation result transmission area are acquired from the storage device and transmitted in different time zones for the plurality of calculation result transmission areas.
  • a calculation result transmitting means is provided.
  • a parallel calculation method that performs the same processing as that of the parallel calculation device is provided. Furthermore, in order to solve the said subject, the parallel calculation program which makes a computer perform the process similar to the said parallel computer is provided.
  • FIG. 1 is a block diagram illustrating functions of the parallel computing device according to the first embodiment.
  • an entire set of element points that are calculated by a calculation node such as a processor included in the parallel computing device is defined as a “computation region”.
  • a parallel computing device that executes the computation in the computation area 4 in parallel by a processor 1 as an arithmetic processing device having a plurality of cores 1a, 1b,.
  • the calculation area 4 is divided into a plurality of calculation unit areas.
  • the calculation area 4 is provided with a plurality of calculation result transmission areas 4a, 4b, 4c and 4d including at least one calculation unit area.
  • Each of the plurality of cores 1a, 1b,..., 1n in the processor 1 has calculation unit area selection means 1aa, 1ba,..., 1na for sequentially selecting uncalculated calculation unit areas in the calculation area 4. Is provided.
  • each of the plurality of cores 1a, 1b,..., 1n in the processor 1 has a calculation means for executing a calculation in the calculation unit area selected by the calculation unit area selection means 1aa, 1ba,. 1ab, 1bb,..., 1nb are provided.
  • the calculation unit area selection means 1aa, 1ba,..., 1na write the calculation results 2a, 2b,... Into the storage device 2 accessible from each of the plurality of cores 1a, 1b,.
  • At least one core 1n in the processor 1 is provided with a calculation result transmission means 1nc for executing acquisition processing and transmission processing of calculation results in the calculation result transmission areas 4a, 4b, 4c, and 4d from the storage device 2.
  • the calculation result acquisition and transmission processing by the calculation result transmission unit 1nc is executed in different time zones for the plurality of calculation result transmission areas 4a, 4b, 4c, and 4d. In the example of FIG. 1, the calculation results are transmitted to the other processors 3a, 3b, 3c, 3d.
  • an uncalculated calculation unit in the calculation area 4 is obtained by the calculation unit area selection means 1aa, 1ba,..., 1na of the plurality of cores 1a, 1b,. Regions are selected sequentially.
  • Is calculated. .., 1nb writes the calculation results 2a, 2b,... Into the storage device 2 accessible from each of the plurality of cores 1a, 1b,.
  • the calculation result transmission means 1nc of the core 1n obtains and transmits the calculation results in the calculation result transmission areas 4a, 4b, 4c, and 4d from the storage device 2 to a plurality of calculation result transmission areas 4a, 4b, 4c, and 4d. Are executed at different times.
  • the transmission of the calculation result is executed in different time zones for the plurality of calculation result transmission areas 4a, 4b, 4c, and 4d, so that a plurality of calculation result transmission processes are simultaneously executed. Is prevented.
  • the calculation results of the calculation unit areas in the calculation result transmission areas 4a, 4b, 4c, and 4d are transmitted to the processors 3a, 3b, 3c, and 3d.
  • the calculation result to be transmitted is stored in a continuous storage area in the main storage device. Then, the calculation result is transmitted from the main storage device to the processors 3a, 3b, 3c, 3d.
  • the second embodiment improves the processing efficiency of data exchange between processors when executing a physical simulation using a multi-core processor. First, data exchanged between processors in a physical simulation will be described.
  • FIG. 2 is a diagram showing an analysis space for physical simulation.
  • a multidimensional calculation area is finely divided by a lattice, and a physical quantity at a lattice point (element point to be calculated) is calculated.
  • the analysis space 30 is divided into a plurality of calculation areas. Each calculation area is assigned to a processor.
  • the processor performs the calculation for the space in the allocated calculation area.
  • a plurality of processors calculate the physical quantities in the individual calculation areas in parallel, so that the parallel calculation of the physical simulation in the analysis space 30 is performed.
  • the physical quantity is calculated while the simulation time is advanced, and the temporal change of the physical quantity is analyzed.
  • There are various physical quantities to be calculated such as an electric field, a magnetic field, temperature, and wind speed.
  • the calculation of the physical quantity in the analysis space 30 at a predetermined simulation time is executed using the physical quantity in the analysis space 30 at the previous simulation time.
  • the physical quantity (boundary data) at the previous simulation time in the adjacent area (grid point) is used in addition to the physical quantity at the previous simulation time in the calculation area. Is done.
  • the boundary data reflects physical quantities around the analysis target calculation area. Therefore, it is possible to perform an analysis reflecting the mutual influence between the calculation areas by performing the calculation using the boundary data.
  • margin exchange target areas in one calculation area 40 are referred to as margin areas 41 to 44.
  • FIG. 3 is a diagram showing a state of margin exchange.
  • a margin exchange is performed between the calculation regions 40, 40a, and 40b in order to analyze the next simulation time that is advanced by one step.
  • the calculation area 40 includes a margin area 41 to be exchanged with the calculation area 40a and a margin area 43 to be exchanged with the calculation area 40b.
  • the calculation area 40a has a margin area 40x to be exchanged with the calculation area 40.
  • the calculation area 40b has a margin area 40y to be exchanged with the calculation area 40.
  • the marginal areas 41, 43, 40x, and 40y are divided into a transmission area and a reception area.
  • An area adjacent to the outer periphery of each calculation area 40, 40a, 40b is a reception area, and an area adjacent to the inside of the reception area is a transmission area.
  • the physical quantity in the transmission area calculated for each calculation area 40, 40a, 40b is transferred to the reception area of another adjacent calculation area as boundary data.
  • the physical quantities in the calculation areas 40, 40a, and 40b are calculated by individual processors. Therefore, the margin exchange is realized by communication between processors.
  • FIG. 4 is a diagram showing data communication in the processor for margin exchange.
  • the margin exchange is performed in three stages, such as (1) packing of boundary data in the transmission area, (2) transmission and reception of packed data, and (3) unpacking of received data.
  • the data packing process is a process in which data of physical quantities of all blocks included in the transmission area in the marginal area are collected together when the calculation of all blocks in the transmission area is completed. Collecting data in a lump means storing the data in a continuous storage area.
  • the data unpacking process is a process of separating boundary data received from another processor into physical quantities of blocks in the reception area and storing them in the physical quantity setting area of each block. If the area for storing the physical quantity in the received data is discontinuous, a value indicating the physical quantity is stored in the discontinuous area in unpacking.
  • the processor 32 exchanges margins with the processors 31 and 33.
  • the processor 31 calculates the calculation area X
  • the processor 32 calculates the calculation area Y
  • the processor 33 calculates the calculation area Z.
  • the calculation area Y is assumed to be a calculation area at a position between the calculation areas X and Z. In this case, in the processor 32, packing of data transmitted to the processor 31, unpacking of data received from the processor 31, packing of data transmitted to the processor 33, and unpacking of data received from the processor 33 occur.
  • FIG. 5 is a diagram illustrating packing and unpacking of boundary data.
  • the calculation area 40 is further divided by a lattice. Thereby, a finer area is generated. This area is called a block.
  • the core in the processor calculates the physical quantity for each block in the assigned calculation area. The size of the block is determined according to the size of the primary or secondary cache memory in the core, for example.
  • the marginal areas 41 to 44 also include a plurality of blocks.
  • the blocks in the calculation area 40 are multidimensional arrays.
  • the memory space 50 for storing the physical quantity of each block has a one-dimensional address. Therefore, the arrangement on the memory space 50 that stores the physical quantity of each block in the marginal area may be discontinuous.
  • the data of the xth block in the horizontal direction and the yth block in the vertical direction in the calculation area 40 is represented as p [x] [y].
  • addresses of storage areas are allocated in order from the block having the smallest vertical number.
  • data can be collectively read from the memory and packed.
  • unpacking the received boundary data may be written in a continuous area in the memory. Therefore, the packing / unpacking processing of the marginal areas 41 and 43 can be executed in a short time.
  • the data of each block is arranged in a discontinuous area in the memory.
  • stride access when reading from the memory, continuous data of a predetermined length (for example, for one line) are collectively transferred to the cache memory.
  • stride access occurs and the alignment of the cache line is lost, so unnecessary data enters one line, and unnecessary data is stored.
  • the cache memory is squeezed. As a result, cache miss hits increase. For this reason, in the marginal areas 42 and 44, the number of data read accesses from the memory increases, and the packing / unpacking process takes time.
  • be the time required for one processor (one block in a multiprocessor) to calculate the physical quantity in one block.
  • the calculation area is three-dimensional where the number of blocks on one side is n (n is a natural number), and the number of processors is P (P is a natural number).
  • the calculation processing time required for calculating the physical quantity of the entire analysis region is ⁇ (n 3 / P).
  • the processing time for data packing / unpacking is about ⁇ ((n 3 / P) 2/3 ). Therefore, the ratio of the data packing / unpacking processing time to the calculation processing time is P 1/3 / n.
  • the ratio of the data packing / unpacking processing time to the calculation time increases.
  • the margin width is a fixed value regardless of the number of processors. Therefore, the ratio of the area size for margin exchange increases with respect to the entire calculation area, and the specific gravity for margin exchange processing increases.
  • FIG. 6 is a diagram showing the occupancy ratio of the marginal area according to the number of processors.
  • a space with 10,000,000 lattice points for example, 500, 500, and 40 lattice points in the x, y, and z axis directions
  • This space is divided into calculation areas corresponding to the number of processors, and the physical quantities of the plurality of calculation areas are calculated in parallel by the plurality of processors. It is assumed that the calculation areas are arranged on a two-dimensional plane (xy plane). Also, the width of the area that is transmitted and received by margin exchange is assumed to be three grid points.
  • the number of processors is 16
  • the number of calculation grid points of one processor is 625000
  • the ratio of grid points in the marginal area is 0.09.
  • the number of processors is 1024
  • the number of calculation grid points of one processor is 9766
  • the ratio of grid points in the marginal area is 0.62.
  • the ratio of grid points in the marginal area increases. This means that as the number of processors increases, the amount of processing required for margin exchange increases. In other words, if the load of margin exchange processing can be reduced, the effect of improving the processing speed by increasing the number of processors used for parallel processing is promoted.
  • one of the main processes for margin exchange is the data packing / unpacking process.
  • This process is a data copy process in which the marginal data after the calculation process is completed is newly created as communication data.
  • Detailed processing mainly performed in the processor during the data packing / unpacking processing is performed by a load / store instruction.
  • the load instruction is a process for reading data from the cache memory or the main memory.
  • the store instruction is a process for writing data to the cache memory or the main memory.
  • load / store from multiple cores may occur at the same time.
  • the cache is compressed by simultaneous access from all cores. Concentration of access to the memory for writing the packed data to the memory also occurs.
  • each marginal area for example, in the case of a three-dimensional space, the marginal area of six faces is a processing target.
  • the use efficiency of the processor is deteriorated. That is, it can be seen that the memory access process of the data packing / unpacking process greatly affects the total processing time.
  • the margin exchange process (data packing and transmission and data unpacking) is executed after calculating the entire calculation area. Therefore, if there are multiple margin exchange areas, even if each packing / unpacking is executed in parallel by multiple cores, the transfer processing between the packing / unpacking data and the memory overlaps, resulting in a reduction in processing efficiency. It was.
  • FIG. 7 is a diagram illustrating a hardware configuration example of a computer used in the second embodiment.
  • the computer 10 includes a plurality of processor modules 100, 100a,.
  • the processor modules 100, 100a,... are connected to each other via a bus 14.
  • a hard disk drive (HDD: Hard Disk Drive) 11 is connected to the bus 14.
  • the HDD 11 magnetically writes and reads data to and from the built-in disk.
  • the HDD 11 is used as a secondary storage device of the computer 10.
  • the HDD 11 stores an OS program, application programs, and various data.
  • a semiconductor storage device such as a flash memory can also be used as the secondary storage device.
  • the optical drive device 12 reads the data recorded on the optical disk 15 using a laser beam or the like.
  • the optical disk 15 is a portable recording medium on which data is recorded so that it can be read by reflection of light.
  • the optical disc 15 includes a DVD (Digital Versatile Disc), a DVD-RAM, a CD-ROM (Compact Disc Read Only Memory), a CD-R (Recordable) / RW (ReWritable), and the like.
  • the communication interface 13 is connected to the network 20.
  • the communication interface 13 transmits and receives data to and from other computers such as the server 21 via the network 20.
  • FIG. 8 is a diagram showing one form of the internal structure of the processor module.
  • the processor module 100 includes a processor 110 and a memory 120.
  • the processor 110 has a plurality of cores 111 to 114 and a cache memory 115. Each core 111 to 114 is connected to the cache memory 115. Core numbers “# 0” to “# 3” are assigned to the cores 111 to 114, respectively.
  • the processor module 100a includes a processor 110a and a memory 120a.
  • the processor 110a has a plurality of cores 111a, 112a, 113a, 114a and a cache memory 115a. Each core 111a, 112a, 113a, 114a is connected to the cache memory 115. Core numbers “# 0” to “# 3” are assigned to the cores 111a, 112a, 113a, and 114a, respectively.
  • FIG. 9 is a diagram illustrating processing functions in the processor module at the time of physical simulation in the second embodiment.
  • the processor module 100 threads 131 to 134 for the cores 111 to 114 are generated.
  • the threads 131 to 134 are execution units of processing executed by the processor 110.
  • the thread 131 includes a calculation block selection unit 131a and a calculation unit 131b.
  • the calculation block selection unit 131a sequentially selects blocks to be calculated by the thread 131 from the calculation areas allocated to the processor module 100.
  • the calculation unit 131b calculates the physical quantity in the block selected by the calculation block selection unit 131a.
  • the other threads 132, 133, and 134 also include calculation block selection units 132a, 133a, and 134a and calculation units 132b, 133b, and 134b. Only the thread 134 has a margin exchange processing unit 134c.
  • the margin exchange processing unit 134c performs margin exchange with the other processor modules 100a,. Specifically, the margin exchange processing unit 134c performs packing of the data in the transmission area, transfer of the packed data, and unpacking of the received data into the reception area.
  • the processor module 100 includes a block information storage unit 141, a margin information storage unit 142, a margin exchange core information storage unit 143, and a physical quantity storage unit 144 as information storage functions.
  • the block information storage unit 141 is a storage function that stores information such as whether each block in the calculation area for which the processor module 100 is in charge of analysis is a block in the marginal area or whether the calculation is completed. For example, a part of the storage area of the cache memory 115 or the memory 120 is used as the block information storage unit 141.
  • the margin information storage unit 142 is a storage area that stores information indicating the state of the margin area. For example, a part of the storage area of the cache memory 115 or the memory 120 is used as the margin information storage unit 142.
  • the margin exchange core information storage unit 143 is a storage area for storing an identifier of a core that performs margin exchange.
  • the ID (core # 3) of the core 114 that executes the thread 134 is preset in the margin exchange core information storage unit 143.
  • a part of the storage area of the cache memory 115 or the memory 120 is used as the margin exchange core information storage unit 143.
  • the physical quantity storage unit 144 is a storage function that stores the physical quantity of each block in the calculation area for which the processor module 100 is in charge of analysis.
  • the physical quantity storage unit 144 stores a physical quantity at the simulation time one step before the current time in the physical simulation and a physical quantity at the current simulation time.
  • the physical quantity in the reception area in the marginal area is a value acquired from another processor module.
  • the physical quantities other than the reception area are values calculated by the threads 131 to 134.
  • the calculation result of the physical quantity of the block by each of the threads 131 to 134 is written as needed. For example, a part of the storage area of the cache memory 115 or the memory 120 is used as the physical quantity storage unit 144.
  • FIG. 10 is a diagram illustrating the relationship between the analysis space and blocks.
  • FIG. 10 shows an example in which the simulation analysis space 30 is divided into two-dimensional array calculation areas.
  • the calculation area 40 indicates a process area of one process (one node) when two-dimensionally dividing and performing process parallel processing.
  • the analysis space 30 is divided into a plurality of calculation areas. For example, the same number of calculation areas as the processor modules 100, 100a,. .. Are assigned to the processor modules 100, 100a,... In the following description, it is assumed that the calculation area 40 is allocated as an area in which the processor module 100 is in charge of analysis.
  • the analysis space 30 is divided by a fine grid.
  • the processor module 100 calculates physical quantities at lattice points in the calculation area 40 in charge of analysis.
  • Four marginal areas are set along the upper, lower, left and right sides of the rectangular calculation area 40. Of each marginal area, an area in contact with the outer periphery of the calculation area 40 is a reception area, and inner areas are transmission areas 41a, 42a, 43a, and 44a.
  • An identifier (margin ID) is given to the marginal area.
  • the margin ID of the marginal area including the transmission area 41a is “1”.
  • the margin ID of the marginal area including the transmission area 42a is “2”.
  • the margin ID of the marginal area including the transmission area 43a is “3”.
  • the margin ID of the marginal area including the transmission area 44a is “4”.
  • the calculation area 40 is divided into a plurality of blocks (dices).
  • the size of one block is matched with the size of the primary cache memory in the cores 111 to 114, for example.
  • the data in the blocks can be collectively stored in the cache memory in the core, and the processing efficiency can be improved.
  • the block is divided into 11 blocks. Therefore, the number of blocks in the calculation area 40 is 121 (11 ⁇ 11).
  • Each of the cores 111 to 114 in the processor module 100 sequentially selects a calculation target block, and calculates a physical quantity at a lattice point in the selected block.
  • FIG. 11 is a diagram illustrating an example of a data structure of the block information storage unit.
  • the block information storage unit 141 stores a block management table 141a and processing block number information 141b.
  • a block ID, a margin ID, and a calculation processing end flag are set.
  • an identifier (block ID) of a block in the calculation area 40 is set.
  • the variable name of the block ID is “bid”.
  • a code indicating whether or not the corresponding block is a margin transmission area is set.
  • the marginal area ID (marginal ID) to which the block belongs is set in the margin ID column. Note that “ ⁇ 1” is set in the margin ID column for blocks that do not belong to the marginal area.
  • the variable name of the margin ID indicating the margin to which each block belongs is “Blk [bid]”.
  • calculation process end flag column a flag (calculation process end flag) indicating whether or not the calculation of the physical quantity of the corresponding block has ended is set. If the calculation has not ended, “off” is set to the calculation processing end flag. When the calculation is completed, “on” is set to the calculation process end flag.
  • the values of the calculation process end flags are all initialized to “off” when the simulation time is advanced by one step.
  • the variable name of the calculation processing end flag is “down [bid]”.
  • each information of each block is stored in the block information storage unit 141 in a table format data structure, but other data structures may be used.
  • each information can be associated by setting a margin ID of a block indicated by the block ID and a pointer to a calculation processing end flag from each block ID.
  • the processing block number information 141b is the total number of blocks (processing block number) for which the physical quantity calculation processing has been completed.
  • the number of processing blocks is initialized to 0 when the simulation time is advanced by one step.
  • the variable name for the number of processing blocks is "calcblknum”.
  • FIG. 12 is a diagram showing an example of the data structure of the margin information storage unit.
  • the margin information storage unit 142 indicates how many blocks have been processed for each margin, and information for recognizing margin exchange timing for the margin exchange core is registered in a table format.
  • the margin information storage unit 142 even stores a margin management table 142a.
  • the margin management table 142a includes columns for margin ID, number of blocks, number of processing blocks, replacement processing flag, and block ID. Information arranged in the horizontal direction of each column is associated with each other, and becomes a record indicating margin information.
  • the margin information records are registered for the number of margins.
  • the number of margins is provided in four marginal areas in the horizontal (x) direction and in the positive (negative) direction. Accordingly, four records are registered in the margin management table 142a.
  • a margin area identifier (margin ID) is set in the margin ID column.
  • the variable name of the margin ID in the margin management table is “hid”.
  • the number of blocks belonging to the transmission area of the marginal area indicated by the corresponding margin ID is set in the block number column.
  • the variable name for the number of blocks is "halo [hid] .blknum”.
  • the number of blocks for which the physical quantity calculation processing is completed (the number of processing blocks) among the blocks to which the transmission area of the marginal area indicated by the corresponding margin ID belongs is set.
  • the number of blocks belonging to the transmission area of one marginal area is 11, as shown in FIG.
  • the variable name for the number of processing blocks is "halo [hid] .calcnum".
  • a flag (exchange processing completed flag) indicating whether or not margin exchange with the processor to which the adjacent calculation area is assigned is set for the marginal area data. If the margin exchange is not completed, “off” is set in the exchange processing completed flag.
  • the variable name of the exchanged flag is “halo [hid] .down”.
  • a block ID of a block belonging to the transmission area of the marginal area indicated by the corresponding margin ID is set.
  • the variable name of the block ID in the marginal area is “halo [hid] .id [blocknum]”.
  • information is stored in the margin information storage unit 142 in a table format data structure, but other data structures may be used. For example, by setting a margin block number, a processing block number, a replacement processing flag, and a pointer to the block ID indicated by the margin ID from each margin ID, the pieces of information can be associated with each other.
  • FIG. 13 is a flowchart illustrating a procedure of physical quantity calculation processing in the calculation area by the core according to the second embodiment.
  • the physical quantity (or the initial value of the physical quantity) of the lattice points in the calculation area 40 at the time one step before the simulation time to be calculated is stored in the physical quantity storage unit 144.
  • Data in the physical quantity storage unit 144 is read into the cache memory 115.
  • the thread 134 executes, the processing illustrated in FIG. 13 will be described in order of step numbers.
  • Step S11 The calculation block selection unit 134a and the calculation unit 134b cooperate to calculate the physical quantities of all lattice points in one block. Details of this processing will be described later (see FIG. 15).
  • Step S12 The calculation unit 134b counts up the number of processed blocks. Specifically, the calculation unit 134b increments the value of the variable “calcblknum” indicating the number of processing blocks.
  • the calculation unit 134b determines whether or not the processed block is a block belonging to the transmission area in the marginal area. Specifically, the calculation unit 134b refers to the margin ID (Blk [bid]) of the processed block in the block management table 141a. If the value of the referenced margin ID (variable “blk [bid]”) is other than “ ⁇ 1”, the calculation unit 134b determines that the processed block is the transmission region of the margin region. If the block belongs to the transmission area of the marginal area, the process proceeds to step S14. If the block does not belong to the transmission area of the marginal area, the process proceeds to step S15.
  • the calculation unit 134b counts up the number of processed blocks in the marginal area to which the processed block belongs. Specifically, the calculation unit 134b acquires a margin ID (Blk [bid]) of the processed block in the block management table 141a. Next, the calculation unit 134b searches the margin management table 142a for a record in which the same margin ID (hid) as the acquired margin ID is set. Then, the calculation unit 134b increments the value of the processing block number (halo [hid] .calcnum) of the record matched by the search.
  • Step S15 The calculation unit 134b determines whether or not it is a margin exchange core. Specifically, when the core ID set in the margin exchange core information storage unit 143 matches the own core ID, it is determined to be a margin exchange core. If it is a margin exchange core, the process proceeds to step S16. If it is not a margin exchange core, the process proceeds to step S20.
  • the margin exchange processing unit 134c determines whether or not margin exchange has been completed for all marginal areas. Specifically, the margin exchange processing unit 134c refers to the exchange processing completed flag (halo [hid] .down) in each record of the margin management table 142a. If at least one replacement processing flag is “off”, it is determined that there is a marginal area for which margin exchange has not been completed. If there is a marginal area for which margin exchange has not been performed, the process proceeds to step S17. If margin exchange has been completed for all marginal areas, the process proceeds to step S20.
  • the margin exchange processing unit 134c determines whether or not calculation of all the blocks in the transmission area has been completed for the margin area where margin exchange has not been completed. Specifically, the margin exchange processing unit 134c determines the number of blocks in the marginal area (halo [hid] .blknum) and the number of processed blocks (halo [hid] .calcnum) in which the replacement processing flag is “off” in step S16. ) And determine that the calculation is complete when they match. If there is a marginal area for which the calculation is completed, the process proceeds to step S18. If there is no marginal area for which the calculation is completed, the process proceeds to step S20.
  • the margin exchange processing unit 134c packs the calculation results of the blocks belonging to the transmission area of the marginal area where the calculation is completed. Specifically, the margin exchange processing unit 134c refers to the margin management table 142a, and acquires the block ID (halo [hid] .id [blocknum]) of the marginal area determined to have been calculated in step S17. Next, the margin exchange processing unit 134 c extracts data indicating the physical quantity of the block corresponding to the acquired block ID from the physical quantity storage unit 144 and stores it in a continuous storage area in the memory 120.
  • Step S19 The margin exchange processing unit 134c transmits the data packed in step S18 to a module having another processor to which an adjacent calculation area is assigned via the corresponding margin area.
  • the transmitted data is unpacked by the margin exchange unit in the destination processor module.
  • the margin exchange processing unit 134c changes the exchanged flag (halo [hid] .down) of the marginal area where the packing and transmission processing has been performed to “on”.
  • Step S20 The calculation unit 134b determines whether all the blocks in the calculation area have been processed. Specifically, the calculation unit 134b has processed all blocks when the number of processing blocks (calcblknum) indicated in the processing block number information 141b reaches the number of blocks in the calculation area (121 in the example of FIG. 10). Judge that. If all the blocks have been processed, the calculation process ends. If there is an unprocessed block, the process proceeds to step S11.
  • the margin exchange core determines whether or not there is a block for which margin exchange has not been processed yet and calculation of the transmission area of the margin area has been completed.
  • the margin exchange core starts the margin exchange process.
  • the margin exchange core interrupts the calculation processing that has been performed so far, and starts a margin exchange process different from the other cores.
  • the processing of steps S16 to S19 is not performed, and the physical quantity calculation of the lattice points in the block is repeatedly performed.
  • margin exchange process data packing and packed data transmission processing are first performed.
  • the processor module of the transmission partner data reception processing and reception data unpacking are performed.
  • the margin exchange core performs margin exchange processing for the corresponding margin area in the same manner if there is another margin area for which margin calculation has not been completed.
  • the margin exchange core returns to the same calculation process as the calculation-dedicated core again.
  • FIG. 14 is a diagram illustrating a priority order of block selection.
  • a priority order for selecting blocks in the calculation area 40 is provided. Blocks belonging to the transmission area in the marginal area have a high priority, and other blocks have a low priority.
  • the calculation block selection unit 134a preferentially selects a block in an area having a high priority order, and causes the calculation unit 134b to calculate.
  • FIG. 15 is a flowchart showing the procedure of block calculation processing. In the following, the process illustrated in FIG. 15 will be described in order of step number.
  • the calculation block selection unit 134a selects one unprocessed block in the calculation area 40. Specifically, the calculation block selection unit 134a refers to the block management table 141a and selects one block whose calculation processing end flag (down [bid]) is “off”. For example, the calculation block selection unit 134a selects blocks in order from the block with the smallest block ID value. At this time, after the block ID to be selected reaches the number of blocks in the calculation area 40, the calculation block selection unit 134a selects the unprocessed blocks again in ascending order of the block IDs if there are still unprocessed blocks. To do.
  • the calculation block selection unit 134a determines whether or not the selected block belongs to the transmission area of the marginal area. Specifically, the calculation block selection unit 134a refers to the margin ID (Blk [bid]) of the selected block, and determines that the block is in the marginal area if the value is other than -1. If the block is in the marginal area, the process proceeds to step S34. If the block is not in the marginal area, the process proceeds to step S33.
  • the calculation block selection unit 134a determines whether or not all the blocks belonging to the transmission area of the marginal area have been processed. Specifically, the calculation block selection unit 134a refers to the margin management table 142a. The calculation block selection unit 134a processes all the corresponding blocks when the number of blocks (halo [hid] .blknum) and the number of processing blocks (halo [hid] .calcnum) match for all marginal areas. Is determined to have ended. If all the blocks belonging to the transmission area of the marginal area have been processed, the process proceeds to step S34. If there is an unprocessed block belonging to the transmission area of the marginal area, the process proceeds to step S31.
  • the calculation unit 134b calculates a physical quantity at the lattice point in the block selected in Step S31. For example, the calculation unit 134b acquires the lattice points and the physical quantities around them at the simulation time before the step from the physical quantity storage unit 144. Then, the calculation unit 134b calculates the physical quantity of the lattice point at the current simulation time from the acquired physical quantity. Further, the calculation unit 134b writes the calculated physical quantity in the physical quantity storage unit 144.
  • Step S35 The calculation unit 134b sets the calculation processing end flag (down [bid]) of the calculated block to “on”. Thereafter, the block calculation process ends.
  • calculation of blocks belonging to the transmission area within the marginal area is preferentially executed, and only one core performs margin exchange processing, so that a plurality of cores 111 to 114 can simultaneously exchange a plurality of margins. Processing can be prevented from being executed in parallel. As a result, access to the memory 120 for margin exchange does not occur simultaneously in a plurality of cores, and it is possible to avoid a decrease in processing efficiency due to waiting for a bus between the processor 110 and the memory 120.
  • FIG. 16 is a diagram showing a transition of core processing contents when a plurality of cores simultaneously perform margin exchange processing after the calculation of physical quantities of all blocks in the calculation area.
  • a memory bus having a bus width capable of accessing the memory at the same time is prepared up to two cores (memory bus width 2). Further, it is assumed that the calculation processing time in the core per block is 1 ⁇ .
  • each core is indicated by a core ID
  • the processing content of each core is indicated by symbols “F” and “M” below the core ID. “F” indicates calculation processing, and “M” indicates memory access (the same applies to FIGS. 17 and 21).
  • each core takes 2 ⁇ to pack marginal data that can be completed in 1 ⁇ .
  • the time spent by the four cores for the packing process is 8 ⁇ . If the number of cores subjected to the packing process ⁇ the processing time is the total time, the total time is 32 ⁇ .
  • FIG. 17 is a diagram showing a transition of processing contents of each core in the second embodiment.
  • the transmission area 41 a in the marginal area 41, the transmission area 42 a in the marginal area 42, the transmission area 43 a in the marginal area 43, the transmission area 44 a in the marginal area 44, and the area other than the margin The physical quantity of each block is calculated.
  • the data in the transmission area 41a of the marginal area 41 is packed by the core 114 having the core ID “3”.
  • the other cores 111 to 113 calculate blocks in the transmission area 42a of the marginal area 42.
  • the core 114 While the core 114 is packing, access to the memory 120 from other cores 111 to 113 does not occur. Therefore, the core 114 can finish the packing process in 4 ⁇ time. After completing the packing process, the core 114 calculates the block of the transmission area 42a in the marginal area 42.
  • the packing by the core 114 is performed in a time of 1 ⁇ . Then, after the packing of all the transmission areas 41a, 42a, 43a, and 44a is completed, the physical quantities of the blocks in the areas other than the marginal areas 41 to 44 are calculated.
  • the time that the core spends for the packing process is 16 ⁇ .
  • the time spent for the packing process is reduced by half.
  • the packing process is also completed at the end of the calculation for all the areas, and it is possible to immediately shift to the calculation for the next time step.
  • memory access occurs when data packing is performed by multi-core processing. If the memory access is performed simultaneously by a plurality of cores, the processing efficiency cannot be improved. Therefore, in the second embodiment, one specific core performs data packing processing, and the other core performs normal calculation processing.
  • the specific core when the calculation process of the margin exchange area is completed, the specific core starts the data packing process without waiting for the calculation process of the other area to end. That is, a specific core starts data packing and communication processing in order from the marginal area where the calculation of the transmission area is completed. Meanwhile, the cores other than the specific core perform normal calculation processing. Thereby, the margin exchange process can be executed in parallel with the calculation of the physical quantity in the block, and the processing efficiency is improved.
  • the calculation of the marginal space is completed by dividing the entire space into blocks, selecting blocks in each marginal region as blocks that are not marginal regions, and counting the blocks in the marginal space that have been processed. Is determined. Thereafter, when the calculation of the margin space is completed, the margin exchange core performs the calculation process in the middle, and starts data packing and communication processing for margin exchange. When the communication process ends, the margin exchange core resumes the normal calculation process. As described above, when the margin exchange process for one marginal area is completed, the core that has undergone the margin exchange immediately returns to the calculation of the physical quantity in the block, so that the processing efficiency of the processor can be improved.
  • the cores that execute the packing process are not limited to specific cores, so that memory accesses from specific cores can be distributed without being concentrated.
  • the hardware configuration of the computer system according to the third embodiment is the same as that of the second embodiment shown in FIGS.
  • FIG. 18 is a diagram illustrating processing functions in the processor module during the physical simulation in the third embodiment.
  • a plurality of processor modules having the same functions as the processor module 200 shown in FIG. 18 are provided in the computer 10 instead of the processor modules 100, 100a,... Shown in FIGS. To be implemented.
  • the thread 231 includes a calculation block selection unit 231a, a calculation unit 231b, and a margin exchange processing unit 231c.
  • the calculation block selection unit 231a sequentially selects blocks to be calculated by the thread 231 from the calculation areas allocated to the processor module 200.
  • the calculation unit 231b calculates the physical quantity in the block selected by the calculation block selection unit 231a.
  • the margin exchange processing unit 231c performs margin exchange with other processor modules.
  • the other threads 232, 233, and 234 also have calculation block selection units 232 a, 233 a, 234 a, calculation units 232 b, 233 b, 234 b, and margin exchange processing units 232 c, 233 c, 234 c.
  • all the threads 231 to 234 have margin exchange processing units 232c, 233c, and 234c.
  • the processor module 200 includes a block information storage unit 241, a margin information storage unit 242, and a physical quantity storage unit 244 as information storage functions.
  • Information stored in the block information storage unit 241 and the physical quantity storage unit 244 is the same as the block information storage unit 141 and the physical quantity storage unit 144 of the first embodiment illustrated in FIG. 9, respectively. That is, the block information storage unit 241 stores the block management table 141a and the processing block number information 141b shown in FIG. Compared to the second embodiment shown in FIG. 9, the margin exchange core information storage unit 143 is not required in the third embodiment.
  • the margin information storage unit 242 is a storage area that stores information indicating the state of the margin area. For example, a part of the storage area of the cache memory 115 or the memory 120 is used as the margin information storage unit 242.
  • FIG. 19 is a diagram illustrating an example of the data structure of the margin information storage unit in the third embodiment.
  • the margin information storage unit 242 stores a margin management table 242a.
  • the margin management table 242a includes columns for margin ID, number of blocks, number of processing blocks, replacement processing flag, block ID, and final calculation block ID. Information arranged in the horizontal direction of each column is associated with each other, and becomes a record indicating margin information. The margin information records are registered for the number of margins.
  • the information set in each column of margin ID, number of blocks, number of processing blocks, exchanged flag, and block ID is the same type of information as the column of the same name in the margin management table 142a shown in FIG.
  • the block ID (final calculation block ID) of the block calculated at the end of the marginal area is set.
  • the final calculation block ID is set by the core that calculated the block when the calculation of all the blocks in the transmission area of the corresponding marginal area is completed.
  • the variable name of the final calculation block ID is “halo [hid] .lastblock”.
  • FIG. 20 is a flowchart illustrating a procedure of physical quantity calculation processing in the calculation area by the core according to the third embodiment.
  • the processing illustrated in FIG. 20 will be described in order of step numbers as processing by the core executing the thread 231.
  • Step S41 The calculation block selection unit 231a and the calculation unit 231b cooperate to calculate physical quantities of all lattice points in one block. The details of this processing are the same as the block calculation processing of the second embodiment shown in FIG.
  • Step S42 The calculation unit 231b counts up the number of processed blocks. Specifically, the calculation unit 231b increments the value of a variable “calcblknum” indicating the number of processing blocks.
  • the calculation unit 231b determines whether or not the processed block is a block belonging to the transmission area in the marginal area. Specifically, the calculation unit 231b refers to the margin ID (Blk [bid]) of the processed block in the block management table 141a in the block information storage unit 241. If the value of the referenced margin ID (variable “blk [bid]”) is other than “ ⁇ 1”, the calculation unit 231b determines that the processed block is the transmission region of the margin region. If the block belongs to the transmission area of the marginal area, the process proceeds to step S44. If the block does not belong to the transmission area of the marginal area, the process proceeds to step S47.
  • the calculation unit 231b counts up the number of processed blocks in the marginal area to which the processed block belongs. Specifically, the calculation unit 231b acquires the margin ID (Blk [bid]) of the processed block in the block management table. Next, the calculation unit 231b searches the margin management table 142a for a record in which the same margin ID (hid) as the acquired margin ID is set. Then, the calculation unit 231b increments the value of the processing block number (halo [hid] .calcnum) of the record matched by the search.
  • Step S45 The calculation unit 231b determines whether or not the block calculated in step S41 is the last block in the transmission area in the marginal area. Specifically, when the number of processing blocks (halo [hid] .calcnum) after the count-up process in step S44 is the same as the number of blocks in the corresponding marginal area (halo [hid] .blknum), step S41 is performed. It is determined that the block calculated in step 1 is the last block in the transmission area. If it is the last block in the transmission area, the process proceeds to step S46. If it is not the last block in the transmission area, the process proceeds to step S47.
  • Step S46 The calculation unit 231b sets the block ID of the block calculated in Step S41 in the margin management table 242a as the final calculation block ID (halo [hid] .lastblock).
  • the margin exchange processing unit 231c determines whether or not there is a marginal area in which calculation of all blocks in the transmission area is completed. Specifically, the margin exchange processing unit 231c compares the number of blocks (halo [hid] .blknum) and the number of processed blocks (halo [hid] .calcnum) in all the marginal areas. Judge that it is finished. If there is a marginal area for which the calculation is completed, the process proceeds to step S48. If there is no marginal area for which calculation has been completed, the process proceeds to step S53.
  • the margin exchange processing unit 231c determines whether or not margin exchange has been completed for the marginal area for which the calculation has been completed. Specifically, the margin exchange processing unit 231c refers to the exchange processing completed flag (halo [hid] .down) in the margin area record in the margin management table 242a. If the corresponding replacement processing flag is “off”, it is determined that the margin replacement has not been completed. If there is a marginal area for which margin exchange has not ended, the process proceeds to step S49. If margin exchange has been completed for all marginal areas for which calculation has been completed, the process proceeds to step S53.
  • the margin exchange processing unit 231c determines, using a predetermined algorithm, a margin exchange core that performs margin exchange in the marginal area where the calculation has been completed. For example, the margin exchange core determination can be determined based on the remainder obtained by dividing the block ID (final calculation block ID) of the block calculated last by the number of cores.
  • the margin exchange processing unit 231c divides the final calculation block ID (halo [hid] .lastblock) by the number of cores (totalCoreNum) to obtain a remainder (mod (halo [hid] .lastblock, totalCoreNum)).
  • the margin exchange processing unit 231c determines the core ID having a value equal to the obtained remainder as the margin exchange core ID (halo [hid] .Packcore) of the corresponding marginal area.
  • Step S50 The margin exchange processing unit 231c determines whether or not the margin exchange core determined in step S49 is itself. Specifically, the margin exchange processing unit 231c determines whether or not the remainder value calculated in step S49 matches the core ID (core # 0) of the core executing the margin exchange processing unit 231c. If they match, it is determined that it is a margin exchange core. If it is a margin exchange core, the process proceeds to step S51. If it is not the margin exchange core, the process proceeds to step S53.
  • the margin exchange processing unit 231c packs the calculation results of the blocks belonging to the transmission area of the marginal area where the calculation is completed. Specifically, the margin exchange processing unit 231c refers to the margin management table 242a, and determines in step S50 the block ID (halo [hid] .id [blocknum] of the block belonging to the marginal area that is determined to be a margin exchange core. ]). Next, the margin exchange processing unit 231 c extracts data indicating the physical quantity of the block corresponding to the acquired block ID from the physical quantity storage unit 144 and stores it in a continuous storage area in the memory 120.
  • Step S52 The margin exchange processing unit 231c transmits the data packed in step S51 to a module having another processor to which an adjacent calculation area is assigned via the corresponding margin area.
  • the transmitted data is unpacked by the margin exchange unit in the destination processor module.
  • the margin exchange processing unit 231c changes the exchanged flag (halo [hid] .down) of the marginal area where the packing and transmission processing has been performed to “on”.
  • Step S53 The calculation unit 231b determines whether or not all the blocks in the calculation area have been processed. Specifically, when the processing block number (calcblknum) indicated in the processing block number information 141b reaches the number of blocks in the calculation area, the calculation unit 231b determines that all blocks have been processed. If all the blocks have been processed, the calculation process ends. If there is an unprocessed block, the process proceeds to step S41.
  • the margin exchange core is determined according to the remainder when the block ID of the last block calculated in the transmission area of the margin area is divided by the number of cores.
  • FIG. 21 is a diagram showing the transition of the processing content of each core in the third embodiment. 21 is different from the process of the second embodiment shown in FIG. 17 in that the core for executing data packing is indefinite in the third embodiment. That is, the margin exchange core is determined according to the block ID of the block calculated last among the blocks belonging to the transmission area in each marginal area. Therefore, each of the cores 111 to 114 is determined as a margin exchange core with an equal probability. That is, the core to be packed is not fixed to a specific core, and the packing process can be executed almost evenly on all the cores.
  • the third embodiment by calculating the physical quantity of the lattice points in order from the marginal area 41, the time at which the calculation of the blocks belonging to the transmission areas of the marginal areas 41 to 44 ends is shifted. This prevents a plurality of data packing processes from occurring at the same time.
  • the data packing process of the other marginal area is extended until the previously executed data packing is terminated. be able to. For example, whether or not data packing processing is being performed is stored in the cache memory as status information of each core. Even if each core determines YES in step S50, if another core is in the process of data packing, the process proceeds to step S53 without executing steps S51 and S52. In this case, when the block calculation process by the margin exchange core is completed after the data packing by another core is completed, the process proceeds to steps S51 and S52, and the margin exchange is performed. As a result, it is possible to reliably prevent data packing from occurring in a time zone that is overlapped by a plurality of cores.
  • one processor module is mounted on one processor module, but a plurality of processors may be mounted on one processor module.
  • a calculation area is assigned to each processor in one processor module, and a physical quantity of lattice points in the calculation area is calculated for each processor.
  • the margin exchange is performed between processors in different processor modules and also between processors in the same processor module. Even in the margin exchange process between multiple processors in the same processor module, the process is executed according to the procedure shown in the first to third embodiments, thereby reducing duplicate memory access by multiple cores. In addition, the processing efficiency can be improved.
  • the above processing functions can be realized by a computer.
  • a program describing the processing contents of the functions that the computer should have is provided.
  • the program describing the processing contents can be recorded on a computer-readable recording medium.
  • the computer-readable recording medium include a magnetic storage device, an optical disk, a magneto-optical recording medium, and a semiconductor memory.
  • the magnetic storage device include a hard disk device (HDD), a flexible disk (FD), and a magnetic tape.
  • Optical discs include DVD, DVD-RAM, CD-ROM / RW, and the like.
  • Magneto-optical recording media include MO (Magneto-Optical disc).
  • a portable recording medium such as a DVD or CD-ROM in which the program is recorded is sold. It is also possible to store the program in a storage device of a server computer and transfer the program from the server computer to another computer via a network.
  • the computer that executes the program stores, for example, the program recorded on the portable recording medium or the program transferred from the server computer in its own storage device. Then, the computer reads the program from its own storage device and executes processing according to the program. The computer can also read the program directly from the portable recording medium and execute processing according to the program. Further, each time the program is transferred from the server computer, the computer can sequentially execute processing according to the received program.
  • processing functions described above can be realized by an electronic circuit such as a DSP (Digital Signal Processor), an ASIC (Application Specific Integrated Circuit), or a PLD (Programmable Logic Device).
  • DSP Digital Signal Processor
  • ASIC Application Specific Integrated Circuit
  • PLD Programmable Logic Device

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

 マルチコアプロセッサによる並列処理の高速化を実現する。 複数のコア(1a,1b,・・・,1n)それぞれの計算単位領域選択手段(1aa,1ba,・・・,1na)が、計算領域(4)内の未計算の計算単位領域を順次選択する。また複数のコア(1a,1b,・・・,1n)それぞれの計算手段(1ab,1bb,・・・,1nb)が、選択された計算単位領域内の計算を実行する。また計算手段(1ab,1bb,・・・,1nb)が、複数のコア(1a,1b,・・・,1n)それぞれからアクセス可能な記憶装置(2)に計算結果(2a,2b,・・・)を書き込む。コア(1n)の計算結果送信手段(1nc)は、計算結果送信領域(4a,4b,4c,4d)内の計算結果の記憶装置(2)からの取得および取得した計算結果の送信処理を、複数の計算結果送信領域(4a,4b,4c,4d)について異なる時間帯に実行する。

Description

並列計算装置、並列計算方法、および並列計算プログラム
 本発明は並列計算装置、並列計算方法、および並列計算プログラムに関する。
 近年、テクノロジーの進歩と共に、演算処理部であるコアを2つ有するデュアルコア、4つ有するクアッドコアといったコアを複数有するマルチコアのプロセッサ(例えばCPU:Central Processing Unit)が定着している。さらに複数コア化ともいわれるように、1つのLSI(Large Scale Integrated circuit)に数十コア搭載するプロセッサも現れ、今後ますます複数のコアを搭載するLSIが開発されてくることが推測される。
 さらに昨今のHPC(High Performance Computing)分野におけるスーパーコンピュータはこういったLSIを有する計算ノードを数千から数万用いて構成されるマルチノード(プロセス)・マルチコアが主流となりつつある。このようなスーパーコンピュータは従来から気象予報分野、遺伝子解析などの生体分野、ナノテクノロジー分野といった大規模シミュレーションに深く拘わっており、各種科学技術の発展に貢献している。
 また、マルチノード・マルチコアといった特徴をもつスーパーコンピュータが開発されると同時に、科学技術計算分野の大規模シミュレーション手法も各種考えられている。例えば、シミュレーションが並列実行されることによる各シミュレーションにおける基底(物理量を算出する位置である離散点の集合)の相違を保証するための技術が考えられている。
 ところでシステムのマルチノード化においては、インターコネクトによって結合されたプロセッサ間の通信時間が、実行対象であるアプリケーションプログラムの処理時間に悪影響を与える場合がある。そのため、通信処理を削減しアプリケーションプログラムの高速化を図ることが重要とされる。処理の高速化の技術としては、例えば、解析演算の境界値データをスレーブ装置間の制御で行うことで、マスタ装置の通信負荷の増大を防ぐ技術がある。このように、アプリケーションの計算アルゴリズムや並列化手法を計算ノードを複数有するマルチノード向けに改善し、処理の効率化が図られている。
特開平10-154136号公報 特開2002-123497号公報
 しかし、従来の並列化手法の改善はマルチノードシステムの各ノードに実行させるプロセスの並列処理の高速化であり、マルチコアのプロセッサ内の各コアで実行させるスレッドの並列処理の高速化手法については十分に検討されていなかった。例えば、各コア(スレッド)に均等に処理を分担させるような、マルチノードの並列処理技術のマルチコアへの転用は行われているが、マルチコアの特徴を考慮した上での並列処理の高速化については考えられていなかった。
 本発明はこのような点に鑑みてなされたものであり、マルチコアプロセッサによる並列処理の高速化を実現することができる並列計算装置、並列計算方法、および並列計算プログラムを提供することを目的とする。
 上記課題を解決するために、演算処理装置が計算を行う要素点の全体集合である計算領域内の計算を複数の演算処理部を有する演算処理装置で並列実行する並列計算装置が提供される。計算領域は複数の計算単位領域に区切られている。計算領域内には、少なくとも1つの計算単位領域を包含する計算結果送信領域が複数設けられている。演算処理装置内の複数の演算処理部それぞれには、計算領域内の未計算の計算単位領域を順次選択する計算単位領域選択手段が設けられている。演算処理装置内の複数の演算処理部それぞれには、計算単位領域選択手段で選択された計算単位領域内の計算を実行し、複数の演算処理部それぞれからアクセス可能な記憶装置に計算結果を書き込む計算手段が設けられている。演算処理装置内の少なくとも1つの演算処理部には、計算結果送信領域に属する計算単位領域内の計算結果の記憶装置からの取得および送信処理を、複数の計算結果送信領域について異なる時間帯に実行する計算結果送信手段が設けられている。
 また上記課題を解決するために、上記並列計算装置と同様の処理を行う並列計算方法が提供される。さらに上記課題を解決するために、上記並列計算装置と同様の処理をコンピュータに実行させる並列計算プログラムが提供される。
 上記並列計算装置では、複数の計算結果送信領域に関する計算結果の複数のコアが行う同時送信による主記憶装置へのアクセスが防止され、処理効率が向上する。
 本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
第1の実施の形態に係る並列計算装置の機能を示すブロック図である。 物理シミュレーションの解析空間を示す図である。 のりしろ交換の様子を示す図である。 のりしろ交換のためのプロセッサでのデータ通信を示す図である。 境界データのパッキングとアンパッキングとを示す図である。 プロセッサ数に応じたのりしろ領域の占有率を示す図である。 第2の実施の形態に用いるコンピュータのハードウェア構成例を示す図である。 プロセッサモジュールの内部構造の一形態を示す図である。 第2の実施の形態における物理シミュレーション時のプロセッサモジュール内での処理機能を示す図である。 解析空間とブロックとの関係を示す図である。 ブロック情報記憶部のデータ構造例を示す図である。 のりしろ情報記憶部のデータ構造例を示す図である。 第2の実施の形態におけるコアによる計算領域内の物理量計算処理の手順を示すフローチャートである。 ブロック選択の優先順を示す図である。 ブロック計算処理の手順を示すフローチャートである。 計算領域内のすべてのブロックの物理量の計算終了後に複数のコアが同時にのりしろ交換処理を実行した場合のコアの処理内容の推移を示す図である。 第2の実施の形態における各コアの処理内容の推移を示す図である。 第3の実施の形態における物理シミュレーション時のプロセッサモジュール内での処理機能を示す図である。 第3の実施の形態におけるのりしろ情報記憶部のデータ構造例を示す図である。 第3の実施の形態に係るコアによる計算領域内の物理量計算処理の手順を示すフローチャートである。 第3の実施の形態における各コアの処理内容の推移を示す図である。
 以下、本実施の形態について図面を参照して説明する。
 〔第1の実施の形態〕
 図1は、第1の実施の形態に係る並列計算装置の機能を示すブロック図である。ここで、並列計算装置が有するプロセッサ等の計算ノードが計算を行う要素点の全体集合を「計算領域」と定義する。計算領域4内の計算を複数の演算処理部としてのコア1a,1b,・・・,1nを有する演算処理装置としてのプロセッサ1で並列実行する並列計算装置が提供される。
 計算領域4は複数の計算単位領域に区切られている。また計算領域4には、少なくとも1つの計算単位領域を包含する計算結果送信領域4a,4b,4c,4dが複数設けられている。プロセッサ1内の複数のコア1a,1b,・・・,1nそれぞれには、計算領域4内の未計算の計算単位領域を順次選択する計算単位領域選択手段1aa,1ba,・・・,1naが設けられている。またプロセッサ1内の複数のコア1a,1b,・・・,1nそれぞれには、計算単位領域選択手段1aa,1ba,・・・,1naで選択された計算単位領域内の計算を実行する計算手段1ab,1bb,・・・,1nbが設けられている。さらに計算単位領域選択手段1aa,1ba,・・・,1naは、複数のコア1a,1b,・・・,1nそれぞれからアクセス可能な記憶装置2に計算結果2a,2b,・・・を書き込む。プロセッサ1内の少なくとも1つのコア1nには、計算結果送信領域4a,4b,4c,4d内の計算結果の記憶装置2からの取得および送信処理を実行する計算結果送信手段1ncが設けられている。計算結果送信手段1ncによる計算結果取得および送信処理は、複数の計算結果送信領域4a,4b,4c,4dについて異なる時間帯に実行される。図1の例では、他のプロセッサ3a,3b,3c,3dに計算結果が送信される。
 このような並列計算装置によれば、複数のコア1a,1b,・・・,1nそれぞれの計算単位領域選択手段1aa,1ba,・・・,1naにより、計算領域4内の未計算の計算単位領域が順次選択される。また複数のコア1a,1b,・・・,1nそれぞれの計算手段1ab,1bb,・・・,1nbにより、計算単位領域選択手段1aa,1ba,・・・,1naで選択された計算単位領域内の計算が実行される。また計算手段1ab,1bb,・・・,1nbにより、複数のコア1a,1b,・・・,1nそれぞれからアクセス可能な記憶装置2に計算結果2a,2b,・・・が書き込まれる。コア1nの計算結果送信手段1ncにより、計算結果送信領域4a,4b,4c,4d内の計算結果の記憶装置2からの取得および送信処理が、複数の計算結果送信領域4a,4b,4c,4dについて異なる時間帯に実行される。
 このように、計算結果の送信が、複数の計算結果送信領域4a,4b,4c,4dについて異なる時間帯で実行されることで、計算結果の送信処理が、複数同時に実行されることによる処理効率の低下が防止される。例えば、計算結果送信領域4a,4b,4c,4d内の計算単位領域の計算結果がプロセッサ3a,3b,3c,3dに送信されるものとする。このとき、計算結果を送信する場合、例えば送信対象の計算結果が、主記憶装置内の連続の記憶領域に格納される。そして計算結果が主記憶装置からプロセッサ3a,3b,3c,3dに送信される。ここで、仮に複数の送信処理が同時並行で実行された場合、主記憶装置への計算結果の書き出し処理による主記憶装置へのアクセスが競合して、個々の処理効率を低下させる。他方、図1に示した並列計算装置であれば、送信処理が同時並行で実行されることがないため、マルチコアのプロセッサ1における並列処理実行時の計算結果の送信を効率よく実行できる。
 今後開発されるスーパーコンピュータは超並列化が進むものと考えられ、プロセッサのマルチコア化は処理の超並列化に大きく寄与する。超並列化が進むと、アプリケーションプログラムを領域分割し隣接する線または面を通信する局所通信により高速化を図ることがより重要になる。第1の実施の形態の技術を用いてマルチコアのプロセッサの処理効率を向上させることでプロセッサ間の通信が能力を向上させることができ、今後の超並列化の促進に寄与することができる。
 〔第2の実施の形態〕
 第2の実施の形態は、マルチコアプロセッサを用いた物理シミュレーションを実行する際に、プロセッサ間でのデータ交換の処理効率を向上させるものである。まず、物理シミュレーションにおいてプロセッサ間で交換されるデータについて説明する。
 図2は、物理シミュレーションの解析空間を示す図である。多次元の物理シミュレーションの解析空間30は、多次元の計算領域が格子で細かく区切られ、格子点(計算対象の要素点)における物理量が計算される。また解析空間30は、複数の計算領域に分割される。各計算領域はプロセッサに割り当てられる。プロセッサは、割り当てられた計算領域内の空間内を対象として計算を行う。複数のプロセッサが個別の計算領域内の物理量を並列に計算をすることで、解析空間30内の物理シミュレーションの並列計算が行われる。
 差分法を用いた物理シミュレーションでは、シミュレーションの時刻を進めながら物理量が計算され、物理量の時間変化が解析される。計算される物理量は、電場、磁場、温度、風速など様々である。所定のシミュレーション時刻の解析空間30内の物理量の計算は、直前のシミュレーション時刻における解析空間30内の物理量を用いて実行される。このとき、1つの計算領域内の物理量の計算には、その計算領域内の直前のシミュレーション時刻の物理量に加え、隣接する領域(格子点)での直前のシミュレーション時刻の物理量(境界データ)が使用される。境界データには解析対象計算領域の周囲の物理量が反映されている。そのため、境界データを用いた演算を行うことで、計算領域間の互いの影響を反映させた解析が可能となる。
 このように各計算領域内の物理量の計算を差分法で処理する場合、各プロセッサが担当する領域の境界データを隣接するプロセッサとお互いに交換しあう処理が行われる。このようなプロセッサ間での境界データの交換は「のりしろ交換」と呼ばれる。また1つの計算領域40におけるのりしろ交換対象の領域は、のりしろ領域41~44と呼ばれる。
 図3は、のりしろ交換の様子を示す図である。シミュレーション時刻で1ステップ分の解析が終了すると、時刻を1ステップ進めた次のシミュレーション時刻の解析を行うために、計算領域40,40a,40b間でのりしろ交換が行われる。例えば、計算領域40は、計算領域40aとの間でのりしろ交換をすべきのりしろ領域41と、計算領域40bとの間でのりしろ交換をすべきのりしろ領域43とを有している。計算領域40aは、計算領域40との間でのりしろ交換をすべきのりしろ領域40xを有している。計算領域40bは、計算領域40との間でのりしろ交換をすべきのりしろ領域40yを有している。
 のりしろ領域41,43,40x,40yは、送信領域と受信領域とに分かれる。各計算領域40,40a,40bの外周に隣接する領域が受信領域となり、その受信領域の内側に隣接する領域が送信領域となる。各計算領域40,40a,40bに対して計算された送信領域内の物理量が、境界データとして隣接する他の計算領域の受信領域に転送される。
 複数のプロセッサで解析を行う場合、計算領域40,40a,40bそれぞれの内部の領域の物理量は、個別のプロセッサで計算される。従ってのりしろ交換は、プロセッサ間の通信によって実現される。
 図4は、のりしろ交換のためのプロセッサでのデータ通信を示す図である。のりしろ交換は、(1)送信領域内の境界データのパッキング、(2)パッキングされたデータの送信と受信、(3)受信したデータのアンパッキングといった3段階の処理が行われる。
 ここでデータのパッキング処理とは、送信領域内の全てのブロックの演算が終了した場合に、のりしろ領域の内の送信領域に含まれる全てのブロックの物理量のデータを一塊にまとめる処理である。データを一塊にまとめるとは、データを連続した記憶領域に格納することである。
 またデータのアンパッキング処理とは、他のプロセッサから受信した境界データを受信領域内の各ブロックの物理量に分離し、各ブロックの物理量の設定領域に格納する処理である。受信したデータ内の物理量を格納する領域が不連続であれば、アンパッキングにおいて不連続な領域に物理量を示す値が格納される。
 図4に示すように複数のプロセッサ31~33が通信路34で接続されている場合を想定する。プロセッサ32は、プロセッサ31,33との間でのりしろ交換を行う。このとき、プロセッサ31は計算領域Xの計算を行い、プロセッサ32は計算領域Yの計算を行い、プロセッサ33は計算領域Zの計算を行うものとする。また計算領域Yは、計算領域X,Zに挟まれた位置の計算領域であるものとする。この場合、プロセッサ32では、プロセッサ31に送信するデータのパッキング、プロセッサ31から受信したデータのアンパッキング、プロセッサ33に送信するデータのパッキング、およびプロセッサ33から受信したデータのアンパッキングが発生する。
 次に、図2に示す計算領域40のように、4面にのりしろ領域41~44がある場合ののりしろ交換時のパッキング・アンパッキング処理について考える。
 図5は、境界データのパッキングとアンパッキングとを示す図である。図5に示すように、計算領域40は格子によってさらに分割されている。これにより、より細かな領域が生成される。この領域をブロックと呼ぶ。プロセッサ内のコアが、担当計算領域内のブロックごとの物理量を計算する。ブロックのサイズは、例えばコア内の一次または二次キャッシュメモリのサイズなどに応じて決められる。図5に示すように、のりしろ領域41~44内にも複数のブロックが含まれる。
 ここで、計算領域40内のブロックは多次元配列である。一方、各ブロックの物理量を格納するメモリ空間50は、アドレスが1次元である。そのため、のりしろ領域内の各ブロックの物理量を格納するメモリ空間50上の配列は、不連続となる場合がある。
 例えば、計算領域40内の横方向x番目、縦方向y番目のブロックのデータを、p[x][y]と表す。メモリ空間50では、縦方向の番号が小さいブロックから順に、記憶領域のアドレスが割り当てられているものとする。すると、のりしろ領域41,43のように、横方向に連続した領域であれば、メモリからデータをまとめて読み出し、パッキングを行うことができる。アンパッキングの際には、受信した境界データをメモリ内の連続した領域に書き込めばよい。そのためのりしろ領域41,43のパッキング/アンパッキング処理は、短時間で実行可能である。
 他方、のりしろ領域42,44のように、縦方向に連続した領域については、メモリ内の不連続の領域に各ブロックのデータが配置されている。ここで、メモリへのアクセス方式としてストライドアクセスと呼ばれる方式がある。ストライドアクセスでは、メモリからの読み込み時には、連続の所定長(例えば1ライン分)のデータをまとめてキャッシュメモリに転送する。ところが、メモリからキャッシュへののりしろ領域42,44のデータ読み出しについては、データが不連続であるためストライドアクセスとなりキャッシュラインのアラインが崩れるため、1ラインに不要なデータが入ってしまい、不要なデータでキャッシュメモリが圧迫される。その結果、キャッシュミスヒットが多くなる。そのため、のりしろ領域42,44については、メモリからのデータ読み出しアクセス回数が多くなり、パッキング/アンパッキング処理に時間がかかる。
 ここで解析空間30全体のデータ解析に要する時間と、データのパッキング/アンパッキング処理に要する時間との比率を考察する。まず、1つのブロック内の物理量を1つのプロセッサ(マルチプロセッサ内の1ブロック)が算出するのに要する時間を、τとする。
 例えば計算領域を、一辺のブロック数をn(nは自然数)とする3次元であり、プロセッサ数をP(Pは自然数)とする。この場合、解析領域全体の物理量の計算に要する計算処理時間がτ(n3/P)である。これに対し、データパッキング・アンパッキングの処理時間はτ((n3/P)2/3)程度となる。そのため、計算処理時間に対するデータパッキング・アンパッキング処理時間の比率はP1/3/nとなる。その結果、プロセッサ台数が千を超えるような超並列計算機では計算時間に対するデータパッキング・アンパッキングの処理時間の比率が増すことになる。
 さらに一辺のブロック数がnの多次元空間を考えた場合、超並列化が進みプロセッサ数が増加すると、領域分割したときの個々のプロセッサの担当領域は小さくなる。それに従い個々のプロセッサが処理する計算量は小さくなる。このとき、のりしろの幅はプロセッサ数とは無関係で固定値である。そのため、のりしろ交換の領域サイズの割合は全計算領域に対して大きくなり、のりしろ交換処理の比重は大きくなっていく。
 図6は、プロセッサ数に応じたのりしろ領域の占有率を示す図である。図6の例では、10,000,000の格子点がある空間(例えば、x、y、zの各軸方向にそれぞれ500、500、40の格子点)を想定している。この空間をプロセッサ数に応じた計算領域に分割し、複数の計算領域それぞれの物理量を複数のプロセッサで並列計算する。各計算領域は、2次元平面(x-y平面)に並べられているものとする。また、のりしろ交換で送受信する領域の幅は、格子点3つ分であるものとする。
 この場合、プロセッサ数が16であれば、1プロセッサの計算格子点数は625000であり、のりしろ領域内の格子点の割合は0.09である。他方、プロセッサ数が1024であれば、1プロセッサの計算格子点数は9766であり、のりしろ領域内の格子点の割合は0.62である。このように、プロセッサ数の増加に従って、のりしろ領域内の格子点が全体に占める割合が増加する。これはプロセッサ数が増加すれば、のりしろ交換に要する処理量が増加することを意味する。換言すると、のりしろ交換処理の負荷を軽減できれば、並列処理に使用するプロセッサ数を増加させることによる処理速度の向上効果が促進される。
 そこで、マルチコアプロセッサにおけるのりしろ交換処理の負荷の軽減について考察する。前述のように、のりしろ交換の主な処理の一つはデータパッキング・アンパッキング処理である。この処理は計算処理が終了したのりしろ部分のデータを新たに通信用データに作成するデータコピーの処理である。データパッキング・アンパッキングの処理中にプロセッサ内で主に行われる詳細な処理は、ロード・ストア命令で行われる。ロード命令は、キャッシュメモリまたはメインメモリからのデータの読み込みを行う処理である。ストア命令は、キャッシュメモリまたはメインメモリへのデータの書き込みを行う処理である。
 データパッキング・アンパッキング処理をマルチコア環境ですべてのコアを使って処理しようとすると、同時に複数のコアからのロード・ストアが多発する可能性がある。2次キャッシュが共有であるときは全コアからの同時アクセスによりキャッシュが圧迫される。パッキングしたデータをメモリに書き出すためのメモリへのアクセス集中も発生してしまう。
 また、それぞれののりしろ領域のデータパッキング・アンパッキング処理では、例えば3次元空間の場合6面ののりしろ領域が処理対象となる。そのうち4面分のメモリアクセスについては、ストライドアクセスによってキャッシュラインのミスヒットが多発し、メモリへのアクセスがデータパッキング・アンパッキングの間に多くなる。その結果、プロセッサの使用効率の悪化を招く。つまり、データパッキング・アンパッキング処理のメモリアクセス処理が、全処理時間に大きく影響することが分かる。
 特に従来の物理シミュレーションでは、のりしろ交換処理(データのパッキングと送信とデータアンパッキング)は計算領域すべてを計算した後に実行されていた。そのため、のりしろ交換領域が複数ある場合、それぞれのパッキング・アンパッキングを複数のコアで並列実行しても、パッキング・アンパッキングしたデータのメモリとの間の転送処理が重なり、処理効率が低下していた。
 そこで第2の実施の形態では、データ送受信する際のデータパッキング・アンパッキングのメモリアクセス処理の効率を高め、システム全体での処理の効率化を図る。
 図7は、第2の実施の形態に用いるコンピュータのハードウェア構成例を示す図である。コンピュータ10は、複数のプロセッサモジュール100,100a,・・・を有している。プロセッサモジュール100,100a,・・・は互いにバス14で接続されている。また、バス14には、ハードディスクドライブ(HDD:Hard Disk Drive)11、光学ドライブ装置12、および通信インタフェース13が接続されている。
 HDD11は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD11は、コンピュータ10の二次記憶装置として使用される。HDD11には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
 光学ドライブ装置12は、レーザ光などを利用して、光ディスク15に記録されたデータの読み取りを行う。光ディスク15は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク15には、DVD(Digital Versatile Disc)、DVD-RAM、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(ReWritable)などがある。
 通信インタフェース13は、ネットワーク20に接続されている。通信インタフェース13は、ネットワーク20を介して、サーバ21などの他のコンピュータとの間でデータの送受信を行う。
 図8は、プロセッサモジュールの内部構造の一形態を示す図である。プロセッサモジュール100は、プロセッサ110とメモリ120とを有している。プロセッサ110は、複数のコア111~114とキャッシュメモリ115とを有している。各コア111~114は、キャッシュメモリ115に接続されている。コア111~114にはそれぞれ「#0」~「#3」のコア番号が付与されている。
 同様にプロセッサモジュール100aは、プロセッサ110aとメモリ120aとを有している。プロセッサ110aは、複数のコア111a,112a,113a,114aとキャッシュメモリ115aとを有している。各コア111a,112a,113a,114aは、キャッシュメモリ115に接続されている。コア111a,112a,113a,114aにはそれぞれ「#0」~「#3」のコア番号が付与されている。
 以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
 図9は、第2の実施の形態における物理シミュレーション時のプロセッサモジュール内での処理機能を示す図である。プロセッサモジュール100では、コア111~114ごとのスレッド131~134が生成される。スレッド131~134は、プロセッサ110が実行する処理の実行単位である。
 スレッド131は、計算ブロック選択部131aと計算部131bとを有する。計算ブロック選択部131aは、プロセッサモジュール100に割り当てられた計算領域の中から、スレッド131で計算するブロックを順次選択する。計算部131bは、計算ブロック選択部131aが選択したブロック内の物理量を計算する。
 スレッド131と同様に他のスレッド132,133,134も計算ブロック選択部132a,133a,134aと計算部132b,133b,134bとを有している。またスレッド134のみ、のりしろ交換処理部134cを有している。
 のりしろ交換処理部134cは、他のプロセッサモジュール100a,・・・との間でのりしろ交換を行う。具体的には、のりしろ交換処理部134cは、送信領域のデータのパッキング、パッキングしたデータの転送、および受信したデータの受信領域へのアンパッキングを行う。
 また、プロセッサモジュール100は、情報の記憶機能として、ブロック情報記憶部141、のりしろ情報記憶部142、のりしろ交換コア情報記憶部143、および物理量記憶部144を有している。
 ブロック情報記憶部141は、プロセッサモジュール100が解析を担当する計算領域内の各ブロックについて、のりしろ領域内のブロックか否か、計算が終了したか否かといった情報を記憶する記憶機能である。例えばキャッシュメモリ115またはメモリ120の記憶領域の一部が、ブロック情報記憶部141として使用される。
 のりしろ情報記憶部142は、のりしろ領域の状態を示す情報を記憶する記憶領域である。例えばキャッシュメモリ115またはメモリ120の記憶領域の一部が、のりしろ情報記憶部142として使用される。
 のりしろ交換コア情報記憶部143は、のりしろ交換を実行するコアの識別子を記憶する記憶領域である。図9の例では、スレッド134を実行するコア114のID(コア#3)が、のりしろ交換コア情報記憶部143に予め設定される。例えばキャッシュメモリ115またはメモリ120の記憶領域の一部が、のりしろ交換コア情報記憶部143として使用される。
 物理量記憶部144は、プロセッサモジュール100が解析を担当する計算領域内の各ブロックの物理量を記憶する記憶機能である。物理量記憶部144には、物理シミュレーションにおける現在の時刻より1ステップ前のシミュレーション時刻の物理量と、現在のシミュレーション時刻の物理量とが格納される。1ステップ前のシミュレーション時刻の物理量のうち、のりしろ領域内の受信領域の物理量は、他のプロセッサモジュールから取得した値である。受信領域以外の物理量は、各スレッド131~134が算出した値である。現在のシミュレーション時刻の各ブロックの物理量としては、各スレッド131~134によるブロックの物理量の計算結果が随時書き込まれる。例えばキャッシュメモリ115またはメモリ120の記憶領域の一部が、物理量記憶部144として使用される。
 ここで、第2の実施の形態における解析空間内のブロックの分け方について説明する。
 図10は、解析空間とブロックとの関係を示す図である。図10には、シミュレーションの解析空間30を2次元配列の計算領域に分割した例である。計算領域40は、2次元分割してプロセス並列処理を行ったときの1プロセス(1ノード)の処理領域を示す。解析空間30は、複数の計算領域に分けられる。例えばプロセッサモジュール100,100a,・・・と同数の計算領域が生成される。プロセッサモジュール100,100a,・・・には、解析を担当する計算領域が割り当てられる。以下の説明では、プロセッサモジュール100が解析を担当する領域として、計算領域40が割り当てられているものとする。
 解析空間30は細かな格子で区切られている。プロセッサモジュール100は、解析を担当する計算領域40内の格子点における物理量を計算する。矩形の計算領域40の上下左右の辺に沿って4つののりしろ領域が設定される。各のりしろ領域のうち、計算領域40の外周に接する領域が受信領域であり、その内側の領域が送信領域41a,42a,43a,44aである。のりしろ領域には識別子(のりしろID)が付与される。送信領域41aを含むのりしろ領域ののりしろIDは「1」である。送信領域42aを含むのりしろ領域ののりしろIDは「2」である。送信領域43aを含むのりしろ領域ののりしろIDは「3」である。送信領域44aを含むのりしろ領域ののりしろIDは「4」である。
 計算領域40は、複数のブロック(さいの目)に分割される。1つのブロックのサイズは、例えばコア111~114内の一次キャッシュメモリのサイズに合わせられる。これによってブロック単位の計算処理の際に、ブロック内のデータをまとめてコア内のキャッシュメモリ上に格納でき、処理の効率化を図ることが可能となる。
 図10の例では、縦横11個ずつのブロックに分割されている。従って、計算領域40内のブロック数は121(11×11)となる。プロセッサモジュール100内の各コア111~114は、計算対象のブロックを順次選択し、選択したブロック内の格子点における物理量を計算する。
 このような計算を実行するために、以下のようなデータがプロセッサモジュール100内で保持される。
 図11は、ブロック情報記憶部のデータ構造例を示す図である。ブロック情報記憶部141には、ブロック管理テーブル141aと処理ブロック数情報141bとが格納されている。ブロック管理テーブル141aには、ブロックID、のりしろID、および計算処理終了フラグが設定されている。
 ブロックIDの欄には、計算領域40内のブロックの識別子(ブロックID)が設定される。ブロックIDの変数名は"bid"である。
 のりしろIDの欄には、対応するブロックがのりしろの送信領域か否かを示す符号が設定される。のりしろの送信領域内のブロックの場合、のりしろIDの欄に、そのブロックが属するのりしろ領域のID(のりしろID)が設定される。なお、のりしろ領域に属さないブロックには、のりしろIDの欄に「-1」が設定される。各ブロックが属するのりしろを示すのりしろIDの変数名は"Blk[bid]"である。
 計算処理終了フラグの欄には、対応するブロックの物理量の計算が終了したか否かを示すフラグ(計算処理終了フラグ)が設定される。計算が終了していない場合、計算処理終了フラグに「off」が設定される。計算が終了した場合、計算処理終了フラグに「on」が設定される。計算処理終了フラグの値は、シミュレーション時刻が1ステップ進められたときに、すべて「off」に初期化される。計算処理終了フラグの変数名は"down[bid]"である。
 なお図11の例では、ブロック情報記憶部141内に各ブロックの情報がテーブル形式のデータ構造で情報が記憶されているが、他のデータ構造であってもよい。例えば各ブロックIDから、そのブロックIDで示されるブロックののりしろIDと計算処理終了フラグへのポインタを設定することで、各情報を関連付けることもできる。
 処理ブロック数情報141bは、物理量の計算処理が終了したブロックの総数(処理ブロック数)である。処理ブロック数は、シミュレーション時刻が1ステップ進められたときに、0に初期化される。処理ブロック数の変数名は"calcblknum"である。
 図12は、のりしろ情報記憶部のデータ構造例を示す図である。のりしろ情報記憶部142は、個々ののりしろに対して、いくつのブロックを処理したのかを表し、のりしろ交換コアに対してのりしろ交換のタイミングを認識させるための情報がテーブル形式で登録されている。のりしろ情報記憶部142には、のりしろ管理テーブル142aが格納さえている。のりしろ管理テーブル142aには、のりしろID、ブロック数、処理ブロック数、交換処理済フラグ、およびブロックIDの欄が設けられている。各欄の横方向に並べられた情報が互いに関連付けられ、のりしろ情報を示すレコードとなる。なお、のりしろ情報のレコードは、のりしろの数分登録される。第2の実施の形態では、図10に示すようにのりしろの数は横(x)方向の正負、縦(y)方向の正負の4方向にのりしろ領域が設けられる。従って、のりしろ管理テーブル142aには、4つのレコードが登録されている。
 のりしろIDの欄には、のりしろ領域の識別子(のりしろID)が設定される。のりしろ管理テーブル内ののりしろIDの変数名は"hid"である。
 ブロック数の欄には、対応するのりしろIDで示されるのりしろ領域の送信領域に属するブロック数が設定される。ブロック数の変数名は、"halo[hid].blknum"である。
 処理ブロック数の欄には、対応するのりしろIDで示されるのりしろ領域の送信領域の属するブロックのうち、物理量の計算処理が終了したブロックの数(処理ブロック数)が設定される。第2の実施の形態では、図10に示すように1つののりしろ領域の送信領域に属するブロック数は11である。処理ブロック数の変数名は"halo[hid].calcnum"である。
 交換処理済フラグの欄には、のりしろ領域のデータについて、隣接する計算領域が割り当てられたプロセッサとの間でのりしろ交換が終了したか否かを示すフラグ(交換処理済フラグ)が設定される。のりしろ交換が未終了であれば、交換処理済フラグには"off"が設定される。交換処理済みフラグの変数名は"halo[hid].down"である。
 ブロックIDの欄には、対応するのりしろIDで示されるのりしろ領域の送信領域に属するブロックのブロックIDが設定される。のりしろ領域のブロックIDの変数名は"halo[hid].id[blocknum]"である。
 なお図12の例では、のりしろ情報記憶部142内にテーブル形式のデータ構造で情報が記憶されているが、他のデータ構造であってもよい。例えば各のりしろIDから、そののりしろIDで示されるのりしろのブロック数、処理ブロック数、交換処理済フラグ、およびブロックIDへのポインタを設定することで、各情報を関連付けることもできる。
 以上のような構成のプロセッサモジュール100によって、物理シミュレーションの時刻が1ステップ進められるごとに、計算領域40内の物理量の計算およびのりしろ交換が行われる。その際、プロセッサ110内の各コア111~114が、順次ブロックを選択して、そのブロック内の物理量を計算する。
 図13は、第2の実施の形態におけるコアによる計算領域内の物理量計算処理の手順を示すフローチャートである。なおこの処理の開始前には、計算対象のシミュレーション時刻の1ステップ前の時刻における計算領域40内の格子点の物理量(あるいは物理量の初期値)が、物理量記憶部144に格納されている。また物理量記憶部144内のデータはキャッシュメモリ115に読み込まれている。以下、スレッド134が実行する場合を想定し、図13に示す処理をステップ番号に沿って説明する。
 [ステップS11]計算ブロック選択部134aと計算部134bとが連係して、1つのブロック内の全格子点の物理量を計算する。この処理の詳細は後述する(図15参照)。
 [ステップS12]計算部134bは、処理したブロック数をカウントアップする。具体的には、計算部134bは、処理ブロック数を示す変数"calcblknum"の値をインクリメントする。
 [ステップS13]計算部134bは、処理したブロックがのりしろ領域内の送信領域に属するブロックか否かを判断する。具体的には計算部134bは、ブロック管理テーブル141aにおける処理したブロックののりしろID(Blk[bid])を参照する。参照したのりしろID(変数"blk[bid]")の値が「-1」以外であれば、計算部134bは、処理したブロックがのりしろ領域の送信領域であると判断する。のりしろ領域の送信領域に属するブロックであれば、処理がステップS14に進められる。のりしろ領域の送信領域に属するブロックでなければ、処理がステップS15に進められる。
 [ステップS14]計算部134bは、処理したブロックが属するのりしろ領域の処理済ブロック数をカウントアップする。具体的には計算部134bは、ブロック管理テーブル141aにおける処理したブロックののりしろID(Blk[bid])を取得する。次に計算部134bは、取得したのりしろIDと同じのりしろID(hid)が設定されたレコードをのりしろ管理テーブル142aから検索する。そして計算部134bは、検索で合致したレコードの処理ブロック数(halo[hid].calcnum)の値をインクリメントする。
 [ステップS15]計算部134bは、自身がのりしろ交換コアか否かを判断する。具体的には、のりしろ交換コア情報記憶部143に設定されているコアIDと、自身のコアIDとが一致した場合に、のりしろ交換コアであると判断する。のりしろ交換コアであれば、処理がステップS16に進められる。のりしろ交換コアでなければ、処理がステップS20に進められる。
 [ステップS16]のりしろ交換処理部134cは、すべてののりしろ領域に関してのりしろ交換済みか否かを判断する。具体的にはのりしろ交換処理部134cは、のりしろ管理テーブル142aの各レコードにおける交換処理済フラグ(halo[hid].down)を参照する。少なくとも1つの交換処理済フラグが"off"であれば、のりしろ交換が未終了ののりしろ領域があると判断する。のりしろ交換を行っていないのりしろ領域があれば、処理がステップS17に進められる。すべてののりしろ領域についてのりしろ交換が終了していれば、処理がステップS20に進められる。
 [ステップS17]のりしろ交換処理部134cは、のりしろ交換が未終了ののりしろ領域について、送信領域内のすべてのブロックの計算が終了したか否かを判断する。具体的にはのりしろ交換処理部134cは、ステップS16で交換処理済フラグが"off"であったのりしろ領域のブロック数(halo[hid].blknum)と処理済ブロック数(halo[hid].calcnum)とを比較し、一致した場合に計算が終了したと判断する。計算が終了したのりしろ領域がある場合、処理がステップS18に進められる。計算が終了したのりしろ領域がなければ、処理がステップS20に進められる。
 [ステップS18]のりしろ交換処理部134cは、計算が終了したのりしろ領域の送信領域に属するブロックの計算結果をパッキングする。具体的には、のりしろ交換処理部134cは、のりしろ管理テーブル142aを参照し、ステップS17において計算が終了したと判断したのりしろ領域のブロックID(halo[hid].id[blocknum])を取得する。次にのりしろ交換処理部134cは、取得したブロックIDに対応するブロックの物理量を示すデータを物理量記憶部144から抽出し、メモリ120内の連続の記憶領域に格納する。
 [ステップS19]のりしろ交換処理部134cは、ステップS18でパッキングしたデータを、該当のりしろ領域を介して隣接する計算領域が割り当てられた他のプロセッサを有するモジュールに送信する。送信されたデータは、送信先のプロセッサモジュールにおけるのりしろ交換部によってアンパッキングされる。その後、のりしろ交換処理部134cは、パッキングおよび送信処理を行ったのりしろ領域の交換済フラグ(halo[hid].down)を"on"に変更する。
 [ステップS20]計算部134bは、計算領域内のすべてのブロックを処理したか否かを判断する。具体的には計算部134bは、処理ブロック数情報141bに示される処理ブロック数(calcblknum)が、計算領域内のブロック数(図10の例では121)に達した場合、すべてのブロックを処理したものと判断する。すべてのブロックの処理が終了していれば、計算処理を終了する。未処理のブロックがあれば、処理がステップS11に進められる。
 このように、のりしろ交換コア情報記憶部143にコアIDが設定されているコアのみが、のりしろ交換コアとしてのりしろ交換を実行する。すなわち、のりしろ交換コアは、のりしろ交換が未処理であり、のりしろ領域の送信領域の計算が終了したブロックの有無を判断し、該当するブロックを検出すると、のりしろ交換処理を開始する。のりしろ交換コアは今まで行ってきた計算処理を中断し、ほかのコアとは異なるのりしろ交換の処理を開始することとなる。他方、のりしろ交換コア以外のコアでは、ステップS16~S19の処理は行われず、ブロック内の格子点の物理量計算が繰り返し行われる。
 のりしろ交換処理では、まずデータのパッキング、パッキングしたデータの送信処理が行われる。送信相手のプロセッサモジュールにおいて、データの受信処理、および受信データのアンパッキングが行われる。こののりしろ交換の一連の処理が終了すると、のりしろ交換コアは、他に計算が終了しのりしろ交換が未処理ののりしろ領域があれば、同様に該当のりしろ領域ののりしろ交換処理を行う。他方、のりしろ交換の準備が整ったのりしろ領域がない場合は、のりしろ交換コアは、再び計算専用コアと同じ計算処理に戻る。
 次に計算対象として選択するブロックの順番について説明する。
 図14は、ブロック選択の優先順を示す図である。第2の実施の形態では、計算領域40内のブロックについて、選択する優先順が設けられる。のりしろ領域の送信領域に属するブロックは優先順が高く、それ以外のブロックは優先順が低い。計算ブロック選択部134aは、優先順が高い領域のブロックを優先的に選択し、計算部134bに計算させる。
 図15は、ブロック計算処理の手順を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。
 [ステップS31]計算ブロック選択部134aは、計算領域40内の未処理のブロックを1つ選択する。具体的には計算ブロック選択部134aは、ブロック管理テーブル141aを参照し、計算処理終了フラグ(down[bid])が"off"のブロックを1つ選択する。例えば計算ブロック選択部134aは、ブロックIDの値が小さいブロックから順番にブロックを選択する。このとき計算ブロック選択部134aは、選択対象のブロックIDが計算領域40内のブロック数に達した後は、未処理のブロックがまだ存在すれば、再度ブロックIDの小さい順に未処理のブロックを選択する。
 [ステップS32]計算ブロック選択部134aは、選択したブロックがのりしろ領域の送信領域に属するブロックか否かを判断する。具体的には計算ブロック選択部134aは、選択したブロックののりしろID(Blk[bid])を参照し、値が-1以外であれば、のりしろ領域内のブロックであると判断する。のりしろ領域内のブロックであれば、処理がステップS34に進められる。のりしろ領域内のブロックでなければ、処理がステップS33に進められる。
 [ステップS33]計算ブロック選択部134aは、のりしろ領域の送信領域に属するすべてのブロックを処理したか否かを判断する。具体的には計算ブロック選択部134aは、のりしろ管理テーブル142aを参照する。そして計算ブロック選択部134aは、すべてののりしろ領域について、ブロック数(halo[hid].blknum)と処理ブロック数(halo[hid].calcnum)とが一致している場合、すべての該当ブロックの処理が終了しているものと判断する。のりしろ領域の送信領域に属するすべてのブロックの処理が終了していれば、処理がステップS34に進められる。のりしろ領域の送信領域に属する未処理のブロックが存在すれば、処理がステップS31に進められる。
 [ステップS34]計算部134bは、ステップS31で選択されたブロック内の格子点における物理量を計算する。例えば計算部134bは、物理量記憶部144からシミュレーション時刻がステップ前の時刻の、格子点とその周囲の物理量を取得する。そして、計算部134bは、取得した物理量から現在のシミュレーション時刻における格子点の物理量を算出する。さらに計算部134bは、算出した物理量を、物理量記憶部144に書き込む。
 [ステップS35]計算部134bは、計算したブロックの計算処理終了フラグ(down[bid])を"on"に設定する。その後、ブロック計算処理が終了する。
 このように、のりしろ領域内の送信領域に属するブロックの計算を優先的に実行し、かつ1つのコアのみがのりしろ交換処理を行うようにしたため、複数のコア111~114が同時によって複数ののりしろ交換処理が同時並行して実行されることを防止できる。その結果、のりしろ交換のためのメモリ120へのアクセスが複数のコアで同時に発生することがなくなり、プロセッサ110とメモリ120との間のバスの空き待ちによる処理効率の低下を回避できる。
 ここで、計算領域内のすべてのブロックの物理量の計算終了後に複数のコアが同時にのりしろ交換処理を実行した場合と、第2の実施の形態で示した手順で処理を実行した場合との処理の時間の違いについて説明する。
 図16は、計算領域内のすべてのブロックの物理量の計算終了後に複数のコアが同時にのりしろ交換処理を実行した場合のコアの処理内容の推移を示す図である。図16の例では、2つのコアまでであれば同時にメモリアクセス可能なバス幅を有するメモリバスが用意されているものとする(メモリバス幅2)。また、1ブロック当たりのコアでの演算処理時間は1τであるものとする。
 ここで仮にメモリアクセスの競合が発生しなければ、4つのコアによるパッキング処理に伴うメモリアクセスに要する時間は1τであるものとする。実際には、4コアが同時にメモリアクセスを行うとメモリアクセスの競合が発生し、各コアによるパッキング処理のためのメモリアクセスに2τの時間がかかる。図中、各コアをコアIDで示し、各コアの処理内容をコアIDの下に「F」「M」の記号で示している。「F」は計算処理を示し、「M」はメモリアクセスを示す(図17、図21においても同様)。
 ここで計算領域内のすべてのブロックの物理量の計算終了後に4つののりしろ交換処理を同時に実行すると、各コア111~114から同時にメモリ120へのアクセスが発生する。するとメモリアクセスの競合が発生し、各コアの処理効率が低下する。図16の例では、本来1τで実行が終了できるのりしろデータのパッキングに、各コアが2τの時間を要している。その結果、4つのコアがパッキング処理に費やす時間は、8τとなる。パッキング処理を行ったコア数×処理時間をのべ時間とすると、のべ時間は32τとなる。
 図17は、第2の実施の形態における各コアの処理内容の推移を示す図である。図17の例では、のりしろ領域41内の送信領域41a、のりしろ領域42内の送信領域42a、のりしろ領域43内の送信領域43a、のりしろ領域44内の送信領域44a、のりしろ以外の領域の順で、各ブロックの物理量を計算している。この場合、のりしろ領域41の送信領域41aの各ブロックの計算が終了すると、コアID「3」のコア114によって、のりしろ領域41の送信領域41a内のデータのパッキングが行われる。この間、他のコア111~113は、のりしろ領域42の送信領域42a内のブロックの計算を行う。
 コア114がパッキング処理をしている間、他のコア111~113からメモリ120へのアクセスは発生しない。そのためコア114は、4τの時間でパッキング処理を終了できる。パッキング処理を終了したコア114は、のりしろ領域42の送信領域42aのブロックの計算を行う。
 その後も同様に、各のりしろ領域42~44の送信領域42a,43a,44aのブロックの物理量の計算が終了するごとに、コア114によるパッキングが1τの時間で行われる。そして、すべての送信領域41a,42a,43a,44aのパッキングが終了後に、のりしろ領域41~44以外の領域のブロックの物理量の計算が行われる。
 その結果、コアがパッキング処理に費やすのべ時間は、16τとなる。これを図16に示した結果と比較すると、パッキング処理に費やす時間が半分に短縮されていることがわかる。しかも、のりしろ領域の計算を先行して実行するため、全領域の計算終了時にはパッキング処理も終了しており、すぐに次の時間ステップの計算に移行することができる。
 すなわち、マルチコアで処理してデータパッキングを行う際、メモリアクセスが生じる。そのメモリアクセスが複数のコアによって同時に行われると、処理の効率化が図れない。そこで、第2の実施の形態では、ある1つの特定コアがデータのパッキング処理を実行し、他のコアは通常の計算処理を行うようにしている。
 すなわち、並列処理のオーバーヘッドであるデータパッキング処理について、データが2次キャッシュメモリから追い出されメモリアクセスが生じマルチコアを用いてスレッド並列を行ってもプロセッサの利用効率をあげられない処理がある。この処理について、全コアが同時にメモリにアクセスしメモリバスに圧迫を与えずにある特定コアのみがデータパッキング・アンパッキング処理を行うことによりメモリアクセスが平準化され、マルチコアの利用効率を上げることが可能となる。
 また第2の実施の形態では、のりしろ交換領域の計算処理が終了すると、他の領域の計算処理の終了を待たずに、データパッキング処理を特定のコアが開始する。すなわち、送信領域の計算が終了したのりしろ領域から順に、特定のコアがデータパッキングと通信処理を開始する。その間、特定コア以外のコアは通常の計算処理を行う。これにより、のりしろ交換処理をブロック内の物理量の計算と並行して実行でき、処理効率が向上する。
 さらに第2の実施の形態では、全空間をブロックに分割し、各のりしろ領域のブロックをのりしろ領域でないブロックと選別し、処理したのりしろ空間のブロックをカウントすることによってのりしろ空間の計算処理が終了したか否かが判別される。その後、のりしろ空間の計算が終了した場合、のりしろ交換コアは計算処理を中段し、のりしろ交換のためのデータパッキング、通信処理を開始する。そして、通信処理が、終了するとのりしろ交換コアが通常の計算処理を再開する。このように、1つののりしろ領域ののりしろ交換処理が終了すると、のりしろ交換を行ったコアがブロック内の物理量の計算にすぐに復帰することで、プロセッサの処理効率を向上させることができる。
 〔第3の実施の形態〕
 次に第3の実施の形態について説明する。第3の実施の形態は、パッキング処理を実行するコアを特定コアに限定しないことにより、特定のコアからのメモリアクセスを集中させずに分散化することを可能としたものである。なお第3の実施の形態に係るコンピュータシステムのハードウェア構成は、図7,図8に示した第2の実施の形態の構成と同様である。
 図18は、第3の実施の形態における物理シミュレーション時のプロセッサモジュール内での処理機能を示す図である。第3の実施の形態では、図18に示したプロセッサモジュール200と同様の機能を有する複数のプロセッサモジュールが、図7,8に示したプロセッサモジュール100,100a,・・・に代えてコンピュータ10内に実装される。
 プロセッサモジュール200では、コアごとのスレッド231~234が生成される。スレッド231は、計算ブロック選択部231a、計算部231b、およびのりしろ交換処理部231cを有する。計算ブロック選択部231aは、プロセッサモジュール200に割り当てられた計算領域の中から、スレッド231で計算するブロックを順次選択する。計算部231bは、計算ブロック選択部231aが選択したブロック内の物理量を計算する。のりしろ交換処理部231cは、他のプロセッサモジュールとの間でのりしろ交換を行う。
 スレッド231と同様に他のスレッド232,233,234も計算ブロック選択部232a,233a,234a、計算部232b,233b,234b、およびのりしろ交換処理部232c,233c,234cを有している。このように、第2の実施の形態と異なり、第3の実施の形態では、全てのスレッド231~234がのりしろ交換処理部232c,233c,234cを有する。
 また、プロセッサモジュール200は、情報の記憶機能として、ブロック情報記憶部241、のりしろ情報記憶部242、および物理量記憶部244を有している。ブロック情報記憶部241、および物理量記憶部244に格納される情報は、それぞれ図9に示した第1の実施の形態のブロック情報記憶部141、および物理量記憶部144と同様である。すなわちブロック情報記憶部241には、図11に示したブロック管理テーブル141aと処理ブロック数情報141bとが格納される。また、図9に示した第2の実施の形態と比較すると、第3の実施の形態ではのりしろ交換コア情報記憶部143が不要となっている。
 のりしろ情報記憶部242は、のりしろ領域の状態を示す情報を記憶する記憶領域である。例えばキャッシュメモリ115またはメモリ120の記憶領域の一部が、のりしろ情報記憶部242として使用される。
 図19は、第3の実施の形態におけるのりしろ情報記憶部のデータ構造例を示す図である。のりしろ情報記憶部242には、のりしろ管理テーブル242aが格納されている。のりしろ管理テーブル242aには、のりしろID、ブロック数、処理ブロック数、交換処理済フラグ、ブロックID、および最終計算ブロックIDの欄が設けられている。各欄の横方向に並べられた情報が互いに関連付けられ、のりしろ情報を示すレコードとなる。なお、のりしろ情報のレコードは、のりしろの数分登録される。のりしろID、ブロック数、処理ブロック数、交換処理済フラグ、およびブロックIDの各欄に設定される情報は、図12に示したのりしろ管理テーブル142aの同名の欄と同種の情報である。
 最終計算ブロックIDの欄には、のりしろ領域の最後に計算されたブロックのブロックID(最終計算ブロックID)が設定される。最終計算ブロックIDは、対応するのりしろ領域の送信領域内の全てのブロックの計算が終了したときに、そのブロックを計算したコアによって設定される。最終計算ブロックIDの変数名は"halo[hid].lastblock"である。
 次に第3の実施の形態に係る各コアによる計算領域内の物理量計算処理の手順について説明する。
 図20は、第3の実施の形態に係るコアによる計算領域内の物理量計算処理の手順を示すフローチャートである。以下、スレッド231を実行するコアによる処理として、図20に示す処理をステップ番号に沿って説明する。
 [ステップS41]計算ブロック選択部231aと計算部231bとが連係して、1つのブロック内の全格子点の物理量を計算する。この処理の詳細は、図15に示した第2の実施の形態のブロック計算処理と同様である。
 [ステップS42]計算部231bは、処理したブロック数をカウントアップする。具体的には、計算部231bは、処理ブロック数を示す変数"calcblknum"の値をインクリメントする。
 [ステップS43]計算部231bは、処理したブロックがのりしろ領域内の送信領域に属するブロックか否かを判断する。具体的には計算部231bは、ブロック情報記憶部241内のブロック管理テーブル141aにおける処理したブロックののりしろID(Blk[bid])を参照する。参照したのりしろID(変数"blk[bid]")の値が「-1」以外であれば、計算部231bは、処理したブロックがのりしろ領域の送信領域であると判断する。のりしろ領域の送信領域に属するブロックであれば、処理がステップS44に進められる。のりしろ領域の送信領域に属するブロックでなければ、処理がステップS47に進められる。
 [ステップS44]計算部231bは、処理したブロックが属するのりしろ領域の処理済ブロック数をカウントアップする。具体的には計算部231bは、ブロック管理テーブルにおける処理したブロックののりしろID(Blk[bid])を取得する。次に計算部231bは、取得したのりしろIDと同じのりしろID(hid)が設定されたレコードをのりしろ管理テーブル142aから検索する。そして計算部231bは、検索で合致したレコードの処理ブロック数(halo[hid].calcnum)の値をインクリメントする。
 [ステップS45]計算部231bは、ステップS41で計算したブロックが、のりしろ領域内の送信領域の最後のブロックか否かを判断する。具体的には、ステップS44のカウントアップ処理後の処理ブロック数(halo[hid].calcnum)が、対応するのりしろ領域のブロック数(halo[hid].blknum)と同数になった場合、ステップS41で計算したブロックが送信領域の最後のブロックであると判断する。送信領域の最後のブロックであれば、処理がステップS46に進められる。送信領域の最後のブロックでなければ、処理がステップS47に進められる。
 [ステップS46]計算部231bは、ステップS41で計算したブロックのブロックIDを、最終計算ブロックID(halo[hid].lastblock)としてのりしろ管理テーブル242aに設定する。
 [ステップS47]のりしろ交換処理部231cは、送信領域内のすべてのブロックの計算が終了したのりしろ領域があるか否かを判断する。具体的にはのりしろ交換処理部231cは、すべてののりしろ領域のブロック数(halo[hid].blknum)と処理済ブロック数(halo[hid].calcnum)とを比較し、一致した場合に計算が終了したと判断する。計算が終了したのりしろ領域がある場合、処理がステップS48に進められる。計算が終了したのりしろ領域がなければ、処理がステップS53に進められる。
 [ステップS48]のりしろ交換処理部231cは、計算が終了したのりしろ領域について、のりしろ交換済みか否かを判断する。具体的にはのりしろ交換処理部231cは、のりしろ管理テーブル242a内の、計算が終了したのりしろ領域のレコードにおける交換処理済フラグ(halo[hid].down)を参照する。該当する交換処理済フラグが"off"であれば、のりしろ交換が未終了であると判断する。のりしろ交換が終了していないのりしろ領域があれば、処理がステップS49に進められる。計算が終了した全てののりしろ領域についてのりしろ交換が終了していれば、処理がステップS53に進められる。
 [ステップS49]のりしろ交換処理部231cは、計算が終了したのりしろ領域ののりしろ交換を行うのりしろ交換コアを、所定のアルゴリズムで判定する。例えば、最後に計算したブロックのブロックID(最終計算ブロックID)をコア数で除算した余りによって、のりしろ交換コア判定を判定できる。
 具体的にはのりしろ交換処理部231cは、最終計算ブロックID(halo[hid].lastblock)をコア数(totalCoreNum)で除算し、余り(mod(halo[hid].lastblock, totalCoreNum))を求める。のりしろ交換処理部231cは、得られた余りの値と等しい値のコアIDを、該当するのりしろ領域ののりしろ交換コアID(halo[hid].Packcore)と判定する。
 [ステップS50]のりしろ交換処理部231cは、ステップS49で決定されたのりしろ交換コアが、自分自身となるか否かを判断する。具体的にはのりしろ交換処理部231cは、ステップS49で算出した余りの値と、のりしろ交換処理部231cを実行しているコアのコアID(コア#0)とが一致するかを判断する。一致した場合、自分がのりしろ交換コアであると判断する。自身がのりしろ交換コアである場合、処理がステップS51に進められる。自身はのりしろ交換コアではない場合、処理がステップS53に進められる。
 [ステップS51]のりしろ交換処理部231cは、計算が終了したのりしろ領域の送信領域に属するブロックの計算結果をパッキングする。具体的には、のりしろ交換処理部231cは、のりしろ管理テーブル242aを参照し、ステップS50で自身がのりしろ交換コアであると判断したのりしろ領域に属するブロックのブロックID(halo[hid].id[blocknum])を取得する。次にのりしろ交換処理部231cは、取得したブロックIDに対応するブロックの物理量を示すデータを物理量記憶部144から抽出し、メモリ120内の連続の記憶領域に格納する。
 [ステップS52]のりしろ交換処理部231cは、ステップS51でパッキングしたデータを、該当のりしろ領域を介して隣接する計算領域が割り当てられた他のプロセッサを有するモジュールに送信する。送信されたデータは、送信先のプロセッサモジュールにおけるのりしろ交換部によってアンパッキングされる。その後、のりしろ交換処理部231cは、パッキングおよび送信処理を行ったのりしろ領域の交換済フラグ(halo[hid].down)を"on"に変更する。
 [ステップS53]計算部231bは、計算領域内のすべてのブロックを処理したか否かを判断する。具体的には計算部231bは、処理ブロック数情報141bに示される処理ブロック数(calcblknum)が、計算領域内のブロック数に達した場合、すべてのブロックを処理したものと判断する。すべてのブロックの処理が終了していれば、計算処理を終了する。未処理のブロックがあれば、処理がステップS41に進められる。
 このように、第3の実施の形態では、のりしろ領域の送信領域内の最後に計算されたブロックのブロックIDをコア数で除算したときの余りに応じて、のりしろ交換コアが決定される。これによりのりしろ交換のパッキング処理を、ほぼ各コアで均等に行うことが可能である。また、のりしろ交換を行わないコアでは計算処理が続行される。
 図21は、第3の実施の形態における各コアの処理内容の推移を示す図である。図21の処理を図17に示した第2の実施の形態の処理と比較すると、第3の実施の形態ではデータパッキングを実行するコアが不定である点が異なっている。すなわち、各のりしろ領域内の送信領域に属するブロックのうち、最後に計算されたブロックのブロックIDに応じて、のりしろ交換コアが決定される。そのため、各コア111~114が、等しい確率でのりしろ交換コアに決定されることとなる。すなわち、パッキングを行うコアを特定のコアに固定せず、すべてのコアにほぼ均等にパッキング処理を実行させることができる。
 また、第3の実施の形態では、のりしろ領域41から順番に格子点の物理量の計算を行うことで、各のりしろ領域41~44の送信領域に属するブロックの計算が終了する時刻がずれる。そのため、同時刻に複数のデータパッキング処理が重複して発生することが防止されている。
 なお1つののりしろ領域のデータパッキング中に、他ののりしろ領域の送信領域の計算が終了した場合、先に実行されているデータパッキングが終了するまで、他ののりしろ領域のデータパッキング処理を先のばしすることができる。例えば、各コアのステータス情報としてデータパッキング処理中か否かをキャッシュメモリに格納しておく。各コアは、ステップS50でYESと判定した場合であっても、他のコアがデータパッキング中であれば、ステップS51,S52を実行せずにステップS53に処理を進める。この場合、他のコアによるデータパッキング終了後に、のりしろ交換コアによるブロック計算処理が終了すると処理がステップS51,S52に進められ、のりしろ交換が行われる。これにより、データパッキングが複数のコアで重複した時間帯に発生することを、確実に防止できる。
 〔その他の応用例〕
 なお図8に示したハードウェア構成では、1つのプロセッサモジュールに1つのプロセッサが実装されているが、1つのプロセッサモジュールに複数のプロセッサが実装される場合もある。この場合、1つのプロセッサモジュール内の各プロセッサに、計算領域が割り当てられ、プロセッサごとに計算領域内の格子点の物理量が計算される。そしてのりしろ交換は、異なるプロセッサモジュール内のプロセッサ間で行われると共に、同一プロセッサモジュール内のプロセッサ間でも行われる。同一プロセッサモジュール内の複数のプロセッサ間ののりしろ交換処理においても、上記第1~第3の実施の形態に示したような手順で処理を実行することで、複数のコアによる重複したメモリアクセスを低減し、処理効率を向上させることができる。
 また上記の処理機能は、コンピュータによって実現することができる。その場合、コンピュータが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD、DVD-RAM、CD-ROM/RWなどがある。光磁気記録媒体には、MO(Magneto-Optical disc)などがある。
 プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD-ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
 プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
 また、上記の処理機能の少なくとも一部を、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現することもできる。
 上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
 1,3a,3b,3c,3d プロセッサ
 1a,1b,・・・,1n コア
 1aa,1ba,・・・,1na 計算単位領域選択手段
 1ab,1bb,・・・,1nb 計算手段
 1nc 計算結果送信手段
 2 記憶装置
 2a,2b,・・・ 計算結果
 4 計算領域
 4a,4b,4c,4d 計算結果送信領域

Claims (10)

  1.  演算処理装置が計算を行う要素点の全体集合である計算領域が複数の計算単位領域に区切られ、少なくとも1つの前記計算単位領域を包含する計算結果送信領域が前記計算領域内に複数設けられており、前記計算領域内の計算を複数の演算処理部を有する演算処理装置で並列実行する並列計算装置であって、
     前記演算処理装置内の複数の前記演算処理部それぞれに設けられ、前記計算領域内の未計算の前記計算単位領域を順次選択する計算単位領域選択手段と、
     前記演算処理装置内の複数の前記演算処理部それぞれに設けられ、前記計算単位領域選択手段で選択された前記計算単位領域内の計算を実行し、複数の前記演算処理部それぞれからアクセス可能な記憶装置に計算結果を書き込む計算手段と、
     前記演算処理装置内の少なくとも1つの前記演算処理部に設けられ、前記計算結果送信領域に属する前記計算単位領域内の前記計算結果の前記記憶装置からの取得および送信処理を、複数の前記計算結果送信領域について異なる時間帯に実行する計算結果送信手段と、
     を有することを特徴とする並列計算装置。
  2.  前記計算結果送信手段は、複数の前記演算処理装置内の1つの前記演算処理部のみに設けられていることを特徴とする請求の範囲第1項記載の並列計算装置。
  3.  前記計算単位領域選択手段は、前記計算結果送信領域内の前記計算単位領域を優先的に選択することを特徴とする請求の範囲第1項記載の並列計算装置。
  4.  前記計算結果送信手段は、内包するすべての前記計算単位領域の計算が終了した前記計算結果送信領域から順に、前記計算結果の前記記憶装置からの取得および送信相手への送信処理を実行することを特徴とする請求の範囲第1項記載の並列計算装置。
  5.  前記計算結果送信手段は、内包するすべての前記計算単位領域の計算が終了した前記計算結果送信領域を検出すると、前記計算結果送信手段を有する前記演算処理部に前記計算手段の実行を中断させて、検出した前記計算結果送信領域内の前記計算結果の前記記憶装置からの取得および送信相手への送信処理を実行することを特徴とする請求の範囲第1項記載の並列計算装置。
  6.  前記計算結果送信手段は、検出した前記計算結果送信領域内の前記計算結果の前記記憶装置からの取得および送信相手への送信処理が終了すると、前記計算結果送信手段を有する前記演算処理部に前記計算手段の実行を再開させることを特徴とする請求の範囲第5項記載の並列計算装置。
  7.  前記計算結果送信手段は、複数の前記演算処理装置内の複数の前記演算処理部それぞれに設けられており、複数の前記計算結果送信手段それぞれが、前記計算結果送信領域内の前記計算結果の取得および送信処理を実行すべきか否かを所定のアルゴリズにより判断し、該当処理を実行すべきと判断した場合に、前記計算結果送信領域内の前記計算結果の取得および送信処理を実行することを特徴とする請求の範囲第1項記載の並列計算装置。
  8.  前記計算結果送信手段は、前記計算結果送信領域内の最後に計算された前記計算単位領域の識別番号を前記演算処理部数で除算し、余りの値と一致する識別番号が付与された前記演算処理部が前記計算結果送信領域内の前記計算結果の取得および送信処理を実行すべきであると判断することを特徴とする請求の範囲第1項記載の並列計算装置。
  9.  演算処理装置が計算を行う要素点の全体集合である計算領域が複数の計算単位領域に区切られ、少なくとも1つの前記計算単位領域を包含する計算結果送信領域が前記計算領域内に複数設けられており、前記計算領域内の計算を複数の演算処理部を有する演算処理装置に並列実行させる並列計算方法であって、
     前記演算処理装置内の複数の前記演算処理部が、前記計算領域内の未計算の前記計算単位領域を順次選択し、
     前記演算処理装置内の複数の前記演算処理部が、選択された前記計算単位領域内の計算を実行し、複数の前記演算処理部それぞれからアクセス可能な記憶装置に計算結果を書き込み、
     前記演算処理装置内の少なくとも1つの前記演算処理部が、前記計算結果送信領域に属する前記計算単位領域内の前記計算結果の前記記憶装置からの取得および送信処理を、複数の前記計算結果送信領域について異なる時間帯に実行する、
     ことを特徴とする並列計算方法。
  10.  演算処理装置が計算を行う要素点の全体集合である計算領域が複数の計算単位領域に区切られ、少なくとも1つの前記計算単位領域を包含する計算結果送信領域が前記計算領域内に複数設けられており、前記計算領域内の計算を複数の演算処理部を有する演算処理装置に並列実行させる並列計算プログラムであって、
     前記演算処理装置に、
     前記演算処理装置内の複数の前記演算処理部を用いて、前記計算領域内の未計算の前記計算単位領域を順次選択し、
     前記演算処理装置内の複数の前記演算処理部を用いて、選択された前記計算単位領域内の計算を実行し、複数の前記演算処理部それぞれからアクセス可能な記憶装置に計算結果を書き込み、
     前記演算処理装置内の少なくとも1つの前記演算処理部を用いて、前記計算結果送信領域に属する前記計算単位領域内の前記計算結果の前記記憶装置からの取得および送信処理を、複数の前記計算結果送信領域について異なる時間帯に実行する、
     処理を実行させることを特徴とする並列計算プログラム。
PCT/JP2009/069443 2009-11-16 2009-11-16 並列計算装置、並列計算方法、および並列計算プログラム WO2011058657A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP09851287A EP2503462A4 (en) 2009-11-16 2009-11-16 PARALLEL CALCULATION DEVICE, METHOD, AND PROGRAM
PCT/JP2009/069443 WO2011058657A1 (ja) 2009-11-16 2009-11-16 並列計算装置、並列計算方法、および並列計算プログラム
JP2011540378A JP5321691B2 (ja) 2009-11-16 2009-11-16 並列計算装置、並列計算方法、および並列計算プログラム
US13/459,360 US8549261B2 (en) 2009-11-16 2012-04-30 Parallel computing apparatus and parallel computing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/069443 WO2011058657A1 (ja) 2009-11-16 2009-11-16 並列計算装置、並列計算方法、および並列計算プログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/459,360 Continuation US8549261B2 (en) 2009-11-16 2012-04-30 Parallel computing apparatus and parallel computing method

Publications (1)

Publication Number Publication Date
WO2011058657A1 true WO2011058657A1 (ja) 2011-05-19

Family

ID=43991336

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2009/069443 WO2011058657A1 (ja) 2009-11-16 2009-11-16 並列計算装置、並列計算方法、および並列計算プログラム

Country Status (4)

Country Link
US (1) US8549261B2 (ja)
EP (1) EP2503462A4 (ja)
JP (1) JP5321691B2 (ja)
WO (1) WO2011058657A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014191594A (ja) * 2013-03-27 2014-10-06 Nec Corp 分散処理システム

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2566977C1 (ru) 2011-09-28 2015-10-27 Тойота Дзидося Кабусики Кайся Устройство управления двигателем
WO2013088494A1 (ja) * 2011-12-12 2013-06-20 トヨタ自動車株式会社 エンジン制御装置
US9569591B2 (en) * 2012-05-31 2017-02-14 Hill-Rom Services, Inc. Configurable user interface systems for hospital bed
CN103500123B (zh) * 2013-10-12 2016-09-21 浙江大学 异构环境中并行计算调度方法
US20230236879A1 (en) * 2022-01-27 2023-07-27 International Business Machines Corporation Controling job packing processing unit cores for gpu sharing

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09265403A (ja) * 1996-03-28 1997-10-07 Hitachi Ltd データ再分割評価方法
JPH10154136A (ja) 1995-12-25 1998-06-09 Hitachi Ltd シミュレーションプログラムの実行支援方法およびプログラム割り当て方法
JP2002123497A (ja) 2000-10-16 2002-04-26 Mitsubishi Heavy Ind Ltd 並列計算装置および解析方法、ならびに解析プログラムを記録した記録媒体
JP2002358293A (ja) * 2001-05-31 2002-12-13 Nec Corp 実行時負荷分散システム及び実行時負荷分散方法並びにプログラム
JP2007219816A (ja) * 2006-02-16 2007-08-30 Handotai Rikougaku Kenkyu Center:Kk マルチプロセッサシステム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5034882A (en) * 1987-11-10 1991-07-23 Echelon Corporation Multiprocessor intelligent cell for a network which provides sensing, bidirectional communications and control
US5179669A (en) * 1988-08-22 1993-01-12 At&T Bell Laboratories Multiprocessor interconnection and access arbitration arrangement
US5301333A (en) * 1990-06-14 1994-04-05 Bell Communications Research, Inc. Tree structured variable priority arbitration implementing a round-robin scheduling policy
US5963731A (en) * 1995-12-25 1999-10-05 Hitachi, Ltd. Method of assisting execution of plural simulation programs for coupled simulation
US5826065A (en) * 1997-01-13 1998-10-20 International Business Machines Corporation Software architecture for stochastic simulation of non-homogeneous systems
JP3678036B2 (ja) 1999-01-11 2005-08-03 株式会社日立製作所 並列計算機システムにおけるモニタデータ収集方法
US7124071B2 (en) * 2002-04-18 2006-10-17 International Business Machines Corporation Partitioning a model into a plurality of independent partitions to be processed within a distributed environment
WO2005020292A2 (en) * 2003-08-26 2005-03-03 Nusym Technology, Inc. Methods and systems for improved integrated circuit functional simulation
US7941585B2 (en) * 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
US20060140007A1 (en) * 2004-12-29 2006-06-29 Raul-Adrian Cernea Non-volatile memory and method with shared processing for an aggregate of read/write circuits
JP3870970B2 (ja) * 2005-03-15 2007-01-24 セイコーエプソン株式会社 プロセッサ制御装置
US7630875B2 (en) * 2005-06-23 2009-12-08 Cpu Technology, Inc. Automatic time warp for electronic system simulation
WO2007037006A1 (ja) * 2005-09-29 2007-04-05 Fujitsu Limited マルチコアプロセッサ
US7404041B2 (en) * 2006-02-10 2008-07-22 International Business Machines Corporation Low complexity speculative multithreading system based on unmodified microprocessor core
US7885112B2 (en) * 2007-09-07 2011-02-08 Sandisk Corporation Nonvolatile memory and method for on-chip pseudo-randomization of data within a page and between pages

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10154136A (ja) 1995-12-25 1998-06-09 Hitachi Ltd シミュレーションプログラムの実行支援方法およびプログラム割り当て方法
JPH09265403A (ja) * 1996-03-28 1997-10-07 Hitachi Ltd データ再分割評価方法
JP2002123497A (ja) 2000-10-16 2002-04-26 Mitsubishi Heavy Ind Ltd 並列計算装置および解析方法、ならびに解析プログラムを記録した記録媒体
JP2002358293A (ja) * 2001-05-31 2002-12-13 Nec Corp 実行時負荷分散システム及び実行時負荷分散方法並びにプログラム
JP2007219816A (ja) * 2006-02-16 2007-08-30 Handotai Rikougaku Kenkyu Center:Kk マルチプロセッサシステム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP2503462A4

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014191594A (ja) * 2013-03-27 2014-10-06 Nec Corp 分散処理システム

Also Published As

Publication number Publication date
US20120216017A1 (en) 2012-08-23
JP5321691B2 (ja) 2013-10-23
US8549261B2 (en) 2013-10-01
JPWO2011058657A1 (ja) 2013-03-28
EP2503462A4 (en) 2012-10-31
EP2503462A1 (en) 2012-09-26

Similar Documents

Publication Publication Date Title
JP5321691B2 (ja) 並列計算装置、並列計算方法、および並列計算プログラム
Bisson et al. Parallel distributed breadth first search on the Kepler architecture
US20200090051A1 (en) Optimization problem operation method and apparatus
EP4283475A2 (en) Moving data in a memory and command for memory control
Wang et al. Data placement and task scheduling optimization for data intensive scientific workflow in multiple data centers environment
Kaczmarski B+-tree optimized for GPGPU
Azad et al. Computing maximum cardinality matchings in parallel on bipartite graphs via tree-grafting
CN113313247A (zh) 基于数据流架构的稀疏神经网络的运算方法
CN111429974A (zh) 超级计算机平台上的分子动力学模拟短程力并行优化方法
Sun et al. Efficient gpu-accelerated subgraph matching
Peng et al. FA-Stack: A fast array-based stack with wait-free progress guarantee
US20230334777A1 (en) Formation of bounding volume hierarchies
US11809733B2 (en) Systems and methods for object migration in storage devices
CN112765088A (zh) 利用数据标签提高多计算单元平台上数据共享的方法
CN105573834B (zh) 一种基于异构平台的高维词汇树构建方法
JP6666548B2 (ja) 並列計算機、fft演算プログラムおよびfft演算方法
JP4845149B2 (ja) データを管理する管理装置、管理プログラム、および管理方法
CN112100446B (zh) 搜索方法、可读存储介质和电子设备
CN110059378A (zh) 一种基于GPU并行计算的自动制造系统Petri网状态生成方法
US11699260B2 (en) Coherency gathering for ray tracing
CN115827170B (zh) 基于离散事件的计算机体系结构的并行仿真方法及装置
Li et al. The high performance computing applications for bioinformatics research
Li et al. A new software cache structure on Sunway TaihuLight
Liu et al. L-FNNG: Accelerating Large-Scale KNN Graph Construction on CPU-FPGA Heterogeneous Platform
CN113360192A (zh) 热缓存识别方法、装置、存储介质及电子设备

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: 09851287

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2011540378

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 2009851287

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE