JP2022509170A - プロセッサにおける余裕認識(laxity-aware)型動的優先度変更 - Google Patents

プロセッサにおける余裕認識(laxity-aware)型動的優先度変更 Download PDF

Info

Publication number
JP2022509170A
JP2022509170A JP2021529283A JP2021529283A JP2022509170A JP 2022509170 A JP2022509170 A JP 2022509170A JP 2021529283 A JP2021529283 A JP 2021529283A JP 2021529283 A JP2021529283 A JP 2021529283A JP 2022509170 A JP2022509170 A JP 2022509170A
Authority
JP
Japan
Prior art keywords
task
margin
tasks
job
priority
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.)
Granted
Application number
JP2021529283A
Other languages
English (en)
Other versions
JP7461947B2 (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2022509170A publication Critical patent/JP2022509170A/ja
Application granted granted Critical
Publication of JP7461947B2 publication Critical patent/JP7461947B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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
    • 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
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration

Landscapes

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

Abstract

Figure 2022509170000001
処理システム(100)は、タスクキュー(232)と、タスクキューに接続された余裕認識タスクスケジューラ(234)と、余裕認識タスクスケジューラに接続されたワークグループディスパッチャ(238)と、を含む。ワークグループディスパッチャは、タスクキューに記憶された複数のタスクに関連する余裕値の余裕評価に基づいて、複数のタスクをスケジューリングする。余裕評価は、複数のタスクの各タスクの優先度を決定することを含む。余裕値は、到着時間、タスク期間、タスク期限及びワークグループの数を含む余裕情報を使用して決定される。
【選択図】図2

Description

畳み込みニューラルネットワーク(CNN)及びリカレントニューラルネットワーク(RNN)等の多くの重要な機械学習コンピューティングアプリケーションには、タスクをスケジューリングする場合に考慮しなければならないリアルタイム期限(real-time deadlines)がある。タスクは、例えばCNN及びRNNアプリケーションで通常使用される特化型データ依存性カーネル(narrow data-dependent kernels)として定義され得る。現在の機械学習システムは、多くの場合、プログラマにより静的に設定されるか、実行時にタスクがキューに入れられた場合に設定されるタスク優先度を使用して、同時に投入されたタスクをどのようにスケジューリングするかをハードウェアに通知する。その結果、優先度レベルは、期限が確実に守られるように、控えめに(conservatively)設定される。しかしながら、優先度レベルは、通常、タスクをいつ完了しなければならないかに関する情報を提供せずに、タスクの相対的な重要性のみを提供するので、優先度レベルのみを考慮するのは不十分である。さらに、個々のタスクに割り当てられた優先度レベルでは、一連の依存タスクをまとめて完了する必要がある場合のグローバルビュー(global view)をハードウェアに提供しない。
中央処理装置(CPU)及びグラフィックス処理装置(GPU)でリアルタイム期限を守るように展開されたタスクスケジューリングソリューションは、優先度の高いタスクを実行するために、優先度の低いタスクがプリエンプトされる。このプリエンプション技術は、マルチコアCPUでよく使用され、GPUではあまり使用されない。殆どのプリエンプションスキームは、オペレーティングシステムによって制御され、プリエンプションのオーバーヘッドによって全体的なスループットが低下することがよくある。プリエンプションのオーバーヘッドは、GPUのコンテキスト状態の量が多いため、GPUで特に問題になる。さらに、OSとアクセラレータとの間の通信のレイテンシは、即時変更を困難にする。
リアルタイム期限を守るように展開された別のタスクスケジューリングソリューションでは、複数のキューのタスクが同時に実行され、異なるキューのタスクに一意的な優先度が関連付けられる。例えば、一部のGPUは、タスクのリアルタイム制約に関する情報をスケジューラに伝達するのに役立つ4つの優先度レベル(グラフィックス、高、中、低)をサポートする。しかしながら、上位レベルのソフトウェアが提供する情報は静的であり、個々のタスクにのみ関連付けられているため、スケジューラは、優先度が現在のGPUの全体的な状況にどのように関係しているかを決定することができない。
他のソリューションでは、永続的なスレッド又はカーネルを低レベルのユーザランタイムとともに使用して、並行タスクを処理する。永続的カーネル技術は、現在のRNN推論アプリケーションで特に一般的になっている。タスクランタイムがよく理解され、使用可能なハードウェアリソースが一定に保たれている場合には、永続的カーネルが適切に動作するが、タスクランタイム及びハードウェアリソースが動的に変化する場合には、永続的カーネルが正常に動作しなくなる。よって、レイテンシを改善し、動的スケジューリングアプリケーションを利用する、改善されたタスクスケジューリング技術が望ましい。
本開示は、添付図面を参照することによってより良く理解することができ、その多くの特徴及び利点が当業者に明らかになる。異なる図面において同じ符号を使用する場合、類似又は同一の要素を示す。
いくつかの実施形態による、余裕認識(laxity-aware)タスクスケジューリングを実施する処理システムのブロック図である。 いくつかの実施形態による、余裕認識タスクスケジューリングを実施するグラフィックス処理装置のブロック図である。 いくつかの実施形態による、余裕認識タスクスケジューリングを実施する際に使用されるテーブル及びキューを備えた余裕認識タスクスケジューラのブロック図である。 いくつかの実施形態による、余裕認識タスクスケジューラの例示的な動作のブロック図である。 いくつかの実施形態による、余裕認識タスクスケジューラの例示的な動作のブロック図である。 いくつかの実施形態による、処理システムの構成要素の少なくとも一部を利用して、余裕認識タスクスケジューリングを実行するための方法を示すフロー図である。
図1~図6を参照すると、余裕認識タスクスケジューリングシステムは、時間を考慮してタスク及び/又はジョブに優先度を付け、例えば中央処理装置(CPU)又はメモリによってグラフィックス処理装置(GPU)に提供されるタスクについて計算された余裕時間(laxity)に基づいて、ジョブに関連するタスクの優先度を切り替える。余裕認識タスクスケジューリングシステムは、ジョブに関連する期限に基づいてタスクの優先度を動的に変更するようにタスクスケジューラを拡張することによって、スケジューリングの問題を軽減する。
他のタスクスケジューラに対する余裕認識タスクスケジューリングシステムの改善点及び利点には、GPUで実行される多数のリカレントニューラルネットワーク(RNN)推論ジョブを同時にスケジューリングすることを可能にする余裕認識タスクスケジューリングシステムの能力が含まれる。この場合のジョブという用語は、リアルタイム期限を守るために時間通りに完了する一連の依存タスク(GPUカーネル等)を指す。余裕認識スケジューリングシステムが重要なリアルタイム制約を管理する能力により、余裕認識スケジューリングシステムは、機械翻訳、音声認識、自動運転車のオブジェクト追跡、及び、音声翻訳で発生する多くの重要なスケジューリング問題を処理することが可能になる。単一のRNN推論ジョブは、通常、一連の特化型データ依存性カーネル(すなわち、タスク)を含み、適切なスケジューリングアプローチ無しにGPUの処理能力を十分に活用できない場合がある。しかしながら、余裕認識タスクスケジューリングシステムを使用することによって、スケジューリング効率を向上させ、リアルタイム期限を守るように、多くの独立したRNN推論ジョブを同時にスケジューリングすることが可能になる。
個々のRNNジョブに関連するタスクが別々のキューに入れられる同時RNN推論ジョブの実行に使用される他のスケジューリング技術としては、例えば、先入れ先出し(FIFO)ジョブスケジューラが挙げられる。FIFOジョブスケジューラは、常に、個々のジョブをFIFO方式で実行し、GPUリソースをジョブ間で静的に分割したり、複数のジョブをまとめてバッチ処理するように試みるので、応答時間が長くなり、スループットが低下し、スケジューリングシステムのリアルタイム保証が損なわれる可能性がある。余裕認識タスクシステムは、ジョブをまとめてバッチ処理し、例えば、個々のジョブのFIFOスケジューリングと比較して、平均応答時間を4.5倍向上させる。したがって、余裕認識スケジューリングシステムは、他のFIFOスケジューリング技術と比較して、GPUパフォーマンスを大幅に向上させる。
図1は、いくつかの実施形態による、余裕認識タスクスケジューリングを実施する処理システム100のブロック図である。処理システム100は、中央処理装置(CPU)145と、メモリ105と、バス110と、グラフィックス処理装置(GPU)115と、入力/出力エンジン160と、ディスプレイ120と、外部ストレージ構成要素165と、を含む。GPU115は、余裕認識タスクスケジューラ142と、計算ユニット125と、内部(又は、オンチップ)メモリ130と、を含む。CPU145は、プロセッサコア150と、余裕(laxity)情報モジュール122と、を含む。メモリ105は、命令のコピー135と、オペレーティングシステム144と、プログラムコード155と、を含む。様々な実施形態では、CPU145は、バス110を介してGPU115、メモリ105及びI/Oエンジン160に接続されている。
処理システム100は、ダイナミックランダムアクセスメモリ(DRAM)等の非一時的なコンピュータ可読記憶媒体を使用して実装されるメモリ105、又は、他のストレージコンポーネントにアクセスする。しかし、メモリ105は、スタティックランダムアクセスメモリ(SRAM)及び不揮発性RAM等を含む他のタイプのメモリを使用して実装することもできる。
また、処理システム100は、メモリ105等のように処理システム100に実装されたエンティティ間の通信をサポートするバス110を含む。処理システム100のいくつかの実施形態は、明確にするために図1に示されていない他のバス、ブリッジ、スイッチ及びルータ等を含む。
処理システム100は、機械学習タスクを実行し、ディスプレイ120上に提示される画像をレンダリングするように構成された1つ以上のGPU115を含む。例えば、GPU115は、オブジェクトをレンダリングして、ディスプレイ120に提供される画素値を生成することができ、ディスプレイ120は、画素値を使用して、レンダリングされたオブジェクトを表す画像を表示する。GPU115のいくつかの実施形態は、ハイエンドコンピューティングにも使用することができる。例えば、GPU115を使用して、例えば畳み込みニューラルネットワーク(CNN)又はリカレントニューラルネットワーク(RNN)等の様々なタイプのニューラルネットワークの機械学習アルゴリズムを実施することができる。場合によっては、例えば、単一のGPU115が、割り当てられた機械学習アルゴリズムを実行するのに十分な処理能力を有していない場合には、機械学習アルゴリズムを実行するように複数のGPU115の動作が調整される。複数のGPU115は、1つ以上のインターフェース(明確にするために図1に示されていない)を介したGPU間通信を使用して通信する。
処理システム100は、ディスプレイ120、並びに、キーボード、マウス、プリンタ及び外部ディスク等の処理システム100の他の要素に関連する入力動作又は出力動作を処理する入力/出力(I/O)エンジン160を含む。I/Oエンジン160は、メモリ105、GPU115又はCPU145と通信するように、バス110に接続されている。図示した実施形態では、I/Oエンジン160は、コンパクトディスク(CD)、及びデジタルビデオディスク(DVD)等の非一時的なコンピュータ可読記憶媒体を使用して実装された外部ストレージ構成要素165に記憶された情報を読み出すように構成されている。また、I/Oエンジン160は、GPU115又はCPU145による処理の結果等の情報を、外部ストレージ構成要素165に書き込むことができる。
また、処理システム100は、バス110に接続され、バス110を介してGPU115及びメモリ105と通信するCPU145を含む。図示した実施形態では、CPU145は、命令を同時又は並行して実行するように構成された複数の処理要素(プロセッサコアとも呼ばれる)150を実装する。CPU145は、メモリ105に記憶されたプログラムコード155等の命令を実行することができ、実行された命令の結果等の情報をメモリ105に記憶することができる。また、CPU145は、ドローコール、すなわちコマンド又は命令をGPU115に発行することによって、グラフィック処理を開始することができる。
GPU115は、命令を同時又は並行して実行するように構成された複数の処理要素(計算ユニットとも呼ばれる)125を実装する。また、GPU115は、ローカルデータストア(LDS)、並びに、計算ユニット125が利用するキャッシュ、レジスタ又はバッファを含む、内部メモリ130を含む。内部メモリ130は、1つ以上の計算ユニット125で実行されるタスクを記述するデータ構造を記憶する。
図示した実施形態では、GPU115は、バス110を介してメモリ105と通信する。しかし、GPU115のいくつかの実施形態は、直接接続を介して、又は、他のバス、ブリッジ、スイッチ及びルータ等を介して、メモリ105と通信する。GPU115は、メモリ105に記憶された命令を実行することができ、実行された命令の結果等の情報をメモリ105に記憶することができる。例えば、メモリ105は、機械学習アルゴリズム又はニューラルネットワークを表すプログラムコード等のようにGPU115が実行するプログラムコードからの命令のコピー135を記憶することができる。また、GPU115は、タスク要求を受信し、タスクを1つ以上の計算ユニット125にディスパッチするコプロセッサ140を含む。
処理システム100の動作中、CPU145は、GPU115によって実行されるプログラム命令を表すカーネルの処理を開始するためのコマンド又は命令を、GPU115に発行する。本明細書でスレッド又はワークアイテム(work items)と呼ばれるカーネルの複数のインスタンスは、計算ユニット125のサブセットを使用して同時に又は並行して実行される。いくつかの実施形態では、スレッドは、各スレッドが異なるデータに対して同じ命令を実行するように、単一命令複数データ(SIMD)プロトコルに従って実行される。スレッドは、異なる計算ユニット125で実行されるワークグループにまとめられる。
従来のタスクスケジューリングプラクティスに関連する問題に少なくとも部分的に対処し、使用率、パフォーマンスを改善し、一連のデータ依存タスクのリアルタイム期限を守るために、余裕認識タスクスケジューラ142は、ジョブ又はタスクの期限までの余裕(laxity)に基づいてタスク優先度を動的に調整するように、拡張される。本明細書で使用される場合、余裕とは、タスクを完了しなければならない時までにタスクが有する余分な時間、すなわちスラック(slack)の量である。いくつかの実施形態では、タスク(又は、ジョブ)の動的優先度は、ソフトウェアから提供される(又は、例えばCPU145から提供される余裕情報から計算される)タスク(又は、ジョブ)のリアルタイム期限と、ジョブに関連する残りのタスクの集合が完了するのに要する推定時間と、の差に基づいて設定される。推定は、例えば、以前に発生した同様のタスクが費やした時間に基づいており、余裕認識タスクスケジューラ142によって例えばハードウェアテーブルに記憶される。様々な実施形態では、推定は、例えば、関連するジョブのキュー内の残りのタスクを分析するパケットプロセッサ(例えば、GPU115)によって決定される。パケットプロセッサは、残りのタスクのタイプを特定すると、以前のタスクの継続時間を記憶するハードウェアテーブルを参照する。余裕認識タスクスケジューラ142は、推定値を合計することによって、残り時間を推定する。タスクの余裕が少ないと、タスクの優先度が高くなる。さらに、後続の推定値の精度を継続的に向上させるために、ハードウェアテーブルに記憶された情報は、タスクの完了後に更新され、そのタスク専用のリソース量を含むようにさらに改良される。
様々な実施形態において、処理システム100の余裕認識タスクスケジューラ142は、完了前のタスク又はジョブの余裕量に基づいて計算タスクのタスク優先度を動的に変化させることによって、例えば、最早期限優先(EDF:Earliest Deadline First)タスクスケジューリングアルゴリズム等の既存のスケジューリングポリシーを増強するタスクスケジューリングのメカニズムを提供する。様々な実施形態において、タスク期限又はジョブ期限が終了する時までにジョブ又はタスクに余裕がある場合、他のタスクを完了できるように、スケジューリングキューにおいて、余裕のあるタスクの優先度が低減され得る。
様々な実施形態において、GPU115が余裕を考慮してタスクを動的に調整できるようにするために、例えば、余裕認識タスクスケジューラ142及び余裕情報モジュール122等のハードウェア及びソフトウェアがGPU115のサポートとして提供され、同時に、ジョブのリアルタイム期限をGPU115に通知することにより、同じタスク(又は、類似カーネルの他のタスク)の以前の実行に基づいて、所定のタスク又はジョブが完了するまでの時間の推定値(例えば、タスク又はジョブが完了するのに要する時間)が提供され、タスクが完了した後に推定値が更新される。
図2は、いくつかの実施形態による、余裕認識タスクスケジューリングを実施するグラフィック処理装置(GPU)200を示す図である。GPU200は、タスクキュー232と、余裕認識タスクスケジューラ234と、ワークグループディスパッチャ238と、計算ユニット214と、計算ユニット216と、計算ユニット218と、相互接続282と、キャッシュ284と、メモリ288と、を含む。タスクキュー232は、余裕認識タスクスケジューラ234に接続されている。余裕認識タスクスケジューラ234は、ワークグループディスパッチャ238に接続されている。ワークグループディスパッチャ238は、計算ユニット214~218に接続されている。計算ユニット214~218は、相互接続282に接続されている。相互接続282は、キャッシュ284に接続されている。キャッシュ284は、メモリ288に接続されている。様々な実施形態では、余裕認識タスクスケジューリングを実施するために、例えばCPU等の他のタイプの処理ユニットが利用され得る。
GPU200の動作中、図1をさらに参照すると、CPU145は、GPU200で実行されるカーネルを記述するアーキテクテッドキューイング言語(AQL)パケット等のパケットを送信することによって、作業をGPU200にディスパッチする。パケットのいくつかの実施形態は、GPU200で実行されるコードのアドレス、レジスタ割り当て要件、ローカルデータストア(LDS)のサイズ、ワークグループサイズ、初期レジスタ状態を定義する構成情報、引数バッファへのポインタ等を含む。例えば、AQLキュー等のタスクキュー232にパケットを書き込むことによって、パケットがキューに入れられる。
様々な実施形態では、処理システム100のGPU200は、ポータビリティためのヘテロジニアスインターフェース(HIP)ストリームを使用して、カーネルを非同期的に開始することができる。HIPストリームにより開始されたカーネルは、タスクキュー232(AQLキュー)にマッピングされる。様々な実施形態では、各RNNジョブは、個別のHIPストリームを使用し、ワークグループディスパッチャ238は、各AQLキューを走査して、ジョブに関連するタスク(例えばQ1、Q2、・・・、Q32)を見つける。ワークグループディスパッチャ238は、これらのキュー内の作業をラウンドロビン方式でスケジューリングする。異なるHIPストリーム又はAQLキュー(異なるRNNジョブを表す)によって処理されるカーネルは、ワークグループ、レジスタ及びLDS等のハードウェアリソースが利用可能である限り、同時に実行され得る。これにより、異なるRNNジョブのカーネルを、複数のGPU200で同時に実行することができる。様々な実施形態では、RNNタスクの応答時間を促進するために、ワークグループディスパッチャ238のスケジューリングポリシーは、余裕認識スケジューリングポリシーに再構成又は変更される。
処理システム100の動作中、GPU200は、実行される複数のジョブ(例えば、RNNジョブ)をCPU145から受信する。様々な実施形態では、ジョブは、GPU200によって満たされるリアルタイム制約を有する複数のタスクを含む。各タスクは、ジョブのリアルタイム期限(タスク期限又はジョブ期限)までの残り時間と、タスク又はジョブを完了するのに要する時間(タスク期間又はジョブ期間)と、の差として定義される関連スラックすなわち余裕を有し得る。何れの場合も、ジョブ期限又はタスク期限は、例えばOS144又はCPU145により提供され得る。
GPU200は、ジョブを受信し、ジョブ及び各ジョブに関連するタスクをタスクキュー232に記憶する。余裕認識タスクスケジューリングを実行するために、タスクキュー232に記憶された各タスクは、各ジョブ及びタスクに固有の余裕情報を含む。様々な実施形態では、余裕情報は、例えば、ジョブ到着時間、ジョブ期限、ワークグループの数を含む。様々な実施形態では、余裕情報は、例えば、タスク到着時間、タスク期限、ワークグループの数を含む。様々な実施形態では、余裕情報は、余裕情報モジュール122及び/又はOS144により提供されるジョブ期間及び/又はタスク期間も含むことができる。
余裕認識タスクスケジューラ234は、余裕情報及びタスク期間を受信し、各タスクに関連する余裕がある場合には、その余裕を決定する。様々な実施形態では、上述したように、余裕認識タスクスケジューラ234は、タスクのジョブ期限からタスク期間を差し引くことによって、タスクに関連する余裕を決定する。例えば、タスクのジョブ期限のタイムステップ(すなわち、時間増分)が7であり、タスク期間のタイムステップが4であり、このタスクがジョブのキューにおける最後のタスクである場合、タスクに関連する余裕は3となる。余裕認識タスクスケジューラ234は、ジョブに関連する各タスクの余裕値を計算し続け、タスク優先度を割り当てるために、タスク余裕値をワークグループディスパッチャ238に提供する。
様々な実施形態では、ワークグループディスパッチャ238は、各タスクに関連する余裕値を余裕認識タスクスケジューラ234から受信し、全てのタスクの余裕値に基づいて各タスクの優先度を割り当てる。ワークグループディスパッチャ238は、各タスクの余裕値を他のタスクの余裕値と比較することによって、優先度を割り当てる。ワークグループディスパッチャ238は、比較の結果に基づいて、各タスクの優先度を動的に増減させる。例えば、他のタスクの余裕値と比較して余裕値が低いタスクには、高いスケジューリング優先度が与えられる。他のタスクの他の余裕値と比較して余裕値が高いタスクには、低いスケジューリング優先度が与えられる。スケジューリング優先度の高いタスクは、スケジューリング優先度の低いタスクよりも前に実行されるようにスケジューリングされる。スケジューリング優先度の低いタスクは、スケジューリング優先度の高いタスクよりも後に実行されるようにスケジューリングされる。
様々な実施形態では、ワークグループディスパッチャ238は、ワークグループスケジューラ(図示省略)を使用して、計算ユニット214~218が追加タスクに利用可能な追加スロットを有しなくなるまで、新たに更新された優先度の最も高いタスクから優先度のより低いタスクまでの中からワークグループを選択する。計算ユニット214~218は、所定の優先度でタスクを実行し、実行されたタスクを相互接続282に提供して、処理のためにキャッシュ284及びメモリ288にさらに分配する。
図3は、いくつかの実施形態による、余裕認識タスクスケジューリングを実施する余裕認識タスクスケジューラ300のブロック図である。余裕認識タスクスケジューラ300は、タスクレイテンシテーブル310と、カーネルテーブル320と、優先度キューテーブル330と、を含む。タスクレイテンシテーブル310は、タスク識別(タスクID)312と、カーネル名314と、ワークグループカウント316と、タスク期間318と、を含む。タスクID312は、タスクの識別番号を記憶する。様々な実施形態では、タスクIDは、例えばCPU145によって提供されるAQLキューIDと同一である。カーネル名314は、カーネルの名称を記憶する。ワークグループカウントは、ジョブ内のタスクによって使用されるカーネルの数を記憶する。
タスク期間318は、タスクの残り時間であり、ワークグループ実行時間、すなわちカーネルテーブル320内のカーネル時間324に対して、ワークグループカウントエントリ、すなわちタスクレイテンシテーブル310のワークグループカウント316を乗算することによって決定される。タスク期間は、カーネルテーブル320の単一の作業実行時間と、タスクレイテンシテーブル310のカーネル名‐ワークグループカウントに基づくワークグループカウントエントリと、の乗算結果を記憶する。
カーネルテーブル320は、カーネル名322と、カーネル時間324と、を記憶する。カーネル名322は、実行中のカーネルの名称であり、カーネル時間324は、カーネルのワークグループの平均実行時間である。優先度キューテーブル330は、タスク優先度332と、タスクキューID334と、を含む。タスク優先度332は、余裕認識タスクスケジューラ300によってタスクに割り当てられた優先度である。タスクキューID334は、キュー内のタスクのID番号である。様々な実施形態では、処理システム100のGPU200の余裕認識ジョブスケジューリングを可能にするために、ジョブは、余裕認識タスクスケジューラ300内のタスクに置き換えられ得る。
図1~図3を参照すると、余裕認識タスクスケジューラ300は、タスクレイテンシテーブル310及びカーネルテーブル320に記憶された値を、例えば、OS144若しくはランタイムによって渡される余裕情報、又は、アプリケーションからユーザによって設定された余裕情報と共に使用して、余裕及びタスク優先度の評価、すなわち余裕認識タスクスケジューリングを行う。余裕情報は、例えば、ジョブ到着時間、タスク期間、ジョブ期限、ワークグループの数を含む。ジョブ到着時間は、ジョブが例えばGPU200に到着する時刻である。ジョブ期限は、ジョブを完了しなければならない時刻であり、処理システム100によって指示される。タスク期間は、推定されるタスクの長さである。
タスク期間は、OS144によって余裕認識タスクスケジューラ300に提供されてもよく、又は、余裕認識タスクスケジューラ300は、タスクレイテンシテーブル310及びカーネルテーブル320を使用することによってタスク期間を推定してもよい。様々な実施形態では、余裕認識タスクスケジューラ300は、現在のタスク時間からタスク到着時間を減算することによってタスク期間を推定する。
タスクレイテンシテーブル310、カーネルテーブル320及び優先度キューテーブル330のエントリは、カーネルが完了すると、処理システム100によって更新される。処理システム100がカーネルを完了すると、カーネルテーブル320及びタスクレイテンシテーブル310内の対応するエントリが更新され、後続のタスク期間の推定値が決定される。ジョブ/キューに関連する全てのタスクが把握されると、タスクレイテンシテーブル310、カーネルテーブル320及び優先度キューテーブル330に提供される情報を使用して、タスクの余裕が計算される。
図4は、いくつかの実施形態による、余裕認識タスクスケジューリングを示す図である。図1~図3を参照すると、図示した例では、3つのタスク、TASK1、TASK2、TASK3が存在し、これらは、余裕認識タスクスケジューラ300によってタスクキュー232から受信されている。各タスクは単一のカーネルを含み、カーネル及びタスクは、各タスクが到着した順番を表す1~3の番号が付されている(すなわち、TASK1、TASK2、TASK3)。図4に示す例では、TASK1が1番目に到着し、TASK2が2番目に到着し、TASK3が3番目に到着している。到着時に、GPU200は、3つのカーネル全てが同じ(静的)優先度を有すると想定する。図4に示す例では、余裕認識タスクスケジューラ300がスケジューリングを行うために利用可能な2つの計算ユニットCU214及びCU216が存在する。横軸は、タイムステップ0~8を示しており、例えば、各タスクのタスク期限、タスク期間及び余裕値の指標を示している。
例えば、CPU145やOS144から提供される各タスク(TASK1、TASK2、TASK3)の余裕情報は、K(到着時間、タスク期間、タスク期限、ワークグループの数)の形式である。TASK1の場合、K1(到着時間、タスク期間、タスク期限、ワークグループの数)は、K1(0、3、3、1)である。TASK2の場合、K2(到着時間、タスク期間、タスク期限、ワークグループの数)は、K2(0、4、7、1)である。TASK3の場合、K3(到着時間、タスク期間、タスク期限、ワークグループの数)は、K3(0、8、8、1)である。したがって、K1の場合、到着時間、タスク期間、タスク期限、ワークグループの数は、それぞれ0、3、3、1である。K2の場合、到着時間、タスク期間、タスク期限、ワークグループの数は、それぞれ0、4、7、1である。K3の場合、到着時間、タスク期間、タスク期限、ワークグループの数は、それぞれ0、8、8、1である。
様々な実施形態では、各タスクの到着時間、タスク期間、タスク期限、ワークグループの数を使用して、各タスクの余裕値がスケジューリングのために計算される。TASK1の場合、余裕値は3-3、つまり0と計算される。TASK2の場合、余裕値は7-4、つまり3と計算される。TASK3の場合、余裕値は8-8、つまり0と計算される。次に、各タスクの余裕値の比較に基づいて、丸で囲んだ数字1、2、3からわかるように、タスクがスケジューリングされる。TASK3及びTASK1の余裕値は、3つのタスクの中で最も低く、それぞれの余裕値は0である。TASK1及びTASK3の余裕値は等しいことから、TASK1のタスク期間とTASK3のタスク期間とを比較して、タスクの中で何れのタスクのタスク期間が最も短いかが確認される。タスク期間が最大(最長)のタスクが1番目にスケジューリングされ、タスク期間が2番目に長いタスクが2番目にスケジューリングされ、以下同様である。提供された例では、TASK3のタスク期間はTASK1のタスク期間よりも長いので、TASK3が1番目に計算ユニット216にスケジューリングされる。TASK1は、2番目に計算ユニット214にスケジューリングされる。TASK2は、3番目に計算ユニット214にスケジューリングされる。このように、余裕認識タスクスケジューラ300は、各タスクの余裕に基づいて、TASK1、TASK2、TASK3のスケジューリングを行っている。
様々な実施形態では、例えば、TASK3がTASK2よりも先に計算ユニット216でスケジューリングされた場合、TASK1及びTASK2は、TASK2の余裕を利用して、計算ユニット214を順次利用することができ、一方、TASK3は、計算ユニット216使用することによってそのタスク期限を守る。タスクスケジューラ300は、タスクTASK1及びTASK2が8タイムステップ内でCU214によって実行され、タスクTASK3がCU216によって実行されるように、スケジュールの対象となるタスクを動的に調整している。このように、余裕認識タスクスケジューラ300を使用することによって、GPU200は、8タイムステップ期限内にタスクTASK1、TASK2、TASK3を実行することができる。余裕認識タスクスケジューリングを使用してタスクをスケジューリングすることにより、計算ユニット214及び計算ユニット216を最大限に使用することが可能になり、同時に、余裕値が最も低いタスクの優先度を動的に高めることが可能になる。
図5は、いくつかの実施形態による、余裕認識タスクスケジューリングを示す図である。図5は、複数のタスクを有するジョブ(すなわち、各ジョブが少なくとも1つのタスクを有する)の余裕認識タスクスケジューリングの例を示している。図1~図3を参照すると、図示した例では、3つのジョブJOB1、JOB2、JOB3が存在し、これらは、余裕認識タスクスケジューラ300によってタスクキュー232から受信される。いくつかの実施形態において、2つ以上のタスク(すなわち、複数のタスク)を有する各ジョブについて、タスクシーケンスはタスクの順序に依存しており、すなわち、各ジョブのタスクは、タスクのグラフと同様に、事前に指定された順序で実行され得る。つまり、例えば、JOB1のTASK1は、JOB1のTASK2の前に完了する必要がある。JOB2のTASK1は、JOB2のTASK2の前に完了する必要がある。各ジョブは、単一のカーネルを含み、カーネル及びジョブは、各ジョブが到着した順番を表す1~3の番号が付されている(すなわち、JOB1、JOB2、JOB3)。図5に示す例では、JOB1が1番目に到着し、JOB2が2番目に到着し、JOB3が3番目に到着している。到着時に、GPU200は、3つのカーネル全てが同じ(静的)優先度を有すると想定する。図5に示す例では、余裕認識タスクスケジューラ300がスケジューリングを行うために利用可能な2つの計算ユニットCU214及びCU216が存在する。
例えば、CPU145又はOS144から提供される各ジョブ(JOB1、JOB2、JOB3)の余裕情報は、K(到着時間、ジョブ期間、ジョブ期限、ワークグループの数)の形式である。JOB1の場合、K1(到着時間、ジョブ期間、ジョブ期限、ワークグループの数)は、K1(0、3、3、1)である。JOB2の場合、K2(到着時間、ジョブ期間、ジョブ期限、ワークグループの数)は、K2(0、4、7、1)である。JOB3の場合、K3(到着時間、ジョブ期間、ジョブ期限、ワークグループの数)は、K3(0、8、8、1)である。したがって、K1の場合、到着時間、ジョブ期間、ジョブ期限、ワークグループの数は、それぞれ0、3、3、1である。K2の場合、到着時間、ジョブ期間、ジョブ期限、ワークグループの数は、それぞれ0、4、7、1である。K3の場合、到着時間、ジョブ期間、ジョブ期限、ワークグループの数は、それぞれ0、8、8、1である。
様々な実施形態では、各ジョブの到着時間、ジョブ期間、ジョブ期限、ワークグループの数を使用して、各ジョブの余裕値がスケジューリングのために計算される。JOB1の場合、余裕値は3-3、つまり0と計算される。JOB2の場合、余裕値は7-4、つまり3と計算される。JOB3の場合、余裕値は8-8、つまり0と計算される。次に、各ジョブの余裕値の比較に基づいて、丸で囲んだ数字1、2、3からわかるように、ジョブがスケジューリングされる。JOB3及びJOB1の余裕値は、3つのジョブの中で最も低く、それぞれの余裕値は0である。JOB1及びJOB3の余裕値は等しいことから、JOB1のジョブ期間とJOB3のジョブ期間とを比較して、ジョブの中で何れのジョブのジョブ期間が最も短いかが特定される。ジョブ期間が最大(最長)のジョブが1番目にスケジューリングされ、ジョブ期間が2番目に長いジョブが2番目にスケジューリングされ、以下同様である。提供された例では、JOB3のジョブ期間はJOB1のジョブ期間よりも長いので、JOB3が1番目に計算ユニット216にスケジューリングされる。JOB1は、2番目に計算ユニット214にスケジューリングされる。JOB2は、3番目に計算ユニット214にスケジューリングされる。このように、余裕認識タスクスケジューラ300は、各ジョブの余裕に基づいて、JOB1、JOB2、JOB3と、これらの対応するタスクと、のスケジューリングを行っている。
様々な実施形態では、例えば、JOB3がJOB2よりも先に計算ユニット216でスケジューリングされた場合、JOB1及びJOB2は、JOB2の余裕を利用して、計算ユニット214を順次利用することができ、JOB3は、計算ユニット216使用してそのジョブ期限を守る。タスクスケジューラ300は、JOB1及びJOB2が8タイムステップ内でCU214によって実行され、JOB3がCU216によって実行されるように、スケジュールの対象となるジョブを動的に調整している。したがって、余裕認識タスクスケジューラ300を使用することによって、GPU200は、8タイムステップ期限内にジョブJOB1、JOB2、JOB3を実行することが可能になる。余裕認識タスクスケジューリングを使用してジョブをスケジューリングすることによって、計算ユニット214及び計算ユニット216を最大限に使用することが可能になり、同時に、余裕値が最も低いジョブの優先度を動的に高めることが可能になる。
図6は、いくつかの実施形態による、余裕認識タスクスケジューリングを実行するための方法600を示すフロー図である。方法600は、図1に示す処理システム100、図2に示すGPU200、及び、図3に示す余裕認識タスクスケジューラ300のいくつかの実施形態で実施される。
様々な実施形態では、方法フローは、ブロック620から始まる。ブロック620において、余裕認識タスクスケジューラ234は、ジョブ及び余裕情報を例えばCPU145から受信する。ブロック630において、余裕認識タスクスケジューラ234は、各タスクの到着時間、タスク期間、タスク期限、ワークグループの数を決定する。
ブロック634において、余裕認識タスクスケジューラ234は、受信した各タスクのタスク期限を決定する。ブロック640において、余裕認識タスクスケジューラ234は、受信した各タスクの余裕値を決定する。
ブロック644において、ワークグループディスパッチャ238は、タスクの余裕値が、GPU200が受信したジョブ内の他のタスクの余裕値よりも大きいか否かを判別する。ブロック650において、タスクの余裕値が、ジョブ内の他のタスクの余裕値よりも大きくない場合、ワークグループディスパッチャ238は、標準のEDF技術に従って、タスクを、GPU200の利用可能な計算ユニット214~218にスケジューリングして、割り当てる。
ブロック660において、タスクの余裕値が、ジョブ内の他のタスクの余裕値よりも大きい場合、ワークグループディスパッチャ238は、低い余裕値を有するタスクの余裕値が等しいか否かを判別する。ブロック670において、低い余裕値を有するタスクの余裕値が等しい場合、ワークグループディスパッチャ238は、最高の優先度を、最大のタスク期間を有するタスクに割り当てる。
ブロック680において、低い余裕値を有するタスクの余裕値が等しくない場合、ワークグループディスパッチャ238は、最高の優先度を、最も低い余裕値を有するタスクに割り当てる。
ブロック684において、ワークグループディスパッチャ238は、各タスクの優先度に基づいて、タスクを、GPU200の利用可能な計算ユニット214~218にスケジューリングして割り当て、最高優先度のタスクが1番目にスケジューリングされる。ブロック688において、GPU200は、余裕認識スケジューリング優先度に基づいてタスクを実行する。
いくつかの実施形態では、上記の装置及び技術は、図1~図6を参照して上述した処理システム等の1つ以上の集積回路(IC)デバイス(集積回路パッケージ又はマイクロチップとも呼ばれる)を含むシステムに実装される。これらのICデバイスの設計及び製造には、電子設計自動化(EDA)及びコンピュータ支援設計(CAD)ソフトウェアツールが使用される。これらの設計ツールは、通常、1つ以上のソフトウェアプログラムとして表される。1つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように1つ以上のICデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ICデバイスの設計又は製造の1つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよいし、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行するプロセッシングシステムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)等のソリッドステート記憶デバイス、又は、他の1つ以上の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。

Claims (20)

  1. 複数のタスクの各タスクに関連する余裕(laxity)情報を受信することと、
    前記余裕情報に基づいて、前記複数のタスクの各タスクの余裕値を決定することと、
    前記余裕値の余裕評価を実行することと、
    前記余裕評価に基づいて、前記複数のタスクをスケジューリングすることと、を含む、
    方法。
  2. 前記余裕評価は、前記複数のタスクの各タスクの優先度を決定することを含む、
    請求項1の方法。
  3. 前記余裕情報は、各タスクの完了までの時間を決定するために使用され、到着時間と、タスク期間と、タスク期限と、ワークグループの数と、を含む、
    請求項2の方法。
  4. 前記複数のタスクの各タスクの優先度は、前記複数のタスクの各タスクの余裕値を比較することによって決定される、
    請求項3の方法。
  5. 前記タスク期限から前記タスク期間を減算することによって前記余裕値を決定することをさらに含む、
    請求項4の方法。
  6. 前記スケジューリングすることは、
    前記複数のタスクのうち第1のタスクに関連する第1の余裕値が、前記複数のタスクのうち第2のタスクに関連する第2の余裕値よりも小さい場合に、前記第2のタスクよりも高いスケジューリング優先度を前記第1のタスクに与えることを含む、
    請求項4の方法。
  7. 前記複数のタスクをスケジューリングすることは、前記複数のタスクのうち優先度レベルが低い第2のタスクを第1の計算ユニットに提供する前に、前記複数のタスクのうち優先度レベルが高い第1のタスクを前記第1の計算ユニットに提供することを含む、
    請求項4の方法。
  8. 優先度が高い第1のタスクの余裕値が、前記第1のタスクよりも優先度が低い第2のタスクの余裕値以下である場合に、前記第1のタスクは、前記第2のタスクよりも前に第1の計算ユニットにスケジューリングされる、
    請求項4の方法。
  9. 各タスクの優先度に基づいて、前記複数のタスクを少なくとも第1の計算ユニット及び第2の計算ユニットに割り当てることをさらに含む、
    請求項4~8の何れかの方法。
  10. タスクキューと、
    前記タスクキューに接続された余裕認識(laxity-aware)タスクスケジューラと、
    前記余裕認識タスクスケジューラに接続されたワークグループディスパッチャであって、前記タスクキューに記憶された複数のタスクに関連する余裕値の余裕評価に基づいて、前記複数のタスクをスケジューリングする、ワークグループディスパッチャと、を備える、
    処理システム。
  11. 前記余裕評価は、前記複数のタスクの各タスクの優先度を決定することを含む、
    請求項10の処理システム。
  12. 前記複数のタスクの各タスクの優先度は、前記複数のタスクの各タスクの余裕値の比較に基づいている、
    請求項11の処理システム。
  13. 前記余裕値は、到着時間と、タスク期間と、タスク期限と、ワークグループの数と、を含む余裕情報を使用して決定される、
    請求項10の処理システム。
  14. 前記余裕値は、前記タスク期限から前記タスク期間を減算することによって決定される、
    請求項13の処理システム。
  15. 前記複数のタスクのうち第1のタスクに関連する余裕値のうち第1の余裕値が、前記複数のタスクのうち第2のタスクに関連する余裕値のうち第2の余裕値よりも小さい場合に、前記第2のタスクよりも高いスケジューリング優先度が前記第1のタスクに与えられる、
    請求項10の処理システム。
  16. 前記ワークグループディスパッチャは、前記複数のタスクのうち優先度レベルが低い第2のタスクを第1の計算ユニットに提供する前に、前記複数のタスクのうち優先度レベルが高い第1のタスクを前記第1の計算ユニットに提供することによって、前記複数のタスクをスケジューリングする、
    請求項15の処理システム。
  17. 優先度が高い第1のタスクの余裕値が、優先度が低い第2のタスクの余裕値以下である場合に、前記第1のタスクは、前記第2のタスクよりも前に第1の計算ユニットにスケジューリングされる、
    請求項16の処理システム。
  18. 第1のジョブ及び第2のジョブを含む複数のジョブを、余裕認識(laxity-aware)タスクスケジューラに提供することと、
    前記第1のジョブの第1の余裕値と、前記第2のジョブの第2の余裕値と、を決定することと、
    前記第1の余裕値及び前記第2の余裕値の余裕評価に基づいて、第1の優先度を前記第1のジョブに割り当て、第2の優先度を前記第2のジョブに割り当てることと、を含む、
    方法。
  19. 前記余裕評価に基づいて、前記第1のジョブ及び前記第2のジョブをスケジューリングすることをさらに含む、
    請求項18の方法。
  20. 前記余裕評価に基づいて、前記第1のジョブの前記第1の優先度及び前記第2のジョブの前記第2の優先度を調整することをさらに含む、
    請求項18の方法。
JP2021529283A 2018-11-26 2019-06-20 プロセッサにおける余裕認識(laxity-aware)型動的優先度変更 Active JP7461947B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/200,503 US20200167191A1 (en) 2018-11-26 2018-11-26 Laxity-aware, dynamic priority variation at a processor
US16/200,503 2018-11-26
PCT/US2019/038292 WO2020112170A1 (en) 2018-11-26 2019-06-20 Laxity-aware, dynamic priority variation at a processor

Publications (2)

Publication Number Publication Date
JP2022509170A true JP2022509170A (ja) 2022-01-20
JP7461947B2 JP7461947B2 (ja) 2024-04-04

Family

ID=70770139

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021529283A Active JP7461947B2 (ja) 2018-11-26 2019-06-20 プロセッサにおける余裕認識(laxity-aware)型動的優先度変更

Country Status (6)

Country Link
US (1) US20200167191A1 (ja)
EP (1) EP3887948A4 (ja)
JP (1) JP7461947B2 (ja)
KR (1) KR20210084620A (ja)
CN (1) CN113316767A (ja)
WO (1) WO2020112170A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11748615B1 (en) * 2018-12-06 2023-09-05 Meta Platforms, Inc. Hardware-aware efficient neural network design system having differentiable neural architecture search
CN113296874B (zh) * 2020-05-29 2022-06-21 阿里巴巴集团控股有限公司 一种任务的调度方法、计算设备及存储介质
CN115276758B (zh) * 2022-06-21 2023-09-26 重庆邮电大学 一种基于任务松弛度的中继卫星动态调度方法
US20240095541A1 (en) * 2022-09-16 2024-03-21 Apple Inc. Compiling of tasks for streaming operations at neural processor
CN115495202B (zh) * 2022-11-17 2023-04-07 成都盛思睿信息技术有限公司 一种异构集群下的大数据任务实时弹性调度方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011054161A (ja) * 2009-08-31 2011-03-17 Internatl Business Mach Corp <Ibm> マルチコア/スレッドのワークグループ計算スケジューラ

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5058033A (en) * 1989-08-18 1991-10-15 General Electric Company Real-time system for reasoning with uncertainty
US7058946B2 (en) * 1999-06-21 2006-06-06 Lucent Technologies Inc. Adaptive scheduling of data delivery in a central server
US7526765B2 (en) * 2003-11-26 2009-04-28 International Business Machines Corporation Method and apparatus for on-demand resource allocation and job management
US20090217272A1 (en) * 2008-02-26 2009-08-27 Vita Bortnikov Method and Computer Program Product for Batch Processing
ES2431931T3 (es) * 2009-05-26 2013-11-28 Telefonaktiebolaget L M Ericsson (Publ) Planificación de multi-procesadores
FR2997773B1 (fr) * 2012-11-06 2016-02-05 Centre Nat Rech Scient Procede d'ordonnancement avec contraintes d'echeance, en particulier sous linux, realise en espace utilisateur.
CN103870327A (zh) * 2012-12-18 2014-06-18 华为技术有限公司 一种实时多任务调度方法和装置
JP6365367B2 (ja) * 2015-03-17 2018-08-01 株式会社デンソー 電子制御装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011054161A (ja) * 2009-08-31 2011-03-17 Internatl Business Mach Corp <Ibm> マルチコア/スレッドのワークグループ計算スケジューラ

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
藤倉 俊幸: "時間的な正確さとは リアルタイムの徹底研究基礎から学ぶスケジューリング技術入門", INTERFACE, vol. 第24巻,第12号, JPN6023018176, 1 December 1988 (1988-12-01), JP, pages 88 - 100, ISSN: 0005053125 *

Also Published As

Publication number Publication date
EP3887948A1 (en) 2021-10-06
WO2020112170A1 (en) 2020-06-04
CN113316767A (zh) 2021-08-27
US20200167191A1 (en) 2020-05-28
JP7461947B2 (ja) 2024-04-04
EP3887948A4 (en) 2022-09-14
KR20210084620A (ko) 2021-07-07

Similar Documents

Publication Publication Date Title
JP7461947B2 (ja) プロセッサにおける余裕認識(laxity-aware)型動的優先度変更
JP6381734B2 (ja) グラフィックス計算プロセススケジューリング
US11550627B2 (en) Hardware accelerated dynamic work creation on a graphics processing unit
JP5722327B2 (ja) Gpuワークのハードウエアベースでのスケジューリング
US9448846B2 (en) Dynamically configurable hardware queues for dispatching jobs to a plurality of hardware acceleration engines
EP3008594B1 (en) Assigning and scheduling threads for multiple prioritized queues
US8963933B2 (en) Method for urgency-based preemption of a process
JP6294586B2 (ja) 命令スレッドを組み合わせた実行の管理システムおよび管理方法
JP6086868B2 (ja) ユーザモードからのグラフィックス処理ディスパッチ
US8881161B1 (en) Operating system with hardware-enabled task manager for offloading CPU task scheduling
KR101640848B1 (ko) 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
JP2013546097A (ja) グラフィックス処理計算リソースのアクセシビリティ
US20120200576A1 (en) Preemptive context switching of processes on ac accelerated processing device (APD) based on time quanta
US20060037021A1 (en) System, apparatus and method of adaptively queueing processes for execution scheduling
US20130141447A1 (en) Method and Apparatus for Accommodating Multiple, Concurrent Work Inputs
CN111597044A (zh) 任务调度方法、装置、存储介质及电子设备
JP5805783B2 (ja) コンピュータシステムインタラプト処理
US10853133B2 (en) Method and apparatus for scheduling tasks to a cyclic schedule
WO2012082777A1 (en) Managed task scheduling on an accelerated processing device (apd)
Adekunle et al. A comparative study of scheduling algorithms for multiprogramming in real-time systems
US8910181B2 (en) Divided central data processing
KR100790304B1 (ko) 자바 가상 머신과 운영 체제의 스케줄링 실행방법
Schaffer et al. The joy of scheduling
US20240160364A1 (en) Allocation of resources when processing at memory level through memory request scheduling
WO2022137838A1 (ja) プロセス割当制御装置、プロセス割当制御方法、及び、プロセス割当制御プログラムが格納された記録媒体

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210727

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220520

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230509

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230510

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230809

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230904

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230912

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20231212

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240325

R150 Certificate of patent or registration of utility model

Ref document number: 7461947

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150