JP2022546271A - Method and apparatus for predicting kernel tuning parameters - Google Patents
Method and apparatus for predicting kernel tuning parameters Download PDFInfo
- Publication number
- JP2022546271A JP2022546271A JP2022510786A JP2022510786A JP2022546271A JP 2022546271 A JP2022546271 A JP 2022546271A JP 2022510786 A JP2022510786 A JP 2022510786A JP 2022510786 A JP2022510786 A JP 2022510786A JP 2022546271 A JP2022546271 A JP 2022546271A
- Authority
- JP
- Japan
- Prior art keywords
- word
- words
- program
- executing
- machine language
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3409—Recording 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
- G06F11/3485—Performance evaluation by tracing or monitoring for I/O devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Machine Translation (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
処理性能を改善する処理デバイスが提供され、処理デバイスは、データを記憶するように構成されたメモリと、メモリと通信するプロセッサと、を備える。プロセッサは、識別されたハードウェアデバイス上でプログラムの一部を実行するために、それぞれ数値を有するチューニングパラメータを受信し、チューニングパラメータの数値をワードに変換するように構成されている。また、プロセッサは、1つ以上の機械語学習アルゴリズムを使用して、性能効率に基づいて、識別されたハードウェアデバイス上でプログラムの一部を実行するために、何れのワードの組み合わせが良いかを予測し、識別されたハードウェアデバイス上でプログラムの一部を実行するために、ワードの予測された組み合わせを対応する数値に変換するように構成されている。【選択図】図3A processing device for improving processing performance is provided, the processing device comprising a memory configured to store data, and a processor in communication with the memory. A processor is configured to receive tuning parameters each having a numerical value and convert the numerical values of the tuning parameters into words for executing the portion of the program on the identified hardware device. The processor also uses one or more machine language learning algorithms to determine which word combination is better for executing the portion of the program on the identified hardware device based on performance efficiency. and convert the predicted combinations of words into corresponding numerical values for execution of the program portion on the identified hardware device. [Selection drawing] Fig. 3
Description
(関連出願への相互参照)
本願は、2019年9月4日に出願された「METHOD AND APPARATUS FOR PREDICTING KERNEL TUNING PARAMETERS」と題される米国特許出願第16/560,954号の利益を主張し、その全体が、言及することによって本明細書に組み込まれる。
(Cross reference to related application)
This application claims the benefit of U.S. patent application Ser. incorporated herein by.
プログラムの性能効率は、例えば、プログラムの命令がハードウェア(例えば、集積回路(IC)又はチップ)上で実行される速度又は時間によって判定される。ハードウェアの物理的特性及び仕様は、ハードウェアの世代又はバージョンによって異なる。したがって、プログラムの性能効率は、通常、ハードウェアデバイスの異なる世代間で大きく異なる。プログラムは、通常、異なるハードウェアに対するプログラムの性能効率を変化させるために使用されるチューニングパラメータを含む。 A program's performance efficiency is determined, for example, by the speed or time at which the program's instructions are executed on the hardware (eg, integrated circuit (IC) or chip). The physical characteristics and specifications of hardware vary by hardware generation or version. Therefore, the performance efficiency of programs usually varies greatly between different generations of hardware devices. Programs typically include tuning parameters that are used to vary the program's performance efficiency on different hardware.
添付図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。 A more detailed understanding can be obtained from the following description given by way of example in conjunction with the accompanying drawings.
識別されたハードウェアデバイスで実行するためにプログラムを展開する前に、プログラムは、通常、プログラムのチューニングパラメータの異なる組み合わせを使用してプログラムを実行することによって、識別されたハードウェアのプロファイリングを行い、パフォーマンスの効率を変化させる。識別されたハードウェアのプログラムチューニングパラメータは、結果として生じる性能効率に基づいて選択される。 Before deploying a program to run on the identified hardware device, the program typically profiles the identified hardware by running the program using different combinations of the program's tuning parameters. , varying performance efficiency. Program tuning parameters for the identified hardware are selected based on resulting performance efficiency.
プログラムの性能効率は、プログラムのチューニングパラメータの値によって変わる。プログラムは、通常、複数のチューニングパラメータ(例えば、10個のパラメータ)を含み、各々が複数の異なる選択可能な値(例えば、10個の値)を有する。これらのチューニングパラメータ値の異なる組み合わせによって正しい結果が計算されるが、これらの結果について性能効率が変わることがもたらされる。 A program's performance efficiency depends on the values of the program's tuning parameters. A program typically includes multiple tuning parameters (eg, 10 parameters), each with multiple different selectable values (eg, 10 values). Different combinations of these tuning parameter values will compute correct results, but will result in varying performance efficiencies for these results.
従来のプロファイリングシステムは、解空間(solution space)を横断する検索アルゴリズムによって、プログラム(例えば、GPUコンピューティングカーネル)のチューニングパラメータ値を判定する。例えば、行列乗算命令の場合、従来のシステムでは、乗算される行列サイズの組み合わせ毎に、記憶されたチューニングパラメータ値のデータベースを継続的に検索する必要がある。 Conventional profiling systems determine tuning parameter values for a program (eg, a GPU computing kernel) by a search algorithm that traverses a solution space. For example, for matrix multiplication instructions, conventional systems require a continuous search of a database of stored tuning parameter values for each combination of matrix sizes to be multiplied.
これらの検索アルゴリズムはコスト及び時間がかかる。例えば、これらの従来の検索アルゴリズムは、通常、プログラム(例えば、カーネル)を調整するために、多額のコストがかかる計算リソース及び多くの時間を必要とする。さらに、チューニングは、選択したプログラムのみに適用される。選択されていないプログラムを実行すると、通常、パフォーマンスが低下し、ユーザーが自身のカーネルをチューニングすることを選ぶと、長時間の遅延を経験する。また、これらの従来の検索アルゴリズムは、各プログラムに対する異なる入力サイズ及びプログラムが解決しようとしている様々なタイプの問題を考慮したチューニングパラメータ値を提供しない。 These search algorithms are costly and time consuming. For example, these conventional search algorithms typically require costly computational resources and a lot of time to tune programs (eg, kernels). Additionally, tuning applies only to selected programs. Running unselected programs usually results in poor performance, and users who choose to tune their kernels experience long delays. Also, these conventional search algorithms do not provide tuning parameter values that take into account the different input sizes for each program and the various types of problems the program is trying to solve.
本明細書で説明するデバイス及び方法は、機械学習アルゴリズムを使用することによって、非効率的な検索アルゴリズムを使用せずに、識別されたハードウェア上で実行されるプログラムのチューニングパラメータ値を効率的に判定して、入力値(例えば、画像の寸法、行列の次元、カラーチャネルの数、実行する操作の数を含む入力テンソル値)に基づいてチューニングパラメータ値を予測する。 The devices and methods described herein use machine learning algorithms to efficiently obtain tuning parameter values for programs running on identified hardware without using inefficient search algorithms. to predict tuning parameter values based on input values (eg, input tensor values including image dimensions, matrix dimensions, number of color channels, number of operations to perform).
入力数値に基づいて数値を出力する従来の機械学習モデルとは対照的に、本明細書で説明する機械学習アルゴリズムは、入力数値をワード(すなわち、1文字以上の言語)に変換し、言語モデルを使用して、入力されたワードからパラメータを予測する。言語学習アルゴリズムは、ソース言語(例えば、1つ以上の数値から変換された入力ワード又はワードシーケンス)からターゲット言語(例えば、出力ワードシーケンス)に翻訳することを学習する。次に、出力ワードが数値に変換され、実行可能チューニングパラメータ値を取得する。 In contrast to conventional machine learning models that output numeric values based on input numeric values, the machine learning algorithms described herein convert input numeric values into words (i.e., languages of one or more letters) and use language models is used to predict parameters from input words. A language learning algorithm learns to translate from a source language (eg, an input word or word sequence converted from one or more numbers) to a target language (eg, an output word sequence). The output word is then converted to a number to obtain the executable tuning parameter value.
チューニングパラメータ値は、シーケンスで(並列入力とは対照的である)プログラムに入力されるチューニングパラメータ値に基づいて予測され、チューニングパラメータ値は、スカラー数ではなく個別のワードとしてエンコードされる。次に、個別のワードは、ニューラル機械語翻訳技術(例えば、多層パーセプトロン(MLP)及び他のMLプリミティブ(畳み込み、アクティベーション、バッチ正規化、ドロップアウト、及び、リカレントニューラルネットワーク(RNN))の組み合わせを使用して、ある言語から別の言語に文章を翻訳する技術)を使用して翻訳される。 Tuning parameter values are predicted based on tuning parameter values entered into the program in sequence (as opposed to parallel input), where the tuning parameter values are encoded as separate words rather than scalar numbers. Individual words are then processed using a combination of neural machine language translation techniques such as multi-layer perceptrons (MLP) and other ML primitives (convolution, activation, batch normalization, dropout, and recurrent neural networks (RNN)). is translated using the technology of translating text from one language to another using
従来の言語モデルとは対照的に、本明細書で説明する機械学習言語アルゴリズムは、事前に判定された(すなわち、実行前に判定された)制約(例えば、パラメータ値の組み合わせが無効であること、スレッド毎に割り当てられたレジスタの最大数、及び、スレッド毎にアクセス可能なメモリ量)に基づいて、チューニングパラメータ値を予測する。制約により、同時に存在できない値又は無効な結果を生じさせる値がチューニングパラメータ値として予測されるのを抑制する。したがって、チューニングパラメータ値が小さな空間(すなわち、潜在的なパラメータ値の小さい数)から予測されるため、制約は、より効率的な予測プロセスを促進し、また、選択されたチューニングパラメータ値が無効な結果を回避するため、より正確な予測を提供する。 In contrast to traditional language models, the machine learning language algorithms described herein rely on pre-determined (i.e., pre-execution) constraints (e.g., invalid combinations of parameter values). , the maximum number of registers allocated per thread, and the amount of memory accessible per thread). Constraints prevent values that cannot exist simultaneously or that produce invalid results from being predicted as tuning parameter values. Constraints therefore facilitate a more efficient prediction process, as the tuning parameter values are predicted from a small space (i.e., a small number of potential parameter values), and also prevent the selected tuning parameter values from being invalid. Provide more accurate forecasts to avoid consequences.
処理性能を改善する処理デバイスが提供され、処理デバイスは、データを記憶するように構成されたメモリと、メモリと通信するプロセッサと、を含む。プロセッサは、識別されたハードウェアデバイス上でプログラムの一部を実行するために、それぞれ数値を有するチューニングパラメータを受信して、チューニングパラメータの数値をワードに変換するように構成されている。また、プロセッサは、1つ以上の機械語学習アルゴリズムを使用して、性能効率に基づいて、識別されたハードウェアデバイス上でプログラムの一部を実行するために、何れのワードの組み合わせが良いかを予測し、識別されたハードウェアデバイス上でプログラムの一部を実行するために、ワードの予測された組み合わせを対応する数値に変換するように構成されている。 A processing device for improving processing performance is provided, the processing device including a memory configured to store data and a processor in communication with the memory. A processor is configured to receive tuning parameters each having a numerical value and convert the numerical values of the tuning parameters into words for executing the portion of the program on the identified hardware device. The processor also uses one or more machine language learning algorithms to determine which word combination is better for executing the portion of the program on the identified hardware device based on performance efficiency. and convert the predicted combinations of words into corresponding numerical values for execution of the portion of the program on the identified hardware device.
処理性能を改善する方法が提供され、この方法は、識別されたハードウェアデバイス上でプログラムの一部を実行するために、それぞれ数値を有するチューニングパラメータを受信することと、チューニングパラメータの数値をワードに変換することと、を含む。また、方法は、1つ以上の機械語学習アルゴリズムを使用して、性能効率に基づいて、識別されたハードウェアデバイス上でプログラムの一部を実行するために、何れのワードの組み合わせが良いかを予測することと、識別されたハードウェアデバイス上でプログラムの一部を実行するために、ワードの予測された組み合わせを対応する数値に変換することと、を含む。 A method of improving processing performance is provided, comprising: receiving tuning parameters each having a numerical value; and converting to The method also uses one or more machine language learning algorithms to determine which word combination is better for executing the portion of the program on the identified hardware device based on performance efficiency. and converting the predicted combinations of words into corresponding numerical values for executing the portion of the program on the identified hardware device.
コンピュータに方法を実行させるための命令を含む非一時的なコンピュータ可読記憶媒体が提供され、この方法は、識別されたハードウェアデバイス上でプログラムの一部を実行するために、それぞれ数値を有するチューニングパラメータを受信することと、チューニングパラメータの数値をワードに変換することと、を含む。また、方法は、1つ以上の機械語学習アルゴリズムを使用して、性能効率に基づいて、識別されたハードウェアデバイス上でプログラムの一部を実行するために、何れのワードの組み合わせが良いかを予測することと、識別されたハードウェアデバイス上でプログラムの一部を実行するために、ワードの予測された組み合わせを対応する数値に変換することと、を含む。 A non-transitory computer-readable storage medium is provided that includes instructions for causing a computer to perform a method, the method for performing a portion of a program on an identified hardware device, each tuning having a numerical value. Receiving the parameter and converting the numerical value of the tuning parameter to a word. The method also uses one or more machine language learning algorithms to determine which word combination is better for executing the portion of the program on the identified hardware device based on performance efficiency. and converting the predicted combinations of words into corresponding numerical values for executing the portion of the program on the identified hardware device.
本明細書で使用する場合、プログラムは、プロシージャ又はルーチン(例えば、操作、計算、機能、プロセス、ジョブ)を行うために1つ以上のプロセッサを使用して実行される任意の命令のシーケンスを含む。本明細書で使用する場合、プロセッサ上でプログラムされた命令(例えば、アプリケーション、ドライバ、オペレーティングシステム、又は、他のソフトウェア)の実行は、限定されないが、フェッチ、デコード、実行のスケジューリング、実行の開始、及び、プログラムされた命令の特定の部分の実行(例えば、フルスクリーンでのビデオのレンダリング)等の複数のステージのうち何れかを含む。プログラムされた命令は、チューニングパラメータ及びチューニングパラメータ設定を含み、チューニングパラメータ設定は、ハードウェアデバイス上で実行されるプログラムの性能効率を制御するために使用される調整可能(すなわち、変更可能)な値を有する。 As used herein, a program includes any sequence of instructions that are executed using one or more processors to perform a procedure or routine (e.g., operation, computation, function, process, job) . As used herein, execution of programmed instructions (e.g., applications, drivers, operating systems, or other software) on a processor includes, but is not limited to, fetching, decoding, scheduling execution, starting execution , and execution of a particular portion of programmed instructions (eg, rendering a video in full screen). Programmed instructions include tuning parameters and tuning parameter settings, which are adjustable (i.e., changeable) values used to control the performance efficiency of programs executing on hardware devices. have
図1は、本開示の1つ以上の特徴を実装可能な例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲーミングデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、又は、タブレットコンピュータを含み得る。デバイス100は、プロセッサ102と、メモリ104と、ストレージ106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、デバイス100は、オプションで、入力ドライバ112及び出力ドライバ114を含み得る。デバイス100は、図1に示されていない追加のコンポーネントを含み得ることを理解されたい。
FIG. 1 is a block diagram of an
様々な代替例では、プロセッサ102は、中央処理装置(CPU)、グラフィックスプロセシングユニット(GPU)、同一のダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUであり得る。様々な代替例では、メモリ104は、プロセッサ102と同一のダイ上に位置する、又は、プロセッサ102とは別に位置する。メモリ104は、揮発性メモリ又は不揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM、キャッシュ)を含む。
In various alternatives,
ストレージ106は、固定式ストレージ又はリムーバブルストレージ(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、又は、フラッシュドライブ)を含む。入力デバイス108は、限定されないが、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロホン、加速度計、ジャイロスコープ、バイオメトリックススキャナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信用及び/若しくは受信用の無線ローカルエリアネットワークカード)を含む。出力デバイス110は、限定されないが、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上のライト、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信用及び/若しくは受信用の無線ローカルエリアネットワークカード)を含む。
入力ドライバ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パラダイムに従って処理タスクを行わないコンピューティングシステムは、本明細書で説明する機能を行うことが想定される。
図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等)による実行のために、プログラムをコンパイルするジャストインタイムコンパイラを含む。
FIG. 2 is a block diagram of
APD116は、並列処理に適し得るグラフィックス操作及び非グラフィックス操作等の選択された機能のためのコマンド及びプログラムを実行する。APD116は、ピクセル操作、幾何学計算等のグラフィックスパイプライン操作を実行するために、及び、プロセッサ102から受信したコマンドに基づいて表示デバイス118に画像をレンダリングするために使用することができる。また、APD116は、プロセッサ102から受信したコマンドに基づいて、ビデオに関連する操作、物理シミュレーション、計算流体力学、又は、他のタスク等のように、グラフィックス操作に直接関連しない計算処理操作も実行する。
APD 116 executes commands and programs for selected functions such as graphics and non-graphics operations that may be suitable for parallel processing. APD 116 can be used to perform graphics pipeline operations such as pixel manipulation, geometric calculations, etc., and to render images on display device 118 based on commands received from
APD116は、SIMDパラダイムに従って並列にプロセッサ102の要求に応じて操作を行うように構成された1つ以上のSIMDユニット138を含む計算ユニット132を含む。SIMDパラダイムは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有し、ひいては、同じプログラムを実行するが、異なるデータでそのプログラムを実行することが可能なパラダイムである。一例では、SIMDユニット138の各々は16個のレーンを含み、各レーンは、SIMDユニット138の他のレーンと同時に同じ命令を実行するが、異なるデータでその命令を実行することができる。全てのレーンが所定の命令を実行する必要がない場合、予測を使用してレーンをオフにすることができる。また、予測を使用して、分岐する制御フローでプログラムを実行することができる。より具体的には、制御フローが個々のレーンによって行われる計算に基づく条件付き分岐又は他の命令を有するプログラムの場合、現在実行されていない制御フローパスに対応するレーンの予測、及び、異なる制御フローパスの直列実行は、任意の制御フローを可能にする。
APD 116 includes a
計算ユニット132における実行の基本単位は、ワークアイテムである。各々のワークアイテムは、特定のレーンにおいて並列に実行されることになるプログラムの単一のインスタンス化を表す。ワークアイテムは、単一のSIMD処理ユニット138で「ウェーブフロント」として同時に実行することができる。1つ以上のウェーブフロントが「ワークグループ」に含まれ、「ワークグループ」は、同一のプログラムを実行するように指定されたワークアイテムの集合を含む。ワークグループは、ワークグループを構成するウェーブフロントの各々を実行することによって実行することができる。代替例では、ウェーブフロントは、単一のSIMDユニット138上で連続して、又は、異なるSIMDユニット138上で部分的若しくは完全に並列に実行される。ウェーブフロントは、単一のSIMDユニット138上で同時に実行可能なワークアイテムの最大の集合として考えられ得る。したがって、プロセッサ102から受信したコマンドが、プログラムが単一のSIMDユニット138上で同時に実行できない程度に特定のプログラムが並列処理されることを示す場合、そのプログラムは、2つ以上のSIMDユニット138上で並列処理されるウェーブフロント、又は、同一のSIMDユニット138上で直列処理される(又は、必要に応じて、並列処理及び直列処理の両方が行われる)ウェーブフロントに分割される。スケジューラ136は、異なる計算ユニット132及びSIMDユニット138上で様々なウェーブフロントをスケジューリングすることに関連する操作を行うように構成されている。
The basic unit of execution in
計算ユニット132によって許容される並列性は、画素値計算、頂点変換、及び、他のグラフィックス操作等のグラフィックス関連操作に適切である。したがって、ある場合、プロセッサ102からグラフィックスプロセッシングコマンドを受け付けるグラフィックス処理パイプライン134は、並列に実行するために計算タスクを計算ユニット132に提供する。
The parallelism allowed by
また、計算ユニット132を使用して、グラフィックに関連しない又はグラフィックス処理パイプライン134の「通常」操作の一部として行われない計算タスク(例えば、グラフィックス処理パイプライン134の操作に対して行われる処理を補足するために行われるカスタム操作)を行う。プロセッサ102上で実行されるアプリケーション126又は他のソフトウェアは、そのような計算タスクを定義するプログラムを、実行のためにAPD116に送信する。
図3は、識別されたハードウェアデバイス上で実行されるプログラムのチューニングパラメータを予測する例示的な方法300を示すブロック図である。エンコード、変換、言語学習、比較及び予測等の方法300の各部分は、例えば、APD116等のプロセッサによって行われる。
FIG. 3 is a block diagram illustrating an
チューニングパラメータは、本質的にカテゴリー的なパラメータ(例えば、プログラムの性能効率を変えるためにプログラムに提供されるオプションを表すパラメータ)と、例えば、メモリ(例えば、メインメモリ)からアクセスされるデータ量、リンクにわたって行われる並列メモリアクセスの数(例えば、読み取り、書き込み)、入力画像のチャネル数(例えば、画像のカラーチャネル)、出力チャネル数(例えば、ハイパースペクトル画像の出力チャネル)、パイプラインの深さ(例えば、入力深度及び出力深度)等の特定のパラメータをチューニングするための数値を有するパラメータと、を含む。チューニングパラメータの目標値は、例えば、画像の高さ、画像幅、入力チャネルの総数、出力チャネルの総数、及び、一度に処理される画像数等の入力パラメータに従って判定される。さらに、チューニングパラメータは、部分的に、プログラム間で異なる解釈を有するパラメータによって異なる。 Tuning parameters are parameters that are categorical in nature (e.g., parameters that represent options provided to a program to change its performance efficiency) and, for example, the amount of data accessed from memory (e.g., main memory), Number of parallel memory accesses made across the link (e.g. reads, writes), number of input image channels (e.g. color channels of an image), number of output channels (e.g. output channels of a hyperspectral image), pipeline depth parameters with numerical values for tuning specific parameters such as (eg, input depth and output depth). The target values of the tuning parameters are determined according to input parameters such as image height, image width, total number of input channels, total number of output channels, and number of images to be processed at one time. Furthermore, tuning parameters differ, in part, with parameters having different interpretations between programs.
図3の302に示すように、方法300は、識別されたハードウェアデバイス上で実行されるプログラムの複数のチューニングパラメータ(例えば、ハードウェアデバイスの識別バージョン)に関する数値を受信することを含む。数値チューニングパラメータ値の各々は、例えば、APD116によって連続して(すなわち、順番に)受信される。
As shown at 302 of FIG. 3,
図3の304に示すように、方法300は、チューニングパラメータのシーケンスにおいて数値をエンコードすることを含む。エンコードは、チューニングパラメータ値を数値から言語のワードに変換することによって行われる。チューニングパラメータ値の変換は、1つの数値をワードに変換することと、1つ以上の数値をワードに変換することと、1つの数値を複数のワードに変換することと、を含む。エンコードの例は、ワンホット(one-hot)エンコードと、ワンホットエンコードから生成された高密度ベクトルと、を含む。
As shown at 304 in FIG. 3,
変換された各ワードは、機械語モデル312に提供され、言語学習及び予測プロセス306の一部として制約314に基づいて予測され、機械語学習及び予測アルゴリズムを使用して、性能効率に基づいて、識別されたハードウェアデバイス上でプログラムを実行するために何れのワードを使用するかを予測する。すなわち、機械語学習アルゴリズムは、何れのワードの組み合わせ(数値チューニングパラメータ値に対応する組み合わせ)が、識別されたハードウェアデバイス上でプログラムの一部を効率的に実行することをもたらすかを予測する(例えば、そのワードの組み合わせによって、他のワードの組み合わせよりも速くプログラムの一部が実行されるか、又は、他のワードの組み合わせよりも短い時間でプログラムの一部が実行されるかを予測する)。
Each transformed word is provided to the
機械語モデル312は、1つ以上の機械学習プリミティブに従って、チューニングパラメータの変換されたワード値を処理する。機械学習プリミティブの例は、畳み込みニューラルネットワーク(CNN)と、畳み込み層及びプーリング層と、一方向及び双方向の長短期記憶(LSTM)セル又はゲートされたリカレントユニット(GRU)を含むリカレントニューラルネットワーク(RNN)と、ドロップアウト及び異なるアクティベーション機能を有する、密に接続されたディープニューラルネットワークと、を含む。
ワードは制約314に基づいて予測され、制約314は、例えば、パラメータ値の組み合わせが無効であること、スレッド毎に割り当てられたレジスタの最大数、及び、スレッド毎にアクセス可能なメモリ量を含む。制約314により、1つ以上の他のチューニングパラメータと一緒に同時に存在できないチューニングパラメータ値、又は、無効な結果を生じさせるチューニングパラメータ値の予測を防ぐ。制約により、予測が小さな空間で行われるので効率が向上する。さらに、予測されたチューニングパラメータ値では無効な結果が生じないため、制約によって予測の精度が向上する。
Words are predicted based on
図3の308に示すように、方法300は、予測されたチューニングパラメータ値をデコードすることを含む。デコードは、予測されたチューニングパラメータワード値を変換して数値に戻すことによって行われる。次に、図3の310に示すように、予測されたチューニングパラメータ数値は、予測された実行可能チューニングパラメータ値として提供される。プログラムの一部は、予測された実行可能チューニングパラメータ値を使用して、識別されたハードウェアデバイス上で実行される。
As shown at 308 in FIG. 3,
ここで、言語学習及び予測プロセス306の例は、図4に関してより詳細に説明される。上述したように、複数のチューニングパラメータ値を並行して受信するチューニングパラメータを判定するための従来のシステムとは対照的に、シーケンスでプログラムに入力されるチューニングパラメータ値に基づいて、本開示の特徴に応じて、チューニングパラメータ値が予測される。すなわち、入力チューニングパラメータ値の各々は連続して(すなわち、順番に)受信され、チューニングパラメータ値がシーケンスとして予測される。
An example language learning and
図4は、入力チューニングパラメータ値の各々が連続して受信される図3の306に示す言語学習及び予測を実施する方法400の例を示す。以下により詳細に説明するように、図4は、制約314を使用して中間チューニングパラメータ値候補のフィルタリングと、予測されたチューニングパラメータ値候補(例えば、他のチューニングパラメータ値候補よりも優れた性能効率性でプログラムの一部を実行する可能性が高いと判別された候補)を使用して、シーケンスにおける次のチューニングパラメータ値候補を予測することと、を含む、予測シーケンスの段階を示す。例えば、エンコード、変換、言語学習、比較、フィルタリング、判別、及び、予測等の方法400の各部分は、例えば、APD116等のプロセッサによって行われる。
FIG. 4 illustrates an
図4に示すように、入力ワードシーケンス402の各ワード402(1)~402(n)が受信される。表現学習プロセス404は、1つ以上の機械学習プリミティブ(例えば、上述した1つ以上の機械学習プリミティブ)に従って各ワード402(1)~402(n)に対して行われ、内部表現406(例えば、機械語モデル312の内部のワード402(1)~402(n)の圧縮表現)を判定する。表現学習404の各ブロックは、例えば、入力ワードシーケンス402の対応するワードの内部表現を判定するために使用されるメモリセルを表す。
As shown in FIG. 4, each word 402(1)-402(n) of an
例えば、表現学習404の間に、第1のワード402(1)の内部表現が、第1のワード402(1)の内部表現406として出力される(例えば、一時的に記憶される)。また、第1のワード402(1)の内部表現は、上流に提供され(第1のワード402(1)のメモリセルと、第2のワード402(2)のメモリセルと、の間の左から右に向かう矢印によって示されている)、第2のワード402(2)の内部表現を判定するために使用される。
For example, during representation learning 404, the internal representation of first word 402(1) is output (eg, temporarily stored) as
第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の左から右に向かう矢印の方向に)向かって継続する。
An intermediate internal representation of the second word 402(2) is determined based on the internal representations of the first word 402(1) and the second word 402(2). The intermediate internal representation of the second word 402(2) is then output (eg, temporarily stored) as the
図4に示す例では、表現学習404は、双方向学習を含む。すなわち、各ワード402(1)~402(n)の内部表現も下流に(すなわち、表現学習404の右から左に向かう矢印の方向に)提供される。したがって、各ワード402(1)~402(n-1)の内部表現は、入力ワードシーケンス402の上流ワードに基づいて判定される(すなわち、直接的にシーケンスにおける次の上流ワードに基づいて、間接的に入力ワードシーケンス402の他の上流ワードに基づいて判定される)。また、本開示の特徴は、例えば、一方向学習(すなわち、左から右に向かう矢印の方向)によって実施される。 In the example shown in FIG. 4, representation learning 404 includes interactive learning. That is, an internal representation of each word 402(1)-402(n) is also provided downstream (ie, in the direction of the right-to-left arrow of representation learning 404). Thus, the internal representation of each word 402(1)-402(n-1) is determined based on the upstream word of the input word sequence 402 (ie, directly based on the next upstream word in the sequence, indirectly typically determined based on other upstream words in the input word sequence 402). Also, features of the present disclosure are implemented, for example, by unidirectional learning (ie, the direction of the arrow going from left to right).
ワードの内部表現406を使用して、識別されたハードウェアデバイス上でプログラムの一部を実行するために、ワードのシーケンスが予測される。予測プロセスは、中間ワードシーケンス408及び出力ワードシーケンス410を生成することを含む。以下に説明するように、複数のチューニングパラメータ候補は、他の候補よりも優れた性能効率をもたらす可能性が高いと判定された候補を含み、実行のためにワードのシーケンスを予測するために使用される。例えば、最初の候補が1つ以上の制約314を満たさない場合、次に可能性が高い候補を使用して、シーケンスにおけるワードを予測する。
Using the
一例では、予測プロセス中に使用される数値チューニングパラメータ候補が事前に判定される(すなわち、実行前に判定される)。例えば、所定の予測数kが伝播され、k個の予測が生じる。 In one example, candidate numerical tuning parameters to be used during the prediction process are pre-determined (ie, determined prior to execution). For example, a given number of predictions k is propagated resulting in k predictions.
次に、ワードシーケンス402のワード402(1)~402(n)の内部表現が、中間ワードシーケンス408を生成するために同様の機械学習構造に提供される。図4の中間ワードシーケンス408の各ブロックは、例えば、中間ワードシーケンス408の対応するワード408(1)~408(n)(すなわち、チューニングパラメータ値候補)を中間的に予測するために使用されるメモリセルを表す。
The internal representation of words 402 ( 1 )- 402 ( n ) of
中間ワードシーケンス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のパラメータ値候補として選択されない。
The first word 408(1) (i.e., the first candidate) of the
また、第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の残りのワード毎に処理が継続される。
The internal representation of the first word 408(1) is also provided to the next memory cell (ie, the next upstream memory cell) to determine the second word 408(2) of the
また、予測プロセスは、チューニングパラメータ値を他のチューニングパラメータ値と比較して、何れのチューニングパラメータ値の組み合わせが、識別されたハードウェアデバイス上でプログラムの一部を実行するために、チューニングパラメータ値候補の他の組み合わせよりも優れた性能効率をもたらすものであるかを予測するアテンションメカニズム(attention mechanism)を含む。 The prediction process also compares the tuning parameter values to other tuning parameter values to determine which combination of tuning parameter values will produce a portion of the program on the identified hardware device. Includes an attention mechanism that predicts which combination will yield better performance efficiency than other combinations of candidates.
例えば、出力ワードシーケンス410のチューニングパラメータ値候補410(1)~410(n)は、他のチューニングパラメータ値候補よりも優れた性能効率でプログラムの一部を実行する可能性に従って比較及びランク付けされる。出力ワードシーケンス410の1つ以上のチューニングパラメータ値候補(例えば、他の候補よりも優れた性能効率をもたらす可能性が高いと判定されたチューニングパラメータ値候補)は、中間ワードシーケンス408のメモリセルに戻すように提供され、中間ワードシーケンス408の1つ以上のワード408(1)~408(n)を中間的に予測する。したがって、機械学習アルゴリズムは、入力チューニングパラメータ値(例えば、入力ワードシーケンス402の値)と、機械学習アルゴリズムにフィードバックされる予測されたチューニングパラメータ値候補と、に基づいて、チューニングパラメータ値を予測することを学習する。
For example, the tuning parameter value candidates 410(1)-410(n) of the
次に、図3のブロック308に示すように、出力ワードシーケンス410の予測されたチューニングパラメータ値候補410(1)~410(n)を変換して数値に戻し、識別されたハードウェアデバイス上でプログラムの一部を実行するために、図3に示す予測された実行可能チューニングパラメータ値310として提供される。
Next, as shown in
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を伴わず単独で、又は、他の特徴及び要素の有無にかかわらず様々な組み合わせで使用することができる。 It should be understood that many variations are possible based on the disclosure herein. Although features and elements are described above in particular combinations, each feature or element can be used alone, without other features or elements, or in various combinations with or without other features and elements. can be done.
提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアで実施することができる。適切なプロセッサは、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタルシグナルプロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、任意の他のタイプの集積回路(IC)、及び/又は、状態機械を含む。このようなプロセッサは、ハードウェア記述言語(HDL)命令及びネットリストを含む他の中間データ(コンピュータ可読媒体に記憶可能な命令)の処理結果を使用して製造プロセスを構成することによって、製造されてもよい。このような処理結果は、電力性能管理のためにアプリケーションプロファイリングを実施するプロセッサを製造する半導体製造プロセスで使用されるマスクワークであってもよい。 The provided methods can be implemented in a general purpose computer, processor or processor core. Suitable processors include, by way of example, general purpose processors, special purpose processors, conventional processors, digital signal processors (DSPs), multiple microprocessors, one or more microprocessors associated with a DSP core, controllers, microcontrollers, application specific It includes an integrated circuit (ASIC), a field programmable gate array (FPGA) circuit, any other type of integrated circuit (IC), and/or a state machine. Such processors are manufactured by configuring the manufacturing process using the results of processing hardware description language (HDL) instructions and other intermediate data (instructions storable on computer readable media) including netlists. may Such processing results may be masks used in semiconductor manufacturing processes to manufacture processors that implement application profiling for power performance management.
図に示す及び/又は本明細書で説明する様々な機能ユニット(限定されないが、プロセッサ102、入力ドライバ112、入力デバイス108、出力ドライバ114、出力デバイス110、アクセラレーテッド処理デバイス116、スケジューラ136、グラフィックス処理パイプライン134、計算ユニット132、及び、SIMDユニット138を含む)は、汎用コンピュータ、プロセッサ若しくはプロセッサコアとして、又は、プログラム、ソフトウェア若しくはファームウェアとして実装され、非一時的なコンピュータ可読記憶媒体又は別の媒体に記憶され、汎用コンピュータ、プロセッサ又はプロセッサコアによって実行可能であり得る。
The various functional units shown and/or described herein (including but not limited to
本明細書で提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア、ファームウェアに実装されてもよい。非一時的なコンピュータ可読記憶媒体の例は、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、CD-ROMディスク及びデジタル多用途ディスク(DVD)等の光学媒体を含む。 The methods or flowcharts provided herein may be implemented in computer programs, software, firmware embodied in non-transitory computer-readable storage media for execution by a general purpose computer or processor. Examples of non-transitory computer-readable storage media include read-only memory (ROM), random-access memory (RAM), registers, cache memory, semiconductor memory devices, magnetic media such as internal hard disks and removable disks, magneto-optical media, CDs - Including optical media such as ROM discs and Digital Versatile Discs (DVDs).
Claims (20)
データを記憶するように構成されたメモリと、
前記メモリと通信するプロセッサと、を備え、
前記プロセッサは、
識別されたハードウェアデバイス上でプログラムの一部を実行するために、それぞれ数値を有するチューニングパラメータを受信することと、
前記チューニングパラメータの数値をワードに変換することと、
1つ以上の機械語学習アルゴリズムを使用して、性能効率に基づいて、前記識別されたハードウェアデバイス上で前記プログラムの前記一部を実行するために、何れのワードの組み合わせかが良いかを予測すること、
前記識別されたハードウェアデバイス上で前記プログラムの一部を実行するために、予測されたワードの組み合わせを対応する数値に変換することと、
を行うように構成されている、
処理デバイス。 A processing device for improving processing performance, comprising:
a memory configured to store data;
a processor in communication with the memory;
The processor
receiving tuning parameters each having a numerical value for executing the portion of the program on the identified hardware device;
converting the numerical values of the tuning parameters into words;
using one or more machine language learning algorithms to determine which combination of words is better for executing the portion of the program on the identified hardware device based on performance efficiency; to predict,
converting predicted word combinations into corresponding numerical values for execution of the portion of the program on the identified hardware device;
is configured to do
processing device.
請求項1の処理デバイス。 the processor is configured to successively determine a machine language learning representation for each word input in a word sequence;
2. The processing device of claim 1.
請求項2の処理デバイス。 the processor is configured to determine a machine language learning representation of a word in the word sequence based on a determined machine language learning representation of another word in the word sequence;
3. The processing device of claim 2.
前記ワード毎の機械語学習表現に基づいて、ワードの中間シーケンスを予測することと、
前記ワードが1つ以上の所定の制約の各々を満たす場合に、前記ワードの中間シーケンスの何れかのワードを、前記予測されたワードの組み合わせの候補ワードとして判定することと、
前記ワードが前記1つ以上の所定の制約の各々を満たさない場合に、前記ワードの中間シーケンスの前記何れかのワードを、前記予測されたワードの組み合わせの候補ワードではないと判定することと、
を行うように構成されている、
請求項2の処理デバイス。 The processor
predicting an intermediate sequence of words based on the word-by-word machine language learning representation;
determining any word of the intermediate sequence of words as a candidate word for the predicted word combination if the word satisfies each of one or more predetermined constraints;
determining that the any word of the intermediate sequence of words is not a candidate word for the predicted word combination if the word does not satisfy each of the one or more predetermined constraints;
is configured to do
3. The processing device of claim 2.
請求項4の処理デバイス。 each of the one or more predetermined constraints indicates whether the combination of words would produce an invalid result by executing a portion of the program;
5. The processing device of claim 4.
前記ワードの中間シーケンスの前記複数のワードを、前記予測されたワードの組み合わせの候補ワードとして判定することと、
他の候補ワードよりも優れた性能効率で前記プログラムの一部を実行する可能性がより高いと判定された候補ワードに基づいて、前記ワードの中間シーケンスの次のワードを予測することと、
を行うように構成されている、
請求項4の処理デバイス。 The processor
determining the plurality of words of the intermediate sequence of words as candidate words for the predicted word combination;
predicting the next word in the intermediate sequence of words based on candidate words determined to be more likely to execute the portion of the program with greater performance efficiency than other candidate words;
is configured to do
5. The processing device of claim 4.
前記プロセッサは、前記ワードの他の組み合わせよりも速く又は短い時間で前記プログラムの一部を実行させるために何れの前記ワードの組み合わせが良いかを予測することによって、前記性能効率に基づいて、前記識別されたハードウェアデバイス上で前記プログラムを実行するために、何れの前記ワードの組み合わせが良いかを判定するように構成されている、
請求項1の処理デバイス。 the performance efficiency is a measure of speed or time to execute a portion of the program;
Based on the performance efficiency, the processor performs the configured to determine which combination of said words is good for executing said program on an identified hardware device;
2. The processing device of claim 1.
請求項1の処理デバイス。 the received numeric values of the plurality of tuning parameters are tensor input values;
2. The processing device of claim 1.
請求項1の処理デバイス。 the one or more machine language learning algorithms include at least one of a convolutional neural network, a recurrent neural network, and a combined neural network;
2. The processing device of claim 1.
識別されたハードウェアデバイス上でプログラムの一部を実行するために、それぞれ数値を有するチューニングパラメータを受信することと、
前記チューニングパラメータの数値をワードに変換することと、
1つ以上の機械語学習アルゴリズムを使用して、性能効率に基づいて、前記識別されたハードウェアデバイス上で前記プログラムの一部を実行するために、何れのワードの組み合わせかが良いかを予測することと、
前記識別されたハードウェアデバイス上で前記プログラムの一部を実行するために、予測されたワードの組み合わせを対応する数値に変換することと、を含む、
方法。 A method for improving processing performance comprising:
receiving tuning parameters each having a numerical value for executing the portion of the program on the identified hardware device;
converting the numerical values of the tuning parameters into words;
Using one or more machine language learning algorithms to predict which word combinations are better for executing the portion of the program on the identified hardware device based on performance efficiency. and
converting predicted word combinations into corresponding numerical values for execution of the portion of the program on the identified hardware device;
Method.
請求項10の方法。 further comprising successively determining a machine language learning representation for each word entered in the word sequence;
11. The method of claim 10.
請求項11の方法。 further comprising determining machine language learning representations of words in the word sequence based on determined machine language learning representations of other words in the word sequence;
12. The method of claim 11.
前記ワードが1つ以上の所定の制約の各々を満たす場合に、前記ワードの中間シーケンスの何れかのワードを、前記予測されたワードの組み合わせの候補ワードとして判定することと、
前記ワードが前記1つ以上の所定の制約の各々を満たさない場合に、前記ワードの中間シーケンスの前記何れかのワードを、前記予測されたワードの組み合わせの候補ワードではないと判定することと、をさらに含む、
請求項10の方法。 predicting an intermediate sequence of words based on the word-by-word machine language learning representation;
determining any word of the intermediate sequence of words as a candidate word for the predicted word combination if the word satisfies each of one or more predetermined constraints;
determining that the any word of the intermediate sequence of words is not a candidate word for the predicted word combination if the word does not satisfy each of the one or more predetermined constraints; further comprising
11. The method of claim 10.
請求項13の方法。 each of the one or more predetermined constraints indicates whether the combination of words would produce an invalid result by executing a portion of the program;
14. The method of claim 13.
他の候補ワードよりも優れた性能効率で前記プログラムの一部を実行する可能性がより高いと判定された候補ワードに基づいて、前記ワードの中間シーケンスの次のワードを予測することと、をさらに含む、
請求項13の方法。 determining the plurality of words of the intermediate sequence of words as candidate words for the predicted word combination;
predicting the next word in the intermediate sequence of words based on candidate words determined to be more likely to execute the portion of the program with greater performance efficiency than other candidate words; further including,
14. The method of claim 13.
請求項15の方法。 further comprising ranking each of the plurality of words of the intermediate sequence of words according to the candidate word's likelihood of executing the portion of the program with greater performance efficiency than the other candidate words;
16. The method of claim 15.
前記方法は、前記ワードの他の組み合わせよりも速く又は短い時間で前記プログラムの一部を実行させるために何れの前記ワードの組み合わせが良いかを予測することによって、前記性能効率に基づいて、前記識別されたハードウェアデバイス上で前記プログラムを実行するために、何れの前記ワードの組み合わせが良いかを判定することを含む、
請求項11の方法。 the performance efficiency is a measure of speed or time to execute a portion of the program;
Based on the performance efficiency, the method performs the determining which combination of the words is good for executing the program on the identified hardware device;
12. The method of claim 11.
請求項11の方法。 the received numeric values of the plurality of tuning parameters are tensor input values;
12. The method of claim 11.
請求項11の方法。 the one or more machine language learning algorithms include at least one of a convolutional neural network, a recurrent neural network, and a combined neural network;
12. The method of claim 11.
前記方法は、
識別されたハードウェアデバイス上でプログラムの一部を実行するために、それぞれ数値を有するチューニングパラメータを受信することと、
前記チューニングパラメータの数値をワードに変換することと、
1つ以上の機械語学習アルゴリズムを使用して、性能効率に基づいて、前記識別されたハードウェアデバイス上で前記プログラムの一部を実行するために、何れのワードの組み合わせかが良いかを予測することと、
前記識別されたハードウェアデバイス上で前記プログラムの一部を実行するために、予測されたワードの組み合わせを対応する数値に変換することと、を含む、
コンピュータ可読記憶媒体。 A computer-readable storage medium having instructions for causing a computer to perform a method, comprising:
The method includes:
receiving tuning parameters each having a numerical value for executing the portion of the program on the identified hardware device;
converting the numerical values of the tuning parameters into words;
Using one or more machine language learning algorithms to predict which word combinations are better for executing the portion of the program on the identified hardware device based on performance efficiency. and
converting predicted word combinations into corresponding numerical values for execution of the portion of the program on the identified hardware device;
computer readable storage medium.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/560,954 | 2019-09-04 | ||
US16/560,954 US20210065051A1 (en) | 2019-09-04 | 2019-09-04 | Method and apparatus for predicting kernel tuning parameters |
PCT/US2020/047845 WO2021045935A1 (en) | 2019-09-04 | 2020-08-25 | Method and apparatus for predicting kernel tuning parameters |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022546271A true JP2022546271A (en) | 2022-11-04 |
Family
ID=74681531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022510786A Pending JP2022546271A (en) | 2019-09-04 | 2020-08-25 | Method and apparatus for predicting kernel tuning parameters |
Country Status (6)
Country | Link |
---|---|
US (1) | US20210065051A1 (en) |
EP (1) | EP4026004A4 (en) |
JP (1) | JP2022546271A (en) |
KR (1) | KR20220054397A (en) |
CN (1) | CN114286985A (en) |
WO (1) | WO2021045935A1 (en) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11605147B2 (en) * | 2020-03-27 | 2023-03-14 | Tata Consultancy Services Limited | Method and system for tuning graphics processing unit (GPU) parameters of a GPU kernel |
US11526930B2 (en) | 2020-09-22 | 2022-12-13 | International Business Machines Corporation | Optimization of order fulfillment conditions |
CN117057255B (en) * | 2023-10-10 | 2024-01-02 | 中核武汉核电运行技术股份有限公司 | Pre-training model acquisition method for online synchronization of digital twin model |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10558924B2 (en) * | 2014-05-23 | 2020-02-11 | DataRobot, Inc. | Systems for second-order predictive data analytics, and related methods and apparatus |
EP3018843A1 (en) * | 2014-11-04 | 2016-05-11 | Sequans Communications Ltd. | Fast calibration of electronic devices |
US10460231B2 (en) * | 2015-12-29 | 2019-10-29 | Samsung Electronics Co., Ltd. | Method and apparatus of neural network based image signal processor |
EP3488381B1 (en) * | 2016-07-21 | 2024-02-28 | Siemens Healthineers AG | Method and system for artificial intelligence based medical image segmentation |
US10713593B2 (en) * | 2016-11-04 | 2020-07-14 | Google Llc | Implicit bridging of machine learning tasks |
US10032256B1 (en) | 2016-11-18 | 2018-07-24 | The Florida State University Research Foundation, Inc. | System and method for image processing using automatically estimated tuning parameters |
EP3364343A1 (en) * | 2017-02-17 | 2018-08-22 | Cogisen SRL | Method for image processing for object detection |
CN113924586A (en) * | 2019-04-08 | 2022-01-11 | 菲诺姆 | Knowledge engine using machine learning and predictive modeling for optimizing recruitment management systems |
-
2019
- 2019-09-04 US US16/560,954 patent/US20210065051A1/en active Pending
-
2020
- 2020-08-25 CN CN202080060190.XA patent/CN114286985A/en active Pending
- 2020-08-25 EP EP20861785.2A patent/EP4026004A4/en active Pending
- 2020-08-25 KR KR1020227010635A patent/KR20220054397A/en unknown
- 2020-08-25 JP JP2022510786A patent/JP2022546271A/en active Pending
- 2020-08-25 WO PCT/US2020/047845 patent/WO2021045935A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
US20210065051A1 (en) | 2021-03-04 |
WO2021045935A1 (en) | 2021-03-11 |
EP4026004A4 (en) | 2023-07-19 |
CN114286985A (en) | 2022-04-05 |
EP4026004A1 (en) | 2022-07-13 |
KR20220054397A (en) | 2022-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2022546271A (en) | Method and apparatus for predicting kernel tuning parameters | |
US20200005135A1 (en) | Optimizing inference for deep-learning neural networks in a heterogeneous system | |
Daghero et al. | Energy-efficient deep learning inference on edge devices | |
US11144291B1 (en) | Loop-oriented neural network compilation | |
US20230176903A1 (en) | Dynamic batching for inference system for transformer-based generation tasks | |
Gadiyar et al. | Artificial Intelligence Software and Hardware Platforms | |
CN114201107A (en) | Storage device, method for operating storage device, and electronic device | |
de Prado et al. | Automated design space exploration for optimized deployment of dnn on arm cortex-a cpus | |
CN116070557A (en) | Data path circuit design using reinforcement learning | |
US20190228340A1 (en) | Data flow graph computation for machine learning | |
US11709783B1 (en) | Tensor data distribution using grid direct-memory access (DMA) controller | |
US11461662B1 (en) | Compilation time reduction for memory and compute bound neural networks | |
Venieris et al. | How to reach real-time AI on consumer devices? Solutions for programmable and custom architectures | |
JP2023519564A (en) | Similarity-Based Feature Reordering to Improve Memory Compression Transfer During Machine Learning Jobs | |
US20220044107A1 (en) | Optimized sensor fusion in deep learning accelerator with integrated random access memory | |
Ma et al. | Accelerating deep neural network filter pruning with mask-aware convolutional computations on modern CPUs | |
US11704562B1 (en) | Architecture for virtual instructions | |
EP3971787A1 (en) | Spatial tiling of compute arrays with shared control | |
US20220044101A1 (en) | Collaborative sensor data processing by deep learning accelerators with integrated random access memory | |
George et al. | A Unified Programmable Edge Matrix Processor for Deep Neural Networks and Matrix Algebra | |
US11972349B1 (en) | Flexible compute array utilization in a tensor processor | |
US11782706B1 (en) | Reconfigurable neural network processing based on subgraph recognition | |
US11809981B1 (en) | Performing hardware operator fusion | |
US11922306B2 (en) | Tensor controller architecture | |
US20230004385A1 (en) | Accelerated processing device and method of sharing data for machine learning |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230816 |