JP2018514869A - 並列プロセッサカーネルのディスパッチサイズのコンカレンシーファクタを決定するシステム及び方法 - Google Patents

並列プロセッサカーネルのディスパッチサイズのコンカレンシーファクタを決定するシステム及び方法 Download PDF

Info

Publication number
JP2018514869A
JP2018514869A JP2017554900A JP2017554900A JP2018514869A JP 2018514869 A JP2018514869 A JP 2018514869A JP 2017554900 A JP2017554900 A JP 2017554900A JP 2017554900 A JP2017554900 A JP 2017554900A JP 2018514869 A JP2018514869 A JP 2018514869A
Authority
JP
Japan
Prior art keywords
kernel
workgroups
sequence
parallel processor
application
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
JP2017554900A
Other languages
English (en)
Other versions
JP2018514869A5 (ja
JP6659724B2 (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 JP2018514869A publication Critical patent/JP2018514869A/ja
Publication of JP2018514869A5 publication Critical patent/JP2018514869A5/ja
Application granted granted Critical
Publication of JP6659724B2 publication Critical patent/JP6659724B2/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/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3404Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3433Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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
    • 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/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)

Abstract

並列プロセッサ上で実行するアプリケーションのコンカレンシーファクタ(concurrency factor)を決定する方法を開示する。また、この方法を実装するためのシステムを開示する。一実施形態において、この方法は、カーネルの少なくとも一部をミニカーネルのシーケンスとして実行することを備え、各ミニカーネルは、同時に実行するいくつかのワークグループを含む。同時に実行するワークグループの数をミニカーネルのコンカレンシーファクタとして定義する。ミニカーネルの各シーケンスのパフォーマンス測定値を決定する。これらのシーケンスから、パフォーマンス測定値に基づいて、カーネルの所望のパフォーマンスを達成する特定のシーケンスを選択する。カーネルを特定のシーケンスで実行する。【選択図】図2

Description

(関連出願の相互参照)
本願は、2015年5月13日に出願された米国特許出願第14/710,879号の利益を主張し、その内容は、参照により本明細書に援用される。
本発明は、概して並列プロセッサに関し、特に並列プロセッサ上のアプリケーションの実行に関する。
グラフィックスプロセッサやグラフィックスプロセッシングユニット(GPU)等の並列プロセッサは、高度な並列計算デバイスである。その名称が示すように、GPUは、元来、ビデオ等の視覚情報を高速且つ効率的に処理するために開発されている。しかし最近では、これらは、より汎用的な大規模並列デバイスとして設計されている。現在のGPUは、同時に数千の計算を実行することができ、この数は、時間とともに増加することになる。このような並列計算はスレッドと呼ばれる。ハードウェアの複雑さを軽減する(よって、より多くの並列計算ユニットを1つのチップ内に存在させる)ために、GPUは、複数のスレッドをまとめてバンドルし、SIMD(single-instruction-multiple-data)方式で実行する必要がある。すなわち、多くの異なるデータに対して同じ命令が同時に実行される。このようなスレッドのバンドルは、ウェーブフロント(wavefront)、ワープ(warp)又は他の名称で呼ばれる。
カーネルは、コンピューティングデバイス上で実行される、複数のスレッドを含むプログラム又はプログラムの一部である。複数のスレッドは、スレッドブロック及び他の名称として知られる1つ以上のワークグループにバンドルされ得る。
並列プロセッサ上で実行されるアプリケーション内のカーネルのコンカレンシーファクタ(concurrency factors)を決定する方法が開示される。また、この方法を実施するシステムが開示される。
一実施形態では、方法は、ミニカーネルのシーケンスとしてカーネルの少なくとも一部を実行することであって、各ミニカーネルは、ミニカーネルのコンカレンシーファクタとして定義される数の同時に実行するワークグループを含む、ことと、ミニカーネルの各シーケンスのパフォーマンス測定値を決定することと、パフォーマンス測定値に基づいて、カーネルの所望のパフォーマンスを達成する特定のシーケンスをシーケンスから選択することと、特定のシーケンスを用いてカーネルを実行することと、を含む。
添付の図面と併せて例として与えられる以下の説明から、より詳細な理解が得られるであろう。
並列プロセッサ上で実行されるアプリケーションのコンカレンシーファクタを決定する方法の概要を示す図である。 図1の方法の一実施形態の詳細を示す図である。 アプリケーション1について観測された結果を示す図である。 アプリケーション2について観測された結果を示す図である。 1つ以上の開示された実施形態を実装可能な例示的なシステムのブロック図である。
グラフィックスプロセッシングユニット(GPU)等の並列プロセッサで実行されるカーネルは、いくつかのワークグループを含む。ワークグループは、カーネルのソフトウェア要素であり、同時に及び/又は連続して実行することができる。これらのワークグループは、カーネルを実行する場合に、所定の順序で実行されることがよくある。同時にディスパッチされるワークグループの最大数は、レジスタファイルのリソース制限と、計算ユニット(CU)制限当たりのウェーブフロントの最大数と、に依存する場合がある。しかしながら、これは、メモリアクセス速度や枝分岐(branch divergence)等のアプリケーション特性及び要件を考慮していない。システムのリソースで許可される数のワークグループを同時に実行することは、メモリ及び制御フローの分岐等のような限られたリソースの競合によって、最高のパフォーマンス又は最高のエネルギー効率が得られない場合がある。
実行中のカーネルの所望のパフォーマンスを達成するために、同時にディスパッチ及び実行するワークグループの数を選択する方法及びシステムが開示される。アプリケーションの実行における現在のカーネルの少なくとも一部は、ミニカーネルのシーケンスとして実行される。シーケンス内の各ミニカーネルは、同時に実行されるいくつかのワークグループを含む。ミニカーネル内で同時に実行されるワークグループの数は、ミニカーネルのコンカレンシーファクタとして定義される。ミニカーネルは、ミニカーネルの各シーケンスにおいて順次実行される。一例として、限定するものではないが、カーネルは、合計で128のワークグループを含むと仮定する。カーネルは、128のシーケンシャルミニカーネルとして実行することができ、各ミニカーネルは、1つのワークグループを含む。代替として、カーネルは、64のシーケンシャルミニカーネルとして実行することができ、各ミニカーネルは、同時に実行する2つのワークグループを含む。代替として、カーネルは、32のシーケンシャルミニカーネルとして実行することができ、各ミニカーネルは、同時に実行する4つのワークグループを含む。代替として、カーネルは、同時に実行する128のワークグループを含む1つのミニカーネルとしてカーネルを実行することができる。後者の代替案は、カーネル自体の実行と同じである。
上で定義したように、ミニカーネルで同時に実行されるワークグループの数は、そのミニカーネルのコンカレンシーファクタと呼ばれ得る。したがって、例えば、合計で128のワークグループを、それぞれ1つのワークグループを含む128の順次実行されるミニカーネルに分割されるカーネルでは、各ミニカーネルのコンカレンシーファクタは1である。また、合計で128のワークグループを、それぞれ4つのワークグループを含む32の順次実行されるミニカーネルに分割されるカーネルでは、各ミニカーネルのコンカレンシーファクタは4である、等であってよい。したがって、一実施形態で、カーネル又はカーネルの一部は、ミニカーネルのシーケンスとして実行することができ、所定のシーケンス内の各ミニカーネルは、共通のコンカレンシーファクタを有する。さらに、カーネル又はカーネルの一部を繰り返し実行することができ、各繰り返しは、共通のコンカレンシーファクタを有するミニカーネルのシーケンスとして実行され、共通のコンカレンシーファクタは、繰り返し毎に変化する。限定するとみなされるべきではないが、一例として、各繰り返しにおける共通のコンカレンシーファクタは、2の累乗であってもよい。したがって、例えば、128のワークグループを有するカーネルは、ミニカーネルのシーケンスとして実行することができるので、1つのシーケンスの共通のコンカレンシーファクタは、8、16、32、64、128の他のシーケンスについてそれぞれ共通のコンカレンシーファクタを有し、1、他に2、他に4等である。
上記の各例では、各ミニカーネルは、同じ数のワークグループを含む、すなわち、全てのミニカーネルは、共通のコンカレンシーファクタを有する。しかし、これは必須ではなく、限定的であるとみなされない。代替として、カーネルは、異なる数のワークグループを有するミニカーネルのシーケンスに分割されてもよく、ワークグループの数の合計は、カーネル内のワークグループの総数である。例えば、合計で128のワークグループを有するカーネルは、50のワークグループ、40のワークグループ及び38のワークグループを含む3つの順次実行されるミニカーネルとして実行することができる。換言すれば、カーネルは、50、40及び38のコンカレンシーファクタを有する3つのミニカーネルのシーケンスとして実行することができる。代替として、同じカーネルを、92のワークグループと36のワークグループとを含む2つの順次実行されるミニカーネルとして実行することができる。したがって、一実施形態では、カーネル又はカーネルの一部を繰り返し実行することができ、各繰り返しは、様々なコンカレンシーファクタを有するミニカーネルのシーケンスとして実行される。前述したように、カーネル内のワークグループの総数と、ミニカーネルのシーケンス内の各ミニカーネルのコンカレンシーファクタとが与えられると、かかるミニカーネルを構築する多くの方法が存在する可能性がある。例えば、限定するものではないが、128のワークグループカーネルが、4のコンカレンシーファクタをそれぞれ含む32のシーケンシャルミニカーネルとして実行する場合、128のワークグループを、4つのワークグループの32のミニカーネルに分割する方法が存在する。一実施形態では、かかる可能性の全てを試すことができる。代替として、可能な分割の総数のサブセットが試されてもよく、このサブセットは、1つ以上の追加の基準に基づいて選択される。かかる基準の例として、限定するものではないが、カーネル内のワークグループの合計は、1次元、2次元、3次元又はこれらより高次元の抽象的な数学的空間に分布するとイメージされてもよい。各ワークグループは、空間の軸に沿った座標のセットによって、指定又はインデックスされ得る。全ての可能性から試行されるミニカーネルの分割数を低減するために、次の追加の基準又は制限が課されてもよい。すなわち、各ミニカーネルは、空間内で連続しているか又は隣接しているワークグループのみを含んでもよい。1つの例として、限定するものではないが、1次元空間内に配置された15のワークグループを含むカーネルを考える。これらのワークグループは、番号1、2、3、…、15でインデックスされ、直線、すなわち単一の軸に沿って配列されるように視覚化されてもよい。このカーネルを、それぞれ3つ、6つ、2つ及び4つのワークグループを含む4つのミニカーネルに分割することが望ましいと仮定する。追加の基準によれば、3つのワークグループのミニカーネルは、1、2、3のインデックスが付けられたワークグループを含んでもよい。但し、インデックスが7、8、9のワークグループが含まれている場合がある。しかしながら、これらのワークグループが全て連続しているとは限らないので、1、2及び7のインデックスが付けられたワークグループを含まない。同様に、ワークグループ7,8,11、又は、ワークグループ7,9,11を含まない場合がある。別の例として、全てのミニカーネルが同じ数のワークグループを含まなければならないという追加の基準が課された場合に、試行する可能性のある分割数が非常に少なくなる場合がある。例えば、それぞれ5つのワークグループを含む3つのミニカーネルに分割された15ののワークグループの1次元のカーネルを考える。また、各ミニカーネルのワークグループは連続していなければならない。この場合、ワークグループ1〜5を含むミニカーネルと、ワークグループ6〜10を含む他のミニカーネルと、ワークグループ11〜15を含む第3のミニカーネルと、の全ての基準を満たす分割は1つのみである。これらの基準は、高次元の抽象空間に配置されたワークグループを含むカーネルを容易に一般化することができる。
したがって、所望のパフォーマンスを達成するために並列プロセッサ上で実行するアプリケーション内のカーネルの1つ以上のコンカレンシーファクタを選択する方法は、以下のように進めることができる。カーネル又はカーネルの少なくとも一部を繰り返し実行することができる。各繰り返しは、ミニカーネルの別個のシーケンスとして実行されてもよく、各ミニカーネルは、同時に実行されるワークグループの数を示すコンカレンシーファクタを有する。ミニカーネルのこのようなシーケンス毎に、パフォーマンス測定値を決定することができる。パフォーマンス測定値に基づいて、カーネルの所望のパフォーマンスを達成する特定のシーケンスが選択される。ミニカーネルの特定のシーケンスでカーネルを実行する。図1〜4を用いて、これらの方法の要素を以下に詳細に説明する。
図1は、GPU等の並列プロセッサ上で実行するアプリケーションのコンカレンシーファクタを決定する方法の一実施形態の概要を示す図である。方法は、(110)で開始する。アプリケーションの各カーネルが実行されると、例えば、後述するように、現在のカーネルに対してミニカーネルの特定のシーケンスが決定される(120)。現在のカーネルは、ミニカーネルの決定された特定のシーケンスで実行される(130)。現在のカーネルの実行が完了すると、アプリケーションの実行を完了するために実行される残りのカーネルがあるか否かを判別するためのチェックが実行される(140)。実行される残りのカーネルがある場合、新たなアプリケーションカーネルが呼び出され、その実行が開始される(150)。方法は(120)に戻り、ミニカーネルの新たな特定のシーケンスが、この次のカーネルに対して決定される。
(120)〜(130)〜(140)〜(150)〜(160)間のループは、(140)において、実行される残りのカーネルがないことがチェックによって明らかになるまで繰り返される。この場合、アプリケーションの実行が終了する(160)。アプリケーションの実行結果は、例えばディスプレイデバイスを含む出力デバイスによってユーザに提供されてもよい。
図2は、カーネルのミニカーネルの特定のシーケンスを決定する方法の一実施形態の詳細を示す図である。アプリケーション実行中の現在のカーネル又はこのカーネルの少なくとも一部は、ミニカーネルのシーケンスとして実行され、各ミニカーネルは、コンカレンシーファクタを含む(210)。一般に、各ミニカーネルのコンカレンシーファクタは、他の全てのミニカーネルのコンカレンシーファクタから独立し得る。
いくつかの実施態様において、シーケンス毎に、パフォーマンス測定値の組み合わせに基づいて、パフォーマンス測定値が決定される(220)。パフォーマンス測定値の非限定的な例には、例えばカーネル実行時間若しくはアプリケーション実行時間等の実行時間、温度、エネルギー散逸率、電力効率、エネルギー効率、例えばソフトエラー率によって測定される信頼性、メモリ等のリソースに対する競合の測定値、又は、計算ユニットの感度(compute-unit sensitivity)、のうち少なくとも1つが含まれる。計算ユニットの感度は、パフォーマンス測定値の変化を、実行中のいくつかの計算ユニットの対応する変化で割ったものとして定義することができる。計算ユニットの感度は、計算挙動(compute behavior)、メモリ挙動(memory behavior)、1つ以上のランタイム統計、又は、実行中のワークグループ数、のうち少なくとも1つに基づいて決定されてもよい。1つの非限定的な例として、計算ユニットの感度は、計算挙動、メモリ挙動、1つ以上のランタイム統計、又は、実行中のワークグループの数、のうち少なくとも1つの線形関数としてモデル化されてもよい。この線形関数の係数は、既知のカーネルのパフォーマンス統計及び計算ユニットの感度に関する回帰モデルによって決定される定数であってもよい。予測された計算ユニットの感度は、コンカレンシー(concurrency)がハイ(HIGH)、ミディアム(MEDIUM)又はロー(LOW)であるかどうかを判別するために、閾値と比較されてもよい。この分類に応じて、同時に実行するワークグループの最大数を決定することができる。変形例では、他のコンカレンシーカテゴリも可能である。
図2を継続し、ミニカーネルの全ての所望のシーケンスが実行され、これらのパフォーマンス測定値が得られると、試行された全てのシーケンスのパフォーマンス測定値に基づいて、カーネルの所望のパフォーマンスを達成する特定のシーケンスが選択される(230)。カーネルは特定のシーケンスで実行される(240)。所望のパフォーマンスを達成する例は、限定的に解釈されないが、例えばカーネル実行時間若しくはアプリケーション実行時間等の実行時間を最小にすること、温度若しくはエネルギー散逸率を制限する等の熱的制限内でプロセッサ若しくはプロセッサを含むシステムを維持すること、プロセッサ若しくはプロセッサを含むシステムの信頼性を最大にすること、エネルギー効率を最大にすること、及び、電力効率を最大にすること、のうち1つ以上を含む。信頼性を最大にすることは、ソフトエラーの発生率を最小にすることを含んでもよい。所望のパフォーマンスを達成する別の例は、キャッシュメモリ等のメモリの使用のために、ワークグループ間の競合を最小にすることを含む。さらなる例として、同時に達成される上述の例の任意のサブセットを、所望のパフォーマンスを達成するものとして選択することができる。
図3A及び図3Bは、並列プロセッサ上で実行するアプリケーションのカーネルのコンカレンシーファクタを決定する2つの例を示しているが、これらに限定されるものではない。ここで示される結果は、GPU上で2つの異なるアプリケーションを実行することによって得られた実際の実験結果である。図3Aは、1つのアプリケーション(アプリケーション1)の結果を示し、図3Bは、他のアプリケーション(アプリケーション2)の同様の結果を示している。図3A及び図3Bの両方において、各アプリケーションのカーネルの少なくとも一部は、各シーケンスのミニカーネルが全て同じ数のワークグループ(すなわち、同じコンカレンシーファクタ)を有するミニカーネルのシーケンスとして実行される。垂直軸に沿った縦線の高さは、水平軸上の対応する数によって示される共通のコンカレンシーファクタを有するシーケンスで得られるパフォーマンス測定値(本実施例では、カーネル実行時間)を示している。これらの例では、所望のパフォーマンスを達成することは、カーネル実行時間を最小にすることを含む。
異なる共通のコンカレンシーファクタを用いたパフォーマンス測定値の変化は、図3A及び図3Bに示す2つのアプリケーションで異なる。図3Aの例では、(305)で示すように、共通のコンカレンシーファクタが最大検査値(すなわち、128)である場合に、最小カーネル実行時間(所望のパフォーマンス)が得られる。一方、図3Bでは、(310)で示すように、コンカレンシーファクタが64の場合に所望のパフォーマンスが得られる。この場合、最大の検査されたコンカレンシーファクタ(ここでは、512)よりも低いコンカレンシーファクタで所望のパフォーマンスが得られる。これらについての可能な説明は、限定的に解釈されないが、以下の通りである。コンカレンシーファクタが1から増加すると、同時に実行するワークグループの数が増えることによって実行時間が減少する。これと同時に、同時に実行するワークグループの数が増えると、メモリ等のリソースに対するワークグループ間の競合が増加する。この競合は、実行時間を増加させる傾向がある。同時に実行するワークグループの数がいくつかの数(この例では64)を超えると、競合の影響が同時実行の影響を支配し、実行時間が、コンカレンシーファクタの増加とともに増える。
図2に戻ると、ここに示された例では、所望のパフォーマンスを達成する特定のミニカーネルシーケンスは、アプリケーションの並列要求(parallelism demands)が経時的に変化するにつれて、アプリケーションの実行中にカーネルが呼び出される毎に決定される。これは、カーネルの少なくとも一部の実行(210)、パフォーマンス測定値の決定(220)、所望のパフォーマンスを達成する特定のシーケンスの選択(230)、及び、特定のシーケンスでのカーネルの実行(240)を行うことによって達成することができ、これらの全ては、アプリケーションの実行中に新たなアプリケーションカーネルが呼び出される毎に実行される。非限定的な例として、これは、グラフアルゴリズム又はイレギュラーなアプリケーションの場合である。
選択された特定のシーケンスは、カーネルの実行中に一定に維持されてもよい。代替の実施形態は、カーネルの少なくとも一部の実行(210)、決定(220)、選択(230)及び実行(240)を行うことを含んでもよい。これらの全ては、計算環境の変化に応じて、カーネルの実行中に動的に行われる。非限定的な例として、カーネルの実行として使用される選択された特定のミニカーネルシーケンスは、パフォーマンス統計及びカーネルフェーズの変更に基づいて、カーネル実行中に変更され得る。
図4は、1つ以上の開示された実施形態を実装可能な例示的なデバイス又はシステム400のブロック図である。システム400は、例えば、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータを含むことができる。システム400は、プロセッサ402と、メモリ404と、ストレージ406と、1つ以上の入力デバイス408と、アプリケーションの実行結果を提供するように構成された1つ以上の出力デバイス410と、を含む。出力デバイス410は、視覚的ディスプレイを含むことができる。また、システム400は、オプションとして、入力ドライバ412及び出力ドライバ414を含むことができる。システム400は、図4に示されていない追加のコンポーネントを含んでもよいことを理解されたい。
プロセッサ402は、中央処理装置(CPU)、グラフィックスプロセッシングユニット(GPU)、同じダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含むことができ、各プロセッサコアは、CPU又はGPUであってもよい。メモリ404は、プロセッサ402と同じダイ上に配置されてもよいし、プロセッサ402とは別に配置されてもよい。メモリ404は、例えばランダムアクセスメモリ(RAM)、ダイナミックRAM若しくはキャッシュ等の揮発性又は不揮発性メモリを含むことができる。
ストレージ406は、例えばハードディスクドライブ、ソリッドステートドライブ、光ディスク若しくはフラッシュドライブ等の固定又は取り外し可能な記憶装置を含むことができる。入力デバイス408は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックスキャナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信のための無線ローカルエリアネットワークカード)を含むことができる。出力デバイス410は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上のライト、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信のための無線ローカルエリアネットワークカード)を含むことができる。
入力ドライバ412は、プロセッサ402及び入力デバイス408と通信し、プロセッサ402が入力デバイス408から入力を受信することを可能にする。出力ドライバ414は、プロセッサ402及び出力デバイス410と通信し、プロセッサ402が出力デバイス410に出力を送信することを可能にする。入力ドライバ412及び出力ドライバ414は、オプションのコンポーネントであって、入力ドライバ412及び出力ドライバ414が存在しない場合にはデバイス400が同じ方法で動作することに留意されたい。
システム400は、上述した方法の1つ以上の実施形態を実装することによって、アプリケーション内のカーネルのコンカレンシーファクタを決定するように構成することができる。並列プロセッサ402は、1つ以上のカーネルとしてアプリケーションを実行するように構成されてもよい。メモリ404又はストレージ406は、並列プロセッサ402と情報を交換し、アプリケーションを記憶し、アプリケーションを並列プロセッサ402内にロードするように構成されてもよい。並列プロセッサ402は、ミニカーネルのシーケンスとしてカーネルの少なくとも一部を実行するように構成されてもよい。各ミニカーネルは、同時に実行されるいくつかのワークグループを含み、ワークグループの数は、ミニカーネルのコンカレンシーファクタとして定義されてもよい。並列プロセッサ402は、ミニカーネルの各シーケンスのパフォーマンス測定値を決定し、パフォーマンス測定値に基づいて、カーネルの所望のパフォーマンスを達成する特定のシーケンスをシーケンスから選択し、特定のシーケンスでカーネルを実行する、ように構成されてもよい。
並列プロセッサ402は、アプリケーションの実行中に新たなアプリケーションカーネルが呼び出される毎に、上述した、カーネルの少なくとも一部を実行すること、決定すること、選択すること及び実行することを行うように構成されてもよい。並列プロセッサ402は、アプリケーションの実行中に動的に、カーネルの少なくとも一部を実行すること、決定すること、選択すること及び実行することを行うように構成されてもよい。
並列プロセッサ402は、実行時間を最小にすること、熱的制限内でシステムを維持すること、電力効率及びエネルギー効率の少なくとも1つを最大にすること、システムの信頼性を最大にすること、並びに、第1メモリ、第2メモリ又はこれら両方のメモリの使用のためにワークグループ間の競合を最小にすること、のうち少なくとも1つによって、カーネルの所望のパフォーマンスを達成する特定のシーケンスを選択するように構成されてもよい。
並列プロセッサ402は、パフォーマンス測定値として計算ユニットの感度を測定するように構成されてもよい。並列プロセッサ402は、計算挙動、メモリ挙動、1つ以上のランタイム統計、又は、実行するワークグループの数、のうち少なくとも1つに基づいて、計算ユニットの感度を決定するように構成されてもよい。並列プロセッサ402は、計算挙動、メモリ挙動、1つ以上のランタイム統計、又は、実行するワークグループの数、のうち少なくとも1つの線形関数として計算ユニットの感度を決定するように構成されてもよい。
並列プロセッサ402は、連続して同時に実行するワークグループを含むミニカーネルのシーケンスとして、カーネルの少なくとも一部を実行するように構成されてもよい。並列プロセッサ402は、ミニカーネルのシーケンスとしてカーネルの少なくとも一部を実行するように構成されてもよく、少なくとも1つのシーケンス内の全てのミニカーネルは、共通のコンカレンシーファクタを含む。共通のコンカレンシーファクタは、2の累乗であってもよい。
本明細書の開示に基づいて多くの変形が可能であることを理解されたい。特徴及び要素は、特定の組み合わせで上述したように説明されているが、各特徴又は要素は、他の特徴及び要素なしに単独で、又は、他の特徴及び要素の有無にかかわらず様々な組み合わせで使用されてもよい。
提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアに実装されてもよい。適切なプロセッサは、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、任意の他のタイプの集積回路(IC)、及び/又は、状態機械を含むことができる。かかるプロセッサは、処理されたハードウェア記述言語(HDL)命令の結果と、ネットリストを含む他の中間データ(コンピュータ可読媒体に記憶することが可能な命令等)の結果と、を用いて製造プロセスを構成することによって、製造されてもよい。かかる処理の結果は、本発明の態様を実施するプロセッサを製造するために、半導体製造プロセスで使用されるマスクワークであってもよい。
本明細書で提供される方法又はフロー図は、汎用コンピュータ又はプロセッサによる実行のために、コンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアに実装されてもよい。コンピュータ可読記憶媒体の例は、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、光磁気媒体、CD−ROMディスク及びデジタル多目的ディスク(DVD)等の光媒体を含む。

Claims (23)

  1. 並列プロセッサ上で実行するアプリケーション内のカーネルのコンカレンシーファクタ(concurrency factor)を決定する方法であって、
    前記カーネルの少なくとも一部をミニカーネルのシーケンスとして実行することであって、各ミニカーネルは、同時に実行されるいくつかのワークグループを含み、前記ワークグループの数は、前記ミニカーネルのコンカレンシーファクタとして定義される、ことと、
    ミニカーネルの各シーケンスのパフォーマンス測定値を決定することと、
    前記パフォーマンス測定値に基づいて、前記カーネルの所望のパフォーマンスを達成する特定のシーケンスを前記シーケンスから選択することと、
    前記カーネルを前記特定のシーケンスで実行することと、を含む、
    方法。
  2. ミニカーネルにおいて同時に実行される全てのワークグループが連続している、請求項1の方法。
  3. 前記シーケンスのうち少なくとも1つのシーケンス内の全てのミニカーネルは、共通のコンカレンシーファクタを有する、請求項1の方法。
  4. 前記共通のコンカレンシーファクタは2の累乗である、請求項3の方法。
  5. 前記アプリケーションの実行中に新たなアプリケーションカーネルが呼び出される毎に、前記カーネルの少なくとも一部を実行することと、前記決定することと、前記選択することと、前記実行することと、を行うことをさらに含む、請求項1の方法。
  6. 前記アプリケーションの実行中に動的に、前記カーネルの少なくとも一部を実行することと、前記決定することと、前記選択することと、前記実行することと、を行うことをさらに含む、請求項1の方法。
  7. 前記所望のパフォーマンスを達成することは、実行時間を最小にすることと、熱的制限内で前記並列プロセッサを維持することと、電力効率及びエネルギー効率のうち少なくとも1つを最大にすることと、前記並列プロセッサ又は前記並列プロセッサを含むシステムの信頼性を最大にすることと、メモリの使用のためにワークグループ間の競合を最小にすることと、のうち少なくとも1つを含む、請求項1の方法。
  8. 前記パフォーマンス測定値は、計算ユニットの感度(compute-unit sensitivity)を含む、請求項1の方法。
  9. 前記計算ユニットの感度は、計算挙動(compute behavior)、メモリ挙動(memory behavior)、1つ以上のランタイム統計、及び、実行するワークグループの数、のうち少なくとも1つに基づいて決定される、請求項8の方法。
  10. 前記計算ユニットの感度は、計算挙動、メモリ挙動、1つ以上のランタイム統計、及び、実行するワークグループの数、のうち少なくとも1つの線形関数としてモデル化される、請求項8の方法。
  11. 前記アプリケーションの実行結果を、前記実行結果を表示するディスプレイに提供することをさらに含む、請求項1の方法。
  12. アプリケーション内のカーネルのコンカレンシーファクタ(concurrency factor)を決定するように構成されたシステムであって、
    前記アプリケーションを実行するように構成された並列プロセッサと、
    前記並列プロセッサと情報を交換し、前記アプリケーションを記憶し、前記アプリケーションを前記並列プロセッサ内にロードするように構成された第1メモリと、
    前記並列プロセッサと情報を交換するように構成された第2メモリと、を備え、
    前記並列プロセッサは、
    前記カーネルの少なくとも一部をミニカーネルのシーケンスとして実行することであって、各ミニカーネルは、同時に実行されるいくつかのワークグループを含み、前記ワークグループの数は、前記ミニカーネルのコンカレンシーファクタとして定義される、ことと、
    ミニカーネルの各シーケンスのパフォーマンス測定値を決定することと、
    前記パフォーマンス測定値に基づいて、前記カーネルの所望のパフォーマンスを達成する特定のシーケンスを前記シーケンスから選択することと、
    前記カーネルを前記特定のシーケンスで実行することと、
    を行うように構成されている、
    システム。
  13. 前記アプリケーションの実行結果を提供するように構成された出力デバイスをさらに備える、請求項12のシステム。
  14. 前記出力デバイスは、視覚的ディスプレイを備える、請求項13のシステム。
  15. 前記並列プロセッサは、前記アプリケーションの実行中に新たなアプリケーションカーネルが呼び出される毎に、前記カーネルの少なくとも一部を実行することと、前記決定することと、前記選択することと、前記実行することと、を行うように構成されている、請求項12のシステム。
  16. 前記並列プロセッサは、前記アプリケーションの実行中に動的に、前記カーネルの少なくとも一部を実行することと、前記決定することと、前記選択することと、前記実行することと、を行うように構成されている、請求項12のシステム。
  17. 前記並列プロセッサは、実行時間を最小にすることと、熱的制限内で前記システムを維持することと、電力効率及びエネルギー効率のうち少なくとも1つを最大にすることと、前記システムの信頼性を最大にすることと、前記第1メモリ、前記第2メモリ又はこれらの両方のメモリの使用のためにワークグループ間の競合を最小にすることと、のうち少なくとも1つによって、前記カーネルの所望のパフォーマンスを達成する特定のシーケンスを選択するように構成されている、請求項12のシステム。
  18. 前記並列プロセッサは、前記パフォーマンス測定値として計算ユニットの感度(compute-unit unit sensitivity)を測定するように構成されている、請求項12のシステム。
  19. 前記並列プロセッサは、計算挙動、メモリ挙動、1つ以上のランタイム統計、及び、実行するワークグループの数、のうち少なくとも1つに基づいて、前記計算ユニットの感度を測定するように構成されている、請求項18のシステム。
  20. 前記並列プロセッサは、計算挙動、メモリ挙動、1つ以上のランタイム統計、及び、実行するワークグループの数、のうち少なくとも1つの線形関数として前記計算ユニットの感度を測定するように構成されている、請求項18のシステム。
  21. 前記並列プロセッサは、連続しており同時に実行されるワークグループを備えるミニカーネルのシーケンスとして、前記カーネルの少なくとも一部を実行するように構成されている、請求項12のシステム。
  22. 前記並列プロセッサは、前記カーネルの少なくとも一部をミニカーネルのシーケンスとして実行するように構成されており、前記シーケンスの少なくとも1つのシーケンス内の全てのミニカーネルは、共通のコンカレンシーファクタを含む、請求項12のシステム。
  23. 前記共通のコンカレンシーファクタは2の累乗である、請求項22のシステム。
JP2017554900A 2015-05-13 2016-03-22 並列プロセッサカーネルのディスパッチサイズのコンカレンシーファクタを決定するシステム及び方法 Active JP6659724B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/710,879 US9965343B2 (en) 2015-05-13 2015-05-13 System and method for determining concurrency factors for dispatch size of parallel processor kernels
US14/710,879 2015-05-13
PCT/US2016/023560 WO2016182636A1 (en) 2015-05-13 2016-03-22 System and method for determining concurrency factors for dispatch size of parallel processor kernels

Publications (3)

Publication Number Publication Date
JP2018514869A true JP2018514869A (ja) 2018-06-07
JP2018514869A5 JP2018514869A5 (ja) 2019-05-09
JP6659724B2 JP6659724B2 (ja) 2020-03-04

Family

ID=57248294

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017554900A Active JP6659724B2 (ja) 2015-05-13 2016-03-22 並列プロセッサカーネルのディスパッチサイズのコンカレンシーファクタを決定するシステム及び方法

Country Status (6)

Country Link
US (1) US9965343B2 (ja)
EP (1) EP3295300B1 (ja)
JP (1) JP6659724B2 (ja)
KR (1) KR102548402B1 (ja)
CN (1) CN107580698B (ja)
WO (1) WO2016182636A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10324730B2 (en) * 2016-03-24 2019-06-18 Mediatek, Inc. Memory shuffle engine for efficient work execution in a parallel computing system
US20180115496A1 (en) * 2016-10-21 2018-04-26 Advanced Micro Devices, Inc. Mechanisms to improve data locality for distributed gpus
US10558499B2 (en) * 2017-10-26 2020-02-11 Advanced Micro Devices, Inc. Wave creation control with dynamic resource allocation
US11900123B2 (en) * 2019-12-13 2024-02-13 Advanced Micro Devices, Inc. Marker-based processor instruction grouping
US11809902B2 (en) * 2020-09-24 2023-11-07 Advanced Micro Devices, Inc. Fine-grained conditional dispatching
WO2022221573A1 (en) * 2021-04-15 2022-10-20 Nvidia Corporation Launching code concurrently

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6516310B2 (en) * 1999-12-07 2003-02-04 Sybase, Inc. System and methodology for join enumeration in a memory-constrained environment
US8375368B2 (en) * 2006-06-20 2013-02-12 Google Inc. Systems and methods for profiling an application running on a parallel-processing computer system
US8136104B2 (en) 2006-06-20 2012-03-13 Google Inc. Systems and methods for determining compute kernels for an application in a parallel-processing computer system
US9354944B2 (en) * 2009-07-27 2016-05-31 Advanced Micro Devices, Inc. Mapping processing logic having data-parallel threads across processors
CN102023844B (zh) * 2009-09-18 2014-04-09 深圳中微电科技有限公司 并行处理器及其线程处理方法
KR101079697B1 (ko) * 2009-10-05 2011-11-03 주식회사 글로벌미디어테크 범용 그래픽 처리장치의 병렬 프로세서를 이용한 고속 영상 처리 방법
US8250404B2 (en) * 2009-12-31 2012-08-21 International Business Machines Corporation Process integrity of work items in a multiple processor system
US8782645B2 (en) * 2011-05-11 2014-07-15 Advanced Micro Devices, Inc. Automatic load balancing for heterogeneous cores
US9092267B2 (en) * 2011-06-20 2015-07-28 Qualcomm Incorporated Memory sharing in graphics processing unit
US20120331278A1 (en) 2011-06-23 2012-12-27 Mauricio Breternitz Branch removal by data shuffling
US8707314B2 (en) * 2011-12-16 2014-04-22 Advanced Micro Devices, Inc. Scheduling compute kernel workgroups to heterogeneous processors based on historical processor execution times and utilizations
US9823927B2 (en) 2012-11-30 2017-11-21 Intel Corporation Range selection for data parallel programming environments
CN105027089B (zh) * 2013-03-14 2018-05-22 英特尔公司 内核功能性检查器
US9772864B2 (en) * 2013-04-16 2017-09-26 Arm Limited Methods of and apparatus for multidimensional indexing in microprocessor systems
US10297073B2 (en) * 2016-02-25 2019-05-21 Intel Corporation Method and apparatus for in-place construction of left-balanced and complete point K-D trees

Also Published As

Publication number Publication date
EP3295300A4 (en) 2019-01-09
US20160335143A1 (en) 2016-11-17
CN107580698B (zh) 2019-08-23
JP6659724B2 (ja) 2020-03-04
CN107580698A (zh) 2018-01-12
WO2016182636A1 (en) 2016-11-17
KR102548402B1 (ko) 2023-06-27
KR20180011096A (ko) 2018-01-31
EP3295300A1 (en) 2018-03-21
EP3295300B1 (en) 2022-03-23
US9965343B2 (en) 2018-05-08

Similar Documents

Publication Publication Date Title
JP6659724B2 (ja) 並列プロセッサカーネルのディスパッチサイズのコンカレンシーファクタを決定するシステム及び方法
JP6977239B2 (ja) 行列乗算器
US10740674B2 (en) Layer-based operations scheduling to optimise memory for CNN applications
US8782645B2 (en) Automatic load balancing for heterogeneous cores
US9697176B2 (en) Efficient sparse matrix-vector multiplication on parallel processors
TWI441021B (zh) 使用多個較低連接埠數記憶體模擬單一記憶體之方法與裝置
US9477465B2 (en) Arithmetic processing apparatus, control method of arithmetic processing apparatus, and a computer-readable storage medium storing a control program for controlling an arithmetic processing apparatus
JP2009169935A (ja) 並列プロセッサアーキテクチャを使用して単一ビット値のシーケンスに対してスキャン演算を実施するためのシステム、方法及びコンピュータプログラム製品
JP2018518730A (ja) ニューラルネットワークプロセッサにおけるバッチ処理
KR20130116166A (ko) 멀티-코어 프로세서용 멀티스레드 애플리케이션-인지 메모리 스케줄링 기법
US20120331278A1 (en) Branch removal by data shuffling
US20090106730A1 (en) Predictive cost based scheduling in a distributed software build
Guo et al. A model-driven partitioning and auto-tuning integrated framework for sparse matrix-vector multiplication on GPUs
Tiwari et al. Predicting optimal power allocation for cpu and dram domains
US20230127869A1 (en) Method and apparatus with process scheduling
US8380724B2 (en) Grouping mechanism for multiple processor core execution
US11893502B2 (en) Dynamic hardware selection for experts in mixture-of-experts model
JP2002049603A (ja) 動的負荷分散方法及び動的負荷分散装置
US20150106603A1 (en) Method and apparatus of instruction scheduling using software pipelining
JP4950325B2 (ja) モンテカルロ法の効率的な並列処理手法
Chu et al. Efficient Algorithm Design of Optimizing SpMV on GPU
KR101075439B1 (ko) 멀티 코어 프로세서를 기반으로 하는 문자열 매칭 장치 및 그것의 문자열 매칭 방법
KR101473955B1 (ko) Qr분해 연산 방법 및 기록매체
Srivastava Modeling Performance of Tensor Transpose using Regression Techniques
Kuo et al. Improve the Performance of Parallel Reduction on General-Purpose Graphics Processor Units Using Prediction Models

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190322

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190322

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20190322

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20190710

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190717

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190730

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191030

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200206

R150 Certificate of patent or registration of utility model

Ref document number: 6659724

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250