JP5985484B2 - プロセッシングユニットの動的リソース割り当てのための方法及び装置 - Google Patents

プロセッシングユニットの動的リソース割り当てのための方法及び装置 Download PDF

Info

Publication number
JP5985484B2
JP5985484B2 JP2013530094A JP2013530094A JP5985484B2 JP 5985484 B2 JP5985484 B2 JP 5985484B2 JP 2013530094 A JP2013530094 A JP 2013530094A JP 2013530094 A JP2013530094 A JP 2013530094A JP 5985484 B2 JP5985484 B2 JP 5985484B2
Authority
JP
Japan
Prior art keywords
task
resource allocation
block
processing
units
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013530094A
Other languages
English (en)
Other versions
JP2013537991A (ja
Inventor
キョン・フン・キム
イン・チュン・ヨ
スン・ウク・イ
ジュン・バイク・キム
イル・ホ・イ
ジョン・イグ・ソン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2013537991A publication Critical patent/JP2013537991A/ja
Application granted granted Critical
Publication of JP5985484B2 publication Critical patent/JP5985484B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Image Processing (AREA)

Description

本発明は、プロセッシングユニットの動的リソース割り当てのための方法及び装置に関する。より具体的に、本発明は、タスク単位でブロック化されたタスクブロックをプロセッシングユニットが処理するようにリソースを動的に割り当ててCPU(Central Processing Unit)またはGPU(Graphic Processing Unit)リソースを同時に効率的に活用する方法及び装置に関する。
プロセッシングユニット(Processing Unit)というのは、ソフトウェアを通じて実行される演算IP(Intellectual Property)として代表的な例であって、CPU(Central Processing Unit)、GPU(Graphic Processing Unit)、CGRA(Coarse−grained reconfigurable architecture)などを挙げることができる。前記CPU、GPU、CGRAに対する概略的な構造が図1及び図2に示される。
図1に示されたように、CPUは、実際演算を行う少なくとも1つのコア(core)を含むことができ、GPUも実際演算を行う少なくとも1つのプロセッシング要素(Processing Element、PE)を含むことができる。
図2では、CGRAの構造について示しており、これに関する説明は、下記の通りである。
CGRA(Coarse−Grained Reconfigurable Architecture)は、プロセッシング要素(PE)を配列し、各PE相互間にinput/outputを伝達し、有機的にプロセッシングする構造である。ここでは、演算されなければならないデータが移動する経路とそれらが演算されなければならないFU(ALU)ロジッグを有機的に調整する。この際、配列されたH/Wを使用する方法と手順をS/Wで調整するが、非常に細かい調整ではない、比較的粗粒の調整が行われる。このような理由で、Coarse−Grained Reconfigurableという名前が命名された。1つのPEは、基本的に小さいが、速い演算を担当し、これらを有機的に連結し、さらに大きい演算を行う。図2で、各PEがMesh形態で連結される様子を示している。データは、調整されるPE経路を通じて演算される。1つのPE要素を見れば、隣りPEとデータ交換のためのfrom neighborとto neighbor、外部で入力されるデータであるregister fileとこれらを調整するためのconfig memory、演算を行うFU(ALU)で構成される。
このように、最近、複数個のコアを含むマルチプロセッサやGPUなどが急速に採用されている実情である。特に、GPUのようなプロセッシングユニットは、数十から数百個に至るプロセッシング要素を含む。
このように、プロセッシングユニットが多くなるにつれて、プロセッシングユニットの性能を最大に発揮するためにリソースを効率的に管理する方法がシステム性能の向上に大きいカギになっている実情である。
GPU使用は、一般的にCPUがGPUを呼び出す形式を利用する。CPUは、特定タスクをGPUで実行するようにするために、GPUレジスタ(Register)を設定(setting)し、これを実行させる。最近、ハードウェアスレッド(Hardware Thread)でGPU内に様々な動作を同時に実行させる方法が登場している。これを活用すれば、GPU内でプロセッシング要素をグループ化し、同時に実行させることができる。このように、システムは、並列性を極大化する方法に進化している。
しかし、従来技術は、相変らずCPU、GPUを順次な呼出方法によって使用している。図3では、CPUがGPUを呼び出して使用する過程を時間の流れによって示している。
図3に示されたように、タスクを処理したCPUは、特定時点でGPUを呼び出す。それでは、GPUが当該タスクを処理する間に、CPUは、前記タスクを処理せずに待機する(これは、同一のタスクに対する待機を意味する、CPUは、全然異なるプログラムを処理することができる)。また、GPUを呼び出して使用する場合にも、GPUに含まれたすべてのプロセッシング要素を使用するものではなく、図3に示されたように活性化されたプロセッシング要素のみを使用し、残りのプロセッシング要素は、遊休状態を維持する。すなわち、GPUのすべてのプロセッシングユニットを活用しない。そし、GPUが当該タスク処理を終了すれば、CPUは、前記処理結果を引き継いで以後の処理手続を進行する。
前述した順次的なリソース使用方法は、CPUとGPUを同時に活用しないと共に、GPUに含まれたすべてのプロセッシング要素を活用しないという問題点が存在する。また、GPU内でもタスクが分割されず、1つのタスクがすべてのGPUを占有するようになる。この場合、大部分の応用プログラムは、GPUのすべてのプロセッシング要素を使用しないので、GPUリソースを浪費するようになり、その結果として、システム全体性能が低下するという問題点がある。
前記問題点を解決するために、本発明の少なくとも1つのプロセッシングユニットを含むシステムの動的リソース割り当て方法は、リソースが割り当られるタスクに関する情報を受信し、前記タスクを少なくとも1つのタスク並列ユニットに分割する段階と、前記タスク並列ユニットの処理予想時間及び相互間の依存性によって前記タスクを任意の多角形形状を有するタスクブロックに設定する段階と、前記タスクブロックを時間による横軸と少なくとも1つのプロセッシングユニットによる縦軸よりなるリソース割り当て平面に配置し、リソース割り当てる段階と、前記リソース割り当て情報によって前記タスクを行う段階とを含むことを特徴とする。
また、前記問題点を解決するために、本発明の少なくとも1つのプロセッシングユニットを含むシステムでリソースを動的に割り当てる装置は、リソースが割り当られるタスクに関する情報を受信し、前記タスクを少なくとも1つのタスク並列ユニットに分割し、前記タスク並列ユニットの処理予想時間及び相互間の依存性によって前記タスクを任意の多角形形状を有するタスクブロックに設定し、前記タスクブロックを時間による横軸と少なくとも1つのプロセッシングユニットによる縦軸よりなるリソース割り当て平面に配置し、リソース割り当てる動的リソース割り当てブロック及び前記リソース割り当て情報によって前記タスクを処理する少なくとも1つのプロセッシングユニットを含むことを特徴とする。
本発明の他の実施例では、少なくとも1つのプロセッシングユニットを備えるシステムに対する動的リソース割り当てのための製造物品を提供し、前記製造物品は、リソースが割り当られるタスクに関する情報を受信し、前記タスクを少なくとも1つのタスク並列ユニットに分割する段階と、前記タスク並列ユニット各々の処理予想時間及び前記タスク並列ユニットの相互間の依存性によって前記タスクを任意の多角形形状を有するタスクブロックに設定する段階と、前記タスクブロックを時間による横軸と少なくとも1つのプロセッシングユニットによる縦軸よりなるリソース割り当て平面に配置し、リソース割り当てる段階と、前記リソース割り当て情報によって前記タスクを行う段階とを実行するように1つ以上のプログラムを含む機械読み取り可能な媒体を含むことを特徴とする。
本発明によれば、システムが備えるCPUとGPUリソースを同時に効率的に使用することができ、システムの全体的な効率を向上させることができる。また、従来、タスクが、システムが備えるすべてのリソースを同時に活用することができないという問題点があったが、本発明によれば、遊休状態のリソースをも使用することができる。
図1は、CPUとGPUの概略的な構造を示す図である。 図2は、CGRAの概略的な構造を示す図である。 図3は、CPUまたはGPUリソースを利用してタスクを順次的な方法によって処理する過程を示す図である。 図4は、本発明の実施例による動的リソース割り当てシステムの構造を示す図である。 図5Aは、本発明の実施例による図4のシステムの動的リソース割り当てによって生成されるタスクブロックに対して示す図である。 図5Bは、本発明の実施例による図4のシステムの動的リソース割り当てによって生成されるタスクブロックに対して示す図である。 図6は、本発明の実施例によって動的リソース割り当てブロック450がタスクブロックを生成する手順を示す流れ図である。 図7は、タスクブロックをリソース割り当て平面に配置する原理を示す図である。 図8は、動的リソース割り当てブロック450がタスクブロックをリソース割り当て平面に配置する手順を示す流れ図である。 図9は、図8の各段階に対応してタスクブロックがリソース割り当て平面で移動する過程を示す流れ図である。 図10は、図4に示される動的リソース割り当てブロック450の内部構造を示す図である。 図11は、プロセッシングバンク1020を構成するレジスタユニットの内部構造を示す図である。 図12は、プロセッシングバンク1020を構成するレジスタユニットの結合構造を示す図である。 図13は、本発明の動的リソース割り当てブロック450がタスクブロックに対するリソースを割り当てる全体的な動作手順を示す流れ図である。 図14は、図13のS1330段階をより具体的に示す図である。 図15は、本発明のプロセッシングバンク1020が図14の過程を行う手順を具体的に示す流れ図である。
以下、添付の図面を参照して本発明の好ましい実施例を詳しく説明する。この際、添付の図面において同一の構成要素は、できるだけ同一の符号で示していることに留意しなければならない。また、本発明の要旨を不明にすることができる公知機能及び構成に対する詳細な説明は省略する。
本発明は、前述のような問題点を解決するためになされたもので、CPUまたはGPUリソースを効率的に使用するようにする動的リソース割り当て(Dynamic Resource Allocation、DRA)方法及び装置を提案する。
図4は、本発明の実施例による動的リソース割り当てシステムの構造を示す図である。図4に示されたように、本発明の動的リソース割り当てシステムは、CPU 410、GPU 420、CGRA 430、メモリ440、動的リソース割り当てブロック450を含むことができる。
CPU 410、GPU 420、CGRA 430は、タスクを処理することができるプロセッシングユニットの例示であって、必ずこれに限定されるものではない。特に、CPU 410は、複数個のコアを含むマルチコア(Multi−Core)で構成されることができる。また、GPU 420は、グラフィック処理のみならず、CPUと並行して高容量タスクを処理することができ、このために、複数個のプロセッシング要素(Processing Unit)で構成されることができる。前記CPU 410、GPU 420などのプロセッシングユニットは、当該タスク情報を動的リソース割り当てブロック450に入力し、前記動的リソース割り当てブロック450からリソース割り当て結果を受信し、スケージュリング情報によって前記タスクを処理(実行)する。
一方、CPUを構成するコア(Core)と、GPUを構成するプロセッシング要素(Processing Unit)は、その構造及び機能は異なっているが、与えられたタスクを行うという側面では、同一のユニットとして見なすことができるので、以下の説明は、プロセッシング要素に統一して記述する。しかし、これは、当該説明が必ずプロセッシング要素にのみ限定されるものではなく、同一の原理がコア、またはコア及びプロセッシング要素などを含むプロセッシングユニットに適用されることができることに留意しなければならない。
メモリ440は、動的リソース割り当てシステムの全般的な動作に必要なプログラムなどを格納する。
動的リソース割り当てブロック450は、プロセッシング要素によって処理されなければならない任意のタスクをタスクブロックに変換する。ここで、タスクブロック(Task Block)とは、プロセッシング要素によって処理されなければならない任意のタスクが複数個のタスク並列ユニット(Task Parallel Unit)に分割された状態で、前記タスク並列ユニット間の依存性(Dependency)を考慮して整列された形態を意味する。
また、前記動的リソース割り当てブロック450は、プロセッシング要素を並列に配置し、前記タスクブロックを前記プロセッシング要素に対してリソース割り当てる。このために、動的リソース割り当てブロック450は、CPUまたはGPUを構成するプロセッシング要素から活性化状態または遊休状態如何に関する情報を受信することができる。すなわち、動的リソース割り当てブロック450は、遊休状態のプロセッシング要素だけに対してリソースを割り当てる。
そして、前記動的リソース割り当てブロック450は、タスク処理過程中に、新規タスクに対してリソース割り当てるか、または以前タスクの演算時間に誤差があって早くまたは遅く終了した場合、タスクブロックを再び割り当てる過程を行う。
前記動的リソース割り当てブロック450の具体的な構造は、図10で詳しく記述する。
以下では、図5〜図9を通じて前記動的リソース割り当てブロック450がタスクブロックを生成し、リソース割り当てる過程について記述する。
図5は、動的リソース割り当てブロック450が生成するタスクブロックに対して示す図である。図5の横軸は、時間であり、縦軸は、タスクを実行するプロセッシング要素である。
前述したように、アプリケーション(または応用プログラム)は、少なくとも1つのタスクを行うように設定されることができ、前記少なくとも1つのタスクは、少なくとも1つのプロセッシング要素によって行われることができる。1つのタスクを複数個のプロセッシングユニットを利用して並列化処理するためには、図5に示されたように、1つのタスクが1つ以上のタスク並列ユニット(Task Parallel Unit)に分割されなければならない。この場合、1つのタスク並列ユニットと、これを処理するプロセッシング要素は、1対1対応することができる。
もし、1つのタスク並列ユニットが相互間の依存性(dependency)を有していなければ、すなわちタスク並列ユニットが以前タスク並列ユニットの処理結果を利用する必要がない場合なら、図5の左側に示されたように、タスク並列ユニットは、各々のプロセッシング要素を通じて並列的に同時に処理されることができる。この場合、1つのタスクは、矩形形態のタスクブロックに決定される。
しかし、少なくとも1つのタスク並列ユニットが相互間の依存性を有していれば、すなわち、タスク並列ユニットが以前タスク並列ユニットの処理結果を利用しなければならない場合、タスク並列ユニットの処理手順に時間的な制限が発生するようになる。この場合には、図5の右側に示されたように、1つのタスクは、台形形態のタスクブロックに決定される。動的リソース割り当てブロック450がタスクブロックを生成する過程が図6に示される。
図6は、動的リソース割り当てブロック450がタスクブロックを生成する手順を示す流れ図である。
まず、動的リソース割り当てブロック450は、S610段階で、任意のタスクが少なくとも1つの並列化されたタスク並列ユニットに分割可能な個数に関する情報を受信する。この場合、動的リソース割り当てブロック450は、前記情報を運営体制(Operating System、OS)またはコンパイラー(Compiler)から受信することができる。分割可能な個数に関する情報は、アプリケーション生成時に、またはコンパイル実行時に計算されることができる情報であり、動的リソース割り当てブロック450は、前記情報を受信すれば、各タスク並列ユニットを行うプロセッシング要素を決定することができる。この場合、前述したように、タスク並列ユニットとプロセッシングユニットは、1対1対応する。
これと同時に、動的リソース割り当てブロック450は、S620段階で、前記分割されたタスク並列ユニットの演算実行時間に関する情報を前記運営体制またはコンパイラーから受信する。それでは、動的リソース割り当てブロック450は、各タスク並列ユニットの長さを決定することができる。前記タスク並列ユニットの長さは、演算実行時間に比例する。既に実行履歴がある場合には、これを活用することができる。
そして、動的リソース割り当てブロック450は、S630段階で、各タスク並列ユニットの依存性を測定する。任意のタスク並列ユニットが、以前タスク並列ユニットの演算結果を利用する場合を依存性があると定義することができ、前記依存性によってタスク並列ユニットが実行される手順が配列される。
そして、動的リソース割り当てブロック450は、S640段階で、依存性によって配列されたタスク並列ユニットを包括する領域を任意の多角形形状に設定する。この場合、動的リソース割り当てブロック450は、タスク並列ユニットの間に依存性がない場合、前記領域を正方形または矩形形状に設定することができる。一方、動的リソース割り当てブロック450は、タスク並列ユニットの間に依存性がある場合、前記領域を平行四辺形形状に設定することができる。平行四辺形形状に設定する理由は、演算の速度と効率を高めるためである。この場合、前記平行四辺形の勾配は、タスク並列ユニット間の依存性程度(サイズ)によって可変的に変更されることができる。
図7は、タスクブロックをリソース割り当て平面に配置する原理を示す図である。
以下では、時間の横軸とプロセッシングユニットの縦軸で構成される平面をリソース割り当て平面であると定義する。前述したように、プロセッシングユニットは、CPUリソース(コア)またはGPUリソース(プロセッシング要素)を含むことができる。そして、前記リソース割り当て平面は、縦軸のプロセッシングユニットが時間によってどのように使用されなければならないかを意味する。
この場合、リソース割り当て平面にタスクブロックを配置すれば、プロセッシング要素の使用個数、タスクの個数、予想演算時間、依存性による勾配(Slope)によってO(n3)の複雑度を有するようになる。
図6の過程を通じて生成されたタスクブロックは、リソース割り当て平面に配置される。この場合、タスクブロックをリソース割り当て平面に配置するという意味は、演算実行のためにタスクブロックを最初配置する場合(図7の〈1〉)、新規タスクブロックを追加的に配置する場合(図7の〈2〉)、以前の演算時間予測が外れてタスクブロックを再配置しなければならない場合(図7の〈3〉)をすべて含むことができる。動的リソース割り当てブロック450がタスクブロックをリソース割り当て平面に配置する具体的な過程は、図8及び図9を参照して具体的に記述する。
図8は、動的リソース割り当てブロック450がタスクブロックをリソース割り当て平面に配置する手順を示す流れ図である。
一方、図9は、図8の各段階に対応してタスクブロックがリソース割り当て平面で移動する過程を示す流れ図である。
まず、図8で、動的リソース割り当てブロック450は、S810段階で、配置するタスクブロックを縦軸の最上位にあるプロセッシング要素(PE0と仮定)に対して衝突が発生しない位置まで挿入させる。すなわち、タスクブロックを時間軸基準に、以前に配置されたタスクブロックと衝突が発生する直前の最も小さい値の時間を有する位置まで移動させる。前記段階は、図9の”Step 1”に対応する。この場合、前記タスクブロックは、現在位置に対応する座標値(時間、プロセッシング要素番号)を有することができ、これは、以後で記述されるすべての位置でも同一に適用されることができる。
そして、動的リソース割り当てブロック450は、S820段階で、前記タスクブロックを縦軸の下方向に、すなわちプロセッシング要素の番号が増加するように移動させる。前記段階は、図9の”Step2”に対応する。図9の”Step 2”を参照すれば、タスクブロックが縦軸の下方向に移動すれば、以前に配置されたタスクブロックと衝突するようになり、動的リソース割り当てブロック450は、前記タスクブロックがこれ以上衝突を起こさない位置まで前記タスクブロックを移動させる。
そして、動的リソース割り当てブロック450は、S830段階で、前記タスクブロックをさらに時間軸基準に、以前に配置されたタスクブロックと衝突が発生する直前の最も小さい値の時間を有する位置まで移動させる。前記段階は、図9の”Step 3”に対応する。
さらに、動的リソース割り当てブロック450は、S840段階で、前記タスクブロックを縦軸の下方向に、すなわちプロセッシング要素の番号が増加するように移動させる。前記段階は、図9の”Step4”に対応する。
そして、動的リソース割り当てブロック450は、S850段階で、縦軸のすべてのプロセッシング要素に対して前記過程を行ったか否かを判断する。もし、すべてのプロセッシング要素に対して前記過程を行ったものではなければ、動的リソース割り当てブロック450は、S830段階に戻って、以下の過程を繰り返して行う。図9を例示すれば、”Step 4”では、まだすべてのプロセッシング要素に対して前記過程をすべて行ったものではないので、”Step 5”過程及び”Step 6”過程をさらに行う。
もし、すべてのプロセッシング要素に対して前記過程を行った場合、動的リソース割り当てブロック450は、各段階で記録された座標値のうち、最も小さい時間値(横軸で最も左側に移動した場合)を有する座標値に対応する位置を当該タスクブロックを配置する位置として決定する。
動的リソース割り当てブロック450は、前記の過程を通じてタスクブロックをリソース割り当て平面上に配置し、このような過程を通じて、CPUとGPUリソースを同時に効率的に使用することができ、システムの全体的な効率を向上させることができる。
図10は、図4に示される動的リソース割り当てブロック450の内部構造を示す図である。図10に示されたように、本発明の動的リソース割り当てブロック450は、コントロールユニット1010とプロセッシングバンク1020を含むことができる。
コントロールユニット1010は、タスクブロックを形成し、リソース割り当て平面に配置する一連の過程(図6〜図9の過程)を実行及び制御する。そして、コントロールユニット1010は、リソース割り当てが完了すれば、各タスクブロックのリソース割り当て情報を有するようになり、CPUまたはGPUのようなプロセッシングユニットに演算実行を指示する。前記リソース割り当て情報は、図10の右上端に示されたように、当該タスクブロックが使用するプロセッシング要素に関する情報(’PE Start’、’PE Count’)、プロセッシング要素を使う時間情報(’Time Start’、’Time Count’)、依存性によって発生した勾配情報(’Slope’)を含み、各フィールドに対するレジスタに記録される。
また、前記コントロールユニット1010は、図10の右下端のような構造を有するプロセッシングバンク1020を利用してリソースを配置する。そして、コントロールユニット1010は、前記プロセッシングバンク1020を制御するためにタスク選択信号Iselとレジスタユニット選択信号Cselを出力する。前記タスク選択信号Iselは、現在時点でリソース配置するタスクブロックを識別するための信号であり、前記レジスタユニット選択信号Cselは、同一の時間でタスクブロックをリソース割り当て平面の縦軸に移動させるための信号である。
プロセッシングバンク1020の具体的な構造は、図10の右下端に示された通りであり、時間の横軸及びプロセッシング要素の縦軸で構成される。そして、時間とプロセッシング要素が交差する位置には、レジスタが配置される。
図10の右上端にあるリソース割り当て情報は、図10の右下端にある点線のようにマッピングされる。例示して説明すれば、リソース割り当て情報1030Aは、タスクブロック1030Bに対応する。すなわち、タスクブロック1030Bは、PE0から3個のリソース要素を使用し(’PE Start=0’、’PE Count=3’)、作業実行時間は、時間2であり(’Time Start=2’)、勾配は、2の値(’Slope=2’)を有することを確認することができる。
一方、プロセッシングバンク1020は、実際演算を担当するブロックであり、多くの演算を迅速に実行しなければならないので、主要部分が組合論理回路(Combinational Logic)で構成されることができる。これに関する説明は、下記の図11及び図12を参照して説明する。
図11は、プロセッシングバンク1020を構成するレジスタユニットの内部構造を示す図である。
図11に示されたように、レジスタユニットは、タスクブロックIDを指示する少なくとも1つのDレジスタ1110(図11では、5個のDレジスタが例示)と、前記タスクブロックIDの’OR’演算を行う’OR’ゲート1120を含む。前記’OR’ゲート1120は、出力信号Uを出力するが、前記出力信号が’1’なら、当該レジスタユニットには、1つのタスクブロックが位置していることを指示し、’0’なら、当該レジスタユニットには、タスクブロックが位置しないことを指示する。
コントロールユニット1010から伝達されるタスク選択信号Iselは、プロセッシングバンク1020のマルチフレクサー(MultiplexerまたはMux)1130に入力され、特定タスクブロックIを選択する。前述した図11のレジスタユニットが結合して、図10のプロセッシングバンク1020を構成するようになるが、レジスタユニットの具体的な結合構造を図12に示す。
図12は、プロセッシングバンク1020を構成するレジスタユニットの結合構造を示す図である。図12で前方に配置されたレジスタ1210は、後方に配置されたレジスタ1220より時間的に先立って配置されることを意味する。
図9及び図12を同時に参照すれば、図12で前方に配置されたレジスタ1210は、図9で既にリソースが割り当てられたタスクブロックを構成するようになる。また、図12で後方に配置されたレジスタ1220は、現在配置されるタスクブロックが同一の時間軸上で縦方向の下方に移動するようになる位置を意味する。
図12で後方に配置されたレジスタ1220に入力されたタスク選択信号によって特定タスクブロックIが選択される。そして、前記レジスタ1220は、レジスタユニット選択信号入力によって前方に配置されたすべてのレジスタ1210に対して’AND’演算を実行(図9の’Step2’、’Step4’、’Step6’)するようになり、既に割り当てられたタスクブロックと、現在割り当てるタスクブロックが衝突する場合’1’を出力する。前方に配置されたレジスタ1220のうちいずれか1つのレジスタに対して衝突が発生すれば、最終出力は、’1’を出力(Output=1)するようになり、当該タスクブロックは、そのまま待機する。一方、最終出力が’0’を出力(Output=0)する場合、これは、タスクブロックが時間軸上で1タイム(Time)先に前進することができることを意味する。
前述した図11及び図12の内容を通じてタスクブロックに対してリソースを割り当てる過程を要約すれば、次の通りである。コントロールユニット1010からプロセッシングバンク1020にタスク選択信号とレジスタユニット選択信号が入力される。この場合、各タスクブロックは、固有のIDを有しており、図11に示されたように、前記タスク選択信号は、特定タスクブロックIDを選択する。レジスタユニット選択信号は、現在時間Tnと以前時間Tn+1各々に位置するレジスタを比較するのに使用される。したがって、タスク選択信号とレジスタユニット選択信号を調整し、本発明の動的リソース割り当て過程が行われる。結果的に図11及び図12の組合論理回路を通じて”N(以前時間のレジスタユニット個数)XN(現在時間のレジスタユニット個数)”の演算を迅速で且つ効率的に行うことができる。
すべてのタスク選択信号及びレジスタユニット選択信号に対して比較過程が行われ、最終出力が”0”なら現在時間Tn+1のタスクブロックが以前時間Tnに移動し、この場合、レジスタユニット選択信号が動作するレジスタユニットに移動する。
図13は、本発明の動的リソース割り当てブロック450がタスクブロックに対するリソースを割り当てる全体的な動作手順を示す流れ図である。
まず、動的リソース割り当てブロック450は、S1310段階及びS1320段階で、CPU、GPUを構成するプロセッシング要素から各プロセッシング要素の活性化状態情報を受信する。現在タスクを処理していれば、活性化状態であり、テストを処理していなければ、遊休状態であると定義することができる。
それでは、動的リソース割り当てブロック450は、S1330段階で、プロセッシング要素によって処理されなければならない任意のタスクをタスクブロックに変換し、前記タスクブロックを遊休状態のプロセッシング要素に割り当てる。そして、動的リソース割り当てブロック450は、S1340段階及びS1350段階で、リソース割り当て情報を各プロセッシング要素に伝達する。それでは、CPUまたはGPUの各プロセッシングユニットは、S1360段階及びS1370段階で、リソース割り当て情報によって当該時間に当該タスクを処理し、これを動的リソース割り当て情報に報告する。
それでは、動的リソース割り当てブロック450は、S1380段階で、各プロセッシング要素のタスク処理結果を受信する。そして、動的リソース割り当てブロック450は、S1390段階で、すべてのタスクに対する処理を完了したか否かを判断する。すべてのタスクに対する処理が完了した場合なら、当該動作を終了し、完了しない場合なら、最初の開始段階に戻って、以下の段階を繰り返して行う。
図14は、図13のS1330段階をより具体的に示す図である。
前述したように、本発明の実施例による動的リソース割り当てブロック450のリソース割り当て方法は、演算実行のためにタスクブロックを最初配置する場合(図7の〈1〉)、新規タスクブロックを追加的に配置する場合(図7の〈2〉)、以前の演算時間予測が外れてタスクブロックを再配置しなければならない場合(図7の〈3〉)にすべて適用されることができる。
S1410段階で、動的リソース割り当てが新規タスク追加を追加するものであるか否かが判断される。新規テストが追加される場合には、S1430段階に進行し、リソース割り当ては、現在時間以後からリソース割り当て作業プロセッシングを進行する。新規タスクを追加するものではない場合、S1420段階に進行し、予測された時間情報にエラーがあるか否かが判断される。予測された時間情報にエラーがある場合、S1430段階に進行し、現在時間以後からリソース割り当て作業プロセッシングを進行する。予測された時間情報にエラーがない場合、図14の実行は終了する。
図15は、本発明のプロセッシングバンク1020が図14の過程を行う手順を具体的に示す流れ図である。
すなわち、図15は、新規タスクブロックが追加されるか、または従来作業実行時間に対する予測時間が外れてさらにリソースを割り当てる場合、プロセッシングバンク1020の動作手順を示す流れ図である。
まず、プロセッシングバンク1020は、S1505段階で、新規配置すべきタスクブロックIDに対して配置が完了したか否かを判断する。もしすべての配置が完了した場合なら、プロセッシングバンク1020は、S1510段階に進行し、演算結果をコントロールユニット1010に伝達し、S1515段階で、リソース割り当て過程を終了する。
一方、割り当てなければならないタスクブロックが残っている場合、プロセッシングバンク1020は、S1520段階に進行し、次のタスクブロックIDに対するリソース割り当て(配置)過程を行う。これは、プロセッシングバンク1020がコントロールユニット1010からタスク選択信号を受信し、次のタスクブロックに対するリソース配置演算を開始する。
このためにプロセッシングバンク1020は、コントロールユニット1010から受信されるレジスタユニット選択信号を利用してリソース配置演算を行う。すなわち、レジスタユニット選択信号の値が{1、2、3、4、・・・}のように増加すれば、リソース配置するタスクブロックがリソースブロック平面で同一時間上で、縦軸を基準に下方に移動する効果を示すようになる。
プロセッシングバンク1020は、S1525段階で、すべての時間に対して、レジスタユニット選択信号による演算を行ったかを判断する。もし、すべての演算が行われたものではない場合、S1530段階で、各レジスタユニット選択信号値に対してTnとTn+1演算を行う。すなわち、当該タスクブロックが以前時間に前進配置されることができるかを判断する。S1535段階で、プロセッシングバンク1020が前記演算結果が1であると判断した場合には、衝突が発生したことを意味し、この場合には、S1540段階に進行し、レジスタユニット選択信号の値を増加させる。すなわち、タスクブロックをリソース割り当て平面で縦軸を基準に下方に移動させる。これは、図9の”Step 2”に該当する。
一方、S1535段階で、演算結果が0であると判断した場合には、衝突が発生しなかったことを意味し、この場合、プロセッシングバンク1020は、S1545段階に進行し、タスクブロックをTn+1からTnに移動させる。これは、リソース割り当て平面で横軸を基準に左側に移動させる過程であり、図9の”Step 3”に該当する。
そして、プロセッシングバンク1020は、前記過程を繰り返した後、S1555段階で最も左側に移動したタスクブロックに対する座標値である(時間、プロセッシング要素)または(Tn、レジスタユニット選択信号値)を格納する。
すべてのレジスタユニット選択信号値に対して図15の演算を行った場合には、図9の”Step 6”のような状態になり、この場合、プロセッシングバンク1020は、S1550段階で、S1555段階を通じて格納されたタスクブロックに対する座標値のうち、最も小さい時間を有する位置を当該タスクブロックのリソース割り当て位置に決定する。
このような本発明によれば、システムが備えるCPUとGPUリソースを同時に効率的に使用することができ、システムの全体的な効率を向上させることができる。
前述した方法を行うための命令語またはコードを含むソフトウェア構成要素(component)が1つ以上のメモリ(例えば、ROMまたは除去可能なメモリ)に格納されることができる。
本明細書と図面に開示された本発明の実施例は、本発明の技術内容を容易に説明し、本発明の理解を助けるために特定例を提示したものに過ぎず、本発明の範囲を限定しようとするものではない。ここに開示された実施例以外にも、本発明の技術的思想に基づく他の変形例が実施可能であることは、本発明の属する技術分野における通常の知識を有する者に自明であろう。
410 CPU
420 GPU
430 CGRA
440 メモリ
450 動的リソース割り当てブロック

Claims (19)

  1. 少なくとも1つのプロセッシングユニットを含むシステムの動的リソース割り当て方法において、
    リソースが割り当られるタスクに関する情報を受信し、前記タスクを少なくとも1つのタスク並列ユニットに分割する段階と;
    前記タスク並列ユニット各々の処理予想時間及び前記タスク並列ユニットの相互間の依存性によって前記タスクを任意の多角形形状を有するタスクブロックに設定する段階と;
    前記タスクブロックを時間による横軸と少なくとも1つのプロセッシングユニットによる縦軸よりなるリソース割り当て平面に配置し、リソース割り当てる段階と;
    リソース割り当て情報によって前記タスクを行う段階と;を含み、
    前記タスク並列ユニットは、複数個の前記プロセッシングユニット(Processing Unit)を利用して並列化処理するために、前記タスクが、前記プロセッシングユニットの数に対応する1つ以上のユニット(Unit)に分割されたものであり、
    前記タスクブロックの形状は、依存性によって配列された複数個のタスク並列ユニットを含むように設定される
    ことを特徴とする動的リソース割り当て方法。
  2. 前記タスクブロック設定段階は、
    前記タスクが少なくとも1つのタスク並列ユニットに分割可能な個数に関する情報を受信する段階と;
    前記分割されたタスク並列ユニットの処理予想時間情報を受信する段階と;
    前記タスク並列ユニット相互間の依存性有無を判断し、前記タスク並列ユニットの処理手順を配列する段階と;
    前記処理予想時間及び依存性によって配列されたタスク並列ユニットが占める領域を包括する形状を有するタスクブロックを設定する段階と;をさらに含む
    ことを特徴とする請求項1に記載の動的リソース割り当て方法。
  3. 前記タスクブロック設定段階は、
    前記タスク並列ユニット相互間の依存性がない場合、前記多角形を矩形または正方形に設定することを特徴とする請求項2に記載の動的リソース割り当て方法。
  4. 前記タスクブロック設定段階は、
    前記タスク並列ユニット相互間の依存性がある場合、前記多角形を平行四辺形に設定する
    ことを特徴とする請求項2に記載の動的リソース割り当て方法。
  5. 前記リソース割り当て段階は、
    前記タスクブロックがあらかじめリソース割り当てられた他のタスクブロックと衝突せず、前記リソース割り当て平面で最も小さい時間値を有する位置でリソースが割り当られる
    ことを特徴とする請求項1に記載の動的リソース割り当て方法。
  6. 前記リソース割り当て段階は、
    前記リソース割り当て平面で、リソース割り当てるタスクブロックを縦軸の最も上位に位置するプロセッシングユニットに対してあらかじめリソース割り当てられた他のタスクブロックとの衝突発生以前位置に横軸上で移動させる横軸移動段階と;
    前記タスクブロックをあらかじめリソース割り当てられた他のタスクブロックと衝突しないプロセッシングユニットまで縦軸上で移動させる縦軸移動段階と;
    前記システムを構成するすべてのプロセッシングユニットに対して前記横軸移動段階と縦軸移動段階を実行したかを判断し、未実行時に前記横軸移動段階と縦軸移動段階を繰り返して実行する段階と;
    すべてのプロセッシングユニットに対して実行時に、最も小さいサイズの時間値を有する位置に前記タスクブロックをリソース割り当てる段階と;をさらに含む
    ことを特徴とする請求項5に記載の動的リソース割り当て方法。
  7. 前記タスク実行段階の後に、
    新規タスクブロックに対するリソース割り当て必要時に、前記横軸移動段階と前記縦軸移動段階を繰り返して前記新規タスクブロックを前記リソース割り当て平面でリソース割り当てる段階をさらに含む
    ことを特徴とする請求項6に記載の動的リソース割り当て方法。
  8. 前記タスク実行段階の後に、
    以前にリソース割り当てられた任意のタスクブロックの処理が前記処理予想時間以前に完了した場合、残りのタスクブロックに対して前記横軸移動段階と前記縦軸移動段階を繰り返して新規タスクブロックを前記リソース割り当て平面でリソース割り当てる段階をさらに含む
    ことを特徴とする請求項6に記載の動的リソース割り当て方法。
  9. 前記プロセッシングユニットは、CPU(Central Processing Unit)を構成する少なくとも1つ以上のコア(Core)またはGPU(Graphic Processing Unit)を構成する少なくとも1つ以上のプロセッシング要素(Processing Element)のうち少なくとも1つ以上を含む
    ことを特徴とする請求項1に記載の動的リソース割り当て方法。
  10. 少なくとも1つのプロセッシングユニットを含むシステムでリソースを動的に割り当てる装置において、
    リソースが割り当られるタスクに関する情報を受信し、前記タスクを少なくとも1つのタスク並列ユニットに分割し、前記タスク並列ユニット各々の処理予想時間及び前記タスク並列ユニット相互間の依存性によって前記タスクを任意の多角形形状を有するタスクブロックに設定し、前記タスクブロックを時間による横軸と少なくとも1つのプロセッシングユニットによる縦軸よりなるリソース割り当て平面に配置し、リソース割り当てる動的リソース割り当てブロックと;
    リソース割り当て情報によって前記タスクを処理する少なくとも1つのプロセッシングユニットと;を含み、
    前記タスク並列ユニットは、複数個の前記プロセッシングユニット(Processing Unit)を利用して並列化処理するために、前記タスクが、前記プロセッシングユニットの数に対応する1つ以上のユニット(Unit)に分割されたものであり、
    前記タスクブロックの形状は、依存性によって配列された複数個のタスク並列ユニットを含むように設定される
    ことを特徴とする動的リソース割り当て装置。
  11. 前記動的リソース割り当てブロックは、
    前記タスクが少なくとも1つのタスク並列ユニットに分割可能な個数に関する情報と前記分割されたタスク並列ユニットの処理予想時間情報を受信し、前記タスク並列ユニット相互間の依存性有無を判断し、前記タスク並列ユニットの処理手順を配列し、前記処理予想時間及び依存性によって配列されたタスク並列ユニットが占める領域を包括する形状を有するタスクブロックを設定する
    ことを特徴とする請求項10に記載の動的リソース割り当て装置。
  12. 前記動的リソース割り当てブロックは、
    前記タスク並列ユニット相互間の依存性がない場合、前記多角形を矩形または正方形に設定することを特徴とする請求項11に記載の動的リソース割り当て装置。
  13. 前記動的リソース割り当てブロックは、
    前記タスク並列ユニット相互間の依存性がある場合、前記多角形を平行四辺形に設定する
    ことを特徴とする請求項11に記載の動的リソース割り当て装置。
  14. 前記動的リソース割り当てブロックは、
    前記タスクブロックがあらかじめリソース割り当てられた他のタスクブロックと衝突せず、前記リソース割り当て平面で最も小さい時間値を有する位置でリソース割り当てる
    ことを特徴とする請求項10に記載の動的リソース割り当て装置。
  15. 前記動的リソース割り当てブロックは、
    前記リソース割り当て平面でリソース割り当てるタスクブロックを縦軸の最も上位に位置するプロセッシングユニットに対してあらかじめリソース割り当てられた他のタスクブロックとの衝突発生以前位置に横軸上で移動させ、前記タスクブロックをあらかじめリソース割り当てられた他のタスクブロックと衝突しないプロセッシングユニットまで縦軸上で移動させ、前記システムを構成するすべてのプロセッシングユニットに対して前記横軸移動段階と縦軸移動段階を実行したかを判断し、未実行時に前記横軸移動段階と縦軸移動段階を繰り返して実行し、すべてのプロセッシングユニットに対して実行時に最も小さいサイズの時間値を有する位置に前記タスクブロックをリソース割り当てる
    ことを特徴とする請求項14に記載の動的リソース割り当て装置。
  16. 前記動的リソース割り当てブロックは、
    前記タスク実行後に、新規タスクブロックに対するリソース割り当て必要時に、前記横軸移動及び前記縦軸移動を繰り返して前記新規タスクブロックを前記リソース割り当て平面でリソース割り当てる
    ことを特徴とする請求項15に記載の動的リソース割り当て装置。
  17. 前記動的リソース割り当てブロックは、
    前記タスク実行後に、以前にリソース割り当てられた任意のタスクブロックの処理が前記処理予想時間より前に完了した場合、残りのタスクブロックに対して前記横軸移動と前記縦軸移動を繰り返して新規タスクブロックを前記リソース割り当て平面でリソース割り当てる
    ことを特徴とする請求項15に記載の動的リソース割り当て装置。
  18. 前記プロセッシングユニットは、CPU(Central Processing Unit)を構成する少なくとも1つ以上のコア(Core)またはGPU(Graphic Processing Unit)を構成する少なくとも1つ以上のプロセッシング要素(Processing Element)のうち少なくとも1つ以上を含む
    ことを特徴とする請求項10に記載の動的リソース割り当て装置。
  19. 少なくとも1つのプロセッシングユニットを備えるシステムに対する動的リソース割り当てのための製造物品において、
    前記製造物品は、
    リソースが割り当られるタスクに関する情報を受信し、前記タスクを少なくとも1つのタスク並列ユニットに分割する段階と;
    前記タスク並列ユニット各々の処理予想時間及び前記タスク並列ユニットの相互間の依存性によって前記タスクを任意の多角形形状を有するタスクブロックに設定する段階と;
    前記タスクブロックを時間による横軸と少なくとも1つのプロセッシングユニットによる縦軸よりなるリソース割り当て平面に配置し、リソース割り当てる段階と;
    リソース割り当て情報によって前記タスクを行う段階と;
    を実行するように1つ以上のプログラムを含む機械読み取り可能な媒体を含み、
    前記タスク並列ユニットは、複数個の前記プロセッシングユニット(Processing Unit)を利用して並列化処理するために、前記タスクが、前記プロセッシングユニットの数に対応する1つ以上のユニット(Unit)に分割されたものであり、
    前記タスクブロックの形状は、依存性によって配列された複数個のタスク並列ユニットを含むように設定される
    ことを特徴とする製造物品。
JP2013530094A 2010-09-27 2011-09-26 プロセッシングユニットの動的リソース割り当てのための方法及び装置 Expired - Fee Related JP5985484B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR10-2010-0093330 2010-09-27
KR1020100093330A KR101710910B1 (ko) 2010-09-27 2010-09-27 프로세싱 유닛의 동적 자원 할당을 위한 방법 및 장치
PCT/KR2011/007045 WO2012044015A2 (en) 2010-09-27 2011-09-26 Method and apparatus for dynamic resource allocation of processing units

Publications (2)

Publication Number Publication Date
JP2013537991A JP2013537991A (ja) 2013-10-07
JP5985484B2 true JP5985484B2 (ja) 2016-09-06

Family

ID=45872039

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013530094A Expired - Fee Related JP5985484B2 (ja) 2010-09-27 2011-09-26 プロセッシングユニットの動的リソース割り当てのための方法及び装置

Country Status (6)

Country Link
US (1) US9311157B2 (ja)
EP (1) EP2622474A4 (ja)
JP (1) JP5985484B2 (ja)
KR (1) KR101710910B1 (ja)
CN (1) CN103124957B (ja)
WO (1) WO2012044015A2 (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100156888A1 (en) * 2008-12-23 2010-06-24 Intel Corporation Adaptive mapping for heterogeneous processing systems
CN103019651B (zh) * 2012-08-02 2016-06-29 青岛海信传媒网络技术有限公司 复杂任务的并行处理方法和装置
JP6183374B2 (ja) * 2012-10-31 2017-08-23 日本電気株式会社 データ処理システム、データ処理方法およびプログラム
CN103970604B (zh) 2013-01-31 2017-05-03 国际商业机器公司 基于MapReduce架构实现图处理的方法和装置
US8977532B2 (en) * 2013-02-22 2015-03-10 Microsoft Technology Licensing, Llc Estimating time remaining for an operation
KR101569093B1 (ko) 2013-08-13 2015-11-13 삼성에스디에스 주식회사 분산 시스템에서 데이터를 처리하는 방법
US9727942B2 (en) * 2013-10-29 2017-08-08 International Business Machines Corporation Selective utilization of graphics processing unit (GPU) based acceleration in database management
KR101603711B1 (ko) * 2014-04-25 2016-03-15 전자부품연구원 그래픽 처리 장치의 동작을 위한 작업 할당 시스템 및 방법
WO2016039774A1 (en) * 2014-09-12 2016-03-17 Intel Corporation Facilitating dynamic parallel scheduling of command packets at graphics processing units on computing devices
US10157481B2 (en) 2014-09-23 2018-12-18 Samsung Electronics Co., Ltd. Apparatus for processing medical image and method of processing medical image thereof
WO2016047989A1 (en) * 2014-09-23 2016-03-31 Samsung Electronics Co., Ltd. Apparatus for processing medical image and method of processing medical image thereof
KR20160070512A (ko) 2014-12-10 2016-06-20 삼성전자주식회사 반도체 장치 및 그 동작 방법
US10445850B2 (en) * 2015-08-26 2019-10-15 Intel Corporation Technologies for offloading network packet processing to a GPU
CN105183559B (zh) * 2015-08-27 2019-05-24 浪潮(北京)电子信息产业有限公司 一种动态分配配额的方法和装置
US10467251B2 (en) * 2015-10-23 2019-11-05 Oracle International Corporation System and method for automatic dependency analysis for use with a multidimensional database
US10489206B2 (en) * 2016-12-30 2019-11-26 Texas Instruments Incorporated Scheduling of concurrent block based data processing tasks on a hardware thread scheduler
KR101978728B1 (ko) * 2017-09-12 2019-08-28 서강대학교산학협력단 스마트 기기를 이용한 딥 러닝 기반 의료용 초음파 영상 분류 방법 및 장치
KR101960609B1 (ko) * 2017-09-29 2019-07-15 건국대학교 산학협력단 Task Group 단위의 GPU 자원 관리 방법 및 장치
US20190332420A1 (en) * 2018-04-27 2019-10-31 Advanced Micro Devices, Inc. Feedback guided split workgroup dispatch for gpus
EP3825844B1 (en) * 2018-10-19 2024-06-05 Nippon Telegraph And Telephone Corporation Data processing system, central processing unit, and data processing method
US11809908B2 (en) * 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
TWI756974B (zh) 2020-12-09 2022-03-01 財團法人工業技術研究院 機器學習系統及其資源配置方法
US20230047481A1 (en) * 2021-08-11 2023-02-16 Apple Inc. Affinity-based Graphics Scheduling
US12086644B2 (en) 2021-08-11 2024-09-10 Apple Inc. Logical slot to hardware slot mapping for graphics processors
CN114911612B (zh) * 2022-04-29 2024-06-11 中国航空无线电电子研究所 一种面向cpu-gpu异构资源的任务调度方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06290159A (ja) * 1993-03-30 1994-10-18 Agency Of Ind Science & Technol 並列計算機のプロセス割当方法
US6345287B1 (en) * 1997-11-26 2002-02-05 International Business Machines Corporation Gang scheduling for resource allocation in a cluster computing environment
US7661107B1 (en) * 2000-01-18 2010-02-09 Advanced Micro Devices, Inc. Method and apparatus for dynamic allocation of processing resources
JP2003256221A (ja) * 2002-02-28 2003-09-10 Fujitsu Ltd 並列プロセス実行方法、及びマルチプロセッサ型コンピュータ
US20040123298A1 (en) * 2002-12-20 2004-06-24 Shebanow Michael C. Distributed resource allocation mechanism
US7688746B2 (en) * 2003-12-29 2010-03-30 Intel Corporation Method and system for dynamic resource allocation
FR2873830B1 (fr) * 2004-07-30 2008-02-22 Commissariat Energie Atomique Procede d'ordonnancement de traitement de taches et dispositif pour mettre en oeuvre le procede
CN101432760A (zh) * 2004-08-31 2009-05-13 硅奥普迪思公司 管理位平面资源的方法和装置
GB0513045D0 (en) * 2005-06-27 2005-08-03 Vidus Ltd Resource scheduling method and system
US7659899B2 (en) * 2005-08-08 2010-02-09 Via Technologies, Inc. System and method to manage data processing stages of a logical graphics pipeline
US7659898B2 (en) * 2005-08-08 2010-02-09 Via Technologies, Inc. Multi-execution resource graphics processor
JP4756553B2 (ja) * 2006-12-12 2011-08-24 株式会社ソニー・コンピュータエンタテインメント 分散処理方法、オペレーティングシステムおよびマルチプロセッサシステム
US8250550B2 (en) * 2007-02-14 2012-08-21 The Mathworks, Inc. Parallel processing of distributed arrays and optimum data distribution
JP5733860B2 (ja) * 2008-07-10 2015-06-10 ロケティック テクノロジーズ リミテッド 依存問題の効率的並列計算
JP4629768B2 (ja) * 2008-12-03 2011-02-09 インターナショナル・ビジネス・マシーンズ・コーポレーション 並列化処理方法、システム、及びプログラム
WO2010067377A2 (en) * 2008-12-08 2010-06-17 Kpit Cummins Infosystems Ltd. Method for reorganizing tasks for optimization of resources
CN101441580B (zh) * 2008-12-09 2012-01-11 华北电网有限公司 分布式并行计算平台系统及其计算任务分配方法
FR2942556B1 (fr) 2009-02-24 2011-03-25 Commissariat Energie Atomique Unite d'allocation et de controle
JP5293289B2 (ja) * 2009-03-11 2013-09-18 富士通株式会社 マルチコアプロセッサ及びその制御方法
JP4621786B2 (ja) * 2009-04-28 2011-01-26 株式会社東芝 情報処理装置、並列処理最適化方法およびプログラム
US9690625B2 (en) * 2009-06-16 2017-06-27 Oracle America, Inc. System and method for out-of-order resource allocation and deallocation in a threaded machine

Also Published As

Publication number Publication date
EP2622474A4 (en) 2014-04-16
WO2012044015A2 (en) 2012-04-05
US20120079498A1 (en) 2012-03-29
EP2622474A2 (en) 2013-08-07
KR101710910B1 (ko) 2017-03-13
JP2013537991A (ja) 2013-10-07
WO2012044015A3 (en) 2012-06-21
KR20120031759A (ko) 2012-04-04
CN103124957A (zh) 2013-05-29
CN103124957B (zh) 2017-09-08
US9311157B2 (en) 2016-04-12

Similar Documents

Publication Publication Date Title
JP5985484B2 (ja) プロセッシングユニットの動的リソース割り当てのための方法及び装置
Blelloch et al. Scheduling irregular parallel computations on hierarchical caches
JP6040937B2 (ja) 並列処理装置、並列処理方法、最適化装置、最適化方法、および、コンピュータ・プログラム
WO2016155335A1 (zh) 异构多核可重构计算平台上任务调度的方法和装置
KR20210057184A (ko) 이종 cpu/gpu 시스템에서 데이터 흐름 신호 처리 애플리케이션 가속화
US12020067B2 (en) Scheduling tasks using targeted pipelines
Pienaar et al. MDR: performance model driven runtime for heterogeneous parallel platforms
JP2010079622A (ja) マルチコアプロセッサシステム、および、そのタスク制御方法
Javaid et al. Low-power adaptive pipelined mpsocs for multimedia: An h. 264 video encoder case study
US20210279103A1 (en) Resource allocation in a parallel processing system
US20240160472A1 (en) Scheduling tasks using work fullness counter
Zhou et al. Task mapping in heterogeneous embedded systems for fast completion time
KR20160037737A (ko) 스케쥴러 컴퓨팅 장치, 그것을 포함하는 분산 컴퓨팅 시스템의 데이터 노드 및 그것의 방법
Buono et al. A lightweight run-time support for fast dense linear algebra on multi-core
JP6823251B2 (ja) 情報処理装置、情報処理方法及びプログラム
Vo et al. HyperFlow: A Heterogeneous Dataflow Architecture.
JP5355152B2 (ja) 動的再構成装置
Jatala et al. Improving GPU performance through resource sharing
KR102365306B1 (ko) 데이터 처리장치 및 벡터 스캔 연산의 수행방법
JP5980035B2 (ja) 情報処理装置およびその制御方法
JP2006099579A (ja) 情報処理装置及び情報処理方法
Sabry et al. Thermal-aware compilation for system-on-chip processing architectures
Yang et al. A micro threading based concurrency model for parallel computing
Chow et al. Energy efficient task graph execution using compute unit masking in GPUs
Mururu et al. PinIt: Influencing OS Scheduling via Compiler-Induced Affinities

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140926

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20141226

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151021

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151102

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160202

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160704

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160803

R150 Certificate of patent or registration of utility model

Ref document number: 5985484

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees