WO2010095358A1 - タスク割当装置、タスク割当方法、及び、タスク割当プログラムが格納された記憶媒体 - Google Patents

タスク割当装置、タスク割当方法、及び、タスク割当プログラムが格納された記憶媒体 Download PDF

Info

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
Application number
PCT/JP2010/000367
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 US13/201,150 priority Critical patent/US8897372B2/en
Priority to JP2011500479A priority patent/JP5545288B2/ja
Publication of WO2010095358A1 publication Critical patent/WO2010095358A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance 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

タスク割当装置、タスク割当方法、及び、タスク割当プログラムが格納された記憶媒体
 本発明は、マルチコアプロセッサにおけるタスク割当装置、タスク割当方法、及び、タスク割当プログラムが格納された記憶媒体に関する。
 組込みシステムは高機能化が進み,複数のアプリケーションの同時実行や高負荷なアプリケーションの実行が求められている。組込みシステムの中で、特に、携帯電話やPND(Portable Navigation Device)などのモバイルデバイスでは高機能化が進み、本来の通信機能やナビゲーション機能などの単一のアプリケーションだけではなく、動画や音楽の再生など複数のアプリケーションが同時に実行することが求められている。動画再生などのマルチメディア処理は演算負荷が高く、高性能なプロセッサが必要とされている。
 そのような高負荷、複数アプリケーションを実行する高性能プロセッサとして、複数の演算コアを集積するマルチコアプロセッサが使われてきている。マルチコアプロセッサは消費電力を抑え高性能化できるため、バッテリー駆動時間や発熱が問題になるモバイルデバイスでは必須の技術である。
 マルチコアプロセッサを用い高負荷、複数アプリケーションを効率的に実行するには、アプリケーションの並列化とアプリケーション間の演算資源の配分が必要である。1つのコアでは処理できない高負荷アプリケーションは、並列化を行い複数コアで処理する必要がある。また、複数コアを有効に使うには、各アプリケーションにどのコアの演算資源をどれだけ配分するかの最適化が重要になる。実行するアプリケーション数やアプリケーションの負荷は変動するため、この演算資源配分は実行中に動的に行う必要がある。
 並列化は、一般に、並列化ライブラリを用いて行われる。並列化ライブラリには、POSIXやWindows(登録商標)などのスレッドを用いるものや、OpenMP、インテルThreading Building Blocks(TBB)などがある。POSIXやWindows(登録商標)などのスレッドライブラリは、アプリケーション処理の分割と分割処理のコアへの割り当てをプログラマが記述する。割り当ては、割り当てるコアの数を意識しプログラマが手動で行う。一方、OpenMPやTBBは、処理分割はプログラマが行うが、コアへの割り当てはライブラリが自動で実行する。このため、プログラマはコアの数を特に意識する必要はない。
 並列化ライブラリTBBなどでは、アプリ処理を複数タスクに分割し分割タスクをコアに自動で割り当てるタスク並列化を行う。このタスク並列化モデルは、実行可能なタスクを溜めておくタスクプールと、タスクをコアに割り当てるスケジューラを持つ。プログラマは、アプリケーション処理を並列実行可能な複数のタスクに分割し、実行可能なタスクをタスクプールに投入するプログラムを記述する。タスクプールに投入されたタスクは、スケジューラにより自動でコアへ割り当てられる。タスクプールに溜められたタスクの数がコア数に比べ多い場合、負荷分散が容易に実現できることがタスク並列化の特徴である。
 前記タスク並列化は、割り当てるコアの数(並列度)が実行中に変更でき演算資源の動的配分を容易にする。タスク並列化のスケジューラは、タスクプール中のタスクを動的に処理可能なコアにタスクを割り当てていくため、コアの数に依らない並列化ができる。このため、並列度を実行中に容易に変更でき、当該アプリや他アプリの負荷変動に応じ演算資源の配分が動的に変更できる。
 本発明では、各コアがタスクプールを持つ並列モデルを前提とする(図10)。このモデルでは、スケジューラ121はタスクプールからタスクを取得しコアに割り当てる動作と、生成されたタスクをタスクプールに投入する動作を行う。今後、これらのコアへのタスクの割当とタスクプールへのタスク投入の2つの動作をタスク割当と呼ぶ。タスク割当装置100における演算コア131へのタスク割り当て動作例を図11及び図12を基に説明する。
 まず、図11を基にタスクプールからタスクを取得しコアに割り当てる動作の説明をする。
 スケジューラ121はタスクプール111にタスクがあるかどうか調べる(ステップ201)。
 タスクプール111にタスクがある場合、スケジューラ121はタスクプール111からタスクを取得する。例えば、最初に投入されたタスクから取得するなどである(ステップ202)。
 タスクプール111にタスクがない場合、スケジューラ121は他タスクプール112、…にタスクがあるか調べ、どのタスクプールにもタスクがない場合はタスク割当を終了する(ステップ203)。
 他タスクプールにタスクがある場合、スケジューラ121は当該タスクプールからタスクを取得する(ステップ204)。
 スケジューラ121は取得したタスクを演算コア131へ割り当て、処理を終了する(ステップ205)。
 次に、図12を基にタスクをタスクプールに投入する動作の説明をする。タスクの生成は実行中のタスクで行われ、タスク生成後にスケジューラ121が呼ばれる。
 スケジューラ121は当該新規タスクをタスクプール111に投入する(ステップ211)。
 マルチコアプロセッサは、各コアが同質の処理性能を持たず性能が異なるヘテロな構成のものある。並列プログラムから見た場合のヘテロ構成として、各コアの物理的な性能が異なるもの(Asymmetric Multiple Processor:AMP)の他に(図13A)、コア性能は同質(Symmetric Multiple Processor:SMP)だが該当並列プログラムに割り当てられる演算性能がコア毎に異なるものがある(図13B)。図13Bのコア2は、当該プログラムに50%の演算性能を明示的に割当てる場合や、当該コアで動作する他のプログラムの影響で結果的に50%の演算性能しか割当てられない場合を含む。
 ヘテロ構成のマルチコアプロセッサでは、タスクのコア割当はコアの性能とタスク間の依存関係を考慮する必要がある。タスク間に処理結果を参照する依存関係があり、多くのタスクから参照されるタスクが低性能コアに割り当てられると、高性能コアが当該タスクの処理終了を待ち合わせ並列性能が低下する可能性があるためである。この他タスクから参照される数を参照数と呼び、タスク間依存関係の指標とする。
 さらに、前記参照数が実行時に決定される場合、タスク割り当ては実行時に行う必要がある。実行時の条件判定によってタスクを生成するかしないか、あるタスクの処理結果を参照するかしないかが決定されるような、タスク間に複雑な依存関係が存在する場合がある。このように依存関係が実行時にしか決まらない場合では、当該タスクの処理結果を参照する可能性があるタスク全てが生成された時点で当該タスクの参照数が確定する。
 特許文献1では、異なる性能のコアを複数持つマルチコアプロセッサにおけるタスクのコア割り当てる技術を開示している。本技術は、複数のタスクプールを持つタスク並列モデルを採用し、実行時にタスクの割当を行うことができる。タスク間の依存関係は予め設定しておき、実行時にタスク処理の演算負荷やタスク間通信コストを計算し、タスクを割り当てる。
 また、関連技術として、ヘテロジニアスマルチプロセッサシステムに関して、マクロタスクの処理時間が実行時に変動するなどの状況に応じた制御を、実行時にタスクの割り当てを行うことで実現する技術が提案されている(例えば、特許文献2参照)。
 また、関連技術として、参照数に基づいてスケジューリングする技術が提案されているが、その参照数を利用する目的は参照数が多いタスクを先に実行することで実行可能になるタスクを増やすことにある(例えば、特許文献3参照)。
特開2007-328415号公報 特開2007-328416号公報 特開2008-171153号公報
 しかし、特許文献1を含む関連技術では、タスク間の依存関係(参照数)が確定した後でないと、タスクの最適なコア割り当てができないという問題があった。前述したように、タスク生成や他タスク参照の有無が実行時の条件判断で変わる場合、関連するタスクが全て生成されない限り、当該タスクの参照数が確定しない。この場合、新規タスク生成時にどのタスクプールに投入すべきか、タスクスチール時にどのタスクを取得するかを決めることができない。このため、参照数の多いタスクが低性能コアに割り当てられると、高性能コアが当該タスクの処理終了を待ち合わせ並列性能が低下する可能性がある。
 また、特許文献3の関連技術では、タスク数を増やすことはできるが、参照数が多いタスクが低性能なプロセッサで処理されることで終了に時間がかかり多くのタスクが実行できない状態になることを避けることは困難である。
 本発明の目的は、実行性能が異なるコアを複数持つマルチコアプロセッサで、低性能コアの処理結果を高性能コアが待ち合わせによる性能低下を低減し、並列性能を高めるタスク割当を行うタスク割当装置、タスク割当方法、及び、タスク割当プログラムが格納された記憶媒体を提供することにある。
 本発明の観点では、タスク割当装置は、
 実行可能なタスクを蓄えるタスクプールと、
 新規タスクのタスクプールへの投入と、タスクプールからタスクの取得を行うタスクスケジューラと、
 当該タスク処理結果がいくつの他タスクから参照されるかを示す数であるタスクの参照数を求める参照数解析モジュールとを備え、
 前記参照数解析モジュールは、参照数を実行中に解析し、
 前記スケジューラは、前記参照数を基にタスクの投入、及び、取得を行う。ここで、前記参照数解析モジュールは、実行中タスクからヒント情報と参照数推定方法を取得し、指定された方法を基に当該ヒント情報から参照数を推定しても良い。
 また、本発明のタスク割当方法は、実行可能なタスクを蓄えるタスクプールから取得した当該タスクの処理結果が他のいくつのタスクから参照されるかを示す数であるタスクの参照数をタスクの処理実行中に算出し、前記参照数を基に前記タスクプールへのタスクの投入、及び、前記タスクプールからのタスクの取得を行うことを特徴とする。
 また、本発明のタスク割当プログラムが格納された記憶媒体は、実行可能なタスクを蓄えるタスクプールから取得した当該タスクの処理結果が他のいくつのタスクから参照されるかを示す数であるタスクの参照数をタスクの処理実行中に算出し、前記参照数を基に前記タスクプールへのタスクの投入、及び、前記タスクプールからのタスクの取得を行う処理をコンピュータに実行させるプログラムを格納したものである。
 本発明によれば、実行性能が異なるコアを複数持つマルチコアプロセッサで、低性能コアの処理結果を高性能コアが待ち合わせによる性能低下を低減し、並列性能を高めるタスク割当を行うタスク割当装置、タスク割当方法、及び、タスク割当プログラムが格納された記憶媒体を提供することができる。
本発明の第1の実施の形態に係るタスク割当装置の構成を示す図である。 本発明の第1の実施の形態に係るタスク割当装置の構成を示す図である。 ソフトウェア・プログラムとして実現される場合を示す図である。 タスクプールからタスクを取得しコアに割り当てる動作を示すフローチャートである。 タスクプールに投入する動作を示すフローチャートである。 参照数を推定する動作を示すフローチャートである。 イントラ予測図である。 デブロッキングフィルタ結果を参照した際のイントラ予測図である。 予測画像生成タスクのタスク割当における新規タスクのタスクプールへの投入動作を示すフローチャートである。 1フレームに適用した予測画像生成処理の動作を示す図である。 1フレームに適用した予測画像生成処理の動作を示す図である。 各コアがタスクプールを持つ多数並列モデルを示す図である。 タスクプールからタスクを取得しコアに割り当てる動作を示すフローチャートである。 タスクをタスクプールに投入する動作を示す図である。 並列プログラムから見た場合のヘテロ構成を示す図である。 並列プログラムから見た場合のヘテロ構成を示す図である。
 実施の形態1
 以下、図面を参照し、本発明を実施するための最良の形態が説明される。
 図1乃至図2に、第1の実施の形態に係るタスク割当装置の構成が示される。
 図1におけるタスク割当装置200は、
 演算コア毎に実行可能なタスクを蓄えるタスクプール111、112、…と、
 新規タスクのタスクプールへの投入とタスクプールからタスクの取得を行うタスクスケジューラ241と、
 当該タスクの参照数を求める参照数解析モジュール251とを備える。
 前記スケジューラは、コアの性能と前記参照数を主に用いることでタスク割当を行う。
 新規タスクの投入を行う場合、参照数が多いタスクは高性能コアのタスクプールに、参照数が少ないタスクは低性能コアのタスクプールに新規タスクを投入する。参照数の多少は、閾値を決定しておきその閾値を超すか否かで判断する。演算コア数が2より多い場合も、閾値を複数用意しその値に応じ投入すべきタスクプールを決定する。
 また、タスクのスチールを行う場合、低性能コアのタスクプールが空の場合、他プールからの参照数の少ないタスクを取得し低性能コアに割当て、高性能コアのタスクプールが空の場合、他プールからの参照数の多いタスクを取得し高性能コアに割当てる。タスク投入と同様に、参照数の閾値を決定しておき参照数の多少を判断する。
 前記参照数解析モジュールは、新規にタスクプールに投入されるタスク、または、タスクプール滞在中のタスクの参照数を実行中に解析する。本来、参照数は、当該タスクを参照する可能性のあるタスク(関連タスク)が全て生成された時点で確定する。しかし、新規タスクを生成時にどのタスクプールに投入すべきかや、タスクスチール時にどのタスクを取得するかなど、参照数が決定する前に判断する必要がある。このため、当該モジュールは通常のプログラム進行に先行してタスク間の依存関係を解析することで参照数を推定し、当該タスクに関連付ける。具体的には、タスクを投入する時やタスクをスチールするときに推定を行う。
 この参照数解析モジュールによる参照数推定は、例えば、既に参照数が確定しているタスクを参考に行う。解析を行うタスクと同じタイプのタスクの参照数は似た傾向にあると仮定し、当該タスクの参照数としてその同タイプタスクの参照数を用いるなどである。
 しかし、前述のような同タイプタスクからの参照数推定では、推定精度が不十分であることが考えられる。このため、図2のタスク割当装置300に示すように、実行中のタスクから参照数解析モジュールに推定に必要なヒント情報と参照数推定方法を与えても良い。参照数解析モジュールは、当該ヒント情報と参照数推定方法が与えられた時に参照数を推定し、当該タスクに関連付ける。これらの情報は、実行中のタスクが新規タスクを生成する際に与えても良く、また、ヒント情報が準備できた時点で与えても良い。
 例えば、ヒント情報としては生成するタスクと関連タスクのタイプ情報を取得し、参照数推定方法として前記生成タスクと関連タスクのタイプの関係に基づき参照数を推定するなどである。また、関連タスクのタスク生成判断やタスク参照有無の条件判断のみを先行して行う方法を参照数推定方法として取得しても良い。この指定された方法を基に参照数を推定することで、参照数の推定精度を上げることができる。以下は、参照数解析モジュールがヒント情報と参照数推定方法を取得する図6の構成に基づいて説明する。
 なお、図1乃至図2に示される各モジュールは、本実施の形態に係るタスク割当装置を実現する場合において、ソフトウェア・プログラム及びハードウェアの何れかによって実現される所定の機能単位である。したがって、これら各処理部の一部または全部をソフトウェア又はハードウェアとして実現しても良い。
 ソフトウェア・プログラムとして実現される場合、図3に示されるように、メインメモリ131、演算コア111、112、…、インターフェース部241を備えるコンピュータ装置1000上でソフトウェア・プログラムは実行される。ソフトウェア・プログラムは、読み書き可能なメインメモリ131(記憶媒体)に格納されている。プロセッサ111、112、…は、ソフトウェア・プログラムをメインメモリ131から読み出して実行する。このような場合、本発明は、係るソフトウェア・プログラムのコード或いは記憶媒体によって構成される。
 より具体的には、タスク割当装置の各モジュールの処理を、CPU(Central Processing Unit)にコンピュータプログラムを実行させることにより実現する。この場合、コンピュータプログラムは、記録媒体に記録して提供することも可能であり、また、インターネットその他の通信媒体を介して伝送することにより提供することも可能である。また、記憶媒体には、例えば、フレキシブルディスク、ハードディスク、磁気ディスク、光磁気ディスク、CD-ROM、DVD、ROMカートリッジ、バッテリバックアップ付きRAMメモリカートリッジ、フラッシュメモリカートリッジ、不揮発性RAMカートリッジ等が含まれる。また、通信媒体には、電話回線等の有線通信媒体、マイクロ波回線等の無線通信媒体等が含まれる。
 次に、図4乃至図6を参照して、第1の実施形態の動作手順が説明される。図4はタスクプールからタスクを取得しコアに割り当てる動作、図5はタスクプールに投入する動作、図6は参照数を推定する動作を説明するフローチャートである。図4乃至図6に示されるフローチャートは、図3に示されるコンピュータ装置1000におけるプロセッサ111、112、…が実行するソフトウェア・プログラムの処理手順を表す。したがって、図2に示される機能モジュールは、プロセッサ111、112、…によって実行されるソフトウェア・プログラムとして説明される。以下は、演算コア131に対するタスク割当として説明する。
 まず、図4を基に、タスクプールからタスクを取得しコアに割り当てる動作の説明をする。
 スケジューラ121はタスクプール111にタスクがあるかどうか調べる(ステップ101)。
 タスクプール111にタスクがある場合、スケジューラ121はタスクプール111からタスクを取得する。例えば、最初に投入されたタスクから取得するなどである(ステップ102)。
 タスクプール111にタスクがない場合、スケジューラ121は調べていない他タスクプールにタスクがあるか調べ、どのタスクプールにも該当するタスクがない場合はタスク割当を終了する(ステップ103)。
 他タスクプールにタスクがある場合、スケジューラ121は当該タスクプールの属する演算コアと演算コア131の性能を比較する(ステップ104)。
 演算コア131の方が高性能の場合、当該タスクプールに参照数が予め決めた閾値より多いタスクがあるか調べ(ステップ105)、あれば取得し(ステップ106)、なければステップステップ103に戻る。
 演算コア131の方が低性能の場合、当該タスクプールに参照数が予め決めた閾値より少ないタスクがあるか調べ(ステップ107)、あれば取得し(ステップ108)、なければ上記と同様にステップステップ103に戻る。
 スケジューラ121は取得したタスクを演算コア131へ割り当て、処理を終了する(ステップ107)。
 次に、図5を基に、新規タスクをタスクプールに投入する動作の説明をする。ここでは、前記ヒント情報と前記参照数推定方法が新規タスク生成時に与えられ、参照数推定する場合の説明をする。
 参照数解析モジュール251は、得られたヒント情報と参照数推定方法を基に参照数推定を行う(ステップ111)。
 スケジューラ121は、得られた参照数を基に投入するタスクプールを決定する(ステップ112)。例えば演算コア数が2の場合、前記参照数が予め与えられた閾値より多い場合は高性能コアのタスクプールを、少ない場合は高性能コアのタスクプールを選択する。
 スケジューラ121は、当該新規タスクを前記タスクプールに投入する(ステップ113)。
 次に、図6を基に、新規タスクをタスクプールに投入する時以外に参照数を推定する動作の説明をする。この動作は、実行中のタスクにおいてヒント情報が準備できた時点で、実行中タスクが参照数解析モジュールに当該ヒント情報と参照数推定方法を与え開始される。
 参照数解析モジュール251は、得られたヒント情報と参照数推定方法を基に参照数推定を行う(ステップ121)。
 このように、与えられたヒント情報と推定方法を用いることで関連タスクが全て生成される以前に該当タスクの参照数が推定でき、タスクの割当を効果的に行える。これにより、低性能コアの処理結果を高性能コアが待ち合わせるような無駄なタスク割当を低減でき、並列性能を高めることができる。
 次に、第2の実施の形態が説明される。本実施の形態は、第1の実施の形態を動画像処理装置に適用したものである。つまり、本実施の形態に係るタスク割当装置が割り当てるタスクは、動画像処理を複数に分割したものとする。以下では、動画像処理として、H.264/MPEG-4 AVC(以下H.264と記載する)方式の復号処理をマクロブロック(MB)単位に分割した例を用いて説明する。さらに、フレーム内での並列処理を想定し、フレームをまたいで並列処理はしないものとする。
 第2の実施の形態に係る構成要素は、タスク割当装置300における構成要素と同じであり、
 前記参照数解析モジュールは、
 前記ヒント情報として該当MBのビットストリームを取得し、また、
 前期参照数推定方法として、ビットストリームからマクロブロックタイプ、画面予測モード、フィルタタイプなどの符号化パラメータのみをデコードする方法を取得する。
 動画復号処理は、以前に復号処理したMBの処理結果を参照し、現在のMBの復号処理を行う。H.264動画復号処理では、予測画像生成とデブロッキングフィルタにおいて以前のMB処理結果の参照を行う。どのMBを参照するかは、ビットストリームの可変長復号(VLD)処理結果して得られる、MBタイプや、画面予測モード、フィルタパラメータなどの符号化パラメータを基に決定される。
 予測画像生成は、動き補償処理、又は、イントラ予測処理から成り、MBタイプでMB毎にどちらの処理が適用されるか決定される。動き補償処理は同じフレーム内のMBを参照しない。一方、イントラ予測は図7Aに示すように、左、上、右上、及び、左上のMBのイントラ予測結果を参照し得る。どのMBを参照するかは、MBタイプ及びイントラ予測モードなどの画面予測モードから決定される。
 デブロッキングフィルタは、フィルタパラメータ(deblocking_filter_control_present_flagやdisable_deblocking_filter_idcなど)で参照関係が決定される。デブロッキングフィルタは、左、上、及び、右上のMBのデブロッキングフィルタ結果を参照し得る(図7B)。
 これらの符号化パラメータは、実行時にしかわからない。通常、VLD処理は決められた手順でMB毎に適用される。つまり、関連MBのVLDが全て終わるまで参照関係がわからないことになり、当該MB処理のタスク生成時点ではどのMBから参照されているか確定しないことになる。
 このため、前期参照数推定方法として、ビットストリームからマクロブロックタイプ、画面予測モード、フィルタタイプなどのMB参照関係を決定する符号化パラメータのみを先行高速復号する方法を指定する。前記ヒント情報としては、該当MBのビットストリームを指定する。
 次に、第2の実施形態の動作手順が説明される。第2の実施形態におけるフローチャートは、図4乃至図6に示される第1の実施形態のフローチャートと同じである。図8は、予測画像生成タスクのタスク割当における新規タスクのタスクプールへの投入動作を図5に適用したものである。
 図8、図9を基に、予測画像生成タスクのタスク割当における新規タスクをタスクプールに投入する動作の説明をする。図9は、1フレームに適用した予測画像生成処理の動作を示している。図9Aにおいて、MBタスクI、IIは処理が終了しており、MBタスクIIIが高性能コアで実行中、MBタスクIVは高性能コアのタスクプールに投入されており、MBタスクVがMBタスクIIIから生成された状態を表している。また、MBタスクVI~IXはまだ生成されておらず、参照関係がわかっていない。以下では、MBタスクVをタスク割当する動作の説明をする。
 MBタスクIIIは、MBタスクVの生成時に、前記ヒント情報としてMBVI~IXに該当するビットストリーム、及び、前記参照数推定方法として前記ビットストリームからMBタイプ、イントラ予測モードを先行復号する方法を、参照数解析モジュール251に与えているとする。
 まず、参照数解析モジュール251は、得られたMBVI~IXのビットストリームから、該当MBのマクロブロックタイプ、イントラ予測モードを復号する(ステップ141)。この結果、MBVIIのみがイントラ予測処理をするMBで、さらに、上方向の参照をすることがわかったとする(図9B)。つまり、MBタスクVはどのMBタスクからも参照されず、参照数0となる。この場合、MBタスクIVは参照数1である。
 次に、スケジューラ121は、得られたMBタスクVの参照数を基に投入するタスクプールを決定する(ステップ142)。例えば、参照数判断の閾値を1としておくと、MBタスクVは低性能コアのタスクプールに投入すると決定される。
 スケジューラ121は、MBタスクVは低性能コアのタスクプールに投入する(ステップ143)。MBタスクIVは参照数1であるため、高性能コアのタスクプールに投入されている(図9B)。
 上記では、関連MBのマクロブロックタイプ、イントラ予測モードの先行復号を、タスク生成時に毎回行うように記述した。しかし、全ての先行復号をせず、以前に行った復号結果を用いても良い。例えば、MBタスクIV割当て時に行っているMBVIIの先行復号結果を、MBタスクVの割当て時に用いても良い。
 このように、関連MBタスクのビットストリームから参照関係決定に必要な符号化パラメータのみを先行高速復号することで、関連タスクが全て生成される以前に該当MBタスクの参照数が決定でき、タスクの割当を効果的に行える。これにより、低性能コアの処理結果を高性能コアが待ち合わせるような無駄なタスク割当を低減でき、並列性能を高めることができる。
 なお、本実施の形態は、動画像処理としてH.264方式の復号処理を例に説明したが、本発明はH.264方式の復号処理に限らず、MPEGやJPEG、VC-1などの動画像復号及び符号化処理についても適用可能である。
 なお、上述する各実施の形態は、本発明の好適な実施の形態であり、本発明の要旨を逸脱しない範囲内において種々変更実施が可能である。
 この出願は、2009年2月18日に出願された日本出願特願2009-035075を基礎とする優先権を主張し、その開示の全てをここに取り込む。
 本発明は、例えば、H.264/MPEG-4 AVC方式の動画像データを復号する処理に利用可能である。また、動画像処理のみならず、データの符号化処理を要する様々なシステムにおいて利用可能性を有する。
100、200、300  タスク割当装置
111、112  タスクプール
121  スケジューラ
131、132  演算コア
251  参照数解析モジュール

Claims (12)

  1.  実行可能なタスクを蓄えるタスクプールと、
     新規タスクのタスクプールへの投入と、タスクプールからタスクの取得を行うタスクスケジューラと、
     当該タスク処理結果がいくつの他タスクから参照されるかを示す数であるタスクの参照数を求める参照数解析モジュールとを備え、
     前記参照数解析モジュールは、参照数を実行中に解析し、
     前記スケジューラは、前記参照数を基にタスクの投入、及び、取得を行うことを特徴とするタスク割当装置。
  2.  実行性能が異なる演算コアを複数持つマルチコアプロセッサを備え、
     前記タスクプールは、前記演算コア毎に備えられ、
     前記参照数解析モジュールは、新規にタスクプールに投入されるタスク、または、タスクプール滞在中のタスクの参照数を実行中に解析し、
     前記スケジューラは、コアの性能と前記参照数を基にタスクの投入、及び、取得を行うことを特徴とする請求項1に記載のタスク割当装置。
  3.  前記参照数解析モジュールは、実行中タスクからヒント情報と参照数推定方法を取得し、指定された方法を基に当該ヒント情報から参照数を推定することを特徴とする請求項1乃至請求項2に記載のタスク割当装置。
  4.  前記タスクは、動画像符号又は復号処理をマクロブロック単位に分割したものであって、
     前記参照数解析モジュールは、
     前記ヒント情報として該当マクロブロックのビットストリームを取得し、また、
     前記参照数推定方法として、ビットストリームからマクロブロックタイプ、画面予測モード、フィルタパラメータなどの符号化パラメータのみをデコードする方法を取得し、
     前記符号化パラメータから参照数を推定することを特徴とする請求項3に記載のタスク割当装置。
  5.  実行可能なタスクを蓄えるタスクプールから取得した当該タスクの処理結果が他のいくつのタスクから参照されるかを示す数であるタスクの参照数をタスクの処理実行中に算出し、
     前記参照数を基に前記タスクプールへのタスクの投入、及び、前記タスクプールからのタスクの取得を行うことを特徴とするタスク割当方法。
  6.  前記タスクプールは、実行性能が異なる演算コアを複数持つマルチコアプロセッサの前記演算コア毎に備えられ、
     前記参照数をタスクの処理実行中に算出する処理では、新規に前記タスクプールに投入されるタスク、または、前記タスクプール滞在中のタスクの参照数をタスク処理の実行中に解析し、
     前記タスクプールからのタスクの取得を行う処理では、前記演算コアの性能と前記参照数を基に前記タスクプールへのタスクの投入、及び、前記タスクプールからのタスクの取得を行うことを特徴とする請求項5に記載のタスク割当方法。
  7.  前記参照数をタスクの処理実行中に算出する処理では、実行中タスクからヒント情報と参照数推定方法を取得し、指定された方法を基に当該ヒント情報から参照数を推定することを特徴とする請求項5または請求項6に記載のタスク割当方法。
  8.  前記タスクは、動画像符号又は復号処理をマクロブロック単位に分割したものであり、
     前記ヒント情報は、該当マクロブロックのビットストリームであり、
     前記参照数推定方法は、ビットストリームからマクロブロックタイプ、画面予測モード、フィルタパラメータなどの符号化パラメータのみをデコードし、前記符号化パラメータから参照数を推定するものであることを特徴とする請求項7に記載のタスク割当方法。
  9.  実行可能なタスクを蓄えるタスクプールから取得した当該タスクの処理結果が他のいくつのタスクから参照されるかを示す数であるタスクの参照数をタスクの処理実行中に算出し、
     前記参照数を基に前記タスクプールへのタスクの投入、及び、前記タスクプールからのタスクの取得を行う処理をコンピュータに実行させるプログラムが格納された記憶媒体。
  10.  前記タスクプールは、実行性能が異なる演算コアを複数持つマルチコアプロセッサの前記演算コア毎に備えられ、
     前記参照数をタスクの処理実行中に算出する処理では、新規に前記タスクプールに投入されるタスク、または、前記タスクプール滞在中のタスクの参照数をタスク処理の実行中に解析し、
     前記タスクプールからのタスクの取得を行う処理では、前記演算コアの性能と前記参照数を基に前記タスクプールへのタスクの投入、及び、前記タスクプールからのタスクの取得を行うことを特徴とする請求項9に記載のプログラムが格納された記憶媒体。
  11.  前記参照数をタスクの処理実行中に算出する処理では、実行中タスクからヒント情報と参照数推定方法を取得し、指定された方法を基に当該ヒント情報から参照数を推定することを特徴とする請求項9または請求項10に記載のプログラムを格納された記憶媒体。
  12.  前記タスクは、動画像符号又は復号処理をマクロブロック単位に分割したものであり、
     前記ヒント情報は、該当マクロブロックのビットストリームであり、
     前記参照数推定方法は、ビットストリームからマクロブロックタイプ、画面予測モード、フィルタパラメータなどの符号化パラメータのみをデコードし、前記符号化パラメータから参照数を推定するものであることを特徴とする請求項11に記載のプログラムが格納された記憶媒体。
PCT/JP2010/000367 2009-02-18 2010-01-22 タスク割当装置、タスク割当方法、及び、タスク割当プログラムが格納された記憶媒体 WO2010095358A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US13/201,150 US8897372B2 (en) 2009-02-18 2010-01-22 Task allocation device, task allocation method, and storage medium storing task allocation program
JP2011500479A JP5545288B2 (ja) 2009-02-18 2010-01-22 タスク割当装置、タスク割当方法、及び、タスク割当プログラム

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013132741A1 (ja) * 2012-03-06 2013-09-12 パナソニック株式会社 マルチプロセッサシステム

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012001777A1 (ja) * 2010-06-29 2012-01-05 富士通株式会社 マルチコアプロセッサシステム、通信制御方法、および通信制御プログラム
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
US9785481B2 (en) * 2014-07-24 2017-10-10 Qualcomm Innovation Center, Inc. Power aware task scheduling on multi-processor systems
CN106537343A (zh) * 2014-07-24 2017-03-22 阿方索·伊尼格斯 使用动态可配置主动协同处理单元的并行处理的系统和方法
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
KR102452205B1 (ko) 2017-11-20 2022-10-06 삼성전자주식회사 멀티 코어 제어 시스템
JP7074777B2 (ja) * 2017-11-20 2022-05-24 シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッド タスク並列処理方法、装置、システム、記憶媒体およびコンピュータ機器

Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
JP4784827B2 (ja) 2006-06-06 2011-10-05 学校法人早稲田大学 ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ
JP4936517B2 (ja) 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
KR100801630B1 (ko) * 2007-06-15 2008-02-05 디비코 주식회사 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및방법
JP2009069921A (ja) * 2007-09-11 2009-04-02 Hitachi Ltd マルチプロセッサシステム

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013132741A1 (ja) * 2012-03-06 2013-09-12 パナソニック株式会社 マルチプロセッサシステム

Also Published As

Publication number Publication date
US20110310977A1 (en) 2011-12-22
JP5545288B2 (ja) 2014-07-09
US8897372B2 (en) 2014-11-25
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
WO2009113034A1 (en) Look-ahead task management
Mesa et al. Scalability of macroblock-level parallelism for h. 264 decoding
JP5616523B2 (ja) 情報処理システム
EP3631629A1 (en) Managing task dependency
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
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
Sankaraiah et al. Parallel full HD video decoding for multicore architecture
KR101219220B1 (ko) 병렬 부호화를 위한 데이터 파티션 방법 및 이를 수행하는 프로그램을 기록한 기록매체
JP2011182169A (ja) 符号化装置および方法
JP5120324B2 (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