(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-03-14
(45)【発行日】2025-03-25
(54)【発明の名称】カーネルチューニングパラメータを予測するための方法及び装置
(51)【国際特許分類】
G06F 8/30 20180101AFI20250317BHJP
【FI】
G06F8/30
(21)【出願番号】P 2022510786
(86)(22)【出願日】2020-08-25
(86)【国際出願番号】 US2020047845
(87)【国際公開番号】W WO2021045935
(87)【国際公開日】2021-03-11
【審査請求日】2023-08-16
(32)【優先日】2019-09-04
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ジャハーンダッド カーン
(72)【発明者】
【氏名】ダニエル イサム ローウェル
【審査官】西間木 祐紀
(56)【参考文献】
【文献】特開2015-130093(JP,A)
【文献】特開2007-279840(JP,A)
【文献】欧州特許第03136249(EP,B1)
【文献】米国特許第10032256(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/30
(57)【特許請求の範囲】
【請求項1】
処理性能を改善する処理デバイスであって、
データを記憶するように構成されたメモリと、
前記メモリと通信するプロセッサと、を備え、
前記プロセッサは、
識別されたハードウェアデバイス上でプログラムの一部を実行するために、それぞれ数値を有するチューニングパラメータを受信することと、
前記チューニングパラメータの数値をワードに変換することと、
1つ以上の機
械学習アルゴリズムを使用して、性能効率に基づいて、前記識別されたハードウェアデバイス上で前記プログラムの前記一部を実行するために、何れのワードの組み合わせかが良いかを予測すること、
前記識別されたハードウェアデバイス上で前記プログラムの一部を実行するために、予測されたワードの組み合わせを対応する数値に変換することと、
を行うように構成されている、
処理デバイス。
【請求項2】
前記プロセッサは、ワードシーケンスに入力されたワード毎に、機械語学習表現を連続して判定するように構成されて
おり、前記機械語学習表現は、チューニングパラメータの符号化された表現である、
請求項1の処理デバイス。
【請求項3】
前記プロセッサは、前記ワードシーケンス内の別のワードの判定された機械語学習表現に基づいて、前記ワードシーケンス内のワードの機械語学習表現を判定するように構成されている、
請求項2の処理デバイス。
【請求項4】
前記プロセッサは、
前記ワード毎の機械語学習表現に基づいて、ワードの中間シーケンスを予測することと、
前記ワードが1つ以上の所定の制約の各々を満たす場合に、前記ワードの中間シーケンスの何れかのワードを、前記予測されたワードの組み合わせの候補ワードとして判定することと、
前記ワードが前記1つ以上の所定の制約の各々を満たさない場合に、前記ワードの中間シーケンスの前記何れかのワードを、前記予測されたワードの組み合わせの候補ワードではないと判定することと、
を行うように構成されている、
請求項2の処理デバイス。
【請求項5】
前記1つ以上の所定の制約の各々は、前記ワードの組み合わせが、前記プログラムの一部を実行することによって無効な結果が生じているかどうかを示す、
請求項4の処理デバイス。
【請求項6】
前記プロセッサは、
前記ワードの中間シーケンスの前記複数のワードを、前記予測されたワードの組み合わせの候補ワードとして判定することと、
他の候補ワードよりも優れた性能効率で前記プログラムの一部を実行する可能性がより高いと判定された候補ワードに基づいて、前記ワードの中間シーケンスの次のワードを予測することと、
を行うように構成されている、
請求項4の処理デバイス。
【請求項7】
前記性能効率は、前記プログラムの一部を実行する速度又は時間の尺度であり、
前記プロセッサは、前記ワードの他の組み合わせよりも速く又は短い時間で前記プログラムの一部を実行させるために何れの前記ワードの組み合わせが良いかを予測することによって、前記性能効率に基づいて、前記識別されたハードウェアデバイス上で前記プログラムを実行するために、何れの前記ワードの組み合わせが良いかを判定するように構成されている、
請求項1の処理デバイス。
【請求項8】
前記複数のチューニングパラメータの受信された数値は、テンソル入力値である、
請求項1の処理デバイス。
【請求項9】
前記1つ以上の機
械学習アルゴリズムは、畳み込みニューラルネットワーク、リカレントニューラルネットワーク、及び、結合ニューラルネットワークのうち少なくとも1つを
用いて実行される、
請求項1の処理デバイス。
【請求項10】
処理性能を改善する方法であって、
識別されたハードウェアデバイス上でプログラムの一部を実行するために、それぞれ数値を有するチューニングパラメータを受信することと、
前記チューニングパラメータの数値をワードに変換することと、
1つ以上の機
械学習アルゴリズムを使用して、性能効率に基づいて、前記識別されたハードウェアデバイス上で前記プログラムの一部を実行するために、何れのワードの組み合わせかが良いかを予測することと、
前記識別されたハードウェアデバイス上で前記プログラムの一部を実行するために、予測されたワードの組み合わせを対応する数値に変換することと、を含む、
方法。
【請求項11】
ワードシーケンスに入力されたワード毎に、機械語学習表現を連続して判定することをさらに含
み、前記機械語学習表現は、チューニングパラメータの符号化された表現である、
請求項10の方法。
【請求項12】
前記ワードシーケンス内の別のワードの判定された機械語学習表現に基づいて、前記ワードシーケンス内のワードの機械語学習表現を判定することをさらに含む、
請求項11の方法。
【請求項13】
前記ワード毎の機械語学習表現に基づいて、ワードの中間シーケンスを予測することと、
前記ワードが1つ以上の所定の制約の各々を満たす場合に、前記ワードの中間シーケンスの何れかのワードを、前記予測されたワードの組み合わせの候補ワードとして判定することと、
前記ワードが前記1つ以上の所定の制約の各々を満たさない場合に、前記ワードの中間シーケンスの前記何れかのワードを、前記予測されたワードの組み合わせの候補ワードではないと判定することと、をさらに含む、
請求項10の方法。
【請求項14】
前記1つ以上の所定の制約の各々は、前記ワードの組み合わせが、前記プログラムの一部を実行することによって無効な結果が生じているかどうかを示す、
請求項13の方法。
【請求項15】
前記ワードの中間シーケンスの前記複数のワードを、前記予測されたワードの組み合わせの候補ワードとして判定することと、
他の候補ワードよりも優れた性能効率で前記プログラムの一部を実行する可能性がより高いと判定された候補ワードに基づいて、前記ワードの中間シーケンスの次のワードを予測することと、をさらに含む、
請求項13の方法。
【請求項16】
前記ワードの中間シーケンスの前記複数のワードの各々を、前記他の候補ワードよりも優れた性能効率で前記プログラムの一部を実行する候補ワードの可能性に従ってランク付けすることをさらに含む、
請求項15の方法。
【請求項17】
前記性能効率は、前記プログラムの一部を実行する速度又は時間の尺度であり、
前記方法は、前記ワードの他の組み合わせよりも速く又は短い時間で前記プログラムの一部を実行させるために何れの前記ワードの組み合わせが良いかを予測することによって、前記性能効率に基づいて、前記識別されたハードウェアデバイス上で前記プログラムを実行するために、何れの前記ワードの組み合わせが良いかを判定することを含む、
請求項11の方法。
【請求項18】
前記複数のチューニングパラメータの受信された数値は、テンソル入力値である、
請求項11の方法。
【請求項19】
前記1つ以上の機
械学習アルゴリズムは、畳み込みニューラルネットワーク、リカレントニューラルネットワーク、及び、結合ニューラルネットワークのうち少なくとも1つを
用いて実行される、
請求項11の方法。
【請求項20】
コンピュータに方法を実行させるための命令を有するコンピュータ可読記憶媒体であって、
前記方法は、
識別されたハードウェアデバイス上でプログラムの一部を実行するために、それぞれ数値を有するチューニングパラメータを受信することと、
前記チューニングパラメータの数値をワードに変換することと、
1つ以上の機
械学習アルゴリズムを使用して、性能効率に基づいて、前記識別されたハードウェアデバイス上で前記プログラムの一部を実行するために、何れのワードの組み合わせかが良いかを予測することと、
前記識別されたハードウェアデバイス上で前記プログラムの一部を実行するために、予測されたワードの組み合わせを対応する数値に変換することと、を含む、
コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願への相互参照)
本願は、2019年9月4日に出願された「METHOD AND APPARATUS FOR PREDICTING KERNEL TUNING PARAMETERS」と題される米国特許出願第16/560,954号の利益を主張し、その全体が、言及することによって本明細書に組み込まれる。
【背景技術】
【0002】
プログラムの性能効率は、例えば、プログラムの命令がハードウェア(例えば、集積回路(IC)又はチップ)上で実行される速度又は時間によって判定される。ハードウェアの物理的特性及び仕様は、ハードウェアの世代又はバージョンによって異なる。したがって、プログラムの性能効率は、通常、ハードウェアデバイスの異なる世代間で大きく異なる。プログラムは、通常、異なるハードウェアに対するプログラムの性能効率を変化させるために使用されるチューニングパラメータを含む。
【0003】
添付図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
【図面の簡単な説明】
【0004】
【
図1】本開示の1つ以上の特徴を実装可能な例示的なデバイスのブロック図である。
【
図2】追加の詳細を示す
図1のデバイスのブロック図である。
【
図3】プログラムのチューニングパラメータを予測する方法の一例を示すブロック図である。
【
図4】
図3に示す言語学習及び予測を実施する例示的な方法を示す図である。
【発明を実施するための形態】
【0005】
識別されたハードウェアデバイスで実行するためにプログラムを展開する前に、プログラムは、通常、プログラムのチューニングパラメータの異なる組み合わせを使用してプログラムを実行することによって、識別されたハードウェアのプロファイリングを行い、パフォーマンスの効率を変化させる。識別されたハードウェアのプログラムチューニングパラメータは、結果として生じる性能効率に基づいて選択される。
【0006】
プログラムの性能効率は、プログラムのチューニングパラメータの値によって変わる。プログラムは、通常、複数のチューニングパラメータ(例えば、10個のパラメータ)を含み、各々が複数の異なる選択可能な値(例えば、10個の値)を有する。これらのチューニングパラメータ値の異なる組み合わせによって正しい結果が計算されるが、これらの結果について性能効率が変わることがもたらされる。
【0007】
従来のプロファイリングシステムは、解空間(solution space)を横断する検索アルゴリズムによって、プログラム(例えば、GPUコンピューティングカーネル)のチューニングパラメータ値を判定する。例えば、行列乗算命令の場合、従来のシステムでは、乗算される行列サイズの組み合わせ毎に、記憶されたチューニングパラメータ値のデータベースを継続的に検索する必要がある。
【0008】
これらの検索アルゴリズムはコスト及び時間がかかる。例えば、これらの従来の検索アルゴリズムは、通常、プログラム(例えば、カーネル)を調整するために、多額のコストがかかる計算リソース及び多くの時間を必要とする。さらに、チューニングは、選択したプログラムのみに適用される。選択されていないプログラムを実行すると、通常、パフォーマンスが低下し、ユーザーが自身のカーネルをチューニングすることを選ぶと、長時間の遅延を経験する。また、これらの従来の検索アルゴリズムは、各プログラムに対する異なる入力サイズ及びプログラムが解決しようとしている様々なタイプの問題を考慮したチューニングパラメータ値を提供しない。
【0009】
本明細書で説明するデバイス及び方法は、機械学習アルゴリズムを使用することによって、非効率的な検索アルゴリズムを使用せずに、識別されたハードウェア上で実行されるプログラムのチューニングパラメータ値を効率的に判定して、入力値(例えば、画像の寸法、行列の次元、カラーチャネルの数、実行する操作の数を含む入力テンソル値)に基づいてチューニングパラメータ値を予測する。
【0010】
入力数値に基づいて数値を出力する従来の機械学習モデルとは対照的に、本明細書で説明する機械学習アルゴリズムは、入力数値をワード(すなわち、1文字以上の言語)に変換し、言語モデルを使用して、入力されたワードからパラメータを予測する。言語学習アルゴリズムは、ソース言語(例えば、1つ以上の数値から変換された入力ワード又はワードシーケンス)からターゲット言語(例えば、出力ワードシーケンス)に翻訳することを学習する。次に、出力ワードが数値に変換され、実行可能チューニングパラメータ値を取得する。
【0011】
チューニングパラメータ値は、シーケンスで(並列入力とは対照的である)プログラムに入力されるチューニングパラメータ値に基づいて予測され、チューニングパラメータ値は、スカラー数ではなく個別のワードとしてエンコードされる。次に、個別のワードは、ニューラル機械語翻訳技術(例えば、多層パーセプトロン(MLP)及び他のMLプリミティブ(畳み込み、アクティベーション、バッチ正規化、ドロップアウト、及び、リカレントニューラルネットワーク(RNN))の組み合わせを使用して、ある言語から別の言語に文章を翻訳する技術)を使用して翻訳される。
【0012】
従来の言語モデルとは対照的に、本明細書で説明する機械学習言語アルゴリズムは、事前に判定された(すなわち、実行前に判定された)制約(例えば、パラメータ値の組み合わせが無効であること、スレッド毎に割り当てられたレジスタの最大数、及び、スレッド毎にアクセス可能なメモリ量)に基づいて、チューニングパラメータ値を予測する。制約により、同時に存在できない値又は無効な結果を生じさせる値がチューニングパラメータ値として予測されるのを抑制する。したがって、チューニングパラメータ値が小さな空間(すなわち、潜在的なパラメータ値の小さい数)から予測されるため、制約は、より効率的な予測プロセスを促進し、また、選択されたチューニングパラメータ値が無効な結果を回避するため、より正確な予測を提供する。
【0013】
処理性能を改善する処理デバイスが提供され、処理デバイスは、データを記憶するように構成されたメモリと、メモリと通信するプロセッサと、を含む。プロセッサは、識別されたハードウェアデバイス上でプログラムの一部を実行するために、それぞれ数値を有するチューニングパラメータを受信して、チューニングパラメータの数値をワードに変換するように構成されている。また、プロセッサは、1つ以上の機械語学習アルゴリズムを使用して、性能効率に基づいて、識別されたハードウェアデバイス上でプログラムの一部を実行するために、何れのワードの組み合わせが良いかを予測し、識別されたハードウェアデバイス上でプログラムの一部を実行するために、ワードの予測された組み合わせを対応する数値に変換するように構成されている。
【0014】
処理性能を改善する方法が提供され、この方法は、識別されたハードウェアデバイス上でプログラムの一部を実行するために、それぞれ数値を有するチューニングパラメータを受信することと、チューニングパラメータの数値をワードに変換することと、を含む。また、方法は、1つ以上の機械語学習アルゴリズムを使用して、性能効率に基づいて、識別されたハードウェアデバイス上でプログラムの一部を実行するために、何れのワードの組み合わせが良いかを予測することと、識別されたハードウェアデバイス上でプログラムの一部を実行するために、ワードの予測された組み合わせを対応する数値に変換することと、を含む。
【0015】
コンピュータに方法を実行させるための命令を含む非一時的なコンピュータ可読記憶媒体が提供され、この方法は、識別されたハードウェアデバイス上でプログラムの一部を実行するために、それぞれ数値を有するチューニングパラメータを受信することと、チューニングパラメータの数値をワードに変換することと、を含む。また、方法は、1つ以上の機械語学習アルゴリズムを使用して、性能効率に基づいて、識別されたハードウェアデバイス上でプログラムの一部を実行するために、何れのワードの組み合わせが良いかを予測することと、識別されたハードウェアデバイス上でプログラムの一部を実行するために、ワードの予測された組み合わせを対応する数値に変換することと、を含む。
【0016】
本明細書で使用する場合、プログラムは、プロシージャ又はルーチン(例えば、操作、計算、機能、プロセス、ジョブ)を行うために1つ以上のプロセッサを使用して実行される任意の命令のシーケンスを含む。本明細書で使用する場合、プロセッサ上でプログラムされた命令(例えば、アプリケーション、ドライバ、オペレーティングシステム、又は、他のソフトウェア)の実行は、限定されないが、フェッチ、デコード、実行のスケジューリング、実行の開始、及び、プログラムされた命令の特定の部分の実行(例えば、フルスクリーンでのビデオのレンダリング)等の複数のステージのうち何れかを含む。プログラムされた命令は、チューニングパラメータ及びチューニングパラメータ設定を含み、チューニングパラメータ設定は、ハードウェアデバイス上で実行されるプログラムの性能効率を制御するために使用される調整可能(すなわち、変更可能)な値を有する。
【0017】
図1は、本開示の1つ以上の特徴を実装可能な例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲーミングデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、又は、タブレットコンピュータを含み得る。デバイス100は、プロセッサ102と、メモリ104と、ストレージ106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、デバイス100は、オプションで、入力ドライバ112及び出力ドライバ114を含み得る。デバイス100は、
図1に示されていない追加のコンポーネントを含み得ることを理解されたい。
【0018】
様々な代替例では、プロセッサ102は、中央処理装置(CPU)、グラフィックスプロセシングユニット(GPU)、同一のダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUであり得る。様々な代替例では、メモリ104は、プロセッサ102と同一のダイ上に位置する、又は、プロセッサ102とは別に位置する。メモリ104は、揮発性メモリ又は不揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM、キャッシュ)を含む。
【0019】
ストレージ106は、固定式ストレージ又はリムーバブルストレージ(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、又は、フラッシュドライブ)を含む。入力デバイス108は、限定されないが、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロホン、加速度計、ジャイロスコープ、バイオメトリックススキャナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信用及び/若しくは受信用の無線ローカルエリアネットワークカード)を含む。出力デバイス110は、限定されないが、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上のライト、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信用及び/若しくは受信用の無線ローカルエリアネットワークカード)を含む。
【0020】
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。入力ドライバ112及び出力ドライバ114がオプションのコンポーネントであることと、入力ドライバ112及び出力ドライバ114が存在しない場合には、デバイス100が同様に動作することに留意されたい。出力ドライバ114は、表示デバイス118に結合されたアクセラレーテッド処理デバイス(APD)116を含む。APDは、プロセッサ102から計算コマンド及びグラフィックスレンダリングコマンドを受け入れ、それらの計算コマンド及びグラフィックスレンダリングコマンドを処理し、表示するために表示デバイス118にピクセル出力を提供するように構成されている。以下により詳細に説明するように、APD116は、単一命令複数データ(SIMD)パラダイムに従って計算を行うように構成された1つ以上の並列処理ユニットを含む。したがって、様々な機能が、APD116によって又はAPD116と連動して行われるものとして本明細書で説明しているが、様々な代替例では、APD116によって行われるものとして説明する機能は、ホストプロセッサ(例えば、プロセッサ102)によって駆動されず、表示デバイス118にグラフィカル出力を提供するように構成された同様の機能を有する他のコンピューティングデバイスによって追加的に又は代替的に行われる。例えば、SIMDパラダイムに従って処理タスクを行う任意の処理システムが、本明細書で説明する機能を行うように構成され得ることが想定される。代替的に、SIMDパラダイムに従って処理タスクを行わないコンピューティングシステムは、本明細書で説明する機能を行うことが想定される。
【0021】
図2は、APD116上での処理タスクの実行に関連する追加の詳細を示す、デバイス100のブロック図である。APD116は、複数の計算ユニット132と、処理パイプライン(例えば、グラフィックス処理パイプライン)134と、スケジューラ136と、を含む。プロセッサ102は、システムメモリ104内に、プロセッサ102が実行するための1つ以上の制御論理モジュールを保持する。制御論理モジュールは、オペレーティングシステム120と、カーネルモードドライバ122と、アプリケーション126と、を含む。これらの制御論理モジュールは、プロセッサ102及びAPD116の操作の様々な特徴を制御する。例えば、オペレーティングシステム120は、ハードウェアと直接通信し、プロセッサ102で実行される他のソフトウェアにハードウェアへのインターフェースを提供する。カーネルモードドライバ122は、例えば、プロセッサ102上で実行されるソフトウェア(例えば、アプリケーション126)にアプリケーションプログラミングインターフェース(API)を提供することによって、APD116の操作を制御し、APD116の様々な機能にアクセスする。また、カーネルモードドライバ122は、APD116の処理コンポーネント(以下により詳細に説明するSIMDユニット138等)による実行のために、プログラムをコンパイルするジャストインタイムコンパイラを含む。
【0022】
APD116は、並列処理に適し得るグラフィックス操作及び非グラフィックス操作等の選択された機能のためのコマンド及びプログラムを実行する。APD116は、ピクセル操作、幾何学計算等のグラフィックスパイプライン操作を実行するために、及び、プロセッサ102から受信したコマンドに基づいて表示デバイス118に画像をレンダリングするために使用することができる。また、APD116は、プロセッサ102から受信したコマンドに基づいて、ビデオに関連する操作、物理シミュレーション、計算流体力学、又は、他のタスク等のように、グラフィックス操作に直接関連しない計算処理操作も実行する。
【0023】
APD116は、SIMDパラダイムに従って並列にプロセッサ102の要求に応じて操作を行うように構成された1つ以上のSIMDユニット138を含む計算ユニット132を含む。SIMDパラダイムは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有し、ひいては、同じプログラムを実行するが、異なるデータでそのプログラムを実行することが可能なパラダイムである。一例では、SIMDユニット138の各々は16個のレーンを含み、各レーンは、SIMDユニット138の他のレーンと同時に同じ命令を実行するが、異なるデータでその命令を実行することができる。全てのレーンが所定の命令を実行する必要がない場合、予測を使用してレーンをオフにすることができる。また、予測を使用して、分岐する制御フローでプログラムを実行することができる。より具体的には、制御フローが個々のレーンによって行われる計算に基づく条件付き分岐又は他の命令を有するプログラムの場合、現在実行されていない制御フローパスに対応するレーンの予測、及び、異なる制御フローパスの直列実行は、任意の制御フローを可能にする。
【0024】
計算ユニット132における実行の基本単位は、ワークアイテムである。各々のワークアイテムは、特定のレーンにおいて並列に実行されることになるプログラムの単一のインスタンス化を表す。ワークアイテムは、単一のSIMD処理ユニット138で「ウェーブフロント」として同時に実行することができる。1つ以上のウェーブフロントが「ワークグループ」に含まれ、「ワークグループ」は、同一のプログラムを実行するように指定されたワークアイテムの集合を含む。ワークグループは、ワークグループを構成するウェーブフロントの各々を実行することによって実行することができる。代替例では、ウェーブフロントは、単一のSIMDユニット138上で連続して、又は、異なるSIMDユニット138上で部分的若しくは完全に並列に実行される。ウェーブフロントは、単一のSIMDユニット138上で同時に実行可能なワークアイテムの最大の集合として考えられ得る。したがって、プロセッサ102から受信したコマンドが、プログラムが単一のSIMDユニット138上で同時に実行できない程度に特定のプログラムが並列処理されることを示す場合、そのプログラムは、2つ以上のSIMDユニット138上で並列処理されるウェーブフロント、又は、同一のSIMDユニット138上で直列処理される(又は、必要に応じて、並列処理及び直列処理の両方が行われる)ウェーブフロントに分割される。スケジューラ136は、異なる計算ユニット132及びSIMDユニット138上で様々なウェーブフロントをスケジューリングすることに関連する操作を行うように構成されている。
【0025】
計算ユニット132によって許容される並列性は、画素値計算、頂点変換、及び、他のグラフィックス操作等のグラフィックス関連操作に適切である。したがって、ある場合、プロセッサ102からグラフィックスプロセッシングコマンドを受け付けるグラフィックス処理パイプライン134は、並列に実行するために計算タスクを計算ユニット132に提供する。
【0026】
また、計算ユニット132を使用して、グラフィックに関連しない又はグラフィックス処理パイプライン134の「通常」操作の一部として行われない計算タスク(例えば、グラフィックス処理パイプライン134の操作に対して行われる処理を補足するために行われるカスタム操作)を行う。プロセッサ102上で実行されるアプリケーション126又は他のソフトウェアは、そのような計算タスクを定義するプログラムを、実行のためにAPD116に送信する。
【0027】
図3は、識別されたハードウェアデバイス上で実行されるプログラムのチューニングパラメータを予測する例示的な方法300を示すブロック図である。エンコード、変換、言語学習、比較及び予測等の方法300の各部分は、例えば、APD116等のプロセッサによって行われる。
【0028】
チューニングパラメータは、本質的にカテゴリー的なパラメータ(例えば、プログラムの性能効率を変えるためにプログラムに提供されるオプションを表すパラメータ)と、例えば、メモリ(例えば、メインメモリ)からアクセスされるデータ量、リンクにわたって行われる並列メモリアクセスの数(例えば、読み取り、書き込み)、入力画像のチャネル数(例えば、画像のカラーチャネル)、出力チャネル数(例えば、ハイパースペクトル画像の出力チャネル)、パイプラインの深さ(例えば、入力深度及び出力深度)等の特定のパラメータをチューニングするための数値を有するパラメータと、を含む。チューニングパラメータの目標値は、例えば、画像の高さ、画像幅、入力チャネルの総数、出力チャネルの総数、及び、一度に処理される画像数等の入力パラメータに従って判定される。さらに、チューニングパラメータは、部分的に、プログラム間で異なる解釈を有するパラメータによって異なる。
【0029】
図3の302に示すように、方法300は、識別されたハードウェアデバイス上で実行されるプログラムの複数のチューニングパラメータ(例えば、ハードウェアデバイスの識別バージョン)に関する数値を受信することを含む。数値チューニングパラメータ値の各々は、例えば、APD116によって連続して(すなわち、順番に)受信される。
【0030】
図3の304に示すように、方法300は、チューニングパラメータのシーケンスにおいて数値をエンコードすることを含む。エンコードは、チューニングパラメータ値を数値から言語のワードに変換することによって行われる。チューニングパラメータ値の変換は、1つの数値をワードに変換することと、1つ以上の数値をワードに変換することと、1つの数値を複数のワードに変換することと、を含む。エンコードの例は、ワンホット(one-hot)エンコードと、ワンホットエンコードから生成された高密度ベクトルと、を含む。
【0031】
変換された各ワードは、機械語モデル312に提供され、言語学習及び予測プロセス306の一部として制約314に基づいて予測され、機械語学習及び予測アルゴリズムを使用して、性能効率に基づいて、識別されたハードウェアデバイス上でプログラムを実行するために何れのワードを使用するかを予測する。すなわち、機械語学習アルゴリズムは、何れのワードの組み合わせ(数値チューニングパラメータ値に対応する組み合わせ)が、識別されたハードウェアデバイス上でプログラムの一部を効率的に実行することをもたらすかを予測する(例えば、そのワードの組み合わせによって、他のワードの組み合わせよりも速くプログラムの一部が実行されるか、又は、他のワードの組み合わせよりも短い時間でプログラムの一部が実行されるかを予測する)。
【0032】
機械語モデル312は、1つ以上の機械学習プリミティブに従って、チューニングパラメータの変換されたワード値を処理する。機械学習プリミティブの例は、畳み込みニューラルネットワーク(CNN)と、畳み込み層及びプーリング層と、一方向及び双方向の長短期記憶(LSTM)セル又はゲートされたリカレントユニット(GRU)を含むリカレントニューラルネットワーク(RNN)と、ドロップアウト及び異なるアクティベーション機能を有する、密に接続されたディープニューラルネットワークと、を含む。
【0033】
ワードは制約314に基づいて予測され、制約314は、例えば、パラメータ値の組み合わせが無効であること、スレッド毎に割り当てられたレジスタの最大数、及び、スレッド毎にアクセス可能なメモリ量を含む。制約314により、1つ以上の他のチューニングパラメータと一緒に同時に存在できないチューニングパラメータ値、又は、無効な結果を生じさせるチューニングパラメータ値の予測を防ぐ。制約により、予測が小さな空間で行われるので効率が向上する。さらに、予測されたチューニングパラメータ値では無効な結果が生じないため、制約によって予測の精度が向上する。
【0034】
図3の308に示すように、方法300は、予測されたチューニングパラメータ値をデコードすることを含む。デコードは、予測されたチューニングパラメータワード値を変換して数値に戻すことによって行われる。次に、
図3の310に示すように、予測されたチューニングパラメータ数値は、予測された実行可能チューニングパラメータ値として提供される。プログラムの一部は、予測された実行可能チューニングパラメータ値を使用して、識別されたハードウェアデバイス上で実行される。
【0035】
ここで、言語学習及び予測プロセス306の例は、
図4に関してより詳細に説明される。上述したように、複数のチューニングパラメータ値を並行して受信するチューニングパラメータを判定するための従来のシステムとは対照的に、シーケンスでプログラムに入力されるチューニングパラメータ値に基づいて、本開示の特徴に応じて、チューニングパラメータ値が予測される。すなわち、入力チューニングパラメータ値の各々は連続して(すなわち、順番に)受信され、チューニングパラメータ値がシーケンスとして予測される。
【0036】
図4は、入力チューニングパラメータ値の各々が連続して受信される
図3の306に示す言語学習及び予測を実施する方法400の例を示す。以下により詳細に説明するように、
図4は、制約314を使用して中間チューニングパラメータ値候補のフィルタリングと、予測されたチューニングパラメータ値候補(例えば、他のチューニングパラメータ値候補よりも優れた性能効率性でプログラムの一部を実行する可能性が高いと判別された候補)を使用して、シーケンスにおける次のチューニングパラメータ値候補を予測することと、を含む、予測シーケンスの段階を示す。例えば、エンコード、変換、言語学習、比較、フィルタリング、判別、及び、予測等の方法400の各部分は、例えば、APD116等のプロセッサによって行われる。
【0037】
図4に示すように、入力ワードシーケンス402の各ワード402(1)~402(n)が受信される。表現学習プロセス404は、1つ以上の機械学習プリミティブ(例えば、上述した1つ以上の機械学習プリミティブ)に従って各ワード402(1)~402(n)に対して行われ、内部表現406(例えば、機械語モデル312の内部のワード402(1)~402(n)の圧縮表現)を判定する。表現学習404の各ブロックは、例えば、入力ワードシーケンス402の対応するワードの内部表現を判定するために使用されるメモリセルを表す。
【0038】
例えば、表現学習404の間に、第1のワード402(1)の内部表現が、第1のワード402(1)の内部表現406として出力される(例えば、一時的に記憶される)。また、第1のワード402(1)の内部表現は、上流に提供され(第1のワード402(1)のメモリセルと、第2のワード402(2)のメモリセルと、の間の左から右に向かう矢印によって示されている)、第2のワード402(2)の内部表現を判定するために使用される。
【0039】
第2のワード402(2)の中間内部表現は、第1のワード402(1)及び第2のワード402(2)の内部表現に基づいて判定される。次に、第2のワード402(2)の中間内部表現は、第2のワード402(2)の内部表現406として出力される(例えば、一時的に記憶される)。また、第2のワード402(2)の内部表現は、第3のワード402(3)のメモリセルに向かうように上流に提供され(第2のワード402(2)のメモリセルと、第3のワード402(3)のメモリセルとの間の左から右に向かう矢印によって示されている)、第3のワード402(3)の内部表現を判定するために使用される。この処理は、入力ワードシーケンス402の残りのワード毎に、上流に(すなわち、表現学習404の左から右に向かう矢印の方向に)向かって継続する。
【0040】
図4に示す例では、表現学習404は、双方向学習を含む。すなわち、各ワード402(1)~402(n)の内部表現も下流に(すなわち、表現学習404の右から左に向かう矢印の方向に)提供される。したがって、各ワード402(1)~402(n-1)の内部表現は、入力ワードシーケンス402の上流ワードに基づいて判定される(すなわち、直接的にシーケンスにおける次の上流ワードに基づいて、間接的に入力ワードシーケンス402の他の上流ワードに基づいて判定される)。また、本開示の特徴は、例えば、一方向学習(すなわち、左から右に向かう矢印の方向)によって実施される。
【0041】
ワードの内部表現406を使用して、識別されたハードウェアデバイス上でプログラムの一部を実行するために、ワードのシーケンスが予測される。予測プロセスは、中間ワードシーケンス408及び出力ワードシーケンス410を生成することを含む。以下に説明するように、複数のチューニングパラメータ候補は、他の候補よりも優れた性能効率をもたらす可能性が高いと判定された候補を含み、実行のためにワードのシーケンスを予測するために使用される。例えば、最初の候補が1つ以上の制約314を満たさない場合、次に可能性が高い候補を使用して、シーケンスにおけるワードを予測する。
【0042】
一例では、予測プロセス中に使用される数値チューニングパラメータ候補が事前に判定される(すなわち、実行前に判定される)。例えば、所定の予測数kが伝播され、k個の予測が生じる。
【0043】
次に、ワードシーケンス402のワード402(1)~402(n)の内部表現が、中間ワードシーケンス408を生成するために同様の機械学習構造に提供される。
図4の中間ワードシーケンス408の各ブロックは、例えば、中間ワードシーケンス408の対応するワード408(1)~408(n)(すなわち、チューニングパラメータ値候補)を中間的に予測するために使用されるメモリセルを表す。
【0044】
中間ワードシーケンス408の第1のワード408(1)(すなわち、第1の候補)は、上述した1つ以上の機械学習プリミティブに基づいて、識別されたハードウェアデバイス上でプログラムの一部を実行するために中間的に予測される。第1のワード408(1)の内部表現は、プログラムの一部(例えば、カーネルの一部)に対する1つ以上の制約314に基づいて分析される。すなわち、第1のワード408(1)が1つ以上の制約314の各々を満たす場合、第1のワード408(1)は、出力ワードシーケンス410のパラメータ値候補として中間的に予測される。第1のワード408(1)が1つ以上の制約314の各々を満たさない場合、第1のワード408(1)は、出力ワードシーケンス410のパラメータ値候補として選択されない。
【0045】
また、第1のワード408(1)の内部表現は、中間ワードシーケンス408の第2のワード408(2)を判定するために、次のメモリセル(すなわち、次の上流メモリセル)にも提供される。第2のワード408(2)が第1のワード408(1)の代わりに1つ以上の制約314の各々を満たす場合、第2のワード408(2)は、出力ワードシーケンス410のパラメータ値候補として中間的に予測される。第2のワード408(2)が1つ以上の制約314の各々を満たさない場合、第2のワード408(2)は、出力ワードシーケンス410のパラメータ値候補として選択されない。中間ワードシーケンス408の残りのワード毎に処理が継続される。
【0046】
また、予測プロセスは、チューニングパラメータ値を他のチューニングパラメータ値と比較して、何れのチューニングパラメータ値の組み合わせが、識別されたハードウェアデバイス上でプログラムの一部を実行するために、チューニングパラメータ値候補の他の組み合わせよりも優れた性能効率をもたらすものであるかを予測するアテンションメカニズム(attention mechanism)を含む。
【0047】
例えば、出力ワードシーケンス410のチューニングパラメータ値候補410(1)~410(n)は、他のチューニングパラメータ値候補よりも優れた性能効率でプログラムの一部を実行する可能性に従って比較及びランク付けされる。出力ワードシーケンス410の1つ以上のチューニングパラメータ値候補(例えば、他の候補よりも優れた性能効率をもたらす可能性が高いと判定されたチューニングパラメータ値候補)は、中間ワードシーケンス408のメモリセルに戻すように提供され、中間ワードシーケンス408の1つ以上のワード408(1)~408(n)を中間的に予測する。したがって、機械学習アルゴリズムは、入力チューニングパラメータ値(例えば、入力ワードシーケンス402の値)と、機械学習アルゴリズムにフィードバックされる予測されたチューニングパラメータ値候補と、に基づいて、チューニングパラメータ値を予測することを学習する。
【0048】
次に、
図3のブロック308に示すように、出力ワードシーケンス410の予測されたチューニングパラメータ値候補410(1)~410(n)を変換して数値に戻し、識別されたハードウェアデバイス上でプログラムの一部を実行するために、
図3に示す予測された実行可能チューニングパラメータ値310として提供される。
【0049】
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を伴わず単独で、又は、他の特徴及び要素の有無にかかわらず様々な組み合わせで使用することができる。
【0050】
提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアで実施することができる。適切なプロセッサは、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタルシグナルプロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、任意の他のタイプの集積回路(IC)、及び/又は、状態機械を含む。このようなプロセッサは、ハードウェア記述言語(HDL)命令及びネットリストを含む他の中間データ(コンピュータ可読媒体に記憶可能な命令)の処理結果を使用して製造プロセスを構成することによって、製造されてもよい。このような処理結果は、電力性能管理のためにアプリケーションプロファイリングを実施するプロセッサを製造する半導体製造プロセスで使用されるマスクワークであってもよい。
【0051】
図に示す及び/又は本明細書で説明する様々な機能ユニット(限定されないが、プロセッサ102、入力ドライバ112、入力デバイス108、出力ドライバ114、出力デバイス110、アクセラレーテッド処理デバイス116、スケジューラ136、グラフィックス処理パイプライン134、計算ユニット132、及び、SIMDユニット138を含む)は、汎用コンピュータ、プロセッサ若しくはプロセッサコアとして、又は、プログラム、ソフトウェア若しくはファームウェアとして実装され、非一時的なコンピュータ可読記憶媒体又は別の媒体に記憶され、汎用コンピュータ、プロセッサ又はプロセッサコアによって実行可能であり得る。
【0052】
本明細書で提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア、ファームウェアに実装されてもよい。非一時的なコンピュータ可読記憶媒体の例は、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、CD-ROMディスク及びデジタル多用途ディスク(DVD)等の光学媒体を含む。