WO2010095358A1 - タスク割当装置、タスク割当方法、及び、タスク割当プログラムが格納された記憶媒体 - Google Patents
タスク割当装置、タスク割当方法、及び、タスク割当プログラムが格納された記憶媒体 Download PDFInfo
- Publication number
- WO2010095358A1 WO2010095358A1 PCT/JP2010/000367 JP2010000367W WO2010095358A1 WO 2010095358 A1 WO2010095358 A1 WO 2010095358A1 JP 2010000367 W JP2010000367 W JP 2010000367W WO 2010095358 A1 WO2010095358 A1 WO 2010095358A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- task
- reference number
- pool
- tasks
- core
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/501—Performance criteria
Definitions
- the present invention relates to a task allocation device, a task allocation method, and a storage medium in which a task allocation program is stored in a multi-core processor.
- Embedded systems are becoming more sophisticated, and there is a demand for simultaneous execution of multiple applications and high-load applications.
- mobile devices such as mobile phones and PNDs (Portable Navigation Devices) are becoming increasingly sophisticated, and not only single applications such as the original communication functions and navigation functions, but also playback of videos and music. Etc. are required to be executed simultaneously.
- Multimedia processing such as video playback is computationally expensive and requires a high performance processor.
- Multi-core processors that integrate multiple arithmetic cores have been used as such high-load processors that execute multiple applications.
- a multi-core processor is an indispensable technology for mobile devices where battery drive time and heat generation are problems because it can reduce power consumption and improve performance.
- Parallelization is generally performed using a parallelization library.
- parallel libraries include those using threads such as POSIX and Windows (registered trademark), OpenMP, and Intel Threading Building Blocks (TBB).
- threads such as POSIX and Windows (registered trademark)
- OpenMP OpenMP
- TBB Intel Threading Building Blocks
- POSIX or Windows registered trademark
- a programmer describes division of application processing and assignment of division processing to a core. Allocation is performed manually by the programmer in consideration of the number of cores to be allocated.
- OpenMP and TBB the processing is divided by the programmer, but the assignment to the core is automatically executed by the library. For this reason, the programmer does not need to be particularly aware of the number of cores.
- task parallelization is performed by dividing the application processing into multiple tasks and automatically assigning the divided tasks to the core.
- This task parallelization model has a task pool that stores executable tasks and a scheduler that assigns tasks to cores. The programmer writes a program that divides application processing into a plurality of tasks that can be executed in parallel, and inputs the executable tasks to the task pool. Tasks submitted to the task pool are automatically assigned to the core by the scheduler.
- a feature of task parallelization is that load balancing can be easily realized when the number of tasks stored in the task pool is larger than the number of cores.
- the task parallelization can change the number of cores to be allocated (parallelism) during execution, facilitating dynamic allocation of computing resources. Since the task parallelization scheduler assigns tasks to cores that can dynamically process tasks in the task pool, parallelization can be performed regardless of the number of cores. Therefore, the degree of parallelism can be easily changed during execution, and the allocation of computing resources can be dynamically changed according to load fluctuations of the application and other applications.
- each core has a task pool
- the scheduler 121 performs an operation of acquiring a task from the task pool and assigning it to the core and an operation of inputting the generated task into the task pool.
- these two operations, task assignment to the core and task entry to the task pool will be referred to as task assignment.
- An example of task assignment operation to the arithmetic core 131 in the task assignment device 100 will be described with reference to FIGS.
- the scheduler 121 checks whether there is a task in the task pool 111 (step 201). If there is a task in the task pool 111, the scheduler 121 acquires the task from the task pool 111. For example, it is obtained from the task first input (step 202). When there is no task in the task pool 111, the scheduler 121 checks whether there is a task in the other task pools 112,..., And when there is no task in any task pool, the task assignment is ended (step 203). When there is a task in another task pool, the scheduler 121 acquires the task from the task pool (step 204). The scheduler 121 assigns the acquired task to the operation core 131 and ends the process (step 205).
- the task is generated by the task being executed, and the scheduler 121 is called after the task is generated.
- the scheduler 121 inputs the new task into the task pool 111 (step 211).
- the multi-core processor has a hetero configuration in which each core does not have the same processing performance and has different performance.
- As a heterostructure when viewed from a parallel program in addition to the physical performance of each core being different (Asymmetric Multiple Processor: AMP) (FIG. 13A), the core performance is the same (Symmetric Multiple Processor: SMP), but the corresponding parallel
- SMP Symmetric Multiple Processor
- There is a calculation performance assigned to a program that is different for each core (FIG. 13B).
- the core 2 in FIG. 13B includes a case where 50% computing performance is explicitly assigned to the program, and a case where only 50% computing performance is eventually assigned due to the influence of other programs operating on the core.
- task core allocation needs to take into account core performance and dependency between tasks.
- the number referred to by other tasks is called the reference number, and is used as an index of inter-task dependency.
- Patent Document 1 discloses a technique for assigning task cores in a multi-core processor having a plurality of cores having different performances. This technology adopts a task parallel model with multiple task pools, and can assign tasks at the time of execution. Dependencies between tasks are set in advance, the task processing calculation load and inter-task communication cost are calculated at the time of execution, and tasks are assigned.
- An object of the present invention is a multi-core processor having a plurality of cores having different execution performances, a task allocation device for performing task allocation for reducing performance degradation due to waiting of a high-performance core for processing results of a low-performance core and improving parallel performance, and a task An allocation method and a storage medium storing a task allocation program are provided.
- the task assignment device A task pool that stores executable tasks; A task scheduler that inputs new tasks into the task pool and retrieves tasks from the task pool; A reference number analysis module for obtaining a reference number of tasks, which is a number indicating how many other tasks the task processing result is referred to, and The reference number analysis module analyzes the reference number during execution, The scheduler performs task input and acquisition based on the reference number.
- the reference number analysis module may acquire hint information and a reference number estimation method from an executing task, and estimate the reference number from the hint information based on a designated method.
- the task allocation method of the present invention is configured such that the task reference number, which is a number indicating how many other tasks the process result of the task acquired from the task pool storing executable tasks is referred to, is processed by the task. It is calculated during execution, and a task is input to the task pool and a task is acquired from the task pool based on the reference number.
- the storage medium storing the task assignment program of the present invention is a number of tasks indicating the number of other tasks to which the processing result of the task acquired from the task pool storing executable tasks is referred.
- a task assignment device and a task assignment device for performing task assignment for reducing performance degradation due to waiting of a high-performance core for processing results of a low-performance core and improving parallel performance
- An allocation method and a storage medium in which a task allocation program is stored can be provided.
- Embodiment 1 The best mode for carrying out the present invention will be described below with reference to the drawings.
- Task pools 111, 112,... That store tasks that can be executed for each computation core,
- a task scheduler 241 that inputs a new task into the task pool and acquires a task from the task pool;
- a reference number analysis module 251 for obtaining the reference number of the task.
- the scheduler performs task allocation mainly using the core performance and the reference number.
- a task with a large number of references is placed in the task pool of the high performance core, and a task with a small number of references is placed in the task pool of the low performance core.
- the number of references is determined by determining a threshold value and determining whether or not the threshold value is exceeded. Even when the number of computation cores is greater than 2, a plurality of thresholds are prepared, and a task pool to be input is determined according to the value.
- the reference number analysis module analyzes the reference number of a task that is newly input into the task pool or a task that is staying in the task pool during execution.
- the number of references is determined when all tasks (related tasks) that can refer to the task are generated.
- the module estimates the number of references by analyzing the dependency between tasks prior to normal program progression and associates them with the task. Specifically, estimation is performed when a task is submitted or when a task is stolen.
- the reference number estimation by the reference number analysis module is performed with reference to a task for which the reference number is already determined, for example. Assuming that the number of references of a task of the same type as the task to be analyzed tends to be similar, the number of references of the same type task is used as the number of references of the task.
- hint information and a reference number estimation method necessary for estimation may be given to the reference number analysis module from the task being executed.
- the reference number analysis module estimates the reference number when the hint information and the reference number estimation method are given, and associates them with the task. Such information may be given when a task being executed generates a new task, or may be given when hint information is prepared.
- the type information of the task to be generated and the related task is acquired as the hint information, and the reference number is estimated based on the relationship between the type of the generation task and the related task as the reference number estimation method.
- a method of performing only the task generation determination of related tasks or the condition determination of whether or not to refer to a task in advance may be acquired as the reference number estimation method.
- the reference number estimation accuracy can be increased. The following description is based on the configuration of FIG. 6 in which the reference number analysis module acquires hint information and a reference number estimation method.
- Each module shown in FIGS. 1 and 2 is a predetermined functional unit realized by either a software program or hardware when the task assignment apparatus according to the present embodiment is realized. Therefore, part or all of these processing units may be realized as software or hardware.
- the software program When implemented as a software program, the software program is executed on a computer apparatus 1000 including a main memory 131, arithmetic cores 111, 112,..., And an interface unit 241 as shown in FIG.
- the software program is stored in a readable / writable main memory 131 (storage medium).
- the processors 111, 112,... Read the software program from the main memory 131 and execute it.
- the present invention is constituted by the code of the software program or a storage medium.
- each module of the task assignment device is realized by causing a CPU (Central Processing Unit) to execute a computer program.
- the computer program can be provided by being recorded on a recording medium, or can be provided by being transmitted via the Internet or another communication medium.
- the storage medium includes, for example, a flexible disk, a hard disk, a magnetic disk, a magneto-optical disk, a CD-ROM, a DVD, a ROM cartridge, a battery-backed RAM memory cartridge, a flash memory cartridge, and a nonvolatile RAM cartridge.
- the communication medium includes a wired communication medium such as a telephone line, a wireless communication medium such as a microwave line, and the like.
- FIGS. 4 is an operation for acquiring a task from the task pool and assigning it to the core
- FIG. 5 is an operation for inputting the task into the task pool
- FIG. 6 is a flowchart for explaining an operation for estimating the reference number.
- the flowcharts shown in FIGS. 4 to 6 show the processing procedure of the software program executed by the processors 111, 112,...
- the computer apparatus 1000 shown in FIG. 2 is described as a software program executed by the processors 111, 112,...
- the following will be described as task assignment to the arithmetic core 131.
- the scheduler 121 checks whether there is a task in the task pool 111 (step 101). If there is a task in the task pool 111, the scheduler 121 acquires the task from the task pool 111. For example, it is acquired from the task first input (step 102). If there is no task in the task pool 111, the scheduler 121 checks whether there is a task in another task pool that has not been checked, and if there is no corresponding task in any task pool, the task assignment is terminated (step 103).
- the scheduler 121 compares the performance of the arithmetic core to which the task pool belongs and the arithmetic core 131 (step 104). If the computing core 131 has higher performance, it is checked whether there is a task having a reference number larger than a predetermined threshold in the task pool (step 105). If there is a task, it is acquired (step 106). . If the computing core 131 has lower performance, it is checked whether there is a task whose reference number is less than a predetermined threshold in the task pool (step 107). If there is a task, it is acquired (step 108). Return to step 103. The scheduler 121 assigns the acquired task to the operation core 131 and ends the process (step 107).
- the reference number analysis module 251 performs reference number estimation based on the obtained hint information and the reference number estimation method (step 111).
- the scheduler 121 determines a task pool to be input based on the obtained reference number (step 112). For example, when the number of operation cores is 2, if the reference number is larger than a predetermined threshold, a high performance core task pool is selected, and if the number is small, a high performance core task pool is selected.
- the scheduler 121 inputs the new task into the task pool (step 113).
- This operation is started when the hint information is prepared in the task being executed, and the executing task gives the hint information and the reference number estimation method to the reference number analysis module.
- the reference number analysis module 251 performs reference number estimation based on the obtained hint information and the reference number estimation method (step 121).
- the reference number of the corresponding task can be estimated before all the related tasks are generated, and task assignment can be performed effectively.
- the first embodiment is applied to a moving image processing apparatus. That is, the task assigned by the task assignment device according to the present embodiment is obtained by dividing the moving image processing into a plurality of pieces.
- H. A description will be given using an example in which decoding processing of the H.264 / MPEG-4 AVC (hereinafter referred to as H.264) method is divided into macroblock (MB) units. Furthermore, assuming parallel processing within a frame, parallel processing is not performed across frames.
- the components according to the second embodiment are the same as the components in the task assignment device 300,
- the reference number analysis module includes:
- the bit stream of the corresponding MB is acquired as the hint information, and
- a method for decoding only coding parameters such as a macroblock type, a screen prediction mode, and a filter type from a bit stream is acquired.
- the video decoding process refers to the processing result of the previously decoded MB and performs the current MB decoding process.
- the previous MB processing result is referred to in the prediction image generation and the deblocking filter.
- Which MB is to be referred to is determined based on an MB type obtained as a result of variable length decoding (VLD) processing of the bitstream, coding parameters such as a screen prediction mode and a filter parameter.
- VLD variable length decoding
- Predicted image generation includes motion compensation processing or intra prediction processing, and it is determined which processing is applied for each MB in the MB type.
- the motion compensation process does not refer to MBs in the same frame.
- intra prediction can refer to the intra prediction results of the left, upper, upper right, and upper left MBs. Which MB is to be referred to is determined from the screen prediction mode such as the MB type and the intra prediction mode.
- the reference relationship of the deblocking filter is determined by filter parameters (deblocking_filter_control_present_flag, disable_deblocking_filter_idc, etc.).
- the deblocking filter may refer to the deblocking filter results of the left, top, and top right MBs (FIG. 7B).
- VLD processing is applied to each MB in a determined procedure. That is, the reference relationship is not known until all the VLDs of related MBs are completed, and it is not determined from which MB the task is generated at the time of task generation of the MB process.
- a method for preceding fast decoding only coding parameters that determine MB reference relationships such as a macroblock type, a screen prediction mode, and a filter type from a bit stream is specified.
- a bit stream of the corresponding MB is designated.
- FIG. 8 shows the application of the new task to the task pool in the task assignment of the predicted image generation task applied to FIG.
- FIG. 9 shows the operation of the predicted image generation process applied to one frame.
- MB tasks I and II have finished processing
- MB task III is being executed in the high performance core
- MB task IV is put in the task pool of the high performance core
- MB task V is the MB task. It represents the state generated from III.
- MB tasks VI to IX have not yet been generated, and the reference relationship is unknown.
- an operation for assigning tasks to the MB task V will be described.
- MB task V When MB task V is generated, MB task V includes a bitstream corresponding to MBVI to IX as the hint information, and a method of preceding decoding MB type and intra prediction mode from the bitstream as the reference number estimation method, It is assumed that the reference number analysis module 251 is provided.
- the reference number analysis module 251 decodes the macroblock type and intra prediction mode of the corresponding MB from the obtained MBVI to IX bitstream (step 141). As a result, it is assumed that only MBVII is an MB for which intra prediction processing is performed, and further upward reference is made (FIG. 9B). That is, the MB task V is not referred to by any MB task, and the reference number is zero. In this case, the MB task IV has a reference number of 1.
- the scheduler 121 determines a task pool to be input based on the obtained reference number of MB tasks V (step 142). For example, if the reference number determination threshold is set to 1, it is determined that the MB task V is put into the task pool of the low performance core.
- the scheduler 121 inputs the MB task V to the task pool of the low performance core (step 143). Since MB task IV has a reference number of 1, it is put in the task pool of the high performance core (FIG. 9B).
- the macroblock type of the related MB and the preceding decoding in the intra prediction mode are performed every time the task is generated.
- the previous decoding result may be used without performing all preceding decoding.
- the preceding decoding result of MBVII that is performed when MB task IV is allocated may be used when MB task V is allocated.
- the reference number of the corresponding MB task can be determined before all the related tasks are generated. Allocation can be done effectively. As a result, it is possible to reduce useless task allocation in which the high-performance core waits for the processing result of the low-performance core, and to improve parallel performance.
- H.264 is used for moving image processing.
- the H.264 decoding process has been described as an example.
- the present invention is not limited to the H.264 decoding process, and can be applied to moving picture decoding and encoding processes such as MPEG, JPEG, and VC-1.
- the present invention is, for example, H.264. H.264 / MPEG-4 AVC video data can be used for decoding. Further, the present invention is applicable not only to moving image processing but also to various systems that require data encoding processing.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Description
スケジューラ121はタスクプール111にタスクがあるかどうか調べる(ステップ201)。
タスクプール111にタスクがある場合、スケジューラ121はタスクプール111からタスクを取得する。例えば、最初に投入されたタスクから取得するなどである(ステップ202)。
タスクプール111にタスクがない場合、スケジューラ121は他タスクプール112、…にタスクがあるか調べ、どのタスクプールにもタスクがない場合はタスク割当を終了する(ステップ203)。
他タスクプールにタスクがある場合、スケジューラ121は当該タスクプールからタスクを取得する(ステップ204)。
スケジューラ121は取得したタスクを演算コア131へ割り当て、処理を終了する(ステップ205)。
スケジューラ121は当該新規タスクをタスクプール111に投入する(ステップ211)。
マルチコアプロセッサは、各コアが同質の処理性能を持たず性能が異なるヘテロな構成のものある。並列プログラムから見た場合のヘテロ構成として、各コアの物理的な性能が異なるもの(Asymmetric Multiple Processor:AMP)の他に(図13A)、コア性能は同質(Symmetric Multiple Processor:SMP)だが該当並列プログラムに割り当てられる演算性能がコア毎に異なるものがある(図13B)。図13Bのコア2は、当該プログラムに50%の演算性能を明示的に割当てる場合や、当該コアで動作する他のプログラムの影響で結果的に50%の演算性能しか割当てられない場合を含む。
実行可能なタスクを蓄えるタスクプールと、
新規タスクのタスクプールへの投入と、タスクプールからタスクの取得を行うタスクスケジューラと、
当該タスク処理結果がいくつの他タスクから参照されるかを示す数であるタスクの参照数を求める参照数解析モジュールとを備え、
前記参照数解析モジュールは、参照数を実行中に解析し、
前記スケジューラは、前記参照数を基にタスクの投入、及び、取得を行う。ここで、前記参照数解析モジュールは、実行中タスクからヒント情報と参照数推定方法を取得し、指定された方法を基に当該ヒント情報から参照数を推定しても良い。
以下、図面を参照し、本発明を実施するための最良の形態が説明される。
図1乃至図2に、第1の実施の形態に係るタスク割当装置の構成が示される。
図1におけるタスク割当装置200は、
演算コア毎に実行可能なタスクを蓄えるタスクプール111、112、…と、
新規タスクのタスクプールへの投入とタスクプールからタスクの取得を行うタスクスケジューラ241と、
当該タスクの参照数を求める参照数解析モジュール251とを備える。
スケジューラ121はタスクプール111にタスクがあるかどうか調べる(ステップ101)。
タスクプール111にタスクがある場合、スケジューラ121はタスクプール111からタスクを取得する。例えば、最初に投入されたタスクから取得するなどである(ステップ102)。
タスクプール111にタスクがない場合、スケジューラ121は調べていない他タスクプールにタスクがあるか調べ、どのタスクプールにも該当するタスクがない場合はタスク割当を終了する(ステップ103)。
他タスクプールにタスクがある場合、スケジューラ121は当該タスクプールの属する演算コアと演算コア131の性能を比較する(ステップ104)。
演算コア131の方が高性能の場合、当該タスクプールに参照数が予め決めた閾値より多いタスクがあるか調べ(ステップ105)、あれば取得し(ステップ106)、なければステップステップ103に戻る。
演算コア131の方が低性能の場合、当該タスクプールに参照数が予め決めた閾値より少ないタスクがあるか調べ(ステップ107)、あれば取得し(ステップ108)、なければ上記と同様にステップステップ103に戻る。
スケジューラ121は取得したタスクを演算コア131へ割り当て、処理を終了する(ステップ107)。
参照数解析モジュール251は、得られたヒント情報と参照数推定方法を基に参照数推定を行う(ステップ111)。
スケジューラ121は、得られた参照数を基に投入するタスクプールを決定する(ステップ112)。例えば演算コア数が2の場合、前記参照数が予め与えられた閾値より多い場合は高性能コアのタスクプールを、少ない場合は高性能コアのタスクプールを選択する。
スケジューラ121は、当該新規タスクを前記タスクプールに投入する(ステップ113)。
参照数解析モジュール251は、得られたヒント情報と参照数推定方法を基に参照数推定を行う(ステップ121)。
前記参照数解析モジュールは、
前記ヒント情報として該当MBのビットストリームを取得し、また、
前期参照数推定方法として、ビットストリームからマクロブロックタイプ、画面予測モード、フィルタタイプなどの符号化パラメータのみをデコードする方法を取得する。
111、112 タスクプール
121 スケジューラ
131、132 演算コア
251 参照数解析モジュール
Claims (12)
- 実行可能なタスクを蓄えるタスクプールと、
新規タスクのタスクプールへの投入と、タスクプールからタスクの取得を行うタスクスケジューラと、
当該タスク処理結果がいくつの他タスクから参照されるかを示す数であるタスクの参照数を求める参照数解析モジュールとを備え、
前記参照数解析モジュールは、参照数を実行中に解析し、
前記スケジューラは、前記参照数を基にタスクの投入、及び、取得を行うことを特徴とするタスク割当装置。 - 実行性能が異なる演算コアを複数持つマルチコアプロセッサを備え、
前記タスクプールは、前記演算コア毎に備えられ、
前記参照数解析モジュールは、新規にタスクプールに投入されるタスク、または、タスクプール滞在中のタスクの参照数を実行中に解析し、
前記スケジューラは、コアの性能と前記参照数を基にタスクの投入、及び、取得を行うことを特徴とする請求項1に記載のタスク割当装置。 - 前記参照数解析モジュールは、実行中タスクからヒント情報と参照数推定方法を取得し、指定された方法を基に当該ヒント情報から参照数を推定することを特徴とする請求項1乃至請求項2に記載のタスク割当装置。
- 前記タスクは、動画像符号又は復号処理をマクロブロック単位に分割したものであって、
前記参照数解析モジュールは、
前記ヒント情報として該当マクロブロックのビットストリームを取得し、また、
前記参照数推定方法として、ビットストリームからマクロブロックタイプ、画面予測モード、フィルタパラメータなどの符号化パラメータのみをデコードする方法を取得し、
前記符号化パラメータから参照数を推定することを特徴とする請求項3に記載のタスク割当装置。 - 実行可能なタスクを蓄えるタスクプールから取得した当該タスクの処理結果が他のいくつのタスクから参照されるかを示す数であるタスクの参照数をタスクの処理実行中に算出し、
前記参照数を基に前記タスクプールへのタスクの投入、及び、前記タスクプールからのタスクの取得を行うことを特徴とするタスク割当方法。 - 前記タスクプールは、実行性能が異なる演算コアを複数持つマルチコアプロセッサの前記演算コア毎に備えられ、
前記参照数をタスクの処理実行中に算出する処理では、新規に前記タスクプールに投入されるタスク、または、前記タスクプール滞在中のタスクの参照数をタスク処理の実行中に解析し、
前記タスクプールからのタスクの取得を行う処理では、前記演算コアの性能と前記参照数を基に前記タスクプールへのタスクの投入、及び、前記タスクプールからのタスクの取得を行うことを特徴とする請求項5に記載のタスク割当方法。 - 前記参照数をタスクの処理実行中に算出する処理では、実行中タスクからヒント情報と参照数推定方法を取得し、指定された方法を基に当該ヒント情報から参照数を推定することを特徴とする請求項5または請求項6に記載のタスク割当方法。
- 前記タスクは、動画像符号又は復号処理をマクロブロック単位に分割したものであり、
前記ヒント情報は、該当マクロブロックのビットストリームであり、
前記参照数推定方法は、ビットストリームからマクロブロックタイプ、画面予測モード、フィルタパラメータなどの符号化パラメータのみをデコードし、前記符号化パラメータから参照数を推定するものであることを特徴とする請求項7に記載のタスク割当方法。 - 実行可能なタスクを蓄えるタスクプールから取得した当該タスクの処理結果が他のいくつのタスクから参照されるかを示す数であるタスクの参照数をタスクの処理実行中に算出し、
前記参照数を基に前記タスクプールへのタスクの投入、及び、前記タスクプールからのタスクの取得を行う処理をコンピュータに実行させるプログラムが格納された記憶媒体。 - 前記タスクプールは、実行性能が異なる演算コアを複数持つマルチコアプロセッサの前記演算コア毎に備えられ、
前記参照数をタスクの処理実行中に算出する処理では、新規に前記タスクプールに投入されるタスク、または、前記タスクプール滞在中のタスクの参照数をタスク処理の実行中に解析し、
前記タスクプールからのタスクの取得を行う処理では、前記演算コアの性能と前記参照数を基に前記タスクプールへのタスクの投入、及び、前記タスクプールからのタスクの取得を行うことを特徴とする請求項9に記載のプログラムが格納された記憶媒体。 - 前記参照数をタスクの処理実行中に算出する処理では、実行中タスクからヒント情報と参照数推定方法を取得し、指定された方法を基に当該ヒント情報から参照数を推定することを特徴とする請求項9または請求項10に記載のプログラムを格納された記憶媒体。
- 前記タスクは、動画像符号又は復号処理をマクロブロック単位に分割したものであり、
前記ヒント情報は、該当マクロブロックのビットストリームであり、
前記参照数推定方法は、ビットストリームからマクロブロックタイプ、画面予測モード、フィルタパラメータなどの符号化パラメータのみをデコードし、前記符号化パラメータから参照数を推定するものであることを特徴とする請求項11に記載のプログラムが格納された記憶媒体。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011500479A JP5545288B2 (ja) | 2009-02-18 | 2010-01-22 | タスク割当装置、タスク割当方法、及び、タスク割当プログラム |
US13/201,150 US8897372B2 (en) | 2009-02-18 | 2010-01-22 | Task allocation device, task allocation method, and storage medium storing task allocation program |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009-035075 | 2009-02-18 | ||
JP2009035075 | 2009-02-18 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2010095358A1 true WO2010095358A1 (ja) | 2010-08-26 |
Family
ID=42633649
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2010/000367 WO2010095358A1 (ja) | 2009-02-18 | 2010-01-22 | タスク割当装置、タスク割当方法、及び、タスク割当プログラムが格納された記憶媒体 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8897372B2 (ja) |
JP (1) | JP5545288B2 (ja) |
WO (1) | WO2010095358A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013132741A1 (ja) * | 2012-03-06 | 2013-09-12 | パナソニック株式会社 | マルチプロセッサシステム |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5354102B2 (ja) * | 2010-06-29 | 2013-11-27 | 富士通株式会社 | マルチコアプロセッサシステム、通信制御方法、および通信制御プログラム |
US9146777B2 (en) | 2013-01-25 | 2015-09-29 | Swarm Technology Llc | Parallel processing with solidarity cells by proactively retrieving from a task pool a matching task for the solidarity cell to process |
KR102205836B1 (ko) * | 2014-01-29 | 2021-01-21 | 삼성전자 주식회사 | 태스크 스케줄링 방법 및 장치 |
US20170068574A1 (en) * | 2014-02-25 | 2017-03-09 | Hewlett Packard Enterprise Development Lp | Multiple pools in a multi-core system |
WO2016014263A2 (en) * | 2014-07-24 | 2016-01-28 | Iniguez Alfonso | System and method for parallel processing using dynamically configurable proactive co-processing cells |
US9785481B2 (en) * | 2014-07-24 | 2017-10-10 | Qualcomm Innovation Center, Inc. | Power aware task scheduling on multi-processor systems |
CN104156265A (zh) * | 2014-08-08 | 2014-11-19 | 乐得科技有限公司 | 定时任务的处理方法和处理装置 |
KR102269271B1 (ko) * | 2014-09-12 | 2021-06-28 | 삼성전자주식회사 | 오픈 컴퓨팅 언어 기반의 애플리케이션 실행 방법 및 장치 |
US20170031724A1 (en) * | 2015-07-31 | 2017-02-02 | Futurewei Technologies, Inc. | Apparatus, method, and computer program for utilizing secondary threads to assist primary threads in performing application tasks |
US10459760B2 (en) * | 2016-07-08 | 2019-10-29 | Sap Se | Optimizing job execution in parallel processing with improved job scheduling using job currency hints |
US10521271B2 (en) * | 2017-04-01 | 2019-12-31 | Intel Corporation | Hybrid low power homogenous grapics processing units |
JP7074777B2 (ja) * | 2017-11-20 | 2022-05-24 | シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッド | タスク並列処理方法、装置、システム、記憶媒体およびコンピュータ機器 |
KR102452205B1 (ko) | 2017-11-20 | 2022-10-06 | 삼성전자주식회사 | 멀티 코어 제어 시스템 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11102349A (ja) * | 1997-09-26 | 1999-04-13 | Nec Corp | メモリ共有型マルチプロセッサシステムの負荷制御方式 |
JP2005235228A (ja) * | 2004-02-20 | 2005-09-02 | Sony Computer Entertainment Inc | マルチプロセッサシステムにおけるタスク管理方法および装置 |
JP2005327007A (ja) * | 2004-05-13 | 2005-11-24 | Firmware Systems Inc | 組込みコンピュータ制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステム |
JP2008171153A (ja) * | 2007-01-10 | 2008-07-24 | Fujitsu Ten Ltd | タスク管理装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8832697B2 (en) * | 2005-06-29 | 2014-09-09 | Cisco Technology, Inc. | Parallel filesystem traversal for transparent mirroring of directories and files |
JP4936517B2 (ja) | 2006-06-06 | 2012-05-23 | 学校法人早稲田大学 | ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ |
JP4784827B2 (ja) | 2006-06-06 | 2011-10-05 | 学校法人早稲田大学 | ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ |
KR100801630B1 (ko) * | 2007-06-15 | 2008-02-05 | 디비코 주식회사 | 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및방법 |
JP2009069921A (ja) * | 2007-09-11 | 2009-04-02 | Hitachi Ltd | マルチプロセッサシステム |
-
2010
- 2010-01-22 US US13/201,150 patent/US8897372B2/en not_active Expired - Fee Related
- 2010-01-22 WO PCT/JP2010/000367 patent/WO2010095358A1/ja active Application Filing
- 2010-01-22 JP JP2011500479A patent/JP5545288B2/ja not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11102349A (ja) * | 1997-09-26 | 1999-04-13 | Nec Corp | メモリ共有型マルチプロセッサシステムの負荷制御方式 |
JP2005235228A (ja) * | 2004-02-20 | 2005-09-02 | Sony Computer Entertainment Inc | マルチプロセッサシステムにおけるタスク管理方法および装置 |
JP2005327007A (ja) * | 2004-05-13 | 2005-11-24 | Firmware Systems Inc | 組込みコンピュータ制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステム |
JP2008171153A (ja) * | 2007-01-10 | 2008-07-24 | Fujitsu Ten Ltd | タスク管理装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013132741A1 (ja) * | 2012-03-06 | 2013-09-12 | パナソニック株式会社 | マルチプロセッサシステム |
Also Published As
Publication number | Publication date |
---|---|
JP5545288B2 (ja) | 2014-07-09 |
US8897372B2 (en) | 2014-11-25 |
US20110310977A1 (en) | 2011-12-22 |
JPWO2010095358A1 (ja) | 2012-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5545288B2 (ja) | タスク割当装置、タスク割当方法、及び、タスク割当プログラム | |
JP7191240B2 (ja) | ビデオストリーム復号方法、装置、端末機器およびプログラム | |
US8635405B2 (en) | Computational resource assignment device, computational resource assignment method and computational resource assignment program | |
US8615039B2 (en) | Optimized allocation of multi-core computation for video encoding | |
US10423414B2 (en) | Parallel processing in hardware accelerators communicably coupled with a processor | |
Meenderinck et al. | Parallel scalability of video decoders | |
Azevedo et al. | Parallel H. 264 decoding on an embedded multicore processor | |
US20110004881A1 (en) | Look-ahead task management | |
EP3631629A1 (en) | Managing task dependency | |
JP5616523B2 (ja) | 情報処理システム | |
Sihn et al. | Novel approaches to parallel H. 264 decoder on symmetric multicore systems | |
Yang et al. | Optimal GEDF-based schedulers that allow intra-task parallelism on heterogeneous multiprocessors | |
KR101050188B1 (ko) | 멀티프로세서를 이용한 동영상 디코딩 장치 및 그 장치에서의 동영상 디코딩 방법 | |
Azevedo et al. | A highly scalable parallel implementation of H. 264 | |
Gürhanlı et al. | GOP-level parallelization of the H. 264 decoder without a start-code scanner | |
KR101355375B1 (ko) | 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법 및 장치 | |
Radicke et al. | Many-core HEVC encoding based on wavefront parallel processing and GPU-accelerated motion estimation | |
JP5236386B2 (ja) | 画像復号装置及び画像復号方法 | |
Liu et al. | Fine-grained task-level parallel and low power h. 264 decoding in multi-core systems | |
Tu et al. | A portable and efficient user dispatching mechanism for multicore systems | |
Akramullah et al. | Video Coding Performance | |
Sankaraiah et al. | Parallel full HD video decoding for multicore architecture | |
KR101219220B1 (ko) | 병렬 부호화를 위한 데이터 파티션 방법 및 이를 수행하는 프로그램을 기록한 기록매체 | |
JP2011182169A (ja) | 符号化装置および方法 | |
Wang et al. | Dynamic macroblock wavefront parallelism for parallel video coding |
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: 10743490 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2011500479 Country of ref document: JP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 13201150 Country of ref document: US |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 10743490 Country of ref document: EP Kind code of ref document: A1 |