Nothing Special   »   [go: up one dir, main page]

WO2012023175A1 - 並列処理制御プログラム、情報処理装置、および並列処理制御方法 - Google Patents

並列処理制御プログラム、情報処理装置、および並列処理制御方法 Download PDF

Info

Publication number
WO2012023175A1
WO2012023175A1 PCT/JP2010/063871 JP2010063871W WO2012023175A1 WO 2012023175 A1 WO2012023175 A1 WO 2012023175A1 JP 2010063871 W JP2010063871 W JP 2010063871W WO 2012023175 A1 WO2012023175 A1 WO 2012023175A1
Authority
WO
WIPO (PCT)
Prior art keywords
execution
processor
parallel
parallel processing
executed
Prior art date
Application number
PCT/JP2010/063871
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 JP2012529425A priority Critical patent/JPWO2012023175A1/ja
Priority to PCT/JP2010/063871 priority patent/WO2012023175A1/ja
Publication of WO2012023175A1 publication Critical patent/WO2012023175A1/ja
Priority to US13/767,564 priority patent/US20130159397A1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Definitions

  • the present invention relates to a parallel processing control program, an information processing apparatus, and a parallel processing control method for controlling parallel processing.
  • Thin client processing is a mechanism in which a terminal device used by a user has an input / output mechanism, and a server connected via a network performs actual processing.
  • Server cooperation is a technique in which a terminal device and a server cooperate to provide a specific service.
  • a technique for performing thin client processing for example, a technique is disclosed in which a terminal device notifies a server of a software activation request in accordance with a load on the terminal device (see, for example, Patent Document 1 below).
  • a technique for performing another thin client process a technique in which a server starts virtual machine software in response to a software start request from a terminal device is disclosed (for example, see Patent Document 2 below).
  • the communication quality of the network varies depending on the location of the terminal device.
  • a technique for determining communication quality of a network for example, a technique has been disclosed in which an index of communication quality during normal operation in a network communication network is held to determine whether a line is operating normally (for example, , See Patent Document 3 below).
  • the thin client process and the server cooperation are executed in any form of executing all processes in the terminal device or offloading to the server.
  • all processes are executed in these forms, particularly the terminal device, there is a problem that the performance of the terminal device becomes a bottleneck.
  • Patent Document 1 or Patent Document 2 and Patent Document 3 depending on the communication quality, for example, when a wide band can be acquired, different software is distributed and executed between the terminal device and the server. Can do.
  • the above-described technique has a problem that it is difficult to process one piece of software in parallel.
  • the technique according to Patent Document 4 requires a large resource called a database, which has a problem of increasing costs.
  • An object of the present invention is to provide a parallel processing control program, an information processing apparatus, and a parallel processing control method capable of executing appropriate parallel processing according to a band in order to solve the above-described problems caused by the related art.
  • the disclosed parallel processing control program measures the bandwidth between the connection source device and the connection destination device, and in the connection source processor and the connection destination device in the connection source device.
  • the execution time of each of a plurality of execution objects having different parallel processing granularity that can be processed in parallel by the connection destination processor is calculated based on the measured bandwidth, and based on the calculated length of each execution time.
  • the execution object to be executed is selected from the plurality of execution objects, and the selected execution object to be executed is set in an executable state in cooperation with the connection source processor and the connection destination processor.
  • the parallel processing control program According to the parallel processing control program, the information processing apparatus, and the parallel processing control method, it is possible to execute appropriate parallel processing according to the bandwidth and improve the processing performance.
  • FIG. 1 is a block diagram showing a group of devices included in a parallel processing control system 100 according to a first embodiment.
  • FIG. 3 is a block diagram showing hardware of the terminal device 103 according to the first embodiment.
  • 3 is an explanatory diagram showing software of the parallel processing control system 100.
  • FIG. It is explanatory drawing regarding the execution state and execution time of parallel processing. It is explanatory drawing which showed the processing performance regarding the ratio of parallel processing, and the number of CPUs.
  • 2 is a block diagram illustrating functions of a parallel processing control system 100.
  • FIG. 1 is an explanatory diagram showing an overview at the time of designing a parallel processing control system 100.
  • FIG. It is explanatory drawing which shows the specific example of the execution object of each granularity.
  • FIG. 10 is an explanatory diagram illustrating an execution state of the parallel processing control system 100 in the multi-core processor system according to the third embodiment. It is a flowchart which shows the start processing of the parallel processing by the scheduler 302. 7 is a flowchart showing parallel processing control processing in a load balancing process by a scheduler 302. It is a flowchart which shows a data protection process. It is a flowchart which shows a virtual memory setting process.
  • FIG. 1 is a block diagram of an apparatus group included in the parallel processing control system 100 according to the first embodiment.
  • the parallel processing control system 100 includes an offload server 101, a base station 102, and a terminal device 103.
  • the offload server 101 and the base station 102 are connected via a network 104, and the base station 102 and the terminal device 103 are connected via a wireless communication 105.
  • the offload server 101 is a device that executes the processing of the terminal device 103 instead.
  • the offload server 101 has an environment in which the terminal device 103 can be operated in a pseudo manner, and executes the processing of the terminal device 103 instead in the above-described environment.
  • Software such as the environment will be described later with reference to FIG.
  • the base station 102 is a device that performs wireless communication with the terminal device 103 and relays communication and communication with other terminals. There are a plurality of base stations 102, and a plurality of base stations 102 and terminal devices 103 form a mobile phone network. Further, the base station 102 relays communication between the terminal device 103 and the offload server 101 through the network 104.
  • the base station 102 transmits data received from the terminal device 103 through the wireless communication 105 to the offload server 101 via the network 104.
  • the communication line from the terminal device 103 to the offload server 101 is an uplink.
  • the base station 102 transmits packet data received from the offload server 101 through the wireless communication 105 to the terminal device 103 through the wireless communication 105.
  • a communication line from the offload server 101 to the terminal device 103 is a downlink.
  • the terminal device 103 is a device used for a user to use the parallel processing control system 100. Specifically, the terminal device 103 has a user interface function and receives input / output from the user. For example, when the parallel processing control system 100 provides a web mail service, the offload server 101 performs mail processing, and the terminal device 103 executes a web browser.
  • FIG. 2 is a block diagram of hardware of the terminal device 103 according to the first embodiment.
  • the terminal device 103 includes a CPU 201, a ROM (Read-Only Memory) 202, and a RAM (Random Access Memory) 203.
  • the terminal device 103 includes a flash ROM 204, a flash ROM controller 205, and a flash ROM 206.
  • the terminal device 103 includes a display 207, an I / F (Interface) 208, and a keyboard 209 as input / output devices for a user and other devices. Each unit is connected by a bus 210.
  • the CPU 201 governs overall control of the terminal device 103.
  • the ROM 202 stores a program such as a boot program.
  • the RAM 203 is used as a work area for the CPU 201.
  • the flash ROM 204 stores system software such as an OS (Operating System), application software, and the like. For example, when the OS is updated, the terminal device 103 receives the new OS through the I / F 208 and updates the old OS stored in the flash ROM 204 to the received new OS.
  • OS Operating System
  • the flash ROM controller 205 controls reading / writing of data with respect to the flash ROM 206 according to the control of the CPU 201.
  • the flash ROM 206 stores data written under the control of the flash ROM controller 205. Specific examples of the data include image data and video data acquired by the user using the terminal device 103 through the I / F 208.
  • As the flash ROM 206 for example, a memory card, an SD card, or the like can be adopted.
  • the display 207 displays data such as a document, an image, and function information as well as a cursor, an icon, or a tool box.
  • a TFT liquid crystal display can be adopted.
  • the I / F 208 is connected to the base station 102 via the wireless communication 105.
  • the I / F 208 is connected to the network 104 such as the Internet via the base station 102 and is connected to the offload server 101 and the like via the network 104.
  • the I / F 208 controls an internal interface with the wireless communication 105 and controls data input / output from an external device.
  • a modem or a LAN adapter can be adopted as the I / F 208.
  • the keyboard 209 has keys for inputting numbers and various instructions, and inputs data.
  • the keyboard 209 may be a touch panel type input pad or a numeric keypad.
  • the hardware of the offload server 101 includes a CPU, a ROM, and a RAM.
  • the offload server 101 may have a magnetic disk drive or an optical disk drive as a storage device.
  • the magnetic disk drive and optical disk drive store and read data under the control of the CPU of the offload server 101.
  • FIG. 3 is an explanatory diagram showing software of the parallel processing control system 100.
  • the software illustrated in FIG. 3 includes a terminal OS 301, a scheduler 302, a bandwidth monitoring unit 303, a process 304, a thread 305_0 to a thread 305_3, a server OS 306, a terminal emulator 307, and a virtual memory monitoring feedback 308.
  • the threads 305_0 to 305_3 are threads in the process 304.
  • a real memory 309 and a virtual memory 310 are secured in the RAM 203, the RAM of the offload server 101, and the like as storage areas accessed by the software.
  • the terminal OS 301 to process 304 and the thread 305_0 are executed by the terminal device 103, and the process 304, thread 305_1 to thread 305_3, and the server OS 306 to the virtual memory monitoring feedback 308 are executed by the offload server 101.
  • the terminal OS 301 is software that controls the terminal device 103. Specifically, the terminal OS 301 provides a library used by the thread 305_0 and the like. In addition, the terminal OS 301 manages memories such as the ROM 202 and the RAM 203.
  • the scheduler 302 is one of the functions provided by the terminal OS 301, and is software that determines a thread to be assigned to the CPU 201 based on the priority set for the thread or process. When the predetermined time comes, the scheduler 302 assigns the thread for which dispatch has been determined to the CPU 201. In addition, when there is a plurality of execution objects that can perform parallel processing and have different granularity of parallel processing, the scheduler 302 according to the first embodiment selects and executes the optimal execution object to generate a process 304. The granularity of parallel processing will be described in detail with reference to FIG.
  • the bandwidth monitoring unit 303 is software that monitors the bandwidth of the network 104 and the wireless communication 105. Specifically, the bandwidth monitoring unit 303 issues a Ping, measures the downlink and uplink speeds, and notifies the scheduler 302 when there is a change.
  • the bandwidth monitoring unit 303 may determine that a change has occurred when the bandwidth change from the previous time is equal to or greater than a certain threshold.
  • the bandwidth monitoring unit 303 may determine that there has been a change. Specifically, when the widest band is 100 [Mbps], the band is divided into three, 100 to 67 [Mbps] is a wide band, 67 to 33 [Mbps] is a middle band, and 33 to 0 [Mbps] is a narrow band. And The bandwidth monitoring unit 303 may determine that there has been a change when the divided block is moved, such as a wide band ⁇ middle band and a middle band ⁇ narrow band.
  • the process 304 is generated when the CPU 201 executes the execution object read into the RAM 203 or the like. Inside the process 304, there are a thread 305_0 to a thread 305_3, and the thread 305_0 to the thread 305_3 are executing parallel processing. In addition, the process 304 can perform load distribution.
  • the terminal device 103 transmits the execution object to the offload server 101 through the wireless communication 105 and the network 104, and the offload server 101 generates threads 305_1 to 305_3.
  • the process 304 is executed in a state where the load is distributed between the terminal device 103 and the offload server 101.
  • a process capable of load balancing is referred to as a load balancing process.
  • the thread 305_0 being executed in the terminal device 103 accesses the real memory 309.
  • the threads 305_1 to 305_3 being executed in the offload server 101 access the virtual memory 310.
  • the server OS 306 is software that controls the offload server 101. Specifically, the server OS 306 provides a library used by the threads 305_1 to 305_3 and the like. The server OS 306 manages memory such as ROM and RAM of the offload server 101.
  • the terminal emulator 307 is software that imitates the terminal device 103, and is software that enables an execution object that can be executed by the terminal device 103 to be executed by the offload server 101. Specifically, the terminal emulator 307 replaces an instruction to the CPU 201 or an instruction to the library of the terminal OS 301 described in the execution object with an instruction to the CPU of the offload server 101 or an instruction to the library of the server OS 306. Execute.
  • the offload server 101 executes the threads 305_1 to 305_3 on the terminal emulator 307.
  • the parallel processing control system 100 shows an aspect of a multi-core processor system in which the CPU 201 is assumed as a master CPU and the offload server 101 is assumed as a virtual CPU 311 as a slave CPU.
  • the virtual memory monitoring feedback 308 is software that writes data written in the virtual memory 310 back to the real memory 309. Specifically, the virtual memory monitoring feedback 308 monitors access to the virtual memory 310 and writes the data written in the virtual memory 310 back to the real memory 309 through the downlink.
  • the virtual memory 310 is an area for storing the same address as that of the real memory 309, and the virtual memory monitoring feedback 308 performs the above-described rewriting process at a predetermined timing. The determined timing differs depending on the granularity of the parallel processing of the process 304. The write back timing will be described later with reference to FIGS.
  • FIG. 4 is an explanatory diagram regarding the execution state and execution time of parallel processing.
  • the explanatory diagram denoted by reference numeral 401 shows the execution state of the process 304 in a state where the CPU 201 is the master CPU and the virtual CPU 311 is the slave CPU by the terminal emulator 307 of the offload server 101.
  • the explanatory diagram denoted by reference numeral 402 shows the execution time when the process 304 is executed in the execution state denoted by reference numeral 401.
  • the CPU 201 uses a middleware / library or the like to execute a thread 305_0 included in a process 304 serving as a load distribution process. Further, the CPU 201 notifies the virtual CPU 311 of the thread 305_1 included in the process 304 from the kernel of the terminal OS 301 by inter-processor communication.
  • the notified content may be a memory dump of the thread context of the thread 305_1, or may be notified of a start address, argument information, stack memory size, and the like required to execute the thread 305_1.
  • the virtual CPU 311 allocates the thread 305_1 as a nano thread by the slave kernel and the scheduler 403.
  • the execution time of the process 304 is shown.
  • the CPU 201 starts executing the process 304.
  • the CPU 201 executes processing that requires sequential processing and cannot perform parallel processing.
  • the CPU 201 notifies the virtual CPU 311 of information required to execute the parallel processing from time t1 to time t2 through the above-described inter-processor communication. From time t2 to time t3, the CPU 201 and the virtual CPU 311 execute the processes 304 in parallel.
  • the virtual CPU 311 When the parallel execution ends at time t3, the virtual CPU 311 notifies the CPU 201 of the result of the executed parallel processing from time t3 to time t4 by inter-processor communication. From time t4 to time t5, the CPU 201 executes sequential processing again and ends the process 304. As a result, the time from the time t0 to the time t5, which is the execution time T (N) of the process 304, can be obtained by the following equation (1).
  • N is the number of CPUs that can execute the load distribution process
  • T (N) is the execution time of the load distribution process when the number of CPUs is N
  • S is the rate of sequential processing in the load distribution process.
  • represents the communication time associated with parallel processing.
  • N is referred to as the number of CPUs
  • S is a ratio of sequential processing
  • is referred to as communication time. If the sequential processing ratio S is used, the parallel processing ratio is 100-S [%].
  • FIG. 5 is an explanatory diagram showing the processing performance related to the ratio of parallel processing and the number of CPUs.
  • FIG. 6 is a block diagram illustrating functions of the parallel processing control system 100.
  • the parallel processing control system 100 includes a measurement unit 602, a calculation unit 603, a selection unit 604, a setting unit 605, a detection unit 606, a notification unit 607, a storage unit 608, an execution unit 609, and an execution unit 610. And including.
  • the functions (measurement unit 602 to execution unit 610) serving as the control unit are realized by the CPU 201 executing the program stored in the storage device.
  • the storage device is, for example, the ROM 202, the RAM 203, the flash ROM 204, the flash ROM 206, etc. shown in FIG.
  • the function may be realized by being executed by another CPU via the I / F 208.
  • the terminal device 103 can access an execution object 601 stored in a storage device such as the ROM 202 or the RAM 203.
  • the measurement unit 602 to the execution unit 609 are functions of the terminal device 103 having the CPU 201 serving as the master CPU
  • the execution unit 610 is the function of the offload server 101 having the virtual CPU 311 serving as the slave CPU. It becomes a function.
  • the measuring unit 602 has a function of measuring the bandwidth between the connection source device and the connection destination device. For example, the measurement unit 602 measures a band ⁇ between the terminal device 103 that is a connection source device and the offload server 101 that is a connection destination device. Specifically, the measurement unit 602 transmits Ping to the offload server 101, and measures the downlink and uplink according to the response time of Ping.
  • the measurement unit 602 is a partial function of the bandwidth monitoring unit 303.
  • the extracted data is stored in a storage area such as a register of the CPU 201, a cache memory, or the RAM 203.
  • the calculation unit 603 uses the measurement unit 602 to calculate the execution time of each of a plurality of execution objects that can be processed in parallel by the connection source processor in the connection source device and the connection destination processor in the connection destination device and have different granularity of parallel processing. It has a function to calculate based on the measured bandwidth.
  • the granularity of parallel processing indicates the amount of processing divided when specific processing is executed in parallel. The finer the particle size, the smaller the divided processing amount, and the coarser the particle size, the larger the divided processing amount. For example, as parallel processing with fine granularity, there is parallel processing in units of statements, and as parallel processing with coarse granularity, there are parallel processing in units of threads, units of functions, and the like. In addition, as parallel processing with medium granularity, there is repeated parallel processing using a loop.
  • the calculation unit 603 calculates the execution time of each of a plurality of execution objects that can be processed in parallel by the CPU 201 and the virtual CPU 311 and have different granularity of parallel processing based on the band ⁇ .
  • the calculation unit 603 calculates the execution time by adding a value obtained by dividing the communication amount, which is the overhead of parallel processing, by the bandwidth ⁇ to the processing time of parallel processing.
  • the calculation unit 603 sets a specific threshold ⁇ 0, and when the band ⁇ falls below the threshold ⁇ 0, the communication amount is reduced in the processing time of the parallel processing.
  • the execution time may be calculated by adding the value divided by the band ⁇ .
  • the calculation unit 603 first calculates the communication time based on the bandwidth and the communication amount required for parallel processing. Subsequently, the calculation unit 603 calculates the processing time for parallel execution based on the processing time when the parallel processing is sequentially executed and the ratio of the sequential processing among the parallel processing and the maximum number of divisions that can be executed in parallel processing. Calculate for each execution object. Finally, the calculation unit 603 may calculate the execution time of each of the plurality of execution objects by adding the communication time and the processing time for parallel execution.
  • the ratio of sequential processing in parallel processing is the ratio of specific processing excluding the part that can be executed in parallel.
  • the calculation unit 603 may calculate using a ratio of specific processing that can be executed in parallel. In the parallel processing control system 100 according to the first embodiment, the calculation is performed using the sequential processing ratio S. Further, the calculated communication time coincides with the communication time ⁇ that is the second term in the equation (1), and the calculated processing time for the parallel execution is the first term in the equation (1). It matches (S + (1-S) / N) ⁇ T (1).
  • the calculation unit 603 calculates an execution object having a coarse parallel processing granularity.
  • the bandwidth ⁇ is 10 [Mbps] and the communication amount for parallel processing is 76896 [bits]
  • the processing time for sequential execution is 7.5 [milliseconds]
  • the sequential processing rate S is 0.01 [%]
  • the maximum number of divisions N_Max that can be executed in parallel is
  • the unit 603 calculates the processing time for parallel execution as 3.8 [milliseconds].
  • the calculation unit 603 calculates execution times of execution objects related to other granularities.
  • the calculation unit 603 first calculates the processing time for parallel execution based on the processing time when sequentially executing, the ratio of sequential processing, and the number of parallel executions equal to or less than the maximum number of divisions. Subsequently, the calculation unit 603 may calculate the execution time for each number of parallel executions of the plurality of execution objects by adding the communication time and the processing time in the case of parallel execution.
  • the calculation unit 603 sets the execution time when the number of parallel executions is 1 to 7.5 [milliseconds] if the maximum number of divisions is 2.
  • the execution time is calculated as 6.8 [milliseconds] from the equation (1).
  • the calculated result is stored in a storage area such as a register of the CPU 201, a cache memory, or the RAM 203.
  • the selection unit 604 has a function of selecting an execution object to be executed from among a plurality of execution objects based on the length of each execution time calculated by the calculation unit 603. Further, the selection unit 604 may select the execution object that is the shortest of the execution time lengths as the execution object to be executed. For example, if the execution time of the calculated execution object is 7.5 [milliseconds] and 6.8 [milliseconds], the selection unit 604 performs the shortest execution object of 6.8 [milliseconds]. May be selected.
  • the selection unit 604 may select by adding the switching overhead. For example, it is assumed that the execution time of the currently selected execution object and another execution object are very close and the execution time of the other execution object is the shortest. When the overhead time for switching is added to the execution time of another execution object and the execution time of the execution object being selected exceeds the execution time, the selection unit 604 selects the execution time of the execution object being selected. Also good.
  • the execution object having the coarsest granularity as the execution object to be executed May be selected.
  • the selection unit 604 selects a coarse-grained execution object when detected. Note that the selected result is stored in a storage area such as a register of the CPU 201, a cache memory, or the RAM 203.
  • the setting unit 605 has a function of setting the execution target execution object selected by the selection unit 604 to an executable state in cooperation with the connection source processor and the connection destination processor.
  • the cooperation indicates that the connection source processor and the connection destination processor move in cooperation.
  • the setting unit 605 sets the CPU 201 and the virtual CPU 311 in a state in which the coarse-grained execution object can be executed.
  • the CPU 201 transfers the coarse-grained execution object data to be executed to the virtual CPU 311 so that the coarse-grained execution object can be executed.
  • the CPU 201 activates the terminal emulator 307 so that the coarse-grained execution object can be executed.
  • the setting unit 605 includes a processor group that includes a specific connection source processor and a specific connection destination processor among the processor groups of the connection source device and the connection destination device as the execution object to be executed and has the maximum number of divisions. You may set it in a state where it can be executed in cooperation.
  • the specific connection source processor is a processor that becomes a master when the terminal device 103 has a multi-core
  • the specific connection destination processor is a case where the offload server 101 has a multi-core.
  • it is the master processor.
  • the processor serving as a master of the offload server 101 is, for example, a processor that responds to Ping among a plurality of processors with respect to Ping by the measurement unit 602 of the terminal device 103.
  • the setting unit 605 sets the execution object to be executed in cooperation with the CPU 201 of the terminal device 103 and the three CPUs including the master CPU of the offload server 101 in total.
  • the setting unit 605 can execute the execution object to be executed in cooperation with the processor group that is the number of parallel executions in the execution object to be executed among the processor groups of the connection source device and the connection destination device. May be set.
  • the processor group includes a specific connection source processor and a specific connection destination processor.
  • the setting unit 605 sets the execution object to be executed in an executable state in cooperation with the CPU 201 of the terminal device 103 and the two CPUs including the master CPU of the offload server 101 in total.
  • the detection unit 606 has a function of detecting that a new execution target execution object having a coarser granularity than the execution target execution object is selected by the selection unit 604. For example, the detection unit 606 changes from a fine-grained execution object having a fine parallel processing granularity to a medium-grained execution object having a medium parallel processing granularity, or changed from a medium-grained execution object to a coarse-grained execution object. This is the case.
  • the detection unit 606 may detect a state where the bandwidth is reduced when an execution object with the coarsest granularity is selected as the execution object to be executed. Specifically, the detection unit 606 detects a state in which the band ⁇ is reduced when the coarse-grained execution object is selected. In addition, when the band ⁇ is reduced, an average value is taken every predetermined time, and the detection unit 606 may detect that the band is reduced when the average value is lower than the previous average band. Or when it falls below a specific threshold value, the detection unit 606 may detect that the bandwidth has decreased.
  • the detection unit 606 may detect that the parallel processing is started when the connection source device and the connection destination device are connected via the mobile phone network. Specifically, the detection unit 606 detects that parallel processing is started when the terminal device 103 is connected to the offload server 101 via the base station 102 which is a part of the mobile phone network. To do. The detected result is stored in a storage area such as a register of the CPU 201, a cache memory, or the RAM 203.
  • the notification unit 607 displays the processing result of the execution target execution object before the change held in the connection destination device.
  • a function of notifying a connection destination device of a transmission request For example, the notification unit 607 notifies the offload server 101 of a processing result transmission request by the execution object to be executed before the change held in the virtual memory 310 of the offload server 101.
  • the notification unit 607 performs processing by the execution target execution object held in the connection destination apparatus.
  • a function of notifying a connection destination device of a result transmission request For example, when the notification unit 607 is detected, the notification unit 607 notifies the offload server 101 of a processing result transmission request by the execution object to be executed before the change held in the virtual memory 310 of the offload server 101.
  • the storage unit 608 has a function of storing the processing result of the transmission request notified by the notification unit 607 in the storage device of the connection source device. For example, the storage unit 608 stores the processing result based on the transmission request in the real memory 309.
  • the execution unit 609 and the execution unit 610 have a function of executing the execution target execution object set in a state executable by the setting unit 605. For example, when the coarse-grained execution object becomes the execution object to be executed, the execution unit 609 and the execution unit 610 execute the coarse-grained execution object in each device.
  • FIG. 7 is an explanatory diagram showing an overview at the time of designing the parallel processing control system 100.
  • a block diagram indicated by reference numeral 701 shows how an execution object is generated, and a block diagram indicated by reference numeral 702 shows details of the execution object.
  • the parallel compiler generates an execution object while performing structural analysis from the source code that becomes the process 304 when it is executed.
  • the parallel compiler generates a coarse granularity execution object 703 corresponding to the coarse granularity, a medium granularity execution object 704 corresponding to the medium granularity, and a fine granularity execution object 705 corresponding to the fine granularity depending on the parallel processing granularity.
  • the parallel compiler generates a structure analysis result 706 of the coarse-grained execution object 703, a structure analysis result 707 of the medium-grained execution object 704, and a structure analysis result 708 of the fine-grained execution object 705.
  • the structural analysis result 706 to the structural analysis result 708 include a ratio S of sequential processing in the entire processing, a data amount D generated in parallel processing, a frequency X of occurrence of parallel processing, obtained by structural analysis, The maximum number of divisions N_Max that can be executed in parallel is described.
  • the suffix symbol indicating coarse grain size is c
  • the suffix symbol indicating medium grain size is m
  • the suffix symbol indicating fine grain size is f.
  • Coarse-grain parallel processing means that a block of a series of processes in a program is executed, and if there is no dependency relationship between a series of processing blocks for a block, the blocks are executed in parallel.
  • the medium-grain parallel processing means that when there is no dependency in the loop repetition part, the repetition part is executed in parallel.
  • Fine-grained parallel processing means that each statement is executed in parallel when there is no dependency between the statements.
  • the block diagram indicated by reference numeral 702 shows details of the coarse-grained execution object 703 to the fine-grained execution object 705.
  • the coarse grain execution object 703 is described so as to execute a series of blocks in a program in parallel.
  • the medium-grain execution object 704 is described so as to further execute the loop processing in the block in a state where the series of blocks in the program in the coarse-grain execution object 703 are described to be executed in parallel.
  • the fine-grained execution object 705 is described to execute a series of blocks in a program in parallel, and further execute statements in parallel in a state where loop processing in the block is executed in parallel.
  • the medium-grained execution object 704 and the fine-grained execution object 705 may or may not execute parallel processing having a coarser grain size than the corresponding granularity.
  • parallel processing with coarse granularity is executed.
  • the medium granularity execution object 704 may be generated so as to execute loop processing in parallel without executing a series of blocks in the program in parallel. .
  • the parallel processing control system 100 executes the optimal parallel processing according to the bandwidth by executing the execution object with a large communication amount in the wide band and executing the execution object with the small granularity in the narrow bandwidth. It can be executed and the processing performance can be improved.
  • FIG. 8 is an explanatory diagram showing specific examples of execution objects of each granularity.
  • FIG. 8 shows an example of a coarse-grained execution object 703 to a fine-grained execution object 705 and a structure analysis result 706 to a structure analysis result 708 for processing when decoding a specific frame of a moving image.
  • the coarse-grained execution object 703 is generated so that a function for performing decoding is executed in parallel. Specifically, the coarse-grained execution object 703 generates a process for executing in parallel the block including the “decode_video_frame ()” function and the block including the “decode_audio_frame ()” function by the terminal device 103 or the like.
  • the data amount Dc is the data size of the argument of the “decode_video_frame ()” function.
  • the frequency Xc is once when an argument is passed.
  • Dc is the argument “dst”, the size of “src ⁇ > video”, the size of the calculation result of “sizeof (src ⁇ > video)”, and the value of the third argument that is the actual data of the second argument. And the total value.
  • the display 207 employs QVGA (Quarter Video Graphics Array) having 320 ⁇ 240 pixels, and the macroblock as a unit of image compression processing is 8 ⁇ 8 pixels.
  • QVGA Quality of Video Graphics Array
  • there are (320 ⁇ 240) / (8 ⁇ 8) 1200 macroblocks.
  • the medium granularity execution object 704 is generated so that the loop processing for processing the macroblock is executed in parallel in the function for decoding. Specifically, the medium granularity execution object 704 generates a process for executing, in parallel for each variable i, loop processing from a variable i that is a loop portion from 0 to less than 1200. For example, the generated process is executed in parallel, such as processing for executing variable i from 0 to 599 and processing for executing variable i from 600 to 1199.
  • the data amount Df is 32 [bits], which is the size of one variable, and is 3 because the frequency exists three times.
  • fine-grained parallel processing if there is a statement with multiple operators in at least one line, fine-grained parallel processing will exist. Therefore, the appearance frequency of the fine-grain parallel processing is high. For example, fine grain parallel processing often occurs inside coarse grain and medium grain parallel processes.
  • an execution object with a finer granularity can execute parallel processing with a coarser granularity than the corresponding granularity.
  • FIG. 9 is an explanatory diagram showing an execution state of the parallel processing control system 100 when the fine granularity is selected.
  • the horizontal axis indicates time t and the vertical axis indicates the band ⁇ .
  • the parallel processing control system 100 shown in FIG. 9 is in a state of a region 902 that has acquired a wide band in the graph 901.
  • the load is distributed in the process 304 executed by the fine-grained execution object 705.
  • the terminal device 103 executes the thread 903_0 in the process 304, and the offload server 101 executes the threads 903_1 to 903_3 in the process 304.
  • the virtual memory 310 is set to the dynamic synchronization virtual memory 904.
  • the dynamic synchronization virtual memory 904 is in a state in which synchronization with the real memory 309 is always performed for writing by the threads 903_1 to 903_3.
  • FIG. 10 is an explanatory diagram showing an execution state of the parallel processing control system 100 when the medium granularity is selected.
  • the parallel processing control system 100 shown in FIG. 10 is in the state of the region 1001 or the region 1002 that has acquired the middle band in the graph 901.
  • the intermediate band is an intermediate area with respect to the entire band. If the entire band is 100 [Mbps], the intermediate band may be, for example, 33 to 67 [Mbps]. .
  • load distribution is performed in the process 304 executed by the medium granularity execution object 704.
  • the terminal device 103 executes the thread 1003_0 in the process 304, and the offload server 101 executes the thread 1003_1 in the process 304.
  • the virtual memory 310 is set to the barrier synchronous virtual memory 1004.
  • the barrier synchronization virtual memory 1004 is synchronized with the real memory 309 every time the partial processing in the thread 1003_1 is completed.
  • the parallel processing control system 100 reflects all the contents of the dynamic synchronous virtual memory 904 in the real memory 309. As a result, the virtual memory 310 can be protected even if the granularity changes.
  • FIG. 11 is an explanatory diagram showing an execution state of the parallel processing control system 100 when the coarse granularity is selected.
  • the parallel processing control system 100 shown in FIG. 11 is in the state of the area 1101 that has acquired a narrow band in the graph 901.
  • load distribution is performed in the process 304 executed by the coarse grain execution object 703.
  • the terminal device 103 executes the threads 1102_0 and 1102_1 in the process 304, and the offload server 101 executes the thread 1102_2 in the process 304.
  • the virtual memory 310 is set to the asynchronous virtual memory 1103.
  • the asynchronous virtual memory 1103 is synchronized with the real memory 309 when the thread 1102_2 is activated and terminated.
  • the parallel processing control system 100 reflects all the contents of the barrier synchronous virtual memory 1004 in the real memory 309. As a result, the virtual memory can be protected even if the granularity changes.
  • FIG. 12 is an explanatory diagram showing an execution state of the parallel processing control system 100 when the wireless communication 105 is interrupted.
  • the band ⁇ is 0 at time 1201.
  • the parallel processing control system 100 shown in FIG. 12 is in the state of the region 1202 in which the narrow band in the graph 901 is acquired, and further in the state of detecting the time change (d / dt) ⁇ (t) ⁇ 0 of the band ⁇ . .
  • the parallel processing control system 100 that detects the time change (d / dt) ⁇ (t) ⁇ 0 of the band ⁇ by the band monitoring unit 303, the load distribution is stopped, and the process 304 by the coarse-grained execution object 703 is performed in the terminal device 103. Execute.
  • the parallel processing control system 100 transfers the data contents of the asynchronous virtual memory 1103 to the real memory 309 when (d / dt) ⁇ (t) ⁇ 0 is detected when the coarse granularity is selected.
  • the parallel processing control system 100 also transfers the context information of the thread 1102_2 that has been executed by the offload server 101 to the terminal device 103, and the terminal device 103 continues the processing as the thread 1102_2 '. If the transfer of the data contents of the asynchronous virtual memory 1103 is not in time for the wireless communication 105 to be disconnected, the terminal device 103 restarts the process 304 from the coarse grain execution object 703 and resumes the processing.
  • the terminal emulator 307, virtual memory monitoring feedback 308, virtual memory 310, and thread 1102_2 on the offload server 101 interrupt processing simultaneously with the disconnection of the wireless communication 105.
  • the terminal emulator 307, the virtual memory monitoring feedback 308, the virtual memory 310, and the thread 1102_2 are held on the offload server 101 for a fixed time, but after the fixed time has elapsed, the offload server 101 performs memory release.
  • FIG. 13 is an explanatory diagram showing a specific example of data protection when the granularity of parallel processing becomes coarse.
  • the explanatory diagram denoted by reference numeral 1301 shows a state before a new execution object is selected
  • the explanatory diagram denoted by reference numeral 1302 shows a state where a new execution object has been selected and the execution object to be executed has been changed.
  • examples of the coarser granularity of parallel processing are when the fine-grained execution object 705 is changed to the medium-grained execution object 704, or when the medium-grained execution object 704 is changed to the coarse-grained execution object 703.
  • the fine granularity execution object 705 is changed to the medium granularity execution object 704 will be described.
  • the parallel processing control system 100 executes the fine-grained execution object 705 on each device.
  • the execution object to be executed is changed to the medium granularity execution object 704, and the parallel processing control system 100 enters a state indicated by reference numeral 1302.
  • the offload server 101 does not execute any statement, and the terminal device 103 executes the above five statements.
  • the terminal device 103 notifies the offload server 101 of a transmission request for the processing result of the execution object to be executed before the change, and the offload server 101 sends the processing result stored in the virtual memory 310 to the terminal device. 103.
  • the terminal device 103 that has received the processing result stores the processing result in the real memory 309. Thereby, the terminal device 103 can continue the process even after the execution object to be executed is changed.
  • FIG. 14 is an explanatory diagram showing a specific example of the execution time according to the number of divisions of parallel processing.
  • FIG. 14 shows the execution time according to the number of divisions of parallel processing when the execution time of the process 304 is 150 [milliseconds].
  • the processing time of the process 304 that can be processed in parallel is assumed to be 100 [milliseconds]
  • the processing time of the sequential processing part is assumed to be 50 [milliseconds].
  • the sequential processing ratio S is 67 [%].
  • the maximum division number N_Max that can be executed in parallel by the process 304 is set to four.
  • the execution time is shown for the case where the bandwidth ⁇ is communication quality 2.
  • the bandwidth ⁇ is twice the communication quality 1, and it takes 5 [milliseconds] to notify other CPUs of the data.
  • the execution time T (1) of the process 304 in the execution form 1401 is 150 [milliseconds] as described above.
  • the parallel processing control system 100 according to the first embodiment has an offload server 101 and a terminal device 103.
  • another terminal device replaces the offload server 101 and performs parallel processing.
  • the terminal device 103 and other terminal devices are connected by ad hoc connection.
  • other terminal devices have the functions of the offload server 101 shown in FIG.
  • the terminal device 103 according to the first embodiment is the terminal device 103 # 0, and the devices having the function of the offload server 101 according to the first embodiment are the terminal device 103 # 1 and the terminal device 103 # 2. It is said.
  • the terminal device 103 # 0 and the terminal device 103 # 1 may be independent mobile terminals, or the terminal device 103 # 0 and the terminal device 103 # 1 may form one separate mobile terminal.
  • the terminal device 103 # 0 mainly operates as a display, and the display of the terminal device 103 # 1 serves as a touch panel and operates as a keyboard. The user may use the terminal device 103 # 0 and the terminal device 103 # 1 by physically connecting them or by disconnecting the terminal device 103 # 0 and the terminal device 103 # 1.
  • the detection unit 606 may detect that parallel processing is started when the connection source device and the connection destination device are connected by ad hoc. Specifically, the detection unit 606 detects that parallel processing is started when the terminal device 103 # 0 serving as a connection source device and the terminal device 103 # 1 serving as a connection destination device are connected by ad hoc. To do. The detected result is stored in the register of the terminal device 103 # 0, the cache memory, and the RAM of the terminal device 103 # 0.
  • the selection unit 604 selects the execution object with the finest granularity as the execution object to be executed when the detection unit 606 according to the second embodiment detects that the parallel processing is started. May be. Specifically, the selection unit 604 selects the fine-grained execution object 705 when it is detected that parallel processing is started at the time of ad hoc connection. The selected result is stored in the register of the terminal device 103 # 0, the cache memory, and the RAM of the terminal device 103 # 0.
  • FIG. 15 is an explanatory diagram of an execution state of the parallel processing control system 100 in an ad hoc connection according to the second embodiment.
  • terminal devices 103 # 0 to 103 # 2 perform ad hoc connection by wireless communication 105.
  • a terminal OS 301 # 0, a scheduler 302 # 0, and a bandwidth monitoring unit 303 # 0 are executed as software on the terminal device 103 # 0. Similar software is being executed on the terminal device 103 # 1 and the terminal device 103 # 2.
  • the communication band between the terminal device 103 # 0 and the terminal device 103 # 2 is guaranteed, and for example, connection is possible at 300 [Mbps].
  • the parallel processing control system 100 in the ad hoc connection can acquire a wide band, the load is distributed in the process 304 by the fine-grained execution object 705.
  • the terminal device 103 # 0 executes the thread 1501_0 in the process 304
  • the terminal device 103 # 1 executes the thread 1501_1 in the process 304
  • the terminal device 103 # 2 executes the process 304
  • the thread 1501_2 is executed.
  • the parallel processing control system 100 in ad hoc communication may select the granularity of parallel processing based on the communication time ⁇ , and may perform load distribution using execution objects of coarse granularity and medium granularity, for example.
  • the parallel processing control system 100 in ad hoc communication is in a state where all the CPUs of the terminal devices 103 connected in an ad hoc manner are operated as one multi-core processor system.
  • the CPUs of all the terminal devices 103 connected in an ad hoc manner form the parallel processing control system 100 as one multi-core processor system.
  • the parallel processing control system 100 according to the third embodiment assumes a case where the terminal device 103 is a multi-core processor system. Specifically, among the multicores in the terminal device 103, a specific core becomes the terminal device 103 according to the first embodiment, and other cores other than the specific core become the offload server 101, and perform parallel processing. Regarding the functions of the parallel processing control system 100 according to the third embodiment, the other cores have the functions of the offload server 101 shown in FIG.
  • a multi-core processor system is a computer system including a processor having a plurality of cores. If a plurality of cores are mounted, a single processor having a plurality of cores may be used, or a processor group in which single core processors are arranged in parallel may be used.
  • a processor group in which single-core processors are arranged in parallel will be described as an example.
  • the terminal device 103 according to the third embodiment has three CPUs, CPU 201 # 0 to CPU 201 # 2, which are connected by a bus 210.
  • the measurement unit 602 has a function of measuring a bandwidth between a specific processor and a processor other than the specific processor among the plurality of processors. Specifically, the measurement unit 602 measures the speed of the bus 210 as a band between the CPU 201 # 0 and the CPU 201 # 1 when the CPU 201 # 0 is the specific processor and the CPU 201 # 1 is the other processor. To do.
  • the setting unit 605 has a function of setting the execution object to be executed selected by the selection unit 604 to a state that can be executed in cooperation with a specific processor and another processor. For example, when the coarse-grained execution object is selected by the selection unit 604, the setting unit 605 sets the execution target execution object in an executable state in cooperation with the CPU 201 # 0 and the CPU 201 # 1.
  • the terminal device 103 according to the first embodiment is a CPU 201 # 0, and the devices having the function of the offload server 101 according to the first embodiment are a CPU 201 # 1 and a CPU 201 # 2.
  • the setting unit 605 can execute an execution object to be executed in cooperation with a processor group including a specific processor among a plurality of processors and having the maximum number of divisions. May be set. For example, assume that the maximum number of divisions is 3. At this time, the setting unit 605 cooperates with the CPUs 201 # 0 to 201 # 2 to set the execution object to be executed to an executable state.
  • the setting unit 605 cooperates with a processor group that includes a specific processor among a plurality of processors and that is the number of parallel executions in the execution object to be executed. It may be set to an executable state. For example, assume that the number of parallel executions in the execution object to be executed is two. At this time, the setting unit 605 sets the execution object to be executed in an executable state in cooperation with the CPU 201 # 0 and the CPU 201 # 1.
  • FIG. 16 is an explanatory diagram of an execution state of the parallel processing control system 100 in the multi-core processor system according to the third embodiment.
  • the CPU 201 # 0 is connected by the bus 210.
  • a terminal OS 301 # 0, a scheduler 302 # 0, and a bandwidth monitoring unit 303 # 0 are executed as software on the CPU 201 # 0. Similar software is being executed on the CPU 201 # 1 and CPU 201 # 2.
  • the transfer speed of the bus 210 is high.
  • the bus 210 is a PCI (Peripheral Component Interconnect) bus and operates at 32 [bits] and 33 [MHz].
  • the transfer speed of the bus 210 is 1056 [Mbps], which is higher than the server connection.
  • the parallel processing control system 100 in the multi-core processor system can acquire a wide band, the load is distributed in the process 304 by the fine-grained execution object 705.
  • the CPU 201 # 0 executes the thread 1501_0 in the process 304
  • the CPU 201 # 1 executes the thread 1501_1 in the process 304
  • the CPU 201 # 2 executes the thread 1501_2 in the process 304.
  • the parallel processing control system 100 in the multi-core processor system may perform load distribution using the medium-grained execution object 704 and the coarse-grained execution object 703 according to the specifications of the terminal device 103.
  • any of the offload server 101, another terminal device, or another CPU in the same device is used. There is no significant difference in processing. 17 to 20, the processing of the parallel processing control system 100 according to the first to third embodiments will be described together. In particular, among the first to third embodiments, the first to third embodiments will be clearly described when there is a feature that can be possessed only by a specific embodiment.
  • FIG. 17 is a flowchart showing the parallel processing start processing by the scheduler 302.
  • the terminal device 103 activates the load distribution process in response to an activation request from the user, OS, or the like (step S1701). Subsequently, the terminal device 103 confirms the connection environment (step S1702).
  • step S1702 When the connection environment is no connection and the terminal device 103 is a multi-core processor system (step S1702: no connection), the terminal device 103 loads an execution object according to the number of CPUs of the terminal device 103 (step S1703). .
  • the parallel processing control system 100 according to the third embodiment passes through a route without connection in step S1702.
  • step S1702 ad hoc connection
  • the terminal device 103 loads execution objects of all granularities (step S1704).
  • step S1704 The parallel processing control system 100 according to the second embodiment passes through the route of step S1702: ad hoc connection. After loading, the terminal device 103 transfers the fine-grained execution object 705 to another terminal device (step S1705).
  • step S1702 server connection
  • step S1706 the terminal device 103 loads execution objects of all granularities.
  • the parallel processing control system 100 passes through the route of step S1702: server connection.
  • the terminal device 103 and the offload server 101 are connected via a mobile phone network.
  • the terminal device 103 transfers the coarse grain execution object 703 to the offload server (step S1707).
  • the terminal device 103 transfers other execution objects to the offload server 101 in the background (step S1709) and activates the bandwidth monitoring unit 303 (step S1710).
  • the terminal device 103 that has executed any of step S1703, step S1705, and step S1707 starts executing the load distribution process (step S1708). After the execution of the load distribution process, the terminal device 103 executes a parallel processing control process described later with reference to FIG.
  • the offload server 101 When the offload server 101 receives the notification of the coarse grain execution object 703 in step S1707, the offload server 101 activates the terminal emulator 307 (step S1711) and operates the virtual memory 310 (step S1712). Specifically, the offload server 101 sets the virtual memory 310 to the asynchronous virtual memory 1103 because it has been notified that the coarse load execution object 703 has been changed.
  • FIG. 18 is a flowchart showing the parallel processing control process in the load balancing process by the scheduler 302.
  • the parallel processing control process is performed after the process of step S1708, and is also executed by a notification from the bandwidth monitoring unit 303.
  • the parallel processing control processing in FIG. 18 assumes that the connection environment is server connection. In the case of an ad hoc connection, the request destination of the processing in steps S1818 and S1824 is another terminal device.
  • the terminal device 103 that executes the bandwidth monitoring unit 303 acquires the bandwidth ⁇ (step S1820). Specifically, the terminal device 103 acquires the band ⁇ by issuing a ping. After the acquisition, the terminal device 103 determines whether or not the band ⁇ has changed from the previous value (step S1821). When it has changed (step S1821: Yes), the terminal device 103 notifies the scheduler 302 that there has been a change in the band ⁇ and the band ⁇ (step S1822).
  • the terminal device 103 determines whether or not the time change (d / dt) ⁇ (t) of the band ⁇ is less than 0 (step S1823). When the time change of the band ⁇ is less than 0 (step S1823: Yes), the terminal device 103 notifies the offload server 101 of an execution request for data protection processing (step S1824). Details of the data protection processing will be described later with reference to FIG. After the process of step S1824 is completed, or when the time change of the band ⁇ is 0 or more (step S1823: No), or when the band ⁇ has not changed (step S1821: No), the terminal device 103 has passed a certain time. Then, the process proceeds to step S1820.
  • the terminal device 103 Upon receiving the notification from the bandwidth monitoring unit 303, the terminal device 103 sets the variable i to 1 and the variable g to coarse granularity by the scheduler 302 (step S1801), and checks the value of the variable g (step S1802).
  • step S1802 medium granularity
  • T (1) is acquired (step S1807).
  • step S1802 fine granularity
  • T (1) is acquired (step S1811).
  • step S1815 When the variable i is larger than N_Max (step S1815: No), the terminal apparatus 103 sets the variable i and variable g to be Min (T (N)) among the calculated T (N) to the new CPU number and granularity. Setting is performed (step S1816). Subsequently, the terminal device 103 sets an execution object corresponding to the set granularity as an execution object to be executed (step S1817). After the setting, the terminal device 103 notifies the bandwidth monitoring unit 303 of the set CPU count and granularity (step S1818).
  • the terminal device 103 After the notification, the terminal device 103 notifies the offload server 101 of a virtual memory setting process execution request (step S1819). Details of the virtual memory setting process will be described later with reference to FIG.
  • the terminal device 103 ends the parallel processing control process, and executes the load distribution process with the set execution target execution object. Further, the offload server 101 also executes the load distribution process with the set execution target execution object. Even when there are a plurality of offload servers 101, all offload servers 101 execute the load distribution process with the same execution target execution object.
  • the terminal apparatus 103 since the value of the maximum division number N_Max varies depending on the granularity, the terminal apparatus 103 performs the process of step S1815 by performing the coarse division maximum division number Nc_Max, the medium granularity maximum division number Nm_Max, and the fine granularity maximum. You may judge by the maximum value among division
  • FIG. 19 is a flowchart showing data protection processing.
  • the data protection process is executed by the offload server 101 or another terminal device.
  • the description will be made assuming that it is executed by the offload server 101.
  • the offload server 101 determines whether the set granularity has changed (step S1901). When the granularity changes from the fine granularity to the medium granularity (step S1901: fine granularity ⁇ medium granularity), the offload server 101 transfers the data in the dynamic synchronization virtual memory 904 to the terminal device 103 (step S1902). After the transfer, the offload server 101 ends the data protection process.
  • the offload server 101 collects the partial calculation data of the barrier synchronous virtual memory 1004 (step S1903).
  • the number N of CPUs is 3 or more, there is a possibility that a plurality of barrier synchronous virtual memories 1004 exist. Therefore, the offload server 101 collects partial calculation data of the barrier synchronous virtual memory 1004, respectively.
  • the offload server 101 executes data synchronization between the offload server 101 and the terminal device 103 (step S1904). After synchronization, the offload server 101 notifies the terminal device 103 of a partial processing aggregation request (step S1905). Specifically, when the granularity changes, the calculation data of a specific index in the loop is calculated by the process 304 by the medium granularity execution object 704. Therefore, the terminal apparatus 103 aggregates the partial processes corresponding to the calculated index, and subsequently executes the partial processes corresponding to the unprocessed index. After notifying the aggregation request, the offload server 101 ends the data protection process.
  • step S1901 the offload server 101 ends the data protection process.
  • FIG. 20 is a flowchart showing the virtual memory setting process. Similarly to the data protection process, the virtual memory setting process is also executed by the offload server 101 or another terminal device. In the example of FIG. 20, for the sake of simplification of description, the description will be made assuming that it is executed by the offload server 101. If the data protection process is being executed at the start of the virtual memory setting process, the offload server 101 starts the virtual memory setting process after waiting for the end of the data protection process.
  • the offload server 101 confirms the set granularity (step S2001).
  • the set granularity is a coarse granularity (step S2001: coarse granularity)
  • the offload server 101 sets the virtual memory 310 to the asynchronous virtual memory 1103 (step S2002).
  • the set granularity is the medium granularity (step S2001: medium granularity)
  • the offload server 101 sets the virtual memory 310 to the barrier synchronous virtual memory 1004 (step S2003).
  • the set granularity is a fine granularity (step S2001: fine granularity)
  • the offload server 101 sets the virtual memory 310 to the dynamic synchronization virtual memory 904 (step S2004).
  • step S2002 After completing the processes of step S2002, step S2003, and step S2004, the offload server 101 ends the virtual memory setting process and continues the operation of the virtual memory 310.
  • the object is determined based on the execution time calculated from the band between the terminal device and the other device from the object group having different granularity of the parallel processing. select. Thereby, the optimal parallel processing according to a zone
  • the parallel processing control system provides GPS (Global Positioning System) information and the terminal device can receive the GPS information.
  • GPS Global Positioning System
  • the terminal device activates application software that uses the GPS information, and executes arithmetic processing associated with the GPS information such as coordinate calculation.
  • the terminal device offloads the coordinate calculation to the offload server. In this way, the parallel processing control system can execute high-speed processing by the offload server if the bandwidth is wide, and can continue the processing by the terminal device if the bandwidth is narrow.
  • the parallel processing control system provides file sharing and streaming services.
  • the server providing the service transmits compressed data, and the terminal device performs decompression in the full power mode.
  • the offload server decompresses the data, transmits the decompressed result, and the terminal device displays the result. Since the terminal device only needs to display the result, CPU power is not required and the terminal device can be operated in the low power mode.
  • the shortest execution object may be selected as the execution object to be executed.
  • an execution object having the shortest processing time can be selected from among object groups having different parallel processing granularities, and the processing performance can be improved.
  • the communication time is calculated from the bandwidth and communication volume
  • the processing time for parallel execution is calculated from the processing time when the parallel processing is executed sequentially, the ratio of the sequential processing, and the maximum number of divisions that can be executed in parallel.
  • the execution time may be calculated by adding the processing time when executing in parallel with the communication time.
  • the processing result held in the other device is transmitted to the terminal device, and the terminal device It may be stored in the storage device. Thereby, since the intermediate result performed in the other device can be acquired, the terminal device can continue the processing performed in the other device such as an offload server. This effect is particularly effective in the parallel processing control system according to the first embodiment in which the bandwidth varies greatly between the terminal device and other devices.
  • the processing result held in the other device is transmitted to the terminal device, and the terminal device You may store in a memory
  • the terminal device stores data of other devices such as an offload server in advance, so that even if the line is cut off, the stored data is used for processing. You can continue.
  • the execution object with the coarsest granularity may be selected as the execution object to be executed.
  • the start bandwidth is narrow, so by selecting an execution object with coarse granularity in advance, the execution object that matches the start bandwidth can be set. Can do. This effect is effective in the parallel processing control system according to the first embodiment.
  • an execution object with the finest granularity may be selected as an execution object to be executed.
  • an execution object suitable for the start band can be set by selecting an execution object with a coarse granularity in advance. This effect is effective in the parallel processing control system according to the second embodiment.
  • an object is selected from an object group having different granularity of parallel processing according to an execution time calculated from a band between the terminal device and another device.
  • band can be performed and a processing performance can be improved. Since the bandwidth between the processors is wide, it is possible to execute the fine-grained execution object and improve the processing performance.
  • a terminal device having a plurality of processors may perform server connection or ad hoc connection, and provide a parallel processing service as the parallel processing control system according to the first embodiment or the second embodiment.
  • the parallel processing control method described in the present embodiment can be realized by executing a program prepared in advance on a computer such as a personal computer or a workstation.
  • the parallel processing control program is recorded on a computer-readable recording medium such as a hard disk, a flexible disk, a CD-ROM, an MO, and a DVD, and is executed by being read from the recording medium by the computer.
  • the parallel processing control program may be distributed through a network such as the Internet.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

 端末装置(103)は、測定部(602)によって、端末装置(103)とオフロードサーバ(101)との間の帯域を測定する。測定後、端末装置(103)は、算出部(603)によって、端末装置(103)のプロセッサおよびオフロードサーバ(101)のプロセッサで並列処理が可能であり並列処理の粒度が異なる複数の実行オブジェクトの各々の実行時間を、帯域に基づいて算出する。算出後、端末装置(103)は、選択部(604)によって、算出された各々の実行時間の長さに基づき、複数の実行オブジェクトの中から実行対象の実行オブジェクトを選択する。選択後、端末装置(103)は、設定部(605)によって、選択された実行対象の実行オブジェクトを端末装置(103)のプロセッサおよびオフロードサーバ(101)のプロセッサで協動して実行可能な状態に設定する。

Description

並列処理制御プログラム、情報処理装置、および並列処理制御方法
 本発明は、並列処理を制御する並列処理制御プログラム、情報処理装置、および並列処理制御方法に関する。
 近年、ネットワーク技術の発達にともない、シンクライアント処理、サーバ連携といった技術が開示されている。シンクライアント処理は、ユーザが使用する端末装置では入出力機構を有し、ネットワークを介して接続されたサーバが実処理を行う機構である。また、サーバ連携は、端末装置とサーバが連携し、特定のサービスを提供する技術である。
 たとえば、シンクライアント処理を行う技術として、たとえば、端末装置の負荷に応じて、端末装置がサーバにソフトウェアの起動要求を通知する技術が開示されている(たとえば、下記特許文献1を参照。)。また、別のシンクライアント処理を行う技術として、端末装置からのソフトウェア起動要求に対して、サーバが仮想マシンソフトウェアを起動する技術が開示されている(たとえば、下記特許文献2を参照。)。
 また、端末装置が移動する場合、ネットワークの通信品質は、端末装置の所在位置によって変動する。ネットワークの通信品質の判断技術として、たとえば、ネットワークの通信網における正常稼働時における通信品質の指標を保持しておき、回線が正常稼働しているか否かを判断できる技術が開示されている(たとえば、下記特許文献3を参照。)。
 また、端末装置が移動し、ネットワークの通信品質が劣化した場合、サーバで実行された処理結果を端末装置が取得できなくなる可能性がある。通信品質の劣化時における対策技術として、たとえば、チェックポイントを設けて、チェックポイント時に、データベースデータおよびステータスをサブシステムに転送する技術が開示されている(たとえば、下記特許文献4を参照。)。
特開2006-252218号公報 特開2006-107185号公報 特開2006-340050号公報 特開2005-267301号公報
 上述した従来技術において、シンクライアント処理およびサーバ連携は、端末装置で全ての処理を実行するか、またはサーバにオフロードするか、いずれかの形態で処理を実行していた。しかしながら、これらの形態、特に、端末装置で全ての処理を実行する場合、端末装置の性能がボトルネックとなる問題があった。
 また、特許文献1または特許文献2に特許文献3を組み合わせた技術によって、通信品質に応じて、たとえば、広帯域を獲得できた場合に、端末装置とサーバとで異なるソフトウェアを分散して実行することができる。しかしながら、前述の技術では、1つのソフトウェアを並列処理することが困難であるという問題があった。また、狭帯域において、特許文献4にかかる技術では、データベースという大掛かりのリソースが要求されるため、コスト増となる問題があった。
 本発明は、上述した従来技術による問題点を解消するため、帯域に応じた適切な並列処理を実行できる並列処理制御プログラム、情報処理装置、および並列処理制御方法を提供することを目的とする。
 上述した課題を解決し、目的を達成するため、開示の並列処理制御プログラムは、接続元装置と接続先装置との間の帯域を測定し、接続元装置内の接続元プロセッサおよび接続先装置内の接続先プロセッサで並列処理が可能であり並列処理の粒度が異なる複数の実行オブジェクトの各々の実行時間を、測定された帯域に基づいて算出し、算出された各々の実行時間の長さに基づいて、複数の実行オブジェクトの中から実行対象の実行オブジェクトを選択し、選択された実行対象の実行オブジェクトを接続元プロセッサおよび接続先プロセッサで協動して実行可能な状態に設定する。
 本並列処理制御プログラム、情報処理装置、および並列処理制御方法によれば、帯域に応じて適切な並列処理を実行でき、処理性能を向上させるという効果を奏する。
実施の形態1にかかる並列処理制御システム100に含まれる装置群を示すブロック図である。 実施の形態1にかかる端末装置103のハードウェアを示すブロック図である。 並列処理制御システム100のソフトウェアを示す説明図である。 並列処理の実行状態と実行時間に関する説明図である。 並列処理の割合とCPU数に関する処理性能を示した説明図である。 並列処理制御システム100の機能を示すブロック図である。 並列処理制御システム100の設計時における概要を示す説明図である。 各粒度の実行オブジェクトの具体例を示す説明図である。 細粒度が選択された場合における並列処理制御システム100の実行状態を示す説明図である。 中粒度が選択された場合における並列処理制御システム100の実行状態を示す説明図である。 粗粒度が選択された場合における並列処理制御システム100の実行状態を示す説明図である。 無線通信105が遮断された場合における並列処理制御システム100の実行状態を示す説明図である。 並列処理の粒度が粗くなった場合における、データ保護の具体例を示す説明図である。 並列処理の分割数に応じた実行時間の具体例を示す説明図である。 実施の形態2にかかるアドホック接続での並列処理制御システム100の実行状態を示す説明図である。 実施の形態3にかかるマルチコアプロセッサシステムにおける並列処理制御システム100の実行状態を示す説明図である。 スケジューラ302による並列処理の開始処理を示すフローチャートである。 スケジューラ302による負荷分散プロセスにおける並列処理制御処理を示すフローチャートである。 データ保護処理を示すフローチャートである。 仮想メモリ設定処理を示すフローチャートである。
 以下に添付図面を参照して、本発明にかかる並列処理制御プログラム、情報処理装置、および並列処理制御方法の好適な実施の形態を詳細に説明する。
(実施の形態1の概要説明)
 図1は、実施の形態1にかかる並列処理制御システム100に含まれる装置群を示すブロック図である。並列処理制御システム100は、オフロードサーバ101と、基地局102と、端末装置103とを有している。オフロードサーバ101と、基地局102とは、ネットワーク104で接続されており、基地局102と、端末装置103とは、無線通信105で接続されている。
 オフロードサーバ101は、端末装置103の処理を代わりに実行する装置である。具体的には、オフロードサーバ101は、端末装置103を擬似的に動作できる環境を有し、前述の環境上で端末装置103の処理を代わりに実行する。環境などのソフトウェアについては、図3にて後述する。
 基地局102は、端末装置103との間で無線通信を行い、他の端末との通話、通信を中継する装置である。また、基地局102は複数存在し、複数の基地局102と端末装置103で携帯電話網を形成している。また、基地局102は、ネットワーク104を通して、端末装置103とオフロードサーバ101との通信を中継する。
 具体的には、基地局102は、端末装置103から無線通信105によって受信したデータを、ネットワーク104によってオフロードサーバ101に送信する。端末装置103からオフロードサーバ101への通信回線はアップリンクとなる。また、基地局102は、オフロードサーバ101から無線通信105によって受信したパケットデータを、無線通信105によって端末装置103に送信する。オフロードサーバ101から端末装置103への通信回線はダウンリンクとなる。
 端末装置103は、利用者が並列処理制御システム100を利用するために使用される装置である。具体的には、端末装置103は、ユーザインターフェイス機能を有し、利用者からの入出力を受け付ける。たとえば、並列処理制御システム100がWebメールのサービスを提供する場合、オフロードサーバ101は、メール処理を行い、端末装置103は、Webブラウザを実行する。
(実施の形態1にかかる端末装置103のハードウェア)
 図2は、実施の形態1にかかる端末装置103のハードウェアを示すブロック図である。図2において、端末装置103は、CPU201と、ROM(Read‐Only Memory)202と、RAM(Random Access Memory)203と、を有する。また、端末装置103は、フラッシュROM204と、フラッシュROMコントローラ205と、フラッシュROM206と、を有する。また、端末装置103は、ユーザやその他の機器との入出力装置として、ディスプレイ207と、I/F(Interface)208と、キーボード209と、を有する。また、各部はバス210によってそれぞれ接続されている。
 ここで、CPU201は、端末装置103の全体の制御を司る。ROM202は、ブートプログラムなどのプログラムを記憶している。RAM203は、CPU201のワークエリアとして使用される。フラッシュROM204は、OS(Operating System)などのシステムソフトウェアやアプリケーションソフトウェアなどを記憶している。たとえば、OSを更新する場合、端末装置103は、I/F208によって新しいOSを受信し、フラッシュROM204に格納されている古いOSを、受信した新しいOSに更新する。
 フラッシュROMコントローラ205は、CPU201の制御に従ってフラッシュROM206に対するデータのリード/ライトを制御する。フラッシュROM206は、フラッシュROMコントローラ205の制御で書き込まれたデータを記憶する。データの具体例としては、端末装置103を使用するユーザがI/F208を通して取得した画像データ、映像データなどである。フラッシュROM206は、たとえば、メモリカード、SDカードなどを採用することができる。
 ディスプレイ207は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ207は、たとえば、TFT液晶ディスプレイなどを採用することができる。
 I/F208は、無線通信105を介して基地局102に接続されている。基地局102を経由して、I/F208は、インターネットなどのネットワーク104に接続され、ネットワーク104を介してオフロードサーバ101等に接続される。そして、I/F208は、無線通信105と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F208には、たとえばモデムやLANアダプタなどを採用することができる。
 キーボード209は、数字、各種指示などの入力のためのキーを有し、データの入力を行う。また、キーボード209は、タッチパネル式の入力パッドやテンキーなどであってもよい。
 また、図示していないが、オフロードサーバ101のハードウェアとしては、CPU、ROM、RAMを有する。また、オフロードサーバ101は、記憶装置として、磁気ディスクドライブ、光ディスクドライブを有してもよい。磁気ディスクドライブ、光ディスクドライブは、オフロードサーバ101のCPUの制御によって、データを記憶したり、読み込んだりする。
 図3は、並列処理制御システム100のソフトウェアを示す説明図である。図3に示すソフトウェアは、端末OS301と、スケジューラ302と、帯域監視部303と、プロセス304と、スレッド305_0~スレッド305_3と、サーバOS306と、端末エミュレータ307と、仮想メモリ監視フィードバック308とである。スレッド305_0~スレッド305_3は、プロセス304内のスレッドである。前述のソフトウェアがアクセスする記憶領域として、実メモリ309と、仮想メモリ310がRAM203、オフロードサーバ101のRAM等に確保されている。
 また、端末OS301~プロセス304、スレッド305_0は、端末装置103にて実行され、プロセス304、スレッド305_1~スレッド305_3、サーバOS306~仮想メモリ監視フィードバック308は、オフロードサーバ101にて実行される。
 端末OS301は、端末装置103を制御するソフトウェアである。具体的には、端末OS301は、スレッド305_0等が使用するライブラリを提供する。また、端末OS301は、ROM202、RAM203などのメモリの管理を行う。
 スケジューラ302は、端末OS301が提供する機能の一つであり、スレッドやプロセスに設定されている優先度等に基づいて、CPU201に割り当てるスレッドを決定するソフトウェアである。定められた時刻になった場合、スケジューラ302は、ディスパッチが決定されたスレッドをCPU201に割り当てる。また、実施の形態1にかかるスケジューラ302は、並列処理が可能であり、並列処理の粒度が異なる実行オブジェクトが複数存在する場合、最適な実行オブジェクトを選択し、実行してプロセス304を生成する。並列処理の粒度については、図7にて詳しく記述する。
 帯域監視部303は、ネットワーク104、無線通信105の帯域を監視するソフトウェアである。具体的には、帯域監視部303は、Pingを発行し、ダウンリンクとアップリンクの速度を測定し、変化があった場合にスケジューラ302に通知する。
 具体的な変化としては、たとえば、帯域監視部303は、前回からの帯域の変化分が一定の閾値以上であった場合に、変化があったとして判断してもよい。または、並列処理制御システム100が取り得る最広帯域をブロックに分割し、ブロックを移動した場合、帯域監視部303は、変化があったとして判断してもよい。具体的に、最広帯域が100[Mbps]であった場合、帯域を3分割し、100~67[Mbps]を広帯域、67~33[Mbps]を中帯域、33~0[Mbps]を狭帯域とする。帯域監視部303は、広帯域→中帯域、中帯域→狭帯域など、分割されたブロックを移動した際に、変化があったとして判断してもよい。
 プロセス304は、CPU201がRAM203等に読み込まれた実行オブジェクトを実行することによって生成される。プロセス304の内部には、スレッド305_0~スレッド305_3が存在し、スレッド305_0~スレッド305_3は並列処理を実行している。また、プロセス304は、負荷分散を行うことが可能である。
 具体的には、端末装置103は、実行オブジェクトを無線通信105、ネットワーク104を通じてオフロードサーバ101に送信し、オフロードサーバ101は、スレッド305_1~スレッド305_3を生成する。これにより、プロセス304は、端末装置103とオフロードサーバ101とで、負荷分散された状態で実行される。以下、負荷分散が可能なプロセスを、負荷分散プロセスと呼称する。また、端末装置103で実行中のスレッド305_0は、実メモリ309にアクセスする。オフロードサーバ101で実行中のスレッド305_1~スレッド305_3は、仮想メモリ310にアクセスする。
 サーバOS306は、オフロードサーバ101を制御するソフトウェアである。具体的には、サーバOS306は、スレッド305_1~スレッド305_3等が使用するライブラリを提供する。また、サーバOS306は、オフロードサーバ101のROM、RAMなどのメモリの管理を行う。
 端末エミュレータ307は、端末装置103を模倣するソフトウェアであり、端末装置103で実行可能な実行オブジェクトを、オフロードサーバ101で実行可能とするソフトウェアである。具体的には、端末エミュレータ307は、実行オブジェクトに記載されたCPU201への命令または端末OS301のライブラリへの命令を、オフロードサーバ101のCPUへの命令またはサーバOS306のライブラリへの命令に置き換えて実行する。
 図3に示す状態では、オフロードサーバ101は、端末エミュレータ307上でスレッド305_1~スレッド305_3を実行している。端末エミュレータ307を実行することで、並列処理制御システム100は、CPU201をマスタCPUと想定し、オフロードサーバ101が仮想CPU311をスレーブCPUと想定した、マルチコアプロセッサシステムの様相を示すことになる。
 仮想メモリ監視フィードバック308は、仮想メモリ310に書き込まれたデータを実メモリ309に書き戻すソフトウェアである。具体的には、仮想メモリ監視フィードバック308は、仮想メモリ310に対するアクセスを監視し、仮想メモリ310に書き込まれたデータを、ダウンリンクを通じて実メモリ309に書き戻す。また、仮想メモリ310は、実メモリ309と同じアドレスを記憶する領域であり、定められたタイミングによって、仮想メモリ監視フィードバック308が前述の書き戻す処理を行う。定められたタイミングについては、プロセス304の並行処理の粒度によって異なる。書き戻すタイミングについては、図9~図12にて後述する。
 図4は、並列処理の実行状態と実行時間に関する説明図である。符号401で示す説明図は、CPU201をマスタCPUとし、オフロードサーバ101の端末エミュレータ307による仮想CPU311をスレーブCPUとした状態におけるプロセス304の実行状態を示している。符号402で示す説明図は、プロセス304を符号401で示す実行状態で実行した際の実行時間を示している。
 符号401で示す説明図にて、CPU201は、ミドルウェア/ライブラリなどを利用して、負荷分散プロセスとなるプロセス304に含まれるスレッド305_0を実行している。また、プロセス304に含まれるスレッド305_1について、CPU201は、端末OS301のカーネルから、プロセッサ間通信によって、仮想CPU311に通知する。通知される内容は、スレッド305_1のスレッドコンテキストのメモリダンプでもよいし、スレッド305_1を実行するために要求される開始アドレス、引数の情報、スタックメモリサイズ等を通知してもよい。通知された内容に従って、仮想CPU311は、スレーブカーネルとスケジューラ403によって、スレッド305_1をナノスレッドとして割り当てる。
 符号402で示す説明図では、プロセス304の実行時間を示している。時刻t0にて、CPU201は、プロセス304を実行開始する。時刻t0から時刻t1の区間では、CPU201は、並列処理を行うことができない、逐次処理が要求される処理を実行している。時刻t1にて、CPU201は、並列処理を行える処理を検出すると、時刻t1から時刻t2にかけて、並列処理を実行するのに要求される情報を前述のプロセッサ間通信にて仮想CPU311に通知する。時刻t2から時刻t3にかけて、CPU201と仮想CPU311は、プロセス304を並列実行する。
 時刻t3にて、並列実行が終了すると、仮想CPU311は、時刻t3から時刻t4にかけて、実行した並列処理の結果をプロセッサ間通信によって、CPU201に通知する。時刻t4から時刻t5にかけて、CPU201は、再び逐次処理を実行し、プロセス304の処理を終了する。結果、プロセス304の実行時間T(N)となる時刻t0から時刻t5までの時間は、下記(1)式で求めることができる。
 T(N)=(S+(1-S)/N)・T(1)+τ…(1)
 ただし、Nを負荷分散プロセスを実行可能なCPU数とし、T(N)をCPU数がN個の場合における負荷分散プロセスの実行時間とし、Sを負荷分散プロセスにて、逐次処理を行う割合を示し、τを並列処理に伴う通信時間を示している。以下、NをCPU数、Sを逐次処理の割合、τを通信時間と称する。なお、逐次処理の割合Sを用いると、並列処理の割合は100-S[%]となる。
 図5は、並列処理の割合とCPU数に関する処理性能を示した説明図である。グラフ501の横軸はCPU数Nであり、縦軸はCPU数N=1を基準にした処理性能比を示している。通信時間τが0であり、通信にかかるオーバーヘッドが発生しない理想的な状態の場合、逐次処理の割合S=80[%]、90[%]のいずれも、CPU数が増加するにつれ、処理性能が向上している。
 しかし、通信時間τ=0.1T(1)であり、通信にかかるオーバーヘッドが発生する場合、逐次処理の割合S=90[%]において、CPU数2個~4個におけるプロット点が、処理性能比1を下回る矩形502内に存在している。このように、通信にかかるオーバーヘッドが発生する場合、並列処理または逐次処理の割合によっては、並列処理を実行することで、処理性能比が悪化する可能性がある。
(並列処理制御システム100の機能)
 次に、並列処理制御システム100の機能について説明する。図6は、並列処理制御システム100の機能を示すブロック図である。並列処理制御システム100は、測定部602と、算出部603と、選択部604と、設定部605と、検出部606と、通知部607と、格納部608と、実行部609と、実行部610と、を含む。この制御部となる機能(測定部602~実行部610)は、記憶装置に記憶されたプログラムをCPU201が実行することにより、その機能を実現する。記憶装置とは、具体的には、たとえば、図2に示したROM202、RAM203、フラッシュROM204、フラッシュROM206などである。または、I/F208を経由して他のCPUが実行することにより、その機能を実現してもよい。
 また、端末装置103は、ROM202、RAM203等の記憶装置に格納された実行オブジェクト601にアクセス可能である。また、各機能部のうち、測定部602~実行部609は、マスタCPUとなるCPU201を有する端末装置103の機能であり、実行部610は、スレーブCPUとなる仮想CPU311を有するオフロードサーバ101の機能となる。
 測定部602は、接続元装置と接続先装置との間の帯域を測定する機能を有する。たとえば、測定部602は、接続元装置となる端末装置103と、接続先装置となるオフロードサーバ101との間の帯域σを測定する。具体的に、測定部602は、Pingをオフロードサーバ101に送信し、Pingの応答時間によって、ダウンリンクとアップリンクを測定する。測定部602は、帯域監視部303の一部の機能となる。なお、抽出されたデータは、CPU201のレジスタ、キャッシュメモリ、またはRAM203などの記憶領域に記憶される。
 算出部603は、接続元装置内の接続元プロセッサおよび接続先装置内の接続先プロセッサで並列処理が可能であり並列処理の粒度が異なる複数の実行オブジェクトの各々の実行時間を、測定部602によって測定された帯域に基づいて算出する機能を有する。並列処理の粒度とは、特定の処理を並列実行する際に、分割された処理量を示している。粒度が細かくなるほど、分割された処理量が少なくなり、粒度が粗くなるほど、分割された処理量が多くなる。たとえば、粒度が細かい並列処理としては、ステートメント単位の並列処理が存在し、粒度が粗い並列処理としては、スレッド単位、関数単位等の並列処理が存在する。また、粒度の中程度の並列処理として、ループによる繰り返しの並列処理が存在する。
 たとえば、算出部603は、CPU201と仮想CPU311で並列処理が可能であり並列処理の粒度が異なる複数の実行オブジェクトの各々の実行時間を、帯域σに基づいて算出する。なお、具体的な算出方法として、算出部603は、並列処理の処理時間に、並列処理のオーバーヘッドとなる通信量を帯域σで除算した値を加算することで、実行時間を算出する。または、帯域σが狭帯域となるとオーバーヘッドが顕著になるため、たとえば、算出部603は、特定の閾値σ0を設け、帯域σが閾値σ0を下回った場合に、並列処理の処理時間に通信量を帯域σで除算した値を加算することで、実行時間を算出してもよい。
 また、算出部603は、はじめに帯域と並列処理にかかる通信量とによって通信時間を算出する。続けて、算出部603は、並列処理を逐次実行した場合の処理時間と並列処理のうち逐次処理の割合と並列処理において並列実行が可能な最大の分割数とによって並列実行する場合の処理時間を実行オブジェクトごとに算出する。最後に、算出部603は、通信時間と並列実行する場合の処理時間とを加算することによって、複数の実行オブジェクトの各々の実行時間を算出してもよい。
 並列処理のうち逐次処理の割合とは、特定の処理のうち、並列実行が可能な部分を除いた割合である。また、算出部603は、特定の処理のうち、並列実行が可能な割合を用いて算出してもよい。実施の形態1にかかる並列処理制御システム100では、逐次処理の割合Sを用いて算出している。また、算出された通信時間は、(1)式における、第2項となる通信時間τと一致し、算出された並列実行する場合の処理時間は、(1)式における、第1項となる(S+(1-S)/N)・T(1)と一致する。
 たとえば、算出部603は、並列処理の粒度が粗である実行オブジェクトについて算出する場合を想定する。帯域σが10[Mbps]であり、並列処理にかかる通信量が76896[ビット]である場合、算出部603は、通信時間を通信量/帯域σ=約3.0[ミリ秒]と算出する。また、逐次実行した場合の処理時間を7.5[ミリ秒]とし、逐次処理の割合Sを0.01[%]とし、並列実行が可能な最大の分割数N_Maxをがである場合、算出部603は、並列実行する場合の処理時間を3.8[ミリ秒]と算出する。最後に、算出部603は、粗粒度実行オブジェクトの実行時間を3.0+3.8=6.8[ミリ秒]と算出する。算出部603は、同様に、他の粒度に関する実行オブジェクトの実行時間を算出する。
 また、算出部603は、初めに、並列実行する場合の処理時間を逐次実行した場合の処理時間と逐次処理の割合と最大の分割数以下である並列実行の数によって算出する。続けて、算出部603は、通信時間と並列実行する場合の処理時間とを加算することによって、複数の実行オブジェクトの各々の並列実行の数ごとの実行時間を算出してもよい。
 たとえば、算出部603は、並列処理の粒度が粗である実行オブジェクトにおいて、最大の分割数が2であれば、並列実行の数が1であるときの実行時間を7.5[ミリ秒]、並列実行の数が2であるとき(1)式より、実行時間を6.8[ミリ秒]、と算出する。なお、算出された結果は、CPU201のレジスタ、キャッシュメモリ、またはRAM203などの記憶領域に記憶される。
 選択部604は、算出部603によって算出された各々の実行時間の長さに基づいて、複数の実行オブジェクトの中から実行対象の実行オブジェクトを選択する機能を有する。また、選択部604は、各々の実行時間の長さのうち、最短となる実行オブジェクトを、実行対象の実行オブジェクトとして選択してもよい。たとえば、選択部604は、算出された実行オブジェクトの実行時間が7.5[ミリ秒]、6.8[ミリ秒]であれば、最短となる6.8[ミリ秒]となった実行オブジェクトを選択してもよい。
 また、最短以外の選択方法として、選択後、実行オブジェクトを切り替えることになると、切り替えのオーバーヘッドが発生するため、選択部604は、切り替えのオーバーヘッドを加算して選択してもよい。たとえば、現在選択中の実行オブジェクトと他の実行オブジェクトの実行時間が僅差で他の実行オブジェクトの実行時間が最短となっている場合を想定する。選択部604は、切り替えにかかるオーバーヘッド時間を他の実行オブジェクトの実行時間に加算した際に、選択中の実行オブジェクトの実行時間を超えた場合は、選択中の実行オブジェクトの実行時間を選択してもよい。
 また、選択部604は、検出部606によって携帯電話網を経由して接続されている場合に、並列処理を実行開始することが検出された場合、実行対象の実行オブジェクトとして最も粒度が粗い実行オブジェクトを選択してもよい。具体的には、選択部604は、検出された場合に、粗粒度実行オブジェクトを選択する。なお、選択された結果は、CPU201のレジスタ、キャッシュメモリ、またはRAM203などの記憶領域に記憶される。
 設定部605は、選択部604によって選択された実行対象の実行オブジェクトを接続元プロセッサおよび接続先プロセッサで協動して実行可能な状態に設定する機能を有する。ここで、協動とは、接続元プロセッサおよび接続先プロセッサが協同して動くことを示している。たとえば、選択部604によって並列処理の粒度を粗とする粗粒度実行オブジェクトが選択された場合、設定部605は、CPU201と仮想CPU311が粗粒度実行オブジェクトを実行可能な状態に設定する。
 具体的な設定内容として、CPU201は、仮想CPU311に実行対象となった粗粒度実行オブジェクトのデータを転送し、粗粒度実行オブジェクトを実行可能な状態にする。また、他の設定内容として、オフロードサーバ101に端末エミュレータ307が起動していない場合、CPU201は、端末エミュレータ307を起動させ、粗粒度実行オブジェクトを実行可能な状態にする。
 また、設定部605は、実行対象の実行オブジェクトを、接続元装置および接続先装置のプロセッサ群のうち、特定の接続元プロセッサおよび特定の接続先プロセッサを含み、かつ最大の分割数となるプロセッサ群で協動して実行可能な状態に設定してもよい。特定の接続元プロセッサとは、端末装置103がマルチコアを有していた場合に、マスタとなるプロセッサのことであり、特定の接続先プロセッサとは、オフロードサーバ101がマルチコアを有していた場合に、マスタとなるプロセッサのことである。また、オフロードサーバ101のマスタとなるプロセッサとしては、たとえば、端末装置103の測定部602によるPingに対して、複数のプロセッサのうち、Pingの応答を行うプロセッサである。
 たとえば、接続元装置のプロセッサが1個であり、接続先装置のプロセッサが4個である場合、最大の分割数が4であった場合を想定する。設定部605は、端末装置103のCPU201と、オフロードサーバ101のマスタCPUを含む3つのCPU、計4つのCPUで協動して実行対象の実行オブジェクトを実行可能な状態に設定する。
 また、設定部605は、実行対象の実行オブジェクトを、接続元装置および接続先装置のプロセッサ群のうち、実行対象の実行オブジェクトにおける並列実行の数となるプロセッサ群で協動して実行可能な状態に設定してもよい。また、プロセッサ群には、特定の接続元プロセッサおよび特定の接続先プロセッサを含む。
 たとえば、接続元装置のプロセッサが1個であり、接続先装置のプロセッサが4個である場合、最大の分割数が4であり、実行対象の実行オブジェクトにおける並列実行の数が3となった場合を想定する。設定部605は、端末装置103のCPU201と、オフロードサーバ101のマスタCPUを含む2つのCPU、計3つのCPUで、協動して実行対象の実行オブジェクトを実行可能な状態に設定する。
 検出部606は、選択部604による選択によって、実行対象の実行オブジェクトの粒度より粒度が粗い新たな実行対象の実行オブジェクトが選択されたことを検出する機能を有する。たとえば、検出部606は、並列処理の粒度が細である細粒度実行オブジェクトから並列処理の粒度が中である中粒度実行オブジェクトに変更した場合、または、中粒度実行オブジェクトから粗粒度実行オブジェクトに変更した場合である。
 また、検出部606は、実行対象の実行オブジェクトとして、最も粒度が粗い実行オブジェクトが選択されている場合に、帯域が減少した状態を検出してもよい。具体的には、検出部606は、粗粒度実行オブジェクトが選択されている場合に、帯域σが減少した状態を検出する。また、帯域σが減少した状態として、一定時間ごとの平均値をとり、前回の平均値の帯域より下回った場合に、検出部606は、帯域が減少したとして検出してもよい。または、特定の閾値を下回った場合に、検出部606は、帯域が減少したとして検出してもよい。
 また、検出部606は、接続元装置と接続先装置とが携帯電話網を経由して接続されている場合に、並列処理を実行開始することを検出してもよい。具体的には、検出部606は、端末装置103が携帯電話網の一部である基地局102を経由し、オフロードサーバ101に接続されている場合に、並列処理を実行開始することを検出する。なお、検出された結果は、CPU201のレジスタ、キャッシュメモリ、またはRAM203などの記憶領域に記憶される。
 通知部607は、検出部606によって粒度が粗い新たな実行対象の実行オブジェクトが選択されたことが検出された場合、接続先装置に保持された変更前となる実行対象の実行オブジェクトによる処理結果の送信要求を接続先装置に通知する機能を有する。たとえば、通知部607は、オフロードサーバ101の仮想メモリ310に保持された変更前となる実行対象の実行オブジェクトによる処理結果の送信要求を、オフロードサーバ101に通知する。
 また、通知部607は、検出部606によって最も粒度が粗い実行オブジェクトが選択されている場合に、帯域が減少した状態が検出された場合、接続先装置に保持された実行対象の実行オブジェクトによる処理結果の送信要求を接続先装置に通知する機能を有する。たとえば、通知部607は、検出された場合に、オフロードサーバ101の仮想メモリ310に保持された変更前となる実行対象の実行オブジェクトによる処理結果の送信要求を、オフロードサーバ101に通知する。
 格納部608は、通知部607によって通知された送信要求による処理結果を接続元装置の記憶装置に格納する機能を有する。たとえば、格納部608は、送信要求による処理結果を実メモリ309に格納する。
 実行部609、実行部610は、設定部605によって実行可能な状態に設定された実行対象の実行オブジェクトを実行する機能を有する。たとえば、粗粒度実行オブジェクトが実行対象の実行オブジェクトとなった場合、実行部609と、実行部610は、各装置で粗粒度実行オブジェクトを実行する。
 図7は、並列処理制御システム100の設計時における概要を示す説明図である。符号701に示すブロック図では、実行オブジェクトの生成の様子を示し、符号702に示すブロック図は、実行オブジェクトの詳細を示している。
 符号701に示すブロック図にて、並列コンパイラは、実行されるとプロセス304となるソースコードから、構造解析を行いつつ、実行オブジェクトを生成する。並列コンパイラは、並列処理の粒度によって、粗粒度に対応する粗粒度実行オブジェクト703、中粒度に対応する中粒度実行オブジェクト704、細粒度に対応する細粒度実行オブジェクト705を生成する。また、並列コンパイラは、粗粒度実行オブジェクト703の構造解析結果706、中粒度実行オブジェクト704の構造解析結果707、細粒度実行オブジェクト705の構造解析結果708を生成する。
 また、構造解析結果706~構造解析結果708には、構造解析で得た、処理全体での逐次処理の割合Sと、並列処理で発生するデータ量Dと、並列処理の発生する頻度Xと、並列実行が可能な最大の分割数N_Maxが記載されている。以下の説明では、粗粒度を示す接尾記号をc、中粒度を示す接尾記号をm、細粒度を示す接尾記号をfとする。
 次に並列処理の各粒度について説明する。粗粒度の並列処理とは、プログラム中の一連の処理の固まり、ブロックについて、一連の処理ブロック間に依存関係がない場合、ブロックを並列実行することである。中粒度の並列処理とは、ループ処理にて、ループの繰り返し部分に依存関係がない場合、繰り返し部分を並列実行することである。細粒度の並列処理とは、ステートメント間に依存関係がない場合、各ステートメントを並列実行することである。各粒度、構造解析結果706~構造解析結果708については、後述する図8にて具体例を示す。
 符号702に示すブロック図では、粗粒度実行オブジェクト703~細粒度実行オブジェクト705の詳細を示している。粗粒度実行オブジェクト703は、プログラム中の一連のブロックを並列実行するように記載されている。中粒度実行オブジェクト704は、粗粒度実行オブジェクト703におけるプログラム中の一連のブロックを並列実行するように記載された状態で、ブロック内のループ処理について、さらに並列実行するように記載されている。細粒度実行オブジェクト705は、プログラム中の一連のブロックを並列実行し、さらにブロック内のループ処理を並列実行する状態で、さらに、ステートメントを並列実行するように記載されている。
 このように、中粒度実行オブジェクト704、細粒度実行オブジェクト705は、該当の粒度より粒度が粗い並列処理を実行してもよいし、しなくてもよい。前述の例では粒度が粗い並列処理を実行していたが、たとえば、中粒度実行オブジェクト704は、プログラム中の一連のブロックを並列実行せず、ループ処理を並列実行するように生成されてもよい。
 また、粒度が細かい実行オブジェクトは、該当の粒度より粒度が粗い並列処理を実行できるため、粒度が細かいほど、並列処理をより分割することができる分、通信量は増大する。したがって、広帯域では通信量の多い粒度が細かい実行オブジェクトを実行し、狭帯域では通信量の少ない粒度が粗い実行オブジェクトを実行することで、並列処理制御システム100は帯域に応じて最適な並列処理を実行でき、処理性能を向上することができる。
 図8は、各粒度の実行オブジェクトの具体例を示す説明図である。図8では、動画像の特定のフレームを復号化する際の処理について、粗粒度実行オブジェクト703~細粒度実行オブジェクト705、また、構造解析結果706~構造解析結果708の例を示している。
 粗粒度実行オブジェクト703は、復号化を行う関数を並列実行するように生成されている。具体的には、粗粒度実行オブジェクト703は、端末装置103等によって、“decode_video_frame()”関数を含むブロックと“decode_audio_frame()”関数を含むブロックを並列実行するプロセスを生成する。
 以下、構造解析結果706の値について説明する。並列実行可能なブロックが2つあるため、並列実行が可能な最大の分割数Nc_Maxは2となる。また、“decode_video_frame()”関数内に10000ステートメント存在し、うち、逐次処理が1ステートメントであった場合、逐次処理の割合Scは1/10000=0.00001=0.01[%]となる。また、データ量Dcは、“decode_video_frame()”関数の引数のデータサイズとなる。頻度Xcは、引数を渡す際の1回である。具体的にDcは、引数の“dst”、“src->video”のサイズ、“sizeof(src->video)”の計算結果のサイズと、第2引数の実データである第3引数の値とを合計した値になる。
 ここで、ディスプレイ207が320×240ピクセルであるQVGA(Quarter Video Graphics Array)が採用されており、画像圧縮処理の単位となるマクロブロックが8×8ピクセルである場合を想定する。このとき、QVGAであれば、マクロブロックは(320×240)/(8×8)=1200個存在することになる。説明を簡略化するため、1つのマクロブロックの平均サイズが8[バイト]となる場合を想定する。したがって、“src->video”は、1200個のマクロブロックを含んでおり、“sizeof(src->video)”は少なくとも1200×8[バイト]となる。以上より、Dcは(4×3+1200×8)×8=76896[ビット]となる。
 また、CPU数N=1の実行時間T(1)については、並列コンパイラは、たとえば、対象のステップ数と、CPU201の1命令のクロック時間から算出してもよいし、プロファイラに実行させた値を格納してもよい。図8の例では、実行時間T(1)=7.5[ミリ秒]とする。また、(1)式において、端末装置103は、通信時間τをデータ量D・頻度X/帯域σにて算出する。端末装置103は、帯域σを25[Mbps]とし、CPU数N=2の実行時間を算出すると、下記のような結果を得る。
 (0.0001+(1-0.0001)/2)×0.0075+76896/(25×1000×1000)
≒0.0068=6.8[ミリ秒]
 T(1)=7.5[ミリ秒]、T(2)=6.8[ミリ秒]となるため、粗粒度の場合、CPU数N=2で並列処理を行った方が早く処理を実行することができる。
 中粒度実行オブジェクト704は、復号化を行う関数の中で、マクロブロックを処理するループ処理を並列実行するように生成されている。具体的には、中粒度実行オブジェクト704は、ループ部分となる変数iが0から1200未満までのループ処理を、変数iごとに並列実行するプロセスを生成する。たとえば、生成されたプロセスは、変数iが0から599までを実行する処理と、変数iが600から1199までを実行する処理と、のように並列実行する。
 以下、構造解析結果707の値について説明する。ループの繰り返し数は1200であるため、並列実行が可能な最大の分割数Nm_Maxは1200となる。また、ループ処理の中に100ステートメント存在し、そのうち、中粒度実行オブジェクト704内に示した逐次処理が1ステートメントであった場合、逐次処理の割合Smは1/100=0.01=1[%]となる。また、データ量Dmは、1個のマクロブロックのサイズとなり、8×8=64[ビット]である。頻度Xmはマクロブロックのデータを転送する1200回である。
 また、CPU数N=1の実行時間T(1)は、2.0[ミリ秒]とする。端末装置103は、帯域σを50[Mbps]とし、CPU数N=2の実行時間を算出すると、下記のような結果を得る。
 (0.01+(1-0.01)/2)×0.0020+600×8×8/(50×1000×1000)
≒0.0018=1.8[ミリ秒]
 なお、上記算出式において、CPU数N=2の場合、自身が処理する分のマクロブロックのデータ転送を行わなくてよいため、データの転送頻度を1200×(1/2)=600としている。端末装置103は、CPU数N=3の実行時間を算出すると、下記のような結果を得る。
 (0.01+0.99/3)×0.0020+800×8×8/(50×1000×1000)
≒0.0017=1.7[ミリ秒]
 同様に、自身が処理する分のマクロブロックのデータ転送を行わないことを考慮し、データの転送頻度を1200×(2/3)=800としている。以上より、T(1)=2.0[ミリ秒]、T(2)=1.8[ミリ秒]、T(3)=1.7[ミリ秒]となるため、中粒度の場合、CPU数N=3で並列処理を行った方が早く処理を実行することができる。
 また、中粒度の並列処理については、ループ処理を並列処理するため、たとえば、ループ処理の内部に別のループ処理が存在する場合、2種類の中粒度実行オブジェクトを生成することができる。
 細粒度実行オブジェクト705は、マクロブロックを処理する中で、各ステートメントを並列実行するように生成されている。具体的には、中粒度実行オブジェクト704は、“a=1;”、“b=1;”、“c=1;”という処理を並列実行するプロセスを生成する。
 以下、構造解析結果708の値について説明する。依存関係のないステートメントは3であるため、並列実行が可能な最大の分割数Nf_Maxは3となる。また、逐次処理の割合Sfは、依存関係のない3ステートメントと依存関係のある1ステートメントから、1/4=0.25=25[%]である。データ量Dfは、一つの変数のサイズである32[ビット]であり、頻度は3回存在するため、3となる。
 また、CPU数N=1の実行時間T(1)は、50[ナノ秒]とする。端末装置103は、帯域σを25[Mbps]とし、CPU数N=3の実行時間を算出すると、下記のような結果を得る。
 (0.25+(1-0.25)/3)×50×10^(-9)+32×3/(75×1000×1000)
≒1.3×10^(-6)=1.3[マイクロ秒]
 以上より、T(1)=50[ナノ秒]、T(3)=1.3[マイクロ秒]となるため、細粒度の場合、並列処理を実行せず逐次処理を行った方が早く処理を実行することができる。
 また、細粒度の並列処理については、少なくとも1つの行に、複数の演算子があるようなステートメントが存在すれば、細粒度の並列処理が存在することになる。したがって、細粒度の並列処理の出現頻度は高い。たとえば、粗粒度、中粒度の並列処理の内部において、細粒度の並列処理が発生することも多い。
 また、図7で説明したように、粒度の細かい実行オブジェクトは、該当の粒度より粒度が粗い並列処理を実行することができる。たとえば、中粒度実行オブジェクト704にて、粗粒度の並列処理も行われている場合、最大の分割数は、“decode_video_frame()”関数内で示すNm_Max=1200と、“decode_audio_frame()”関数での分割数を合計した数となる。同様に、細粒度実行オブジェクト705にて、中粒度の並列処理も行われている場合、最大の分割数は、1200×3=3600となる。
 図9は、細粒度が選択された場合における並列処理制御システム100の実行状態を示す説明図である。グラフ901は、横軸に時刻t、縦軸に帯域σを示している。図9に示す並列処理制御システム100は、グラフ901における広帯域を獲得した領域902の状態である。帯域監視部303によって広帯域を獲得したことを検出した並列処理制御システム100では、細粒度実行オブジェクト705によって実行されたプロセス304にて、負荷分散を行う。
 具体的には、端末装置103がプロセス304内のスレッド903_0を実行し、オフロードサーバ101が、プロセス304内のスレッド903_1~スレッド903_3を実行する。細粒度実行オブジェクト705によるプロセス304を実行している場合、仮想メモリ310は、ダイナミック同期仮想メモリ904に設定される。ダイナミック同期仮想メモリ904は、スレッド903_1~スレッド903_3による書き込みに対し、実メモリ309と常に同期が行われる状態である。
 図10は、中粒度が選択された場合における並列処理制御システム100の実行状態を示す説明図である。図10に示す並列処理制御システム100は、グラフ901における中帯域を獲得した領域1001、または領域1002の状態である。中帯域とは、具体的には、全体の帯域に対して中間程度の領域であり、全体の帯域が100[Mbps]であれば、中帯域は、たとえば、33~67[Mbps]としてもよい。帯域監視部303によって中帯域を獲得したことを検出した並列処理制御システム100では、中粒度実行オブジェクト704によって実行されたプロセス304にて、負荷分散を行う。
 具体的には、端末装置103がプロセス304内のスレッド1003_0を実行し、オフロードサーバ101が、プロセス304内のスレッド1003_1を実行する。中粒度実行オブジェクト704によるプロセス304を実行している場合、仮想メモリ310は、バリア同期仮想メモリ1004に設定される。バリア同期仮想メモリ1004は、スレッド1003_1での部分処理が終わるごとに、実メモリ309と同期が行われる。
 また、矢印1005で示すように、粒度が細粒度から中粒度に切り替わった場合、並列処理制御システム100は、ダイナミック同期仮想メモリ904の内容を実メモリ309に全て反映する。これにより、粒度の変更が起こっても仮想メモリ310を保護することができる。
 図11は、粗粒度が選択された場合における並列処理制御システム100の実行状態を示す説明図である。図11に示す並列処理制御システム100は、グラフ901における狭帯域を獲得した領域1101の状態である。帯域監視部303によって狭帯域を獲得したことを検出した並列処理制御システム100では、粗粒度実行オブジェクト703によって実行されたプロセス304にて、負荷分散を行う。
 具体的には、端末装置103がプロセス304内のスレッド1102_0、スレッド1102_1を実行し、オフロードサーバ101が、プロセス304内のスレッド1102_2を実行する。粗粒度実行オブジェクト703によるプロセス304を実行している場合、仮想メモリ310は、非同期仮想メモリ1103に設定される。非同期仮想メモリ1103は、スレッド1102_2の起動および終了にて実メモリ309と同期が行われる。
 また、矢印1104で示すように、粒度が中粒度から粗粒度に切り替わった場合、並列処理制御システム100は、バリア同期仮想メモリ1004の内容を実メモリ309に全て反映する。これにより、粒度の変更が起こっても仮想メモリを保護することができる。
 図12は、無線通信105が遮断された場合における並列処理制御システム100の実行状態を示す説明図である。グラフ901にて、時間1201にて帯域σが0となっている。図12に示す並列処理制御システム100は、グラフ901における狭帯域を獲得した領域1202の状態であり、さらに、帯域σの時間変化(d/dt)σ(t)<0を検出した状態である。帯域監視部303によって帯域σの時間変化(d/dt)σ(t)<0を検出した並列処理制御システム100では、負荷分散を中止し、端末装置103にて粗粒度実行オブジェクト703によるプロセス304を実行する。
 具体的には、並列処理制御システム100は、粗粒度が選択された場合に(d/dt)σ(t)<0を検出すると、非同期仮想メモリ1103のデータ内容を実メモリ309に転送する。また、並列処理制御システム100は、オフロードサーバ101で実行していたスレッド1102_2のコンテキスト情報も端末装置103に転送し、端末装置103でスレッド1102_2’として継続して処理を続行する。なお、非同期仮想メモリ1103のデータ内容の転送が無線通信105の回線遮断に間に合わなかった場合、端末装置103は、粗粒度実行オブジェクト703からプロセス304を再度起動し、処理を再開する。
 また、オフロードサーバ101上の、端末エミュレータ307、仮想メモリ監視フィードバック308、仮想メモリ310、スレッド1102_2は、無線通信105の遮断と同時に処理を中断する。端末エミュレータ307、仮想メモリ監視フィードバック308、仮想メモリ310、スレッド1102_2は、一定時間オフロードサーバ101上に保持されるが、一定時間経過後、オフロードサーバ101は、メモリ解放を行う。
 図13は、並列処理の粒度が粗くなった場合における、データ保護の具体例を示す説明図である。符号1301で示す説明図は、新たな実行オブジェクトが選択される前の状態を示し、符号1302で示す説明図は、新たな実行オブジェクトが選択され、実行対象の実行オブジェクトが変更された状態を示している。また、並列処理の粒度が粗くなる例としては、細粒度実行オブジェクト705から中粒度実行オブジェクト704に変更した場合、または、中粒度実行オブジェクト704から粗粒度実行オブジェクト703に変更した場合である。図13の例では、細粒度実行オブジェクト705から中粒度実行オブジェクト704に変更する場合にて説明する。
 符号1301で示す説明図では、並列処理制御システム100は、細粒度実行オブジェクト705を各装置にて実行している。具体的には、端末装置103は、“A=B+C;”、“G=H+I;”、“M=A+D+G+J;”という3ステートメントを実行する。また、オフロードサーバ101は、“D=E+F;”、“J=K+L;”という2ステートメントを実行する。時刻t1にて、端末装置103は、“A=B+C;”を実行し、実メモリ309に処理結果となる“A”の値を格納した状態である。また、時刻t1にて、オフロードサーバ101は、“D=E+F;”を実行し、仮想メモリ310に処理結果となる“D”の値を格納した状態である。
 時刻t1にて、実行対象の実行オブジェクトが中粒度実行オブジェクト704に変更され、並列処理制御システム100は、符号1302で示す状態になる。並列処理の粒度が粗くなった結果、分割された処理量が多くなるため、1つの装置に集中して処理を行うようになる。符号1302の状態では、オフロードサーバ101ではどのステートメントも実行せず、端末装置103にて、前述の5つのステートメントを実行する。このとき、オフロードサーバ101は、“G=H+I;”から実行するが、“D”の値は、実メモリ309に存在しないため、“M=A+D+G+J;”を実行することができない。
 したがって、端末装置103は、オフロードサーバ101に、変更前となる実行対象の実行オブジェクトの処理結果の送信要求を通知し、オフロードサーバ101は、仮想メモリ310に格納された処理結果を端末装置103に送信する。処理結果を受信した端末装置103は、処理結果を実メモリ309に格納する。これにより、端末装置103は、実行対象の実行オブジェクトの変更後も、処理を続行することができる。
 図14は、並列処理の分割数に応じた実行時間の具体例を示す説明図である。図14では、プロセス304の実行時間を150[ミリ秒]とした場合の、並列処理の分割数に応じた実行時間を示している。前提として、プロセス304の並列処理可能な処理の処理時間を100[ミリ秒]、逐次処理部分の処理時間を50[ミリ秒]とする。この場合、逐次処理の割合Sは、67[%]となる。また、プロセス304の並列実行可能な最大の分割数N_Maxを4とする。
 次に、帯域σが通信品質1となる場合について、実行時間の具体例を示す。帯域σが通信品質1の状態では、他のCPUにデータを通知するのに10[ミリ秒]かかると想定する。通信品質1の場合におけるプロセス304の実行可能な形態としては、CPU数N=1である実行形態1401、CPU数N=2である実行形態1402、CPU数N=3である実行形態1403、CPU数N=4である実行形態1404である。
 実行形態1401でのプロセス304の実行時間T(1)は、逐次処理の処理時間50[ミリ秒]+並列処理の処理時間100[ミリ秒]=150[ミリ秒]となる。また、実行形態1402でのプロセス304の実行時間T(2)は、逐次処理の処理時間50[ミリ秒]+並列処理の処理時間50[ミリ秒]+通信時間10[ミリ秒]×2=120[ミリ秒]となる。
 同様に、実行形態1403でのプロセス304の実行時間T(3)は、逐次処理の処理時間50[ミリ秒]+並列処理の処理時間33[ミリ秒]+通信時間10[ミリ秒]×4=123[ミリ秒]となる。同様に、実行形態1404でのプロセス304の実行時間T(4)は、逐次処理の処理時間50[ミリ秒]+並列処理の処理時間25[ミリ秒]+通信時間10[ミリ秒]×6=135[ミリ秒]となる。以上より、実行形態1401~実行形態1404のうち、実行形態1402が、最短の実行時間となるため、端末装置103は、CPU数N=2で並列処理を実行する。
 続けて、帯域σが通信品質2となる場合について、実行時間の具体例を示す。帯域σが通信品質2の状態では、帯域σが通信品質1の2倍となり、他のCPUにデータを通知するのに5[ミリ秒]かかると想定する。通信品質1の場合におけるプロセス304の実行可能な形態としては、CPU数N=1である実行形態1401、CPU数N=2である実行形態1405、CPU数N=3である実行形態1406、CPU数N=4である実行形態1407である。
 実行形態1401でのプロセス304の実行時間T(1)は、前述の通り150[ミリ秒]である。実行形態1405でのプロセス304の実行時間T(2)は、逐次処理の処理時間50[ミリ秒]+並列処理の処理時間50[ミリ秒]+通信時間5[ミリ秒]×2=110[ミリ秒]となる。
 同様に、実行形態1406でのプロセス304の実行時間T(3)は、逐次処理の処理時間50[ミリ秒]+並列処理の処理時間33[ミリ秒]+通信時間5[ミリ秒]×4=103[ミリ秒]となる。同様に、実行形態1407でのプロセス304の実行時間T(4)は、逐次処理の処理時間50[ミリ秒]+並列処理の処理時間25[ミリ秒]+通信時間5[ミリ秒]×6=105[ミリ秒]となる。以上より、実行形態1401、実行形態1405~実行形態1407のうち、実行形態1406が、最短の実行時間となるため、端末装置103は、CPU数N=3で並列処理を実行する。
(実施の形態2の概要説明)
 実施の形態1にかかる並列処理制御システム100は、オフロードサーバ101と端末装置103を有していた。実施の形態2にかかる並列処理制御システム100は、他の端末装置がオフロードサーバ101の代わりとなり、並列処理を行う。端末装置103と他の端末装置は、アドホック接続により接続されている。実施の形態2にかかる並列処理制御システム100の機能については、図6にて示したオフロードサーバ101が有する機能を、他の端末装置が有することになる。後述する図15では、実施の形態1にかかる端末装置103を端末装置103#0とし、実施の形態1にかかるオフロードサーバ101の機能を有する装置を端末装置103#1、端末装置103#2としている。
 また、端末装置103#0と端末装置103#1が、それぞれ独立の携帯端末でよいし、端末装置103#0と端末装置103#1で、1台のセパレート型の携帯端末を形成してもよい。たとえば、端末装置103#0が主にディスプレイとして動作し、端末装置103#1のディスプレイがタッチパネルとなりキーボードとして動作する。ユーザは、端末装置103#0と端末装置103#1を物理的に接続したり、端末装置103#0と端末装置103#1を切り離したりして、使用してもよい。
 また、実施の形態2にかかる検出部606は、接続元装置と接続先装置とがアドホック接続されている場合に、並列処理を実行開始することを検出してもよい。具体的には、検出部606は、接続元装置となる端末装置103#0と、接続先装置となる端末装置103#1がアドホック接続されている場合に、並列処理を実行開始することを検出する。なお、検出された結果は、端末装置103#0のレジスタ、キャッシュメモリ、端末装置103#0のRAMに記憶される。
 また、実施の形態2にかかる選択部604は、実施の形態2にかかる検出部606によって並列処理を実行開始することが検出された場合、実行対象の実行オブジェクトとして最も粒度が細かい実行オブジェクトを選択してもよい。具体的には、選択部604は、アドホック接続時に並列処理を実行開始することが検出された場合、細粒度実行オブジェクト705を選択する。なお、選択された結果は、端末装置103#0のレジスタ、キャッシュメモリ、端末装置103#0のRAMに記憶される。
 図15は、実施の形態2にかかるアドホック接続での並列処理制御システム100の実行状態を示す説明図である。図15では、端末装置103#0~端末装置103#2が無線通信105によってアドホック接続を行っている。また、端末装置103#0上のソフトウェアとして、端末OS301#0、スケジューラ302#0、帯域監視部303#0が実行されている。端末装置103#1、端末装置103#2でも同様のソフトウェアが実行中である。
 アドホック接続では、端末装置103#0~端末装置103#2間の通信帯域が保証されており、たとえば、300[Mbps]で接続可能である。このように、アドホック接続での並列処理制御システム100は広帯域を獲得できるため、細粒度実行オブジェクト705によるプロセス304にて、負荷分散を行う。
 具体的には、端末装置103#0が、プロセス304内のスレッド1501_0を実行し、端末装置103#1が、プロセス304内のスレッド1501_1を実行し、端末装置103#2が、プロセス304内のスレッド1501_2を実行する。また、アドホック通信における並列処理制御システム100は、通信時間τを元に、並列処理の粒度を選択し、たとえば、粗粒度、中粒度の実行オブジェクトによって負荷分散を行ってもよい。アドホック通信における並列処理制御システム100は、アドホック接続する端末装置103全てのCPUが1つのマルチコアプロセッサシステムとして運用されている状態である。
(実施の形態3の概要説明)
 実施の形態2では、アドホック接続する端末装置103全てのCPUが1つのマルチコアプロセッサシステムとして並列処理制御システム100を形成していた。実施の形態3にかかる並列処理制御システム100は、端末装置103がマルチコアプロセッサシステムである場合を想定する。具体的には、端末装置103内のマルチコアのうち、特定のコアが実施の形態1にかかる端末装置103となり、特定のコア以外の他のコアがオフロードサーバ101となり、並列処理を行う。実施の形態3にかかる並列処理制御システム100の機能については、図6にて示したオフロードサーバ101が有する機能を、他のコアが有することになる。
 マルチコアプロセッサシステムは、コアが複数搭載されたプロセッサを含むコンピュータのシステムである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、実施の形態3では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。実施の形態3にかかる端末装置103は、CPU201#0~CPU201#2という3つのCPUを有しており、それぞれがバス210で接続されている。
 また、実施の形態3にかかる測定部602は、複数のプロセッサのうち、特定のプロセッサおよび特定のプロセッサ以外の他のプロセッサ間の帯域を測定する機能を有する。具体的には、測定部602は、特定のプロセッサとして、CPU201#0とし、他のプロセッサとして、CPU201#1とした場合、CPU201#0とCPU201#1との帯域となるバス210の速度を測定する。
 また、実施の形態3にかかる設定部605は、選択部604によって選択された実行対象の実行オブジェクトを特定のプロセッサおよび他のプロセッサで協動して実行可能な状態に設定する機能を有する。たとえば、選択部604によって粗粒度実行オブジェクトが選択された場合、設定部605は、CPU201#0とCPU201#1で協動して実行対象の実行オブジェクトを実行可能な状態に設定する。
 後述する図16では、実施の形態1にかかる端末装置103をCPU201#0とし、実施の形態1にかかるオフロードサーバ101の機能を有する装置をCPU201#1、CPU201#2としている。
 また、実施の形態3にかかる設定部605は、実行対象の実行オブジェクトを、複数のプロセッサのうち、特定のプロセッサを含み、かつ最大の分割数となるプロセッサ群で協動して実行可能な状態に設定してもよい。たとえば、最大の分割数が3であった場合を想定する。このとき、設定部605は、CPU201#0~CPU201#2で協動して実行対象の実行オブジェクトを実行可能な状態に設定する。
 また、実施の形態3にかかる設定部605は、実行対象の実行オブジェクトを、複数のプロセッサのうち、特定のプロセッサを含み、かつ実行対象の実行オブジェクトにおける並列実行の数となるプロセッサ群で協動して実行可能な状態に設定してもよい。たとえば、実行対象の実行オブジェクトにおける並列実行の数を2と想定する。このとき、設定部605は、CPU201#0、CPU201#1で協動して実行対象の実行オブジェクトを実行可能な状態に設定する。
 図16は、実施の形態3にかかるマルチコアプロセッサシステムにおける並列処理制御システム100の実行状態を示す説明図である。図16では、CPU201#0がバス210にて接続されている。また、CPU201#0上のソフトウェアとして、端末OS301#0、スケジューラ302#0、帯域監視部303#0が実行されている。CPU201#1、CPU201#2でも同様のソフトウェアが実行中である。
 バス210の転送速度は高速であり、たとえば、バス210がPCI(Peripheral Component Interconnect)バスであり、32[ビット]、33[MHz]で動作する場合を想定する。このとき、バス210の転送速度は、1056[Mbps]となり、サーバ接続に比べて高速である。このように、マルチコアプロセッサシステムにおける並列処理制御システム100は広帯域を獲得できるため、細粒度実行オブジェクト705によるプロセス304にて、負荷分散を行う。
 具体的には、CPU201#0が、プロセス304内のスレッド1501_0を実行し、CPU201#1が、プロセス304内のスレッド1501_1を実行し、CPU201#2が、プロセス304内のスレッド1501_2を実行する。また、マルチコアプロセッサシステムにおける並列処理制御システム100は、端末装置103の仕様によって、中粒度実行オブジェクト704、粗粒度実行オブジェクト703によって負荷分散を行ってもよい。
(実施の形態1~実施の形態3の処理説明)
 実施の形態1~実施の形態3にかかる並列処理制御システム100の差分については、オフロードを行う装置が、オフロードサーバ101、他の端末装置、または同一の装置内の他のCPU、のいずれかという差分となり、処理に大きく差がない。図17~図20にて、実施の形態1~実施の形態3にかかる並列処理制御システム100の処理を合わせて説明を行う。また、特に実施の形態1~実施の形態3のうち、特有の実施の形態のみ持ち得る特徴があるときに関して、実施の形態1~実施の形態3を明記する。
 図17は、スケジューラ302による並列処理の開始処理を示すフローチャートである。端末装置103は、利用者、OS等による起動要求によって、負荷分散プロセスを起動する(ステップS1701)。続けて、端末装置103は、接続環境を確認する(ステップS1702)。
 接続環境が接続なしであり、端末装置103がマルチコアプロセッサシステムであった場合(ステップS1702:接続なし)、端末装置103は、端末装置103のCPU数に合わせた実行オブジェクトをロードする(ステップS1703)。実施の形態3にかかる並列処理制御システム100は、ステップS1702:接続なしのルートを通る。接続環境がアドホック接続である場合(ステップS1702:アドホック接続)、端末装置103は、全粒度の実行オブジェクトをロードする(ステップS1704)。実施の形態2にかかる並列処理制御システム100は、ステップS1702:アドホック接続のルートを通る。ロード後、端末装置103は、他の端末装置に細粒度実行オブジェクト705を転送する(ステップS1705)。
 接続環境がサーバ接続である場合(ステップS1702:サーバ接続)、端末装置103は、全粒度の実行オブジェクトをロードする(ステップS1706)。実施の形態1にかかる並列処理制御システム100は、ステップS1702:サーバ接続のルートを通る。また、サーバ接続の時に、端末装置103とオフロードサーバ101は携帯電話網を経由して接続されている。ロード後、端末装置103は、オフロードサーバに粗粒度実行オブジェクト703を転送する(ステップS1707)。また、端末装置103は、バックグラウンドにて、他の実行オブジェクトをオフロードサーバ101に転送し(ステップS1709)、帯域監視部303を起動する(ステップS1710)。
 ステップS1703、ステップS1705、ステップS1707のいずれかを実行した端末装置103は、負荷分散プロセスを実行開始する(ステップS1708)。端末装置103は、負荷分散プロセスを実行開始後、図18にて後述する並列処理制御処理を実行する。
 オフロードサーバ101は、ステップS1707によって粗粒度実行オブジェクト703の通知を受けると、端末エミュレータ307を起動し(ステップS1711)、仮想メモリ310を運用する(ステップS1712)。具体的には、オフロードサーバ101は、粗粒度実行オブジェクト703に変更されたという通知を受けたため、仮想メモリ310を非同期仮想メモリ1103に設定する。
 図18は、スケジューラ302による負荷分散プロセスにおける並列処理制御処理を示すフローチャートである。並列処理制御処理は、ステップS1708の処理後に行われるほか、帯域監視部303からの通知によっても実行される。なお、図18の並列処理制御処理は、接続環境がサーバ接続である場合を想定している。アドホック接続である場合、ステップS1818、ステップS1824の処理の要求先が、他の端末装置となる。
 帯域監視部303を実行する端末装置103は、帯域σを取得する(ステップS1820)。具体的には、端末装置103は、pingを発行することにより帯域σを取得する。取得後、端末装置103は、帯域σが前回の値から変化したか否かを判断する(ステップS1821)。変化した場合(ステップS1821:Yes)、端末装置103は、スケジューラ302に帯域σと帯域σの変化があったことを通知する(ステップS1822)。
 通知後、端末装置103は、帯域σの時間変化(d/dt)σ(t)が0未満か否かを判断する(ステップS1823)。帯域σの時間変化が0未満である場合(ステップS1823:Yes)、端末装置103は、オフロードサーバ101にデータ保護処理の実行要求を通知する(ステップS1824)。データ保護処理の詳細については、図19にて後述する。ステップS1824の処理を終了後、または帯域σの時間変化が0以上の場合(ステップS1823:No)、または帯域σが変化していない場合(ステップS1821:No)、端末装置103は、一定時間経過後、ステップS1820の処理に移行する。
 帯域監視部303より通知を受けた端末装置103は、スケジューラ302によって変数iを1、変数gを粗粒度に設定し(ステップS1801)、変数gの値を確認する(ステップS1802)。変数gが粗粒度である場合(ステップS1802:粗粒度)、端末装置103は、粗粒度処理で行われる逐次処理の割合Sc、データ量Dc、データ転送頻度Xc、CPU数N=1の実行時間T(1)を取得する(ステップS1803)。
 取得後、端末装置103は、帯域監視部303から通知された帯域σを用いて、通信時間τc=Xc・Dc/σを算出する(ステップS1804)。算出後、端末装置103は、CPU数N=iの実行時間T(i)を(1)式によって算出する(ステップS1805)。算出後、端末装置103は、変数gを中粒度に設定し(ステップS1806)、ステップS1802の処理に移行する。
 変数gが中粒度である場合(ステップS1802:中粒度)、端末装置103は、中粒度処理で行われる逐次処理の割合Sm、データ量Dm、データ転送頻度Xm、CPU数N=1の実行時間T(1)を取得する(ステップS1807)。
 取得後、端末装置103は、帯域監視部303から通知された帯域σを用いて、通信時間τm=Xm・Dm/σを算出する(ステップS1808)。算出後、端末装置103は、CPU数N=iの実行時間T(i)を(1)式によって算出する(ステップS1809)。算出後、端末装置103は、変数gを細粒度に設定し(ステップS1810)、ステップS1802の処理に移行する。
 変数gが細粒度である場合(ステップS1802:細粒度)、端末装置103は、細粒度処理で行われる逐次処理の割合Sf、データ量Df、データ転送頻度Xf、CPU数N=1の実行時間T(1)を取得する(ステップS1811)。
 取得後、端末装置103は、帯域監視部303から通知された帯域σを用いて、通信時間τf=Xf・Df/σを算出する(ステップS1812)。算出後、端末装置103は、CPU数N=iの実行時間T(i)を(1)式によって算出する(ステップS1813)。算出後、端末装置103は、変数gを粗粒度に設定し、変数iをインクリメントし(ステップS1814)、変数iが最大の分割数N_Max以下か否かを判断する(ステップS1815)。変数iが最大の分割数N_Max以下である場合(ステップS1815:Yes)、端末装置103は、ステップS1802の処理に移行する。
 変数iがN_Maxより大きい場合(ステップS1815:No)、端末装置103は、算出されたT(N)のうち、Min(T(N))となる変数i、変数gを新しいCPU数、粒度に設定する(ステップS1816)。続けて、端末装置103は、設定された粒度に対応する実行オブジェクトを、実行対象の実行オブジェクトに設定する(ステップS1817)。設定後、端末装置103は、設定されたCPU数、粒度を、帯域監視部303へ通知する(ステップS1818)。
 通知後、端末装置103は、オフロードサーバ101に仮想メモリ設定処理の実行要求を通知する(ステップS1819)。仮想メモリ設定処理の詳細は、図20にて後述する。通知後、端末装置103は、並列処理制御処理を終了し、設定された実行対象の実行オブジェクトにて、負荷分散プロセスを実行する。また、オフロードサーバ101も、設定された実行対象の実行オブジェクトにて負荷分散プロセスを実行する。オフロードサーバ101が複数存在する場合でも、全てのオフロードサーバ101が同一の実行対象の実行オブジェクトにて負荷分散プロセスを実行する。
 なお、最大の分割数N_Maxの値は、粒度によって異なるため、端末装置103は、ステップS1815の処理を、粗粒度の最大の分割数Nc_Max、中粒度の最大の分割数Nm_Max、細粒度の最大の分割数Nf_Maxのうち、最大値で判断してもよい。そして、ある粒度において、並列実行の数となる変数iがその粒度の最大の分割数を超えた場合、端末装置103は、該当部分の処理を飛ばしてよい。具体的には、粗粒度の最大の分割数Nc_Max=2、変数i=3となった場合、端末装置103は、ステップS1803~ステップS1805の処理を行わず、ステップS1806の処理を実行し、続けて中粒度の処理に移行する。
 図19は、データ保護処理を示すフローチャートである。データ保護処理は、オフロードサーバ101または、他の端末装置によって実行される。図19の例では、説明の簡略化のため、オフロードサーバ101にて実行される場合を想定して説明を行う。
 オフロードサーバ101は、設定された粒度が変化したかを判断する(ステップS1901)。粒度が細粒度から中粒度に変化した場合(ステップS1901:細粒度→中粒度)、オフロードサーバ101は、ダイナミック同期仮想メモリ904のデータを端末装置103に転送する(ステップS1902)。転送後、オフロードサーバ101は、データ保護処理を終了する。
 粒度が中粒度から粗粒度に変化した場合(ステップS1901:中粒度→粗粒度)、オフロードサーバ101は、バリア同期仮想メモリ1004の部分計算データを回収する(ステップS1903)。なお、CPU数Nが3以上である場合、バリア同期仮想メモリ1004が複数存在する可能性があるため、オフロードサーバ101は、バリア同期仮想メモリ1004の部分計算データをそれぞれ回収する。
 回収後、オフロードサーバ101は、オフロードサーバ101・端末装置103間のデータ同期を実行する(ステップS1904)。同期後、オフロードサーバ101は、端末装置103に部分処理の集約要求を通知する(ステップS1905)。具体的には、粒度が変化した際に、中粒度実行オブジェクト704によるプロセス304によって、ループ内の特定のインデックスの計算データが算出されている。したがって、端末装置103は、計算済みであるインデックスに対応する部分処理を集約し、続けて、未処理のインデックスに対応する部分処理を実行する。集約要求を通知後、オフロードサーバ101は、データ保護処理を終了する。
 粒度が変化していない、または、細粒度から中粒度、中粒度から粗粒度以外の変化である場合(ステップS1901:その他)、オフロードサーバ101は、データ保護処理を終了する。
 図20は、仮想メモリ設定処理を示すフローチャートである。仮想メモリ設定処理も、データ保護処理と同様に、オフロードサーバ101または、他の端末装置によって実行される。図20の例では、説明の簡略化のため、オフロードサーバ101にて実行される場合を想定して説明を行う。また、仮想メモリ設定処理の開始時に、データ保護処理が実行中であった場合、オフロードサーバ101は、データ保護処理の終了を待ってから仮想メモリ設定処理を開始する。
 オフロードサーバ101は、設定された粒度を確認する(ステップS2001)。設定された粒度が粗粒度である場合(ステップS2001:粗粒度)、オフロードサーバ101は、仮想メモリ310を非同期仮想メモリ1103に設定する(ステップS2002)。設定された粒度が中粒度である場合(ステップS2001:中粒度)、オフロードサーバ101は、仮想メモリ310をバリア同期仮想メモリ1004に設定する(ステップS2003)。設定された粒度が細粒度である場合(ステップS2001:細粒度)、オフロードサーバ101は、仮想メモリ310をダイナミック同期仮想メモリ904に設定する(ステップS2004)。
 ステップS2002、ステップS2003、ステップS2004の処理を終了後、オフロードサーバ101は、仮想メモリ設定処理を終了し、仮想メモリ310の運用を続行する。
 以上説明したように、並列処理制御プログラム、情報処理装置、および並列処理制御方法によれば、並列処理の粒度が異なるオブジェクト群から、端末装置と他装置間の帯域から算出した実行時間によってオブジェクトを選択する。これにより、帯域に応じた最適な並列処理を実行でき、処理性能を向上させることができる。
 具体的には、並列処理制御システムが、GPS(Global Positioning System)情報を提供し、端末装置がGPS情報を受信できた状態を想定する。端末装置とオフロードサーバの帯域が狭い、または、回線が切断された場合、端末装置がGPS情報を利用するアプリケーションソフトウェアを起動し、座標計算等、GPS情報にともなう演算処理を実行する。また、端末装置とオフロードサーバの帯域が広帯域である場合、端末装置は、オフロードサーバに座標計算をオフロードする。このように、並列処理制御システムは、広帯域であれば、オフロードサーバによって高速処理を実行でき、また、狭帯域であれば、端末装置によって処理を続行することができる。
 また、別の例として、並列処理制御システムが、ファイルシェアリングや、ストリーミングのサービスを提供している場合を想定する。端末装置とオフロードサーバの帯域が狭い場合、サービスを提供するサーバは圧縮されたデータを送信し、端末装置は、フルパワーモードにて伸長を行う。また、端末装置とオフロードサーバの帯域が広い場合、オフロードサーバはデータを伸長したのち、伸長された結果を送信し、端末装置は結果の表示を行う。端末装置は、結果の表示を行えばよいため、CPUパワーが不要であり、低電力モードにて運用することができる。
 また、最短となる実行オブジェクトを、実行対象の実行オブジェクトとして選択してもよい。これにより、並列処理の粒度が異なるオブジェクト群のうち、最短の処理時間となる実行オブジェクトを選択でき、処理性能を向上させることができる。
 また、帯域と通信量から通信時間を算出し、並列処理を逐次実行した場合の処理時間と逐次処理の割合と並列実行が可能な最大の分割数とから並列実行する場合の処理時間を算出し、通信時間と並列実行する場合の処理時間を加えることで実行時間を算出してもよい。これにより、並列処理によって発生する通信時間のオーバーヘッドを含めて最短の処理時間となる実行オブジェクトを選択することができ、処理性能を向上させることができる。
 また、実行対象の実行オブジェクトが変更されるときに、新たな実行対象の実行オブジェクトが変更前の実行オブジェクトより粒度が粗い場合、他装置に保持された処理結果を端末装置に送信させ、端末装置の記憶装置に格納してもよい。これにより、他装置で行われた途中結果を取得できるため、端末装置は、オフロードサーバなどの他装置で行われていた処理を続行することができる。この効果は、端末装置と他装置で帯域が大きく変動する、実施の形態1にかかる並列処理制御システムにおいて、特に効果がある。
 また、実行対象の実行オブジェクトが、最も粒度が粗い実行オブジェクトが選択されており、かつ帯域が減少した状態を検出した場合、他装置に保持された処理結果を端末装置に送信させ、端末装置の記憶装置に格納してもよい。これにより、回線が遮断されそうなとき、端末装置は、オフロードサーバなどの他装置のデータを事前に格納することで、回線が遮断されても、格納されたデータを使用して、処理を続行することができる。
 また、端末装置と他装置が携帯電話網を経由して接続されており、並列処理を実行開始することを検出した場合、実行対象の実行オブジェクトとして最も粒度が粗い実行オブジェクトを選択してもよい。端末装置と他装置の接続において、携帯電話網を経由した場合、開始の帯域が狭いため、あらかじめ粒度の粗い実行オブジェクトを選択しておくことで、開始の帯域にあった実行オブジェクトを設定することができる。この効果は、実施の形態1にかかる並列処理制御システムにおいて効果がある。
 また、端末装置と他装置がアドホック接続しており、並列処理を実行開始することを検出した場合、実行対象の実行オブジェクトとして最も粒度が細かい実行オブジェクトを選択してもよい。アドホック接続では、開始の帯域が広いため、あらかじめ粒度の粗い実行オブジェクトを選択しておくことで、開始の帯域にあった実行オブジェクトを設定することができる。この効果は、実施の形態2にかかる並列処理制御システムにおいて効果がある。
 また、実施の形態3にかかるマルチコアプロセッサにかかる並列処理制御システムにおいても、並列処理の粒度が異なるオブジェクト群から、端末装置と他装置間の帯域から算出した実行時間によってオブジェクトを選択する。これにより、帯域に応じた最適な並列処理を実行でき、処理性能を向上させることができる。プロセッサ間の帯域は、広帯域であるので、細粒度実行オブジェクトを実行し、処理性能を向上させることができる。
 また、マスタプロセッサ以外の他のプロセッサで実行中のプロセス等により、他のプロセッサがバスのアクセス競合を起こした場合を想定する。このとき、マスタプロセッサが帯域の測定を行った場合、他のプロセッサは、測定に対応する反応が遅れるため、帯域が低下することになる。したがって、マスタプロセッサは、より粒度の粗い実行オブジェクトを選択することになり、並列処理による通信量が低下するため、アクセス競合を軽減することができる。
 また、実施の形態1~実施の形態3にかかる並列処理制御システムは、混合して運用することも可能である。たとえば、複数のプロセッサを有する端末装置が、サーバ接続、またはアドホック接続を行い、実施の形態1、または実施の形態2にかかる並列処理制御システムとして、並列処理によるサービスを提供してもよい。
 なお、本実施の形態で説明した並列処理制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本並列処理制御プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本並列処理制御プログラムは、インターネット等のネットワークを介して配布してもよい。
 101 オフロードサーバ
 102 基地局
 103 端末装置
 104 ネットワーク
 105 無線通信
 203 RAM
 210 バス
 309 実メモリ
 310 仮想メモリ
 601 実行オブジェクト
 602 測定部
 603 算出部
 604 選択部
 605 設定部
 606 検出部
 607 通知部
 608 格納部
 609 実行部
 610 実行部

Claims (16)

  1.  接続元装置と接続先装置との間の帯域を測定する測定工程と、
     前記接続元装置内の接続元プロセッサおよび前記接続先装置内の接続先プロセッサで並列処理が可能であり前記並列処理の粒度が異なる複数の実行オブジェクトの各々の実行時間を、前記測定工程によって測定された帯域に基づいて算出する算出工程と、
     前記算出工程によって算出された前記各々の実行時間の長さに基づいて、前記複数の実行オブジェクトの中から実行対象の実行オブジェクトを選択する選択工程と、
     前記選択工程によって選択された実行対象の実行オブジェクトを前記接続元プロセッサおよび前記接続先プロセッサで協動して実行可能な状態に設定する設定工程と、
     を前記接続元プロセッサに実行させることを特徴とする並列処理制御プログラム。
  2.  前記選択工程は、
     前記各々の実行時間の長さのうち、最短となる実行オブジェクトを、前記実行対象の実行オブジェクトとして選択することを特徴とする請求項1に記載の並列処理制御プログラム。
  3.  前記算出工程は、
     前記帯域と前記並列処理にかかる通信量とによって通信時間を算出し、前記並列処理を逐次実行した場合の処理時間と前記並列処理のうち逐次処理の割合と前記並列処理において並列実行が可能な最大の分割数とによって並列実行する場合の処理時間を前記実行オブジェクトごとに算出し、前記通信時間と前記並列実行する場合の処理時間とを加算することによって、前記複数の実行オブジェクトの各々の実行時間を算出し、
     前記設定工程は、
     前記実行対象の実行オブジェクトを、前記接続元装置および前記接続先装置のプロセッサ群のうち、特定の接続元プロセッサおよび特定の接続先プロセッサを含み、かつ前記最大の分割数となるプロセッサ群で協動して実行可能な状態に設定することを特徴とする請求項1に記載の並列処理制御プログラム。
  4.  前記算出工程は、
     前記並列実行する場合の処理時間を前記逐次実行した場合の処理時間と前記逐次処理の割合と前記最大の分割数以下である並列実行の数によって算出し、前記通信時間と前記並列実行する場合の処理時間とを加算することによって、前記複数の実行オブジェクトの各々の前記並列実行の数ごとの実行時間を算出し、
     前記設定工程は、
     前記実行対象の実行オブジェクトを、前記接続元装置および前記接続先装置のプロセッサ群のうち、特定の接続元プロセッサおよび特定の接続先プロセッサを含み、かつ前記実行対象の実行オブジェクトにおける前記並列実行の数となるプロセッサ群で協動して実行可能な状態に設定することを特徴とする請求項3に記載の並列処理制御プログラム。
  5.  前記選択工程による選択によって、前記実行対象の実行オブジェクトの粒度より粒度が粗い新たな実行対象の実行オブジェクトが選択されたことを検出する検出工程と、
     前記検出工程によって前記新たな実行対象の実行オブジェクトが選択されたことが検出された場合、前記接続先装置に保持された前記実行対象の実行オブジェクトによる処理結果の送信要求を前記接続先装置に通知する通知工程と、
     前記通知工程によって通知された送信要求による前記処理結果を前記接続元装置の記憶装置に格納する格納工程と、
     を前記接続元プロセッサに実行させることを特徴とする請求項1に記載の並列処理制御プログラム。
  6.  前記実行対象の実行オブジェクトとして、最も粒度が粗い実行オブジェクトが選択されている場合に、前記帯域が減少した状態を検出する検出工程と、
     前記検出工程によって前記状態が検出された場合、前記接続先装置に保持された前記実行対象の実行オブジェクトによる処理結果の送信要求を前記接続先装置に通知する通知工程と、
     前記通知工程によって通知された送信要求による前記処理結果を前記接続元装置の記憶装置に格納する格納工程と、
     を前記接続元プロセッサに実行させることを特徴とする請求項1に記載の並列処理制御プログラム。
  7.  前記接続元装置と前記接続先装置とが携帯電話網を経由して接続されている場合に、前記並列処理を実行開始することを検出する検出工程を、前記接続元プロセッサに実行させ、
     前記選択工程は、
     前記検出工程によって前記並列処理を実行開始することが検出された場合、前記実行対象の実行オブジェクトとして最も粒度が粗い実行オブジェクトを選択することを特徴とする請求項1に記載の並列処理制御プログラム。
  8.  前記接続元装置と前記接続先装置とがアドホック接続されている場合に、前記並列処理を実行開始することを検出する検出工程を、前記接続元プロセッサに実行させ、
     前記選択工程は、
     前記検出工程によって前記並列処理を実行開始することが検出された場合、前記実行対象の実行オブジェクトとして最も粒度が細かい実行オブジェクトを選択することを特徴とする請求項1に記載の並列処理制御プログラム。
  9.  複数のプロセッサのうち、特定のプロセッサおよび前記特定のプロセッサ以外の他のプロセッサ間の帯域を測定する測定工程と、
     前記特定のプロセッサおよび前記他のプロセッサで並列処理が可能であり前記並列処理の粒度が異なる複数の実行オブジェクトの各々の実行時間を、前記測定工程によって測定された帯域に基づいて算出する算出工程と、
     前記算出工程によって算出された前記各々の実行時間の長さに基づいて、前記複数の実行オブジェクトの中から実行対象の実行オブジェクトを選択する選択工程と、
     前記選択工程によって選択された実行対象の実行オブジェクトを前記特定のプロセッサおよび前記他のプロセッサで協動して実行可能な状態に設定する設定工程と、
     を前記特定のプロセッサに実行させることを特徴とする並列処理制御プログラム。
  10.  前記選択工程は、
     前記各々の実行時間の長さのうち、最短となる実行オブジェクトを、前記実行対象の実行オブジェクトとして選択することを特徴とする請求項9に記載の並列処理制御プログラム。
  11.  前記算出工程は、
     前記帯域と前記並列処理にかかる通信量とによって通信時間を算出し、前記並列処理を逐次実行した場合の処理時間と前記並列処理のうち逐次処理の割合と前記並列処理において並列実行が可能な最大の分割数とによって並列実行する場合の処理時間を前記実行オブジェクトごとに算出し、前記通信時間と前記並列実行する場合の処理時間とを加算することによって、前記複数の実行オブジェクトの各々の実行時間を算出し、
     前記設定工程は、
     前記実行対象の実行オブジェクトを、前記複数のプロセッサのうち、前記特定のプロセッサを含み、かつ前記最大の分割数となるプロセッサ群で協動して実行可能な状態に設定することを特徴とする請求項9に記載の並列処理制御プログラム。
  12.  前記算出工程は、
     前記並列実行する場合の処理時間を前記逐次実行した場合の処理時間と前記逐次処理の割合と前記最大の分割数以下である並列実行の数によって算出し、前記通信時間と前記並列実行する場合の処理時間とを加算することによって、前記複数の実行オブジェクトの各々の前記並列実行の数ごとの実行時間を算出し、
     前記設定工程は、
     前記実行対象の実行オブジェクトを、前記複数のプロセッサのうち、前記特定のプロセッサを含み、かつ前記実行対象の実行オブジェクトにおける前記並列実行の数となるプロセッサ群で協動して実行可能な状態に設定することを特徴とする請求項11に記載の並列処理制御プログラム。
  13.  接続先装置との間の帯域を測定する測定手段と、
     自装置内のプロセッサおよび前記接続先装置内の接続先プロセッサで並列処理が可能であり前記並列処理の粒度が異なる複数の実行オブジェクトの各々の実行時間を、前記測定手段によって測定された帯域に基づいて算出する算出手段と、
     前記算出手段によって算出された前記各々の実行時間の長さに基づいて、前記複数の実行オブジェクトの中から実行対象の実行オブジェクトを選択する選択手段と、
     前記選択手段によって選択された実行対象の実行オブジェクトを前記自装置内のプロセッサおよび前記接続先プロセッサで協動して実行可能な状態に設定する設定手段と、
     を備えることを特徴とする情報処理装置。
  14.  複数のプロセッサのうち、特定のプロセッサおよび前記特定のプロセッサ以外の他のプロセッサ間の帯域を測定する測定手段と、
     前記特定のプロセッサおよび前記他のプロセッサで並列処理が可能であり前記並列処理の粒度が異なる複数の実行オブジェクトの各々の実行時間を、前記測定手段によって測定された帯域に基づいて算出する算出手段と、
     前記算出手段によって算出された前記各々の実行時間の長さに基づいて、前記複数の実行オブジェクトの中から実行対象の実行オブジェクトを選択する選択手段と、
     前記選択手段によって選択された実行対象の実行オブジェクトを前記特定のプロセッサおよび前記他のプロセッサで協動して実行可能な状態に設定する設定手段と、
     を備えることを特徴とする情報処理装置。
  15.  接続元装置と接続先装置との間の帯域を測定する測定工程と、
     前記接続元装置内の接続元プロセッサおよび前記接続先装置内の接続先プロセッサで並列処理が可能であり前記並列処理の粒度が異なる複数の実行オブジェクトの各々の実行時間を、前記測定工程によって測定された帯域に基づいて算出する算出工程と、
     前記算出工程によって算出された前記各々の実行時間の長さに基づいて、前記複数の実行オブジェクトの中から実行対象の実行オブジェクトを選択する選択工程と、
     前記選択工程によって選択された実行対象の実行オブジェクトを前記接続元プロセッサおよび前記接続先プロセッサで協動して実行可能な状態に設定する設定工程と、
     を前記接続元プロセッサが実行することを特徴とする並列処理制御方法。
  16.  複数のプロセッサのうち、特定のプロセッサおよび前記特定のプロセッサ以外の他のプロセッサ間の帯域を測定する測定工程と、
     前記特定のプロセッサおよび前記他のプロセッサで並列処理が可能であり前記並列処理の粒度が異なる複数の実行オブジェクトの各々の実行時間を、前記測定工程によって測定された帯域に基づいて算出する算出工程と、
     前記算出工程によって算出された前記各々の実行時間の長さに基づいて、前記複数の実行オブジェクトの中から実行対象の実行オブジェクトを選択する選択工程と、
     前記選択工程によって選択された実行対象の実行オブジェクトを前記特定のプロセッサおよび前記他のプロセッサで協動して実行可能な状態に設定する設定工程と、
     を前記特定のプロセッサが実行することを特徴とする並列処理制御方法。
PCT/JP2010/063871 2010-08-17 2010-08-17 並列処理制御プログラム、情報処理装置、および並列処理制御方法 WO2012023175A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012529425A JPWO2012023175A1 (ja) 2010-08-17 2010-08-17 並列処理制御プログラム、情報処理装置、および並列処理制御方法
PCT/JP2010/063871 WO2012023175A1 (ja) 2010-08-17 2010-08-17 並列処理制御プログラム、情報処理装置、および並列処理制御方法
US13/767,564 US20130159397A1 (en) 2010-08-17 2013-02-14 Computer product, information processing apparatus, and parallel processing control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/063871 WO2012023175A1 (ja) 2010-08-17 2010-08-17 並列処理制御プログラム、情報処理装置、および並列処理制御方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/767,564 Continuation US20130159397A1 (en) 2010-08-17 2013-02-14 Computer product, information processing apparatus, and parallel processing control method

Publications (1)

Publication Number Publication Date
WO2012023175A1 true WO2012023175A1 (ja) 2012-02-23

Family

ID=45604850

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/063871 WO2012023175A1 (ja) 2010-08-17 2010-08-17 並列処理制御プログラム、情報処理装置、および並列処理制御方法

Country Status (3)

Country Link
US (1) US20130159397A1 (ja)
JP (1) JPWO2012023175A1 (ja)
WO (1) WO2012023175A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014071478A (ja) * 2012-09-27 2014-04-21 Toshiba Corp 情報処理装置および命令のオフローディング方法
WO2014068950A1 (ja) * 2012-10-31 2014-05-08 日本電気株式会社 データ処理システム、データ処理方法およびプログラム
JP2018128811A (ja) * 2017-02-08 2018-08-16 日本電気株式会社 情報処理装置、情報処理方法、プログラム
JP2021117536A (ja) * 2020-01-22 2021-08-10 ソフトバンク株式会社 処理ユニット及び処理システム

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5703729B2 (ja) * 2010-12-09 2015-04-22 富士ゼロックス株式会社 データ処理装置及びプログラム
JP7097744B2 (ja) * 2018-05-17 2022-07-08 キヤノン株式会社 画像処理装置、画像処理方法およびプログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006252218A (ja) * 2005-03-11 2006-09-21 Nec Corp 分散処理システム及びプログラム
JP2008027442A (ja) * 2006-07-21 2008-02-07 Sony Computer Entertainment Inc サブタスク・プロセッサの分散スケジューリング
JP2008083897A (ja) * 2006-09-27 2008-04-10 Nec Corp 負荷低減システム、負荷低減方法、及びプログラム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8024395B1 (en) * 2001-09-04 2011-09-20 Gary Odom Distributed processing multiple tier task allocation
US7958507B2 (en) * 2005-06-16 2011-06-07 Hewlett-Packard Development Company, L.P. Job scheduling system and method
WO2008118976A1 (en) * 2007-03-26 2008-10-02 The Trustees Of Culumbia University In The City Of New York Methods and media for exchanging data between nodes of disconnected networks
US20090172353A1 (en) * 2007-12-28 2009-07-02 Optillel Solutions System and method for architecture-adaptable automatic parallelization of computing code
KR101626378B1 (ko) * 2009-12-28 2016-06-01 삼성전자주식회사 병렬도를 고려한 병렬 처리 장치 및 방법
US8522224B2 (en) * 2010-06-22 2013-08-27 National Cheng Kung University Method of analyzing intrinsic parallelism of algorithm

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006252218A (ja) * 2005-03-11 2006-09-21 Nec Corp 分散処理システム及びプログラム
JP2008027442A (ja) * 2006-07-21 2008-02-07 Sony Computer Entertainment Inc サブタスク・プロセッサの分散スケジューリング
JP2008083897A (ja) * 2006-09-27 2008-04-10 Nec Corp 負荷低減システム、負荷低減方法、及びプログラム

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014071478A (ja) * 2012-09-27 2014-04-21 Toshiba Corp 情報処理装置および命令のオフローディング方法
US9477466B2 (en) 2012-09-27 2016-10-25 Kabushiki Kaisha Toshiba Information processing apparatus and instruction offloading method
WO2014068950A1 (ja) * 2012-10-31 2014-05-08 日本電気株式会社 データ処理システム、データ処理方法およびプログラム
US9430285B2 (en) 2012-10-31 2016-08-30 Nec Corporation Dividing and parallel processing record sets using a plurality of sub-tasks executing across different computers
JPWO2014068950A1 (ja) * 2012-10-31 2016-09-08 日本電気株式会社 データ処理システム、データ処理方法およびプログラム
JP2018128811A (ja) * 2017-02-08 2018-08-16 日本電気株式会社 情報処理装置、情報処理方法、プログラム
JP2021117536A (ja) * 2020-01-22 2021-08-10 ソフトバンク株式会社 処理ユニット及び処理システム
JP7153678B2 (ja) 2020-01-22 2022-10-14 ソフトバンク株式会社 コンピュータ

Also Published As

Publication number Publication date
JPWO2012023175A1 (ja) 2013-10-28
US20130159397A1 (en) 2013-06-20

Similar Documents

Publication Publication Date Title
WO2012023175A1 (ja) 並列処理制御プログラム、情報処理装置、および並列処理制御方法
US10761898B2 (en) Migrating threads between asymmetric cores in a multiple core processor
US10706496B2 (en) Function callback mechanism between a Central Processing Unit (CPU) and an auxiliary processor
CN106687927B (zh) 促进在计算装置上的图形处理单元的命令分组的动态并行调度
US7971029B2 (en) Barrier synchronization method, device, and multi-core processor
US20220409999A1 (en) Rendering method and apparatus
WO2009133669A1 (ja) 仮想計算機制御装置、仮想計算機制御方法及び仮想計算機制御プログラム
JP5853216B2 (ja) 集積回路、コンピュータシステム、制御方法
JP6219445B2 (ja) 中央処理ユニット及び画像処理ユニットの同期機構
US10134103B2 (en) GPU operation algorithm selection based on command stream marker
CN114328098B (zh) 一种慢节点检测方法、装置、电子设备及存储介质
KR102239229B1 (ko) 공유 하드웨어 자원들을 사용하는 클러스터드 프로세서 코어들의 하드웨어 스레드들의 동적 부하 밸런싱, 및 관련된 회로들, 방법들, 및 컴퓨터 판독가능 미디어
JP2015515052A (ja) グラフィックス処理ユニット上でのグラフィックスアプリケーションおよび非グラフィックスアプリケーションの実行
KR101754850B1 (ko) 메모리 기반의 세마포어
JP2008152470A (ja) データ処理システム及び半導体集積回路
US10649848B2 (en) Checkpoint and restart
CN104094235A (zh) 多线程计算
US20160179429A1 (en) Controlling memory access conflict of threads on multi-core processor with set of highest priority processor cores based on a threshold value of issued-instruction efficiency
WO2016033755A1 (zh) 任务处理装置、电子设备及方法
WO2016202153A1 (zh) 一种gpu资源的分配方法及系统
US20140122632A1 (en) Control terminal and control method
US20150121392A1 (en) Scheduling in job execution
EP3991131B1 (en) Methods and apparatus for wave slot management
US20140053162A1 (en) Thread processing method and thread processing system
US7934082B2 (en) Information processing apparatus and exception control circuit

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

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2012529425

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 10856133

Country of ref document: EP

Kind code of ref document: A1