JP2024523098A - 個別の演算パラメータのバリデーションを伴う複数の演算を実行するための単一関数 - Google Patents
個別の演算パラメータのバリデーションを伴う複数の演算を実行するための単一関数 Download PDFInfo
- Publication number
- JP2024523098A JP2024523098A JP2023564573A JP2023564573A JP2024523098A JP 2024523098 A JP2024523098 A JP 2024523098A JP 2023564573 A JP2023564573 A JP 2023564573A JP 2023564573 A JP2023564573 A JP 2023564573A JP 2024523098 A JP2024523098 A JP 2024523098A
- Authority
- JP
- Japan
- Prior art keywords
- function
- dimension
- value
- tensor
- values
- 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
- 238000010200 validation analysis Methods 0.000 title description 16
- 230000006870 function Effects 0.000 claims description 349
- 238000012545 processing Methods 0.000 claims description 128
- 238000003860 storage Methods 0.000 claims description 62
- 230000015654 memory Effects 0.000 claims description 61
- 238000011176 pooling Methods 0.000 claims description 41
- 238000004590 computer program Methods 0.000 claims description 30
- 238000000034 method Methods 0.000 claims description 28
- 238000004891 communication Methods 0.000 claims description 3
- 238000013528 artificial neural network Methods 0.000 description 75
- 230000000875 corresponding effect Effects 0.000 description 61
- 239000013598 vector Substances 0.000 description 27
- 230000004044 response Effects 0.000 description 25
- 238000010586 diagram Methods 0.000 description 12
- 238000005192 partition Methods 0.000 description 10
- 238000012360 testing method Methods 0.000 description 10
- 230000001419 dependent effect Effects 0.000 description 9
- 238000013473 artificial intelligence Methods 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 8
- 238000013135 deep learning Methods 0.000 description 7
- 230000009466 transformation Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000012795 verification Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000007667 floating Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 239000006057 Non-nutritive feed additive Substances 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 230000003915 cell function Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000012517 data analytics Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Abstract
Description
1又は複数の態様は概して、コンピューティング環境内の処理を促進すること、特に、そのような処理を改善することに関する。
データ及び/又は計算集約的であるコンピューティング環境における処理を強化するべく、人工知能アクセラレータ(ニューラルネットワークプロセッサ又はニューラルネットワークアクセラレータとも称される)などのコプロセッサが利用される。そのようなアクセラレータは、例えば、行列又はテンソルに対する計算など、複雑な計算の実行において使用される莫大な計算能力を提供する。
テンソル計算は、例として、機械学習のサブセットである深層学習を含む複雑な処理において使用される。人工知能の態様である深層学習又は機械学習は、限定されるものではないが、エンジニアリング、製造業、医療技術、自動車技術、コンピュータ処理などを含む、様々な技術で使用される。
深層学習は、テンソルデータに対して演算する様々な演算を使用する。演算の各々は、独立に実装され、開発及び検証の労力が増加する。
コンピューティング環境内の処理を促進するために、コンピュータプログラム製品のプロビジョニングを通じて、従来技術の短所が克服され、追加の利点が提供される。コンピュータプログラム製品は、方法を実行するために1又は複数のコンピュータ可読記憶媒体にまとめて格納された1又は複数のコンピュータ可読記憶媒体及びプログラム命令を含む。方法は、実行される関数のインジケーションを取得する段階を備え、ここで、関数は、命令の1つの関数であり、複数の演算を実行するように構成される。複数の演算のうちの実行されるべき演算が判定され、値のセット及び対応する関係のセットを使用して関数特有のパラメータのセットがバリデートされる。値のセット及び対応する関係のセットは、実行される演算に基づく。例として、値の1つのセット、及び、対応する関係のセットは、実行される演算に使用され、別の値のセット、及び、対応する関係のセットが、複数の演算のうちの別の演算に使用される。
単一関数、例えば、設計された命令の単一関数を使用して、演算パラメータごとのバリデーションを伴う複数の演算を実行することにより、コードの複雑性、コードの重複、及び/又は、検証の労力が低減され、システム性能が改善する。
一例において、実行される演算を判定することは、少なくとも1つの特定の値に対して1又は複数の関数特有のパラメータをチェックすることを含む。少なくとも1つの特定の値に関する第1選択関係を有する1又は複数の関数特有のパラメータに基づいて、演算は1つの演算であり、少なくとも1つの特定の値に関して第2選択関係を有する1又は複数の関数特有のパラメータに基づいて、演算は別の演算である。
同一の関数特有のパラメータ、異なる関係を使用して、実行される演算を判定することによって、コードの複雑性及び検証の労力が低減される。
例として、関数は平均プール関数を含み、1又は複数の関数特有のパラメータは、1又は複数のストライド値を含み、ここで、ストライド値は、1又は複数の隣接する出力テンソル要素を計算するときにスライディングウィンドウが入力テンソル上を移動する量であり、少なくとも1つの特定の値はゼロを含み、第1選択関係は、等しいことを含み、演算は、1又は複数のストライド値がゼロに等しいことに基づく平均-低減(mean-reduce)演算である。
更に、一例において、第2選択関係は、より大きいことを含み、演算は、1又は複数のストライド値がゼロより大きいことに基づくプーリング演算である。
例として、関数特有のパラメータのセットは、1又は複数の選択ディメンションウィンドウサイズ値を含む。選択ディメンションウィンドウサイズ値は、スライディングウィンドウが含む選択ディメンションにおける要素の数を指定し、スライディングウィンドウは、関数の入力テンソル上を移動して出力テンソルを生成するように構成されている。
一例において、関数は平均プール関数を含み、演算は平均-低減演算を含み、関数特有のパラメータのセットをバリデートするために使用される値のセット及び対応する関係のセットは、選択入力テンソルの1つのディメンションの1つの値及び等しいことである対応する関係、選択入力テンソルの別のディメンションの別の値及び等しいことである対応する関係、並びに、選択値及びより小さい又は等しいことである対応する関係を含む。
バリデートは、例えば、ディメンション2ウィンドウサイズの値が第1入力テンソルのディメンション2の値に等しいこと、ディメンション3ウィンドウサイズの値が第1入力テンソルのディメンション3の値に等しいこと、ディメンション2ウィンドウサイズの値が選択値より小さい又はそれに等しいこと、及び、ディメンション3ウィンドウサイズの値が選択値より小さい又はそれに等しいことをチェックすることを含む。
一例において、関数は平均プール関数を含み、演算はプーリング演算を含み、関数特有のパラメータのセットをバリデートするために使用される値のセット及び対応する関係のセットは、選択入力テンソルの1つのディメンションの1つの値及びより小さい又は等しいことである対応する関係、並びに、選択入力テンソルの別のディメンションの別の値及びより小さい又は等しいことである対応する関係を含む。
バリデートは、例えば、ディメンション2ウィンドウサイズの値が、第1入力テンソルのディメンション2の値より小さい又はそれに等しいこと、及び、ディメンション3ウィンドウサイズの値が第1入力テンソルのディメンション3の値より小さい又はそれに等しいことをチェックすることを含む。
一例において、パディングのタイプが特定のタイプにセットされるかどうかについて判定が行われ、ここで、パディングのタイプは、ウィンドウのどの要素が出力を計算することに使用されるかを示し、1又は複数の実施形態では、パディングのタイプが特定のタイプにセットされることに基づいて、バリデートが実行される。更に、一例において、パディングのタイプが特定のタイプにセットされないことに基づいて、出力テンソルの1又は複数のディメンションに関連する1又は複数のチェックが実行される。
一例において、演算を判定することは、入力テンソルの少なくも1つのスライディングウィンドウストライド値に基づき、関数特有のパラメータのセットは、入力テンソルの少なくも1つのスライディングウィンドウディメンションを含む。
1又は複数の態様に関連するコンピュータ実装方法及びシステムも本明細書において説明及び請求される。さらに、1又は複数の態様に関連するサービスも、本明細書において説明されており、請求され得る。
追加の機能および利点が、本明細書に記載の技術を通して実現される。他の実施形態及び態様が本明細書において詳細に説明され、請求される態様の一部とみなされる。
1又は複数の態様が特に指摘され、本明細書の最後にある請求項における例として、個別に請求される。上記、並びに、1又は複数の態様の目的、特徴、及び利点は、添付図面と併せて、以下の詳細な説明から明らかである。
本発明の1又は複数の態様を組み込み使用するためのコンピューティング環境の一例を図示する。
本発明の1又は複数の態様による、図1Aのプロセッサの更なる詳細を図示する。
本発明の1又は複数の態様による、複数の演算を実行するように構成されているが、複数の演算についての個別のパラメータ条件をチェックすることが可能である命令の単一関数を実行することに関連する処理の一例を図示する。
本発明の1又は複数の態様による、ニューラルネットワーク処理支援命令のフォーマットの一例を図示する。
本発明の1又は複数の態様による、ニューラルネットワーク処理支援命令によって使用される汎用レジスタの一例を図示する。
本発明の1又は複数の態様による、ニューラルネットワーク処理支援命令によってサポートされる関数コードの例を図示する。
本発明の1又は複数の態様による、ニューラルネットワーク処理支援命令によって使用される別の汎用レジスタの一例を図示する。
本発明の1又は複数の態様による、ニューラルネットワーク処理支援命令のクエリ関数によって使用されるパラメータブロックの一例を図示する。
本発明の1又は複数の態様による、ニューラルネットワーク処理支援命令の1又は複数の非クエリ関数によって使用されるパラメータブロックの一例を図示する。
本発明の1又は複数の態様による、ニューラルネットワーク処理支援命令によって使用されるテンソル記述子の一例を図示する。
本発明の1又は複数の態様による、ニューラルネットワーク処理(NNP)データタイプ1のデータ型のフォーマットの一例を図示する。
本発明の1又は複数の態様による、ニューラルネットワーク処理支援命令によって使用される入力データレイアウトの例を図示する。
本発明の1又は複数の態様による、ニューラルネットワーク処理支援命令によって使用される入力データレイアウトの例を図示する。
本発明の1又は複数の態様による、ニューラルネットワーク処理支援命令によって使用される入力データレイアウトの例を図示する。
本発明の1又は複数の態様による、図5A~図5Cの入力データレイアウトに対応する例示的出力を図示する。
本発明の1又は複数の態様による、図5A~図5Cの入力データレイアウトに対応する例示的出力を図示する。
本発明の1又は複数の態様による、図5A~図5Cの入力データレイアウトに対応する例示的出力を図示する。
本発明の1又は複数の態様による、コンピューティング環境における処理を促進する一例を図示する。
本発明の1又は複数の態様による、コンピューティング環境における処理を促進する一例を図示する。
本発明の1又は複数の態様による、コンピューティング環境における処理を促進する一例を図示する。
本発明の1又は複数の態様を組み込み使用するためのコンピューティング環境の別の例を図示する。
本発明の1又は複数の態様による、図8Aのメモリの更なる詳細の一例を図示する。
本発明の1又は複数の態様による、図8Aのメモリの更なる詳細の別の例を図示する。
本発明の1又は複数の態様を組み込み使用するためのコンピューティング環境の更に別の例を図示する。
本発明の1又は複数の態様による、図9Aのメモリの更なる詳細を図示する。
本発明の1又は複数の態様による、クラウドコンピューティング環境の一実施形態を図示する。
本発明の1又は複数の態様による、抽象化モデル層の一例を図示する。
本発明の1又は複数の態様によれば、コンピューティング環境内の処理を促進するための能力が提供される。例として、複数の関数を実装するように構成されている命令が提供され、少なくとも1つの関数が、演算ごとに別個のパラメータバリデーションを伴う複数の演算を実行するように構成されている。1つの関数を使用して複数の演算を実行するが、複数の演算間で異なるパラメータ境界条件をチェックすることが可能であることにより、コードの複雑性、コードの重複、及び/又は検証の労力が低減される。
例として、複数の演算を実装するように構成されている関数は平均プーリング関数であり、複数の演算は、例えば深層学習において使用される平均-低減演算及びプーリング演算を含む。平均プーリング関数は、異なる演算を実行するが、同一の入力テンソル及び関数特有のパラメータを使用するが異なる相対的制約を有する共通アルゴリズム関数にアルゴリズム的に低減される。
一例において、複数の演算を実行するように構成されている関数は、命令によって開始される。例として、命令は、複数の関数を実行するように構成されている単一命令(例えば、ハードウェア/ソフトウェアインタフェースにおけるシングルアーキテクチャハードウェアマシン命令)であるニューラルネットワーク処理支援命令である。関数の各々は、単一命令(例えば、シングルアーキテクチャ命令)の一部として構成され、システムリソースの使用及び複雑性を低減し、システム性能を改善する。更に、関数の少なくとも1つ、例が下で説明されるAVGPOOL2D関数は、命令によって提供される関数特有のパラメータ(例えば、下で説明される関数特有のパラメータ2および3)の値などの入力データに基づいて複数の演算(例えば、平均-低減及びプーリング)を実装するように構成されている。
命令は、汎用プロセッサなどのプロセッサ上でプログラムによってディスパッチされる汎用プロセッサ命令セットアーキテクチャ(ISA)の一部であり得る。それは汎用プロセッサによって実行され得、及び/又は、命令の1又は複数の関数が、汎用プロセッサに結合された、又はその一部である、特定の関数について構成されているプロセッサなどの専用プロセッサによって実行され得る。他の変形例も適用可能である。
本発明の1又は複数の態様を組み込み使用するためのコンピューティング環境の一実施形態が図1Aを参照して説明される。例として、コンピューティング環境は、ニューヨーク州アーモンクのインターナショナルビジネスマシンズコーポレーションによって提供されるz/Architecture(登録商標)命令セットアーキテクチャに基づく。z/Architecture命令セットアーキテクチャの一実施形態は、参照によって全体が本明細書に組み込まれる、2019年9月のIBM Publication No. SA22-7832-12、第13版、「z/Architecture Principles of Operation」と題する出版物において説明される。しかしながら、z/Architecture命令セットアーキテクチャは、1つの例示的なアーキテクチャに過ぎず、インターナショナルビジネスマシンズコーポレーション及び/又は他のエンティティ又の他のアーキテクチャ及び/又は他のタイプのコンピューティング環境又が、本発明の1又は複数の態様を含む及び/又は使用し得る。z/Architecture及びIBMは、少なくも1つの法域において、インターナショナルビジネスマシンズコーポレーションの商標又は登録商標である。
図1Aを参照すると、例えば、コンピューティング環境100は、例えば汎用コンピューティングデバイスの形態で示されるコンピュータシステム102を含む。コンピュータシステム102は、1又は複数の汎用プロセッサ又は処理ユニット104(例えば、中央処理装置(CPU))、ニューラルネットワークプロセッサ105などの少なくとも1つの専用プロセッサ、メモリ106(すなわち、例としてシステムメモリ、メインメモリ、メインストレージ、中央ストレージ、又はストレージ)、及び、1又は複数のバス及び/又は他の接続を介して互いに結合された1又は複数の入出力(I/O)インタフェース108を含み得るが、これらに限定されない。例えば、プロセッサ104、105、及びメモリ106は、1又は複数のバス110を介してI/Oインタフェース108に結合され、プロセッサ104、105は、1又は複数のバス111を介して互いに結合される。
バス111は、例えば、メモリ又はキャッシュコヒーレンスバスであり、バス110は例えば、様々なバスアーキテクチャのいずれかを使用するメモリバス又はメモリコントローラ、ペリフェラルバス、アクセラレーテッドグラフィックスポート、プロセッサ又はローカルバスを含む複数のタイプのバス構造のいずれかのうち1又は複数を表す。限定ではなく例として、そのようなアーキテクチャは、業界標準アーキテクチャ(ISA)、マイクロチャネルアーキテクチャ(MCA)、エンハンスドISA(EISA)、ビデオエレクトロニクススタンダードアソシエーション(VESA)ローカルバス、及びペリフェラルコンポーネントインターコネクト(PCI)を含む。
例として、1又は複数の特定用途向けプロセッサ(例えば、ニューラルネットワークプロセッサ)は、1又は複数の汎用プロセッサから分離されるが結合され得、及び/又は、1又は複数の汎用プロセッサ内に組み込まれ得る。多くの変形例が可能である。
例えば、メモリ106は、プロセッサ104のローカルキャッシュ114及び/又はニューラルネットワークプロセッサ105に、例えば1又は複数のバス111を介して結合され得る共有キャッシュなどのキャッシュ112を含み得る。更に、メモリ106は、1又は複数のプログラム又はアプリケーション116及び少なくとも1つのオペレーティングシステム118を含み得る。例示的なオペレーティングシステムは、ニューヨーク州アーモンクのインターナショナルビジネスマシンズコーポレーションによって提供されるz/OS(登録商標)オペレーティングシステムを含む。z/OSは、少なくも1つの法域におけるインターナショナルビジネスマシンズコーポレーションの商標又は登録商標である。インターナショナルビジネスマシンズコーポレーション及び/又は他のエンティティによって提供される他のオペレーティングシステムも使用され得る。メモリ106はまた、本発明の態様の実施形態の関数を実行するように構成され得る1又は複数のコンピュータ可読プログラム命令120を含み得る。
また、1又は複数の実施形態において、メモリ106はプロセッサファームウェア122を含む。プロセッサファームウェアは、例えば、プロセッサのマイクロコード又はミリコードを含む。それは、例えば、より高いレベルのマシンコードの実装において使用されるハードウェアレベル命令及び/又はデータ構造を含む。一実施形態において、それは、例えば、基礎となるハードウェアに特有の信頼されるソフトウェア、マイクロコード、又はミリコードを含み、システムハードウェアへのオペレーティングシステムのアクセスを制御するマイクロコード又はミリコードとして通常は供給されるプロプライエタリコードを含む。
コンピュータシステム102は、例えば、I/Oインタフェース108を介して、ユーザ端末、テープドライブ、ポインティングデバイス、ディスプレイ、及び1又は複数のデータストレージデバイス134などの1又は複数の外部デバイス130と通信し得る。データストレージデバイス134は、1又は複数のプログラム136、1又は複数のコンピュータ可読プログラム命令138、及び/又は、データなどを格納し得る。コンピュータ可読プログラム命令は、発明の態様の実施形態の関数を実行するように構成され得る。
コンピュータシステム102はまた、例えばI/Oインタフェース108を介して、ローカルエリアネットワーク(LAN)、汎用ワイドエリアネットワーク(WAN)、及び/又は、パブリックネットワーク(例えばインターネット)などの1又は複数のネットワークとコンピュータシステム102が通信することを可能にするネットワークインタフェース132と通信し得、他のコンピューティングデバイス又はシステムとの通信を提供する。
コンピュータシステム102は、取り外し可能/取り外し不可能、揮発性/不揮発性コンピュータシステム記憶媒体を含む、及び/又は、それと結合され得る。例えば、それは、取り外し不可能な不揮発性磁気媒体(通常、「ハードドライブ」と呼ばれる)、取り外し可能な不揮発性磁気ディスク(例えば、「フロッピディスク」)から読み取り、それに書き込むための磁気ディスクドライブ、及び/又は、CD-ROM、DVD-ROM、又は他の光媒体などの取り外し可能な不揮発性光ディスクから読み取り、又は、それに書き込むための光ディスクドライブを含み得、及び/又は、それと結合され得る。他のハードウェア及び/又はソフトウェアコンポーネントは、コンピュータシステム102に関連して使用され得ることが理解されるべきである。例は、マイクロコード又はミリコード、デバイスドライバ、冗長処理ユニット、外部ディスクドライブアレイ、RAIDシステム、テープドライブ、及びデータアーカイブストレージシステムなどを含むが、これらに限定されない。
コンピュータシステム102は、多くの他の汎用又は特定用途向けコンピューティングシステム環境又は構成で動作し得る。コンピュータシステム102と共に使用するのに好適であり得る周知のコンピューティングシステム、環境、及び/又は構成の例は、上のシステム又はデバイス及び同様のもののいずれかを含む、パーソナルコンピュータ(PC)システム、サーバコンピュータシステム、シンクライアント、シッククライアント、ハンドヘルド又はラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラマブルコンシューマエレクトロニクス、ネットワークPC、ミニコンピュータシステム、メインフレームコンピュータシステム、及び分散クラウドコンピューティング環境を含むが、これらに限定されない。
一例において、プロセッサ(例えばプロセッサ104及び/又はプロセッサ105)は、命令を実行するために使用される複数の機能コンポーネント(又はそのサブセット)を含む。図1Bに図示されるように、これらの機能コンポーネントは、例えば、実行される命令をフェッチするための命令フェッチコンポーネント150;フェッチされた命令を復号し、復号された命令のオペランドを取得するための命令復号ユニット152;復号された命令を実行するための1又は複数の命令実行コンポーネント154;必要な場合に命令実行のためにメモリにアクセスするためのメモリアクセスコンポーネント156;及び、実行された命令の結果を提供するためのライトバックコンポーネント158を含む。コンポーネントの1又は複数は、命令処理における1又は複数のレジスタ160にアクセスし、及び/又は、それを使用し得る。更に、コンポーネントの1又は複数は、本発明の1又は複数の態様によれば、本明細書において説明されるように、単一関数の実行に基づく、個別のパラメータチェックを有する複数の演算を実行すること、及び/又は、例えばニューラルネットワーク処理支援命令(又は、本発明の1又は複数の態様を使用し得る他の処理)のニューラルネットワーク処理支援処理を実行することに使用される1又は複数の他のコンポーネントの少なくとも一部を含むか、又はそれに対するアクセスを有し得る。1又は複数の他のコンポーネントは、例えば、単一関数、複数の演算-別個のパラメータバリデーションコンポーネント170、及び/又は、ニューラルネットワーク処理支援コンポーネント172(及び/又は、1又は複数の他のコンポーネント)を含み得る。
本発明の1又は複数の態様によれば、複数の関数を実行可能である命令が実行され、少なくとも1つの関数が、別個のパラメータバリデーションで複数の演算を実装する。この処理の例は、図2を参照して更に説明される。
図2を参照すると、一例において、ニューラルネットワーク処理支援(NNPA)命令(又は別の命令)などの命令が、汎用プロセッサ104などのプロセッサで開始される200。実行される関数についての判定が行われる。これは例えば、命令の関数コードをチェックすることによって判定される。実行される関数が、例えば、平均プール関数(例えば、NNPA_AVGPOOL2D)を指定する関数コードなどの選択関数コードでない場合、他の処理が実行される204。
しかしながら、問い合わせ202に戻ると、関数コードが選択関数コード、例えば、平均プール関数を指定する関数コードを指定する場合、本明細書に説明されるように処理が継続する。一例において、処理は、命令を開始する汎用プロセッサによって実行される。しかしながら、他の実施形態において、処理は、ニューラルネットワークアクセラレータ(例えば、ニューラルネットワークアクセラレータ105)などの専用プロセッサによって、又は、別の汎用プロセッサ、専用プロセッサ、又は他のプロセッサによって実行され得る。他の変形例も適用可能である。
一例において、AVGPOOL2D関数を指定することに基づいて、入力テンソル、例えば、入力テンソル1が、入力のウィンドウをまとめるための指定された演算によって低減される。ウィンドウは例えば、定義されたサイズを有する入力テンソルの選択部分である。入力のウィンドウは、例えば、入力テンソルのディメンション2および3にわたって2Dスライディングウィンドウを移動させることによって選択される。ウィンドウの概要は、出力テンソルにおける要素である。スライディングウィンドウディメンションは、例えば、命令によって提供される関数特有のパラメータ、例えば関数特有のパラメータ4及び関数特有のパラメータ5によって説明され、その例は本明細書に説明される。
関数の処理において、一実施形態において、関数は複数の演算を実行するように構成されているので、実行される演算についての判定が行われる。一例において、実行される演算の判定は、(例えば、命令と共に使用されるパラメータブロックにおいて)入力として命令に提供される選択関数特有のパラメータをチェックすることによって行われる。例として、選択関数特有のパラメータは関数特有のパラメータ2(すなわちfn.sp2)及び関数特有のパラメータ3(すなわちfn.sp3)であり、その各々は、例えばスライディングウィンドウストライドを指定する。スライディングウィンドウストライド又はストライドは、隣の出力テンソル要素を計算するときに入力テンソル1上をスライディングウィンドウが移動する量である。
一例において、関数特有のパラメータ2及び関数特有のパラメータ3の値がゼロなどの選択値に等しいかどうかの判定が行われる(206)。例えば、fn.sp2によって指定されるディメンション2ストライド、及び、fn.sp3によって指定されるディメンション3ストライドの値が選択値(例えばゼロ)に等しい場合、平均-低減演算が実行され、従って、平均-低減固有テストが実行210される。これらのテストは、例えば、以下の是非をチェックすることを含む。
パディングタイプは、Validなどの選択パディングタイプに等しい。例えば、特定の関数特有のパラメータ、例えば、入力として関数に提供される関数特有のパラメータ1の値(すなわちfn.sp1)についてチェックが行われる。指定されたパディングタイプがValidである場合、ウィンドウにおけるすべての要素は、結果として得られる出力要素を計算するために使用される集合に追加される。
関数特有のパラメータ4の値(fn.sp4)は、第1入力テンソルのディメンション2の値(例えば、e2)に等しい(例えば、fn.sp4==in1.e2であるとチェックする)。例えば、fn.sp4におけるディメンション2ウィンドウサイズ(すなわち、スライディングウィンドウ値)は、in1.e2の値に対してチェックされる。
関数特有のパラメータ5の値(fn.sp5)が、第1入力テンソルのディメンション3の値(例えば、e3)に等しい(例えば、fn.sp5==in1.e3であるとチェックする)。例えば、fn.sp5におけるディメンション3ウィンドウサイズ(すなわち、スライディングウィンドウ値)が、in1.e3の値に対してチェックされる。
関数特有のパラメータ4の値は、選択値(例えば、1024)(例えば、fn.sp4<=1024)より小さい又はそれに等しい。例えば、ディメンション2ウィンドウサイズが選択値、例えば1024と比較される。
関数特有のパラメータ5の値は、選択値(例えば、1024)(例えば、fn.sp5<=1024)より小さい又はそれに等しい。例えば、ディメンション3ウィンドウサイズが選択値、例えば1024と比較される。
より多くの、より少ない、及び/又は、他のテストが実行され得る。
テストが不十分である場合212、エラー処理が実行される214。しかしながら、テストが十分である場合212、関数/選択された演算(例えば、AVGPOOL2D関数の平均-低減演算)が実行される216。例えば、一実施形態において、汎用プロセッサ(例えば、汎用プロセッサ104)が、ニューラルネットワーク処理支援命令を開始し、AVGPOOL2D関数のような非クエリ関数などの特定の関数については、汎用プロセッサは、実行される関数/演算のインジケーションなどの情報、及び、専用プロセッサ(例えば、ニューラルネットワークプロセッサ105)への入力データ(例えば、1又は複数の入力テンソル)のメモリアドレス情報を提供し、それにより、専用プロセッサは、本明細書において説明されるような関数/演算を実行し得る。関数が完了するとき、処理が汎用プロセッサに戻り、命令を完了する。他の実施形態において、汎用プロセッサ又は専用プロセッサは命令を開始し、関数/演算を実行し、命令を完了する。他の変形が可能である。
問い合わせ206に戻ると、例えば、関数特有のパラメータ2及び関数特有のパラメータ3の値がゼロなどの選択値に等しくない場合、fn.sp2及びfn.sp3の値が例えば選択値(例えばゼロ)より大きいかどうかについて更なるチェックが行われる(220)。例えば、fn.sp2によって指定されるディメンション2ストライド、及び、fn.sp3によって指定されるディメンション3ストライドの値が、選択値(例えば、0)より大きくない場合、エラー処理が実行される214。しかしながら、fn.sp2によって指定されるディメンション2ストライド及びfn.sp3によって指定されるディメンション3ストライドの値が選択値(例えばゼロ)より大きい場合、プーリング演算が実行され、従って、プーリング特有のテストが実行される230。これらのテストの例は、例えば、以下の是非をチェックすることを含む。
fn.sp2及びfn.sp3の値が、30などの特定の値より小さい又はそれに等しい。例えば、ディメンション2及びディメンション3ストライド値が、例えば30など特定の値と比較される。
関数特有のパラメータ1(fn.sp1)によって指定されるパディングタイプが、Validなどの選択パディングタイプと等しい。fn.sp1における値が、例えば、Validである場合、fn.sp4において指定されるスライディングウィンドウ値(ディメンション2ウィンドウサイズとも称される)が第1入力テンソルのディメンション2の値(in1.e2)より小さい又はそれに等しいかどうか、及び、fn.sp5において指定されるスライディングウィンドウ値(ディメンション3ウィンドウサイズとも称される)が、第1入力テンソルのディメンション3の値(in1.e3)より小さい又はそれに等しいかどうかのチェックが行われる。
一例において、fn.sp1において指定されたパディングタイプが、Validなどの選択パディングタイプに等しくない場合、例えば、出力テンソルのディメンション2(e2)の値(例えば、out.e2)が、セルの値(in1.e2/fn.sp4)に等しいかどうかのチェックが行われ、出力テンソルのディメンション3(e3)の値(例えば、out.e3)がセルの値(in1.e3/fn.sp5)に等しいかどうかのチェックが行われる。すなわち、
ここで、
IxDyIS:テンソル記述子xにおいて定義される入力テンソルxのディメンションyインデックスサイズ
OxDyIS:テンソル記述子xにおいて定義される出力テンソルxのディメンションyインデックスサイズ
D2S:ディメンション2ストライド
D3S:ディメンション3ストライド
より多くの、より少ない、及び/又は、他のテストが実行され得る。
テストが十分でない場合、エラー処理が実行される214。しかしながら、これらのテストが十分である場合212、本明細書において説明されるように関数/選択された演算(例えば、AVGPOOL2D関数のプーリング演算)が実行される216。
関数/演算が完了すると、処理は汎用プロセッサに戻り、命令が完了する240。
示されるように、一例において、AVGPOOL2D関数は、ニューラルネットワーク処理支援命令などの命令の一部として実装される。ニューラルネットワーク処理支援命令、AVGPOOL2D関数、並びに、平均-低減及びプーリング演算に関連する更なる詳細が図3A~図3Gを参照して説明される。最初に図3Aを参照すると、一例において、ニューラルネットワーク処理支援命令300は、拡張演算コード(オペコード)を用いてレジスタ及びレジスタ演算を記述するRREフォーマットを有する。一例において、ニューラルネットワーク処理支援命令300は、ニューラルネットワーク処理支援演算を示す演算コード(オペコード)フィールド302(例えば、ビット0-15)を含む。一例において、命令のビット16~31は予約され、ゼロを含む。本明細書における説明において、命令、命令の関数及び/又は演算、特定の位置、特定のフィールド、及び/又は、フィールドの特定のサイズが示される(例えば、特定のバイト及び/又はビット)。しかしながら、他の位置、フィールド、及び/又はサイズが提供され得る。更に、ビットを特定の値、例えば1又はゼロにセットすることが指定され得るが、これは単に例である。ビットは、セットされる場合、他の例において、反対の値又は別の値などの異なる値にセットされ得る。多くの変形例が可能である。
一例において、命令は、命令によって暗黙に指定される複数の汎用レジスタを使用する。例えば、ニューラルネットワーク処理支援命令300は、暗黙のレジスタ、汎用レジスタ0及び汎用レジスタ1を使用し、この例は、それぞれ、図3Bおよび図3Dを参照して説明される。
図3Bを参照すると、一例において、汎用レジスタ0は、命令の完了時に更新され得る、関数コードフィールド及びステータスフィールドを含む。例として、汎用レジスタ0は、応答コードフィールド310(例えば、ビット0~15)、例外フラグフィールド312(例えば、ビット24~31)、及び関数コードフィールド314(例えば、ビット56~63)を含む。更に、一例において、汎用レジスタ0のビット16~23及び32~55が予約され、ゼロを含む。1又は複数のフィールドが、命令によって実行される特定の関数によって使用される。一例において、すべてのフィールドがすべての関数によって使用されるわけではない。フィールドの各々は下で説明される。
応答コード(RC)310:このフィールド(例えば、ビット位置0~15)は応答コードを含む。ニューラルネットワーク処理支援命令の実行が、例えば1の条件コードで完了するとき、応答コードが格納される。無効入力条件に遭遇したとき、非ゼロ値が応答コードフィールドに格納され、これは、実行中に認識される無効入力条件の原因、及び、選択された条件コード、例えば1がセットされていることを示す。応答コードフィールドに格納されたコードは、一例において、以下のとおり定義される。
応答コード 意味
0001 パラメータブロックバージョン番号によって指定されるパラメータブロックのフォーマットがモデルによってサポートされていない。
0002 指定された関数が、マシン上に定義又はインストールされていない。
0010 指定されたテンソルデータレイアウトフォーマットがサポートされていない。
0011 指定されたテンソルデータ型がサポートされていない。
0012 指定された単一テンソルディメンションが最大ディメンションインデックスサイズより大きい。
0013 指定されたテンソルのサイズが最大テンソルサイズより大きい。
0014 指定されたテンソルアドレスが4Kバイト境界上で整合されない。
0015 関数特有の保存エリアアドレスが4Kバイト境界上で整合されない。
F000~FFFF 関数特有の応答コード。
これらの応答コードは特定の関数について定義される。
これらの応答コードは特定の関数について定義される。
例外フラグ(EF)312:このフィールド(例えば、ビット位置24~31)は、例外フラグを含む。例外条件が命令の実行中に検出される場合、対応する例外フラグコントロール(例えばビット)が例えば1にセットされ、さもなければ、コントロールは不変のままである。例外フラグフィールドは、命令の最初の呼び出しの前にゼロに初期化される。予約フラグは、命令の実行中に不変である。例外フラグフィールドに格納されたフラグは、一例において以下のとおり定義される。
EF(ビット) 意味
0 範囲違反。
このフラグは、数値以外の値が入力テンソルにおいて検出されたか、又は、出力テンソルに格納されたときのいずれかにおいてセットされる。このフラグは、例えば、命令が条件コード、例えば0で完了するときにのみ有効である。
このフラグは、数値以外の値が入力テンソルにおいて検出されたか、又は、出力テンソルに格納されたときのいずれかにおいてセットされる。このフラグは、例えば、命令が条件コード、例えば0で完了するときにのみ有効である。
1~7 予約済み
関数コード(FC)314:このフィールド(例えばビット位置56~63)は関数コードを含む。ニューラルネットワーク処理支援命令についての割り当てられた関数コードの例は図3Cに図示される。すべての他の関数コードは割り当てられていない。割り当てられていない、又は、インストールされていない関数コードが指定される場合、例えば0002 hexの応答コード及び例えば1の選択条件コードがセットされる。このフィールドは、実行中に修正されない。
示されるように、汎用レジスタ0に加えて、ニューラルネットワーク処理支援命令はまた、汎用レジスタ1を使用し、この例は図3Dにおいて図示される。例として、24ビットアドレス指定モードにおけるビット40~63、31ビットアドレス指定モードにおけるビット33~63、又は、64ビットアドレス指定モードにおけるビット0~63は、パラメータブロック320のアドレスを含む。汎用レジスタ1の内容は、例えば、ストレージにおけるパラメータブロックの左端のバイトの論理アドレスを指定する。パラメータブロックは、ダブルワード境界上で指定され、さもなければ、仕様の例外が認識される。すべての関数について、汎用レジスタ1の内容は修正されない。
アクセスレジスタモードにおいて、アクセスレジスタ1は、パラメータブロック、入力テンソル、出力テンソル、及び関数特有の保存エリアを含むアドレス空間を例として指定する。
一例において、パラメータブロックは、実行される命令によって指定される関数に依存する異なるフォーマットを有し得る。例えば、命令のクエリ関数は、1つのフォーマットのパラメータブロックを有し、命令の他の関数は、別のフォーマットのパラメータブロックを有する。別の例において、すべての関数は、同一のパラメータブロックフォーマットを使用する。他の変形例も適用可能である。
例として、パラメータブロック及び/又はパラメータブロックにおける情報は、メモリ、ハードウェアレジスタ、及び/又は、メモリ及び/又はレジスタの組み合わせに格納される。他の例もまた可能である。
NNPA-Query Available Functions(QAF)演算などのクエリ関数によって使用されるパラメータブロックの一例が図3Eを参照して説明される。示されるように、一例において、NNPA-Query Available Functionsパラメータブロック330は、例えば以下を含む。
インストールされる関数のベクトル332:パラメータブロックのこのフィールド(例えば、バイト0~31)は、インストールされる関数のベクトルを含む。一例において、インストールされる関数のベクトルのビット0~255は、それぞれ、ニューラルネットワーク処理支援命令の関数コード0~255に対応する。ビットが例えば1であるとき、対応する関数はインストールされ、さもなければ、関数はインストールされない。
インストールされるパラメータブロックフォーマットのベクトル334:パラメータブロックのこのフィールド(例えば、バイト32-47)は、インストールされるパラメータブロックフォーマットのベクトルを含む。一例において、インストールされるパラメータブロックフォーマットのベクトルのビット0~127は、ニューラルネットワーク処理支援命令の非クエリ関数についてのパラメータブロックフォーマット0~127に対応する。ビットが例えば1であるとき、対応するパラメータブロックフォーマットがインストールされ、さもなければ、パラメータブロックフォーマットはインストールされない。
インストールされるデータ型336:パラメータブロックのこのフィールド(例えばバイト48~49)は、インストールされるデータ型のベクトルを含む。一例において、インストールされたデータ型のベクトルのビット0~15は、インストールされるデータ型に対応する。ビットが例えば1であるとき、対応するデータ型はインストールされ、さもなければ、データ型はインストールされない。例示的なデータ型は以下を含む(より多くの、より少ない、及び/又は、他のデータ型が可能である)。
ビット データ型
0 NNPデータタイプ1
1~15 予約済み
インストールされるデータレイアウトフォーマット338:パラメータブロックのこのフィールド(例えば、バイト52~55)は、インストールされるデータレイアウトフォーマットのベクトルを含む。一例において、インストールされたデータレイアウトフォーマットのベクトルのビット0~31は、インストールされるデータレイアウトフォーマットに対応する。ビットが例えば1であるとき、対応するデータレイアウトフォーマットはインストールされ;さもなければ、データレイアウトフォーマットはインストールされない。例示的なデータレイアウトフォーマットは、以下を含む(より多くの、より少ない、及び/又は、他のデータ型が可能である)。
ビット データレイアウトフォーマット
0 4Dフィーチャテンソル
1 4Dカーネルテンソル
2~31 予約済み
最大ディメンションインデックスサイズ340:パラメータブロックのこのフィールド(例えば、バイト60~63)は、例えば、任意の指定されたテンソルについての指定されたディメンションインデックスサイズにおける最大数の要素を指定する32ビット符号なしバイナリ整数を含む。別の例において、最大ディメンションインデックスサイズは、任意の指定されたテンソルについて、指定されたディメンションインデックスサイズにおけるバイトの最大数を指定する。他の例もまた可能である。
最大テンソルサイズ342:パラメータブロックのこのフィールド(例えばバイト64~71)は、例えば、テンソルフォーマットによって要求される任意のパッドバイトを含む任意の指定されたテンソルにおけるバイトの最大数を指定する32ビット符号なしバイナリ整数を含む。別の例において、最大テンソルサイズは、テンソルフォーマットによって要求される任意のパディングを含む任意の指定されたテンソルにおける要素全体の最大数を指定する。他の例もまた可能である。
インストールされたNNPデータタイプ1変換ベクトル344:パラメータブロックのこのフィールド(例えば、バイト72~73)は、インストールされたNNPデータタイプ1変換ベクトルを含む。一例において、インストールされたNNPデータタイプ1変換ベクトルのビット0~15は、インストールされたNNPデータタイプ1フォーマットとの間のデータ型変換に対応する。ビットが1であるとき、対応する変換はインストールされ;さもなければ、変換はインストールされない。より多くの、より少ない、及び/又は、他の変換が指定され得る。
ビット データ型
0 予約済み
1 BFP小フォーマット
2 BFP短フォーマット
3-15 予約済み
クエリ関数についてのパラメータブロックの一例が図3Eを参照して説明されるが、NNPA-Query Available Functions演算を含むクエリ関数についてのパラメータブロックの他のフォーマットが使用され得る。フォーマットは、一例において、実行されるクエリ関数のタイプに依存し得る。更に、パラメータブロック及び/又はパラメータブロックの各フィールドは、より多くの、より少ない、及び/又は、他の情報を含み得る。
クエリ関数についてのパラメータブロックに加えて、一例において、Neural-Network Processing Assist命令の非クエリ関数など、非クエリ関数についてのパラメータブロックフォーマットがある。ニューラルネットワーク処理支援命令のAVGPOOL2D関数などの非クエリ関数によって使用されるパラメータブロックの一例が図3Fを参照して説明される。
示されるように、一例において、例えばニューラルネットワーク処理支援命令の非クエリ関数によって採用されるパラメータブロック350は例えば以下を含む。
パラメータブロックバージョン番号352:パラメータブロックのこのフィールド(例えば、バイト0~1)は、パラメータブロックのバージョン及びサイズを指定する。一例において、パラメータブロックバージョン番号のビット0~8が予約され、ゼロを含み、パラメータブロックバージョン番号のビット9~15は、パラメータブロックのフォーマットを指定する符号なしバイナリ整数を含む。クエリ関数は、利用可能なパラメータブロックフォーマットを示す機構を提供する。指定されたパラメータブロックのサイズ又はフォーマットがモデルによってサポートされないとき、例えば、0001 hexの応答コードが汎用レジスタ0に格納され、命令は、条件コード、例えば条件コード1をセットすることによって完了する。パラメータブロックバージョン番号は、プログラムによって指定され、命令の実行中に修正されない。
モデルバージョン番号354:パラメータブロックのこのフィールド(例えば、バイト2)は、命令(例えば、特定の非クエリ関数)を実行するモデルを識別する符号なしバイナリ整数である。継続フラグ(下で説明される)が1であるとき、モデルバージョン番号は、パラメータブロックの継続状態バッファフィールド(下で説明される)の内容を解釈して演算を再開することを目的とする演算に対する入力であり得る。
継続フラグ356:パラメータブロックのこのフィールド(例えば、ビット63)は、例えば1のとき、演算が部分的に完了することを示し、継続状態バッファの内容が演算を再開するために使用され得る。プログラムは、継続フラグをゼロに初期化し、命令が演算を再開する目的で再実行される場合に継続フラグを修正しない;さもなければ、結果は予測不可能である。
継続フラグが演算の最初にセットされ、パラメータブロックの内容が最初の呼び出しから変化している場合、結果は予測不可能である。
関数特有の保存エリアアドレス358:パラメータブロックのこのフィールド(例えば、バイト56~63)は、関数特有の保存エリアの論理アドレスを含む。一例において、関数特有の保存エリアアドレスは、4Kバイト境界上で整合される;さもなければ、例えば0015 hexの応答コードが汎用レジスタ0にセットされ、命令は、例えば1の条件コードで完了する。アドレスは、現在のアドレス指定モードの影響を受ける。関数特有の保存エリアのサイズは関数コードに依存する。
関数特有の保存エリアの全体がプログラムイベント記録(PER)ストレージエリア指定と重なるとき、適用可能であるとき、PERストレージ変更イベントが関数特有の保存エリアについて認識される。関数特有の保存エリアの一部のみがPERストレージエリア指定と重なるとき、以下のどれが発生するかについてはモデル依存である。
* 適用可能であるとき、PERストレージ変更イベントが関数特有の保存エリアの全体について認識される。
* 適用可能であるとき、PERストレージ変更イベントが、格納された関数特有の保存エリアの一部について認識される。
パラメータブロック全体がPERストレージエリア指定と重なるとき、適用可能であるとき、PERストレージ変更イベントがパラメータブロックについて認識される。パラメータブロックの一部のみがPERストレージエリア指定と重なるとき、以下のどれが発生するかはモデル依存である。
* 適用可能であるとき、PERストレージ変更イベントがパラメータブロック全体について認識される。
* 適用可能であるとき、PERストレージ変更イベントが、格納されたパラメータブロックの一部について認識される。
適用可能であるとき、PERゼロアドレス検出イベントがパラメータブロックについて認識される。ゼロアドレス検出は、一例において、テンソルアドレス又は関数特有の保存エリアアドレスを適用しない。
出力テンソル記述子(例えば、1~2)360/入力テンソル記述子(例えば、1~3)365:テンソル記述子の一例が図3Gを参照して説明される。一例において、テンソル記述子360、365は以下を含む。
データレイアウトフォーマット382:テンソル記述子のこのフィールド(例えばバイト0)はデータレイアウトフォーマットを指定する。有効なデータレイアウトフォーマットは例えば、以下を含む(より多くの、より少ない、及び/又は、他のデータレイアウトフォーマットが可能である)。
フォーマット 説明 アライメント(バイト)
0 4Dフィーチャテンソル 4096
1 4Dカーネルテンソル 4096
2-255 予約済み
サポートされない、又は予約されたデータレイアウトフォーマットが指定される場合、例えば0010 hexの応答コードが汎用レジスタ0に格納され、命令は、条件コード、例えば1をセットすることによって完了する。
データ型384:このフィールド(例えば、バイト1)は、テンソルのデータ型を指定する。サポートされるデータ型の例が下で説明される(より多くの、より少ない、及び/又は、他のデータ型が可能である)。
値 データ型 データサイズ(ビット)
0 NNPデータ型1 16
1~255 予約済み
サポートされない、又は予約されたデータ型が指定される場合、例えば0011 hexの応答コードが汎用レジスタ0に格納され、命令は条件コード、例えば1をセットすることによって完了する。
ディメンション1~4インデックスサイズ386:ディメンションインデックスサイズ1~4は、4Dテンソルの形状をまとめて指定する。各ディメンションインデックスサイズは、ゼロより大きく、最大ディメンションインデックスサイズ(340、図3E)より小さい又はそれに等しい;さもなければ、例えば0012 hexの応答コードが汎用レジスタ0に格納され、命令は条件コード、例えば1をセットすることによって完了する。総テンソルサイズは、最大テンソルサイズ(342、図3E)より小さい又はそれに等しい;さもなければ、応答コード、例えば0013 hexが汎用レジスタ0に格納され、命令は、条件コード、例えば1をセットすることによって完了する。
一例において、NNPAデータタイプ1の要素を有する4Dフィーチャテンソルにおけるバイトの数(すなわち、総テンソルサイズ)を判定するために、以下に示される、ディメンションインデックス4*ディメンションインデックス3*セル(ディメンションインデックス2/32)*32*セル(ディメンションインデックス1/64)*64*2が使用される。
テンソルアドレス388:テンソル記述子のこのフィールド(例えばバイト24~31)は、テンソルの左端バイトの論理アドレスを含む。アドレスは、現在のアドレス指定モードの影響を受ける。
アドレスが、関連付けられたデータレイアウトフォーマットの境界上で整合されていない場合、例えば0014 hexの応答コードが汎用レジスタ0に格納され、命令は、条件コード、例えば1をセットすることによって完了する。
アクセスレジスタモードにおいて、アクセスレジスタ1は、ストレージにおけるすべてのアクティブ入力及び出力テンソルを含むアドレス空間を指定する。
図3Fに戻ると、パラメータブロック350は更に、一例において、本明細書において説明されるように、特定の関数によって使用され得る関数特有のパラメータ1~5を含む(370)。
更に、パラメータブロック350は、一例において、この命令の演算が再開される場合に使用されるデータ(又は、データの位置)を含む継続状態バッファフィールド375を含む。
演算への入力として、パラメータブロックの予約フィールドはゼロを含むべきである。演算が終了するとき、予約フィールドは、ゼロとして格納され得るか、又は、不変のままであり得る。
非クエリ関数についてのパラメータブロックの一例が図3Fを参照して説明されるが、ニューラルネットワーク処理支援命令の非クエリ関数を含む、非クエリ関数についてのパラメータブロックの他のフォーマットが使用され得る。フォーマットは、一例において、実行される関数のタイプに依存し得る。更に、テンソル記述子の一例が図3Gを参照して説明されるが、他のフォーマットが使用され得る。更に、入力及び出力テンソルについての異なるフォーマットが使用され得る。他の変形が可能である。
ニューラルネットワーク処理支援命令の一実施形態によってサポートされる様々な関数に関する更なる詳細が下で説明される。
関数コード0:NNPA-QAF(Query Available Functions)
ニューラルネットワーク処理支援(NNPA)クエリ関数は、例えば、インストールされる関数、インストールされるパラメータブロックフォーマット、インストールされるデータ型、インストールされるデータレイアウトフォーマット、最大ディメンションインデックスサイズ、及び最大テンソルサイズの可用性など、選択された情報を示すための機構を提供する。情報は、パラメータブロック(例えば、パラメータブロック330)などの選択された位置において取得及び配置される。演算が終了するとき、パラメータブロックの予約フィールドは、ゼロとして格納され得、又は、不変のままであり得る。
クエリ関数の一実施形態の実行において、汎用プロセッサ104などのプロセッサは、ニューラルネットワークプロセッサ105などのニューラルネットワークプロセッサの特定のモデルなどの特定のプロセッサに関連する情報を取得する。プロセッサ又はマシンの特定のモデルは特定の能力を有する。プロセッサ又はマシンの別のモデルは、より多くの、より少ない、及び/又は、異なる能力を有し得、及び/又は、より多くの、より少ない、及び/又は、異なる能力を有する異なる世代(例えば、現在又は将来の世代)のものであり得る。取得された情報は、パラメータブロック(例えば、パラメータブロック330)、又は、更なる処理においてこの情報を使用し得る1又は複数のアプリケーションからアクセス可能である、及び/又は、それ共に使用するための他の構造に配置される。一例において、パラメータブロックのパラメータブロック及び/又は情報はメモリに維持される。他の実施形態において、パラメータブロック及び/又は情報は、1又は複数のハードウェアレジスタにおいて維持され得る。別の例として、クエリ関数は、オペレーティングシステムによって実行される特権演算であり得、これは、アプリケーションプログラムインタフェースが、この情報を、アプリケーション又は非特権プログラムに対して利用可能にするように利用可能にする。なお更なる例において、クエリ関数は、ニューラルネットワークプロセッサ105などの専用プロセッサによって実行される。他の変形が可能である。
情報は、例えば、クエリ関数を実行するプロセッサのファームウェアによって取得される。ファームウェアは、特定のプロセッサ(例えば、ニューラルネットワークプロセッサ)の特定のモデルの属性の知識を有する。この情報は例えば、制御ブロックレジスタ及び/又はメモリに格納され得、及び/又は、さもなければ、クエリ関数を実行するプロセッサからアクセス可能であり得る。
取得された情報は、例えば、特定のプロセッサの選択されたモデルの、1又は複数のインストール又はサポートされるデータ型、1又は複数のインストール又はサポートされるデータレイアウトフォーマット、及び/又は、1又は複数のインストール又はサポートされるデータサイズを含む、例えば、特定のプロセッサの少なくとも1又は複数のデータ属性に関するモデル依存詳細情報を含む。この情報は、他のモデル(例えば、前のモデル、及び/又は、将来のモデル)が、同一のデータ型、データサイズ、及び/又はデータレイアウトフォーマットなどの同一のデータ属性をサポートしないことがあり得るという点でモデル依存である。クエリ関数(例えば、NNPA-QAF関数)の実行が完了するとき、例として条件コード0がセットされる。条件コード1、2および3は、一例において、クエリ関数に適用可能でない。取得された情報に関連する更なる情報が下で説明される。
示されるように、一例において、取得される情報は、例えばニューラルネットワークプロセッサの特定のモデルの1又は複数のデータ属性についてのモデル依存情報を含む。データ属性の一例は、ニューラルネットワークプロセッサのインストールされたデータ型である。例えば、ニューラルネットワークプロセッサ(又は他のプロセッサ)の特定のモデルが、例として、NNPデータタイプ1データ型(ニューラルネットワーク処理データタイプ1データ型とも称される)及び/又は他のデータ型などの1又は複数のデータ型をサポートし得る。NNPデータタイプ1データ型は、例えば、深層学習ネットワークの正確度を維持すること;丸めモード及びコーナーケースの処理を単純化する非正規フォーマットを排除すること;算術演算についての最も近い値への自動丸め;及び、無限及び非数(NaN)の特殊なエンティティが1つの値(NINF)に組み合わされ、算術演算によって受け入れられ、処理されることを含む、複数の利点を深層学習訓練及び推論計算に提供する16ビット浮動小数点フォーマットである。NINFは、指数オーバーフロー及び無効な演算(ゼロによる除算など)についてのより良いデフォルトを提供する。これにより、多くのプログラムが、そのようなエラーを隠すことなく、且つ専用の例外ハンドラを使用することなく、実行を継続することが可能となる。他のモデル依存データ型も可能である。
NNPデータタイプ1データ型のフォーマットの一例が図4に図示される。図示されるように、一例において、NNPデータタイプ1データは、例えば、符号402(例えばビット0)、指数+31 404(例えばビット1~6)、及び、端数406(例えば、ビット7~15)を含むフォーマット400で表され得る。
NNPデータタイプ1フォーマットの例示的な特性が下に図示される。
特性 NNPデータタイプ1
フォーマット長(ビット) 16ビット
バイアス指数長(ビット) 6ビット
端数長(ビット) 9ビット
精度(p) 10ビット
最大左単位表示指数(Emax) 32
最小左単位表示指数(Emin) -31
左単位表示(LUV)バイアス 31
Nmax (1-2-9)×233≒8.6×109
Nmin (1+2-9)×2-31≒4.6×10-10
Dmin ―――
ここで、≒は、値が近似値であることを示し、Nmaxは、(大きさにおいて)最大の表現可能な有限数であり、Nminは、(大きさにおいて)最小の表現可能な数である。
ここで、≒は、値が近似値であることを示し、Nmaxは、(大きさにおいて)最大の表現可能な有限数であり、Nminは、(大きさにおいて)最小の表現可能な数である。
NNPデータタイプ1データ型に関連する更なる詳細は下で説明される。
バイアス指数:指数を符号なしの数として表現することを可能にするために使用されるバイアスは上で示される。バイアス指数は、バイナリ浮動小数点フォーマットの特性と類似しているが、NNPデータタイプ1データ型のクラスを参照して下で説明されるように、すべてゼロ及びすべて1のバイアス指数に対して特殊な意味が付与されていないことを除く。
仮数:NNPデータタイプ1数の2進小数点は、左端の端数ビットの左であるとみなされる。2進小数点の左には、正規数については1、ゼロについてはゼロとみなされる、暗黙の単位ビットがある。左に付加された暗黙の単位ビットを有する端数は、数の仮数である。
通常のNNPデータタイプ1の値は、仮数を、非バイアス指数乗した基数2で乗算したものである。
非ゼロ数の値:非ゼロ数の値が下で示される。
数クラス 値
正規数 ±2e-31 ×(1.f)
ここで、eは、10進数で示されるバイアス指数であり、fは2進数の端数である。
ここで、eは、10進数で示されるバイアス指数であり、fは2進数の端数である。
一実施形態において、数値及び関連する非数値エンティティを含む、NNPデータタイプ1データの3つのクラスがある。各データ項目は、符号、指数、及び仮数を含む。指数は、すべてのバイアス指数が負でない符号なし数であり、最小バイアス指数がゼロであるようにバイアスされる。仮数は、2進小数点の左に明示的な端数及び暗黙的な単位ビットを含む。符号ビットは、正の場合ゼロであり、負の場合1である。
許容されるすべての非ゼロ有限数は、固有のNNPデータタイプ1表現を有する。同一の値について複数の表現を可能にし得る数である非正規数が無く、非正規算術演算が無い。3つのクラスは、例えば以下を含む。
データクラス 符号 バイアス指数 単位ビット* 端数
ゼロ ± 0 0 0
正規数 ± 0 1 非0
正規数 ± 非0、すべてが1でない 1 任意
正規数 ± すべて1 すべてが1でない
NINF ± すべて1 すべて1
ここで、-は、該当しないことを示し、*は、単位ビットが暗黙であることを示し、NINFは、数字でない、又は無限である。
ここで、-は、該当しないことを示し、*は、単位ビットが暗黙であることを示し、NINFは、数字でない、又は無限である。
クラスの各々に関する更なる詳細が下で説明される。
ゼロ:ゼロは、ゼロのバイアス指数及びゼロ端数を有する。暗黙の単位ビットはゼロである。
正規数:正規数は、任意の値のバイアス指数を有し得る。バイアス指数が0であるとき、端数は非ゼロである。バイアス指数がすべて1であるとき、端数はすべて1でない。他のバイアス指数の値は、任意の端数値を有し得る。暗黙の単位ビットは、すべて正規数である場合、1である。
NINF:NINFが、すべて1のバイアス指数、及び、すべて1の端数によって表される。NINFは、NNPデータタイプ1における表現可能な値の範囲(すなわち、6個の指数ビット及び9個の端数ビットを有する、深層学習について設計された16ビット浮動小数点)にない値を表す。通常、NINFは、最後まで表示されたままであるように、計算中に伝播されるだけである。
NNPデータタイプ1データ型は、一例においてサポートされるが、他の専用又は非標準のデータ型がサポートされ得、いくつか例を挙げると、IEEE754短精度、2進浮動小数点16ビット、IEEE半精度浮動小数点、8ビット浮動小数点、4ビット整数フォーマット、及び/又は、8ビット整数フォーマットを含むがこれらに限定されない1又は複数の標準データ型も同様である。これらのデータフォーマットは、ニューラルネットワーク処理について異なる品質を有する。例として、より小さいデータ型(例えば、より少ないビット)は、より速く処理でき、より少ないキャッシュ/メモリを使用し、より大きいデータ型は、ニューラルネットワークにおいて、より高い正確度の結果を提供する。サポートされるデータ型は、クエリパラメータブロックにおいて(例えば、パラメータブロック330のインストールされたデータ型フィールド336において)1又は複数の割り当てられたビットを有し得る。例えば、特定のプロセッサによってサポートされる専用の又は非標準のデータ型は、インストールされたデータ型フィールドにおいて示されるが、標準のデータ型は示されない。他の実施形態において、1又は複数の標準のデータ型も示される。他の変形が可能である。
1つの特定の例において、インストールされたデータ型フィールド336のビット0がNNPデータタイプ1データ型について予約され、例えば1にセットされるとき、プロセッサがNNPデータタイプ1をサポートすることを示す。例として、インストールされたデータ型のビットベクトルは、ビットが各データ型に割り当てられる、最大16のデータ型を表すように構成される。しかしながら、他の実施形態におけるビットベクトルは、より多くの、又はより少ないデータ型をサポートし得る。更に、1又は複数のビットがデータ型に割り当てられるベクトルが構成され得る。多くの例が可能であり、及び/又は、より多くの、より少ない、及び/又は、他のデータ型が、ベクトルにおいてサポートされ、及び/又は示され得る。
一例において、クエリ関数は、モデル依存プロセッサ上にインストールされたデータ型のインジケーションを取得し、例えば、パラメータブロック330のインストールされたデータ型フィールド336において1又は複数のビットをセットすることによって、パラメータブロックにインジケーションを配置する。更に、一例において、クエリ関数は、インストールされたデータレイアウトフォーマット(別のデータ属性)のインジケーションを取得し、例えば、インストールされたデータレイアウトフォーマットフィールド338において1又は複数のビットをセットすることによって、パラメータブロックに情報を配置する。例示的なデータレイアウトフォーマットは、例えば、4Dフィーチャテンソルレイアウト及び4Dカーネルテンソルレイアウトを含む。4Dフィーチャテンソルレイアウトは、一例において、本明細書において示される関数によって使用され、一例において、畳み込み関数は4Dカーネルテンソルレイアウトを使用する。これらのデータレイアウトフォーマットは、ニューラルネットワーク処理支援命令の関数の実行における処理効率を増加させる方式で、データをテンソルについてのストレージ内に配置する。例えば、効率的に演算するべく、ニューラルネットワーク処理支援命令は、特定のデータレイアウトフォーマットにおいて提供される入力テンソルを使用する。例のレイアウトが提供されるが、より多くの、より少ない、及び/又は、他のレイアウトが、本明細書において説明される関数及び/又は他の関数に提供され得る。
特定のプロセッサモデルについてのレイアウトの使用又は可用性は、インストールされたデータレイアウトフォーマット(例えば、パラメータブロック330のフィールド338)のベクトルによって提供される。ベクトルは例えば、どのレイアウトがサポートされるかをCPUがアプリケーションに伝えることを可能にする、インストールされたデータレイアウトフォーマットのビットベクトルである。例えば、ビット0が4Dフィーチャテンソルレイアウトについて予約され、例えば1にセットされるとき、プロセッサが4Dフィーチャテンソルレイアウトをサポートすることを示し;ビット1が4Dカーネルテンソルレイアウトについて予約され、例えば1にセットされるとき、プロセッサが4Dカーネルテンソルレイアウトをサポートすることを示す。一例において、インストールされたデータレイアウトフォーマットのビットベクトルは、ビットが各データレイアウトに割り当てられる、最大16のデータレイアウトを表すように構成される。しかしながら、他の実施形態におけるビットベクトルは、より多くの、又はより少ないデータレイアウトをサポートし得る。更に、1又は複数のビットがデータレイアウトに割り当てられるベクトルが構成され得る。多くの例が可能である。4Dフィーチャテンソルレイアウト及び4Dカーネルテンソルレイアウトに関する更なる詳細が下で説明される。同様に、性能を最適化するために、他のレイアウトがここで、又は将来に使用され得る。
一例において、ニューラルネットワーク処理支援命令は、4Dテンソル、すなわち、4ディメンションのテンソルを用いて演算する。これらの4Dテンソルは、本明細書において説明される汎用入力テンソルから、例えば行優先で取得され、すなわち、メモリアドレスが増加する順序でテンソル要素を列挙するとき、E1と呼ばれる、より内側のディメンションが、0から開始してE1インデックスサイズ-1までE1インデックスサイズ値を通じて最初にステップアップされ、その後、E2ディメンションのインデックスが増加され、E1ディメンションを通じたステップが反復される。E4ディメンションと呼ばれるより外側のディメンションのインデックスが最後に増加される。
より低い数のディメンション(例えば、3D又は1Dテンソル)を有するテンソルは、4Dテンソルとして表され、4Dテンソルの1又は複数のディメンションは、1にセットされた元のテンソルディメンションを超える。
ディメンションE4、E3、E2、E1を有する行優先汎用4Dテンソルを4Dフィーチャテンソルレイアウト(本明細書において、NNPAデータレイアウトフォーマット0 4Dフィーチャテンソルとも称される)に変換することが本明細書において説明される。
例えば、結果として得られるテンソルは、例えば64要素ベクトル又はディメンションを有する5Dテンソルの4Dテンソルとして表され得る。
汎用テンソルの要素[e4][e3][e2][e1]は、結果として得られる5Dテンソルの以下の要素にマッピングされ得る。
結果として得られるテンソルは、汎用テンソルより大きいことがあり得る。汎用テンソルにおける対応する要素が無い結果として得られるテンソルの要素は、パッド要素と呼ばれる。
64要素ベクトルのNNPAデータレイアウトフォーマット0 4Dフィーチャテンソルの要素[fe4][fe1][fe3][fe2][fe0]又は同等の表現を要素の5Dテンソルとみなす。この要素はパッド要素であるか、又は、ディメンションE4、E3、E2、E1の汎用4Dテンソルにおけるその対応する要素は、以下の式で判定され得る。
fe2≧E2である場合、これは、E2(又はページ)パッド要素である。
そうでなく、fe1*64+fe0≧E1である場合、これは、E1(又は行)パッド要素である。
そうでない場合、汎用4Dテンソルにおける対応する要素は、
[fe4][fe3][fe2][fe1*64+fe0]である。
畳み込みニューラルネットワークベースの人工知能モデルについては、フィーチャテンソルの4ディメンションの意味は概して以下にマッピングされ得る。
E4:N-ミニバッチのサイズ
E3:H-3Dテンソル/イメージの高さ
E2:W-3Dテンソル/イメージの幅
E1:C-3Dテンソルのチャネル又はクラス
機械学習又はリカレントニューラルネットワークベースの人工知能モデルについては、4Dフィーチャテンソルの4ディメンションの意味は、概して以下にマッピングされ得る。
E4:T-タイムステップ又はモデルの数
E3:予約済み、概して1にセットされる
E2:Nmb-ミニバッチサイズ
E1:L-フィーチャ
NNPAデータレイアウトフォーマット0は、例えば、データの4Kバイトブロック(ページ)を有する2ディメンションデータ局所性、及び、生成されたテンソルの外側のディメンションについての4Kバイトブロックデータアライメントを提供する。
パッド要素バイトは、入力テンソルでは無視され、出力テンソルでは予測不可能である。パッドバイト上のPERストレージ変更は予測不可能である。
ディメンションE1、E2、E3、及びE4を有する4Dフィーチャテンソルレイアウトについての入力データレイアウトの一例が図5A~図5Cに示され、4Dフィーチャテンソルレイアウトについての例示的な出力が図6A~図6Cに図示される。図5Aを参照すると、ディメンションE1、E2、及びE3を有する3Dテンソル500が示される。一例において、各3Dテンソルは、複数の2Dテンソル502を含む。各2Dテンソル502における数は、その要素の各々がメモリのどこにあるかのメモリオフセットを説明する。入力は、図5A~図5Cに対応する図6A~図6Cに示されるように、元のテンソル(例えば、図5A~図5Cの元の4Dテンソル)のデータをメモリ内にレイアウトするために使用される。
図6Aにおいて、例として、メモリ600のユニット(例えば、メモリページ)は、行602の予め選択された数(例えば32)を含み、その各々は、例えば、e2_page_idxによって識別され、各行は、各々が例えばe1_page_idxによって識別される予め選択された数(例えば64)の要素604を有する。行が予め選択された数の要素を含まない場合、それは、行又はE1パディングと称されるパッド606であり;メモリユニットが予め選択された数の行を有しない場合、それは、ページ又はE2パディングと称されるパッド608である。例として、行パディングは、例えば、ゼロ又は他の値であり、ページパディングは、例えば、既存の値、ゼロ、又は他の値である。
一例において、行の出力要素は、その対応する入力のE1方向における要素位置に基づいて、メモリにおいて(例えばページにおいて)提供される。例えば、図5Aを参照すると、示される3つの行列の要素位置0、1および2(例えば、各行列における同一位置の要素位置)が図6Aなどのページ0の行0に示される。この例において、4Dテンソルは小さく、4Dテンソルを表す各2Dテンソルの要素のすべては、1つのページに収まる。しかしながら、これは単なる一例である。2Dテンソルは、1又は複数のページを含み得る。2Dテンソルが、4Dテンソルのリフォーマットに基づいて生成される場合、2Dテンソルのページの数は、4Dテンソルのサイズに基づく。一例において、1又は複数のセル関数は、いくつのページが使用されるかを示す、2Dテンソルにおける行の数、及び、各行における要素の数を判定するために使用される。他の変形が可能である。
4Dフィーチャテンソルレイアウトに加えて、一例において、ニューラルネットワークプロセッサは、4Dテンソルの要素を再構成する4Dカーネルテンソルをサポートし、畳み込みなどの特定の人工知能(例えば、ニューラルネットワーク処理支援)演算を実行するときのメモリアクセス及びデータ収集段階の数を低減し得る。例として、ディメンションE4、E3、E2、E1を用いる行優先汎用4Dテンソルが、本明細書において説明されるNNPAデータレイアウトフォーマット1 4Dカーネルテンソル(4D-kernel tensor)に変換される。
結果として得られるテンソルは、例えば64要素ベクトルの4Dテンソル、又は、以下のディメンションを有する5Dテンソルとして表され得る。
汎用テンソルの要素[e4][e3][e2][e1]は、結果として得られる5Dテンソルの以下の要素にマッピングされ得る。
結果として得られるテンソルは、汎用テンソルより大きいことがあり得る。汎用テンソルにおける対応する要素が無い結果として得られるテンソルの要素は、パッド要素と呼ばれる。
64要素ベクトルのNNPAデータレイアウトフォーマット1 4Dフィーチャテンソルの要素[fe1][fe4][fe3][fe2][fe0]、又は同等の表現を要素の5Dテンソルとして考える。この要素はパッド要素であるか、又は、ディメンションE4、E3、E2、E1を有する汎用4Dテンソルにおけるその対応する要素は、以下の式で判定され得る。
fe2≧E2である場合、これは、E2(又はページ)パッド要素である。
そうでない場合であって、fe1*64+fe0≧E1である場合、これは、E1(又は行)パッド要素である。
そうでない場合、汎用4Dテンソルにおける対応する要素は、
[fe4][fe3][fe2][fe1*64+fe0]
畳み込みニューラルネットワークベースの人工知能モデルについては、カーネルテンソルの4ディメンションの意味は概して以下にマッピングされ得る。
E4:H-3Dテンソル/イメージの高さ
E3:W-3Dテンソル/イメージの幅
E2:C-3Dテンソルのチャネルの数
E1:K-カーネルの数
NNPAデータレイアウトフォーマット1は、例えば、4kバイトブロックのデータ(ページ)内の2ディメンションカーネル並列性、及び、4kバイトブロックデータアライメントを、効率的な処理のために、生成テンソルの外側のディメンションに提供する。
パッドバイトは、入力テンソルの場合に無視される。パッドバイト上のPERストレージ変更は予測不可能である。
同様に、例示的なデータレイアウトフォーマットは、4Dフィーチャテンソルレイアウト及び4Dカーネルテンソルレイアウトを含むが、他のデータレイアウトフォーマットがプロセッサ(例えばニューラルネットワークプロセッサ105)によってサポートされ得る。サポートされるデータレイアウトのインジケーションが取得され、例えばフィールド338における1又は複数のビットをセットすることによってクエリパラメータブロックに配置される。
クエリパラメータブロックはまた、本発明の1又は複数の態様による、例えばデータについてのサポートされるサイズ情報を含む、他のデータ属性情報を含む。ニューラルネットワークプロセッサなどのプロセッサは通常、テンソルディメンションの最大サイズ及び/又はテンソルの全体サイズを制限し得る、内部バッファサイズ、処理ユニット、データバス構造、ファームウェアの制限などに基づく制限を有する。したがって、クエリ関数は、これらの制限をアプリケーションに伝えるためのフィールドを提供する。例えば、プロセッサは、クエリ関数の実行に基づいて、最大ディメンションインデックスサイズ(例えば、65,536の要素)などの様々なデータサイズ、及び、最大テンソルサイズ(例えば、8GB)を取得し、パラメータブロック(例えば、パラメータブロック330)のフィールド340および342におけるこの情報をそれぞれ含む。より多くの、より少ない、及び/又は、他のサイズ情報も、プロセッサ(例えば、ニューラルネットワークプロセッサ105)によってサポートされ、したがって、パラメータブロック、例えば、フィールド340、342及び/又は他のフィールドに取得及び配置され得る。他の実施形態において、制限は、より小さい、又は、より大きいことがあり得、及び/又は、サイズは、要素でなくバイトなどの他の単位、バイトではなく要素などであり得る。更に、他の実施形態は、すべてのディメンションについて同一の最大値ではなく、各ディメンションの異なる最大サイズを可能にする。多くの変形例が可能である。
本発明の1又は複数の態様によれば、選択されたプロセッサ(例えば、ニューラルネットワークプロセッサ105)の特定のモデルに関連する詳細情報を伝えるクエリ関数が提供される。詳細情報は、例えば、特定のプロセッサに関連するモデル依存情報を含む。(プロセッサはまた、暗黙であり必ずしもクエリ関数によって提示されない、標準データ型、標準データレイアウトなどの、標準データ属性をサポートし得る;他の実施形態において、クエリ関数は、データ属性のすべての、又は、様々な選択されたサブセットなどを示し得る。)例示的な情報が提供されるが、他の情報が他の実施形態において提供され得る。プロセッサの異なるモデル、及び/又は、異なるプロセッサについて異なり得る、取得された情報が、人工知能及び/又は他の処理を実行するために使用される。人工知能及び/又は他の処理は、例えばニューラルネットワーク処理支援命令の1又は複数の非クエリ関数を採用し得る。処理において採用される特定の非クエリ関数は、ニューラルネットワーク処理支援命令を1又は複数の回数にわたって実行し、非クエリ固有関数を指定することによって実行される。
ニューラルネットワーク処理支援命令によってサポートされる非クエリ関数の例は、AVGPOOL2D関数及びMAXPOOL2D関数を含み、その各々は下で説明される(より多くの、より少ない、及び/又は、他の関数が1又は複数の実施形態においてサポートされる)。
関数コード80:NNPA-MAXPOOL2D
関数コード81:NNPA-AVGPOOL2D
関数コード81:NNPA-AVGPOOL2D
NNPA-MAXPOOL2D又はNNPA-AVGPOOL2D関数のいずれかが指定されるとき、入力テンソル1記述子(例えば図3Gを参照)によって説明される入力テンソル1が、入力のウィンドウをまとめるための指定された演算によって低減される。入力のウィンドウは、ディメンション2および3上で2Dスライディングウィンドウを移動させることによって選択される。ウィンドウの概要は、出力テンソルにおける要素である。スライディングウィンドウディメンションは、例えば、関数特有のパラメータ4及び関数特有のパラメータ5によって説明される。隣の出力テンソル要素を計算するときにスライディングウィンドウが入力テンソル1の上を移動する量は、ストライドと呼ばれる。スライディングウィンドウストライドは、例えば、関数特有のパラメータ2及び関数特有のパラメータ3によって指定される。NNPA-MAXPOOL2D演算が指定されるとき、下で定義されるMax演算がウィンドウに対して実行される。NNPA-AVGPOOL2D演算が指定されるとき、下で定義されるAVG演算がウィンドウに対して実行される。指定されたパディングタイプがValidである場合、ウィンドウにおけるすべての要素が、結果として得られる出力要素を計算するために使用される集合に追加される。指定されたパディングタイプが同一である場合、ウィンドウの位置に依存して、ウィンドウからの要素のサブセットのみが、結果として得られる出力要素を計算するために使用される集合に追加され得る(例えば、テンソルの境界の外側にあるそれらの要素は無視され得る)。
一例において、CollectElements演算は、要素を要素の集合に追加し、集合における要素の数をインクリメントする。ウィンドウ開始位置が移動するたびに集合が空になる。演算を実行するのに必要でない要素がアクセスされるかどうかは予測不可能である。
Max演算:一例において、ウィンドウにおける要素の集合の最大値は、集合におけるすべての要素を互いに比較し、最大値を返すことによって計算される。
AVG(平均)演算:一例において、ウィンドウにおける要素の集合の平均値は、例えば、集合におけるすべての要素を集合における要素の数で除算した値の和として計算される。
一例において、フィールドが以下のとおり割り当てられる。
* プーリング関数特有のパラメータ1はパディングタイプを制御する。例えば、関数特有のパラメータ1のビット29~31は、パディングタイプを指定するパッドフィールドを含む。タイプの例は、例えば以下を含む。
パッド パディングタイプ
0 有効
1 同一
2~7 予約済み
予約された値が、パッドフィールドについて指定される場合、例えば、F000 hexの応答コードが報告され、演算は、条件コード、例えば1で完了する。
一例において、関数特有のパラメータ1のビット位置0~28は予約され、ゼロを含む。
* 関数特有のパラメータ2は、例えば、ディメンション2においてスライディングウィンドウが移動する要素の数(e2とも称される)を指定するディメンション2ストライド(D2S)を指定する32ビット符号なしバイナリ整数を含む。
* 関数特有のパラメータ3は、例えば、ディメンション3においてスライディングウィンドウが移動する要素の数(e3とも称される)を指定するディメンション3ストライド(D3S)を指定する32ビット符号なしバイナリ整数を含む。
* 関数特有のパラメータ4が、例えば、スライディングウィンドウが含むディメンション2における要素の数を指定するディメンション2ウィンドウサイズ(D2WS)を指定する32ビット符号なしバイナリ整数を含む。
* 関数特有のパラメータ5は、例えば、スライディングウィンドウが含むディメンション3における要素の数を指定するディメンション3ウィンドウサイズ(D3WS)を指定する32ビット符号なしバイナリ整数を含む。
一例において、関数特有のパラメータ2-5における指定された値は、最大ディメンションインデックスサイズより小さい又はそれに等しく、関数特有のパラメータ4-5における指定された値は、例えばゼロより大きく;さもなければ、応答コード、例えば、0012 hexが報告され、演算は、条件コード、例えば1で完了する。
ディメンション2ストライド及びディメンション3ストライドの両方がゼロである、及び、ディメンション2ウィンドウサイズ又はディメンション3ウィンドウサイズのいずれかが、例えば1024より大きい場合、応答コード、例えばF001 hexが格納される。ディメンション2ストライド及びディメンション3ストライドの両方が、例えばゼロより大きい、及び、ディメンション2ウィンドウサイズ又はディメンション3ウィンドウサイズのいずれかが、例えば64より大きい場合、応答コード、例えばF002 hexが格納される。ディメンション2ストライド及びディメンション3ストライドの両方が、例えばゼロより大きい、及び、ディメンション2ストライド又はディメンション3のストライドのいずれかが、例えば30より大きい場合、応答コード、例えばF003 hexが格納される。ディメンション2ストライド及びディメンション3ストライドの両方が、例えばゼロより大きい、及び、入力テンソルディメンション2インデックスサイズ又は入力テンソルディメンション3インデックスサイズのいずれかが、例えば1024より大きい場合、応答コード、例えばF004 hexが格納される。上の条件のすべてについて、命令は、条件コード、例えば1で完了する。
一例において、指定されたテンソル記述子のいずれかにおける指定されたデータレイアウトが、4Dフィーチャテンソルを指定しない場合(例えば、データレイアウト=0)、又は、いずれかの指定されたテンソル記述子におけるデータ型が、NNPデータタイプ1を指定しない場合(例えば、データ型=0)、応答コード、例えば、0010 hex又は0011 hexがそれぞれ汎用レジスタ0においてセットされ、命令は、条件コード、例えば1で完了する。
一例において、以下の条件が真であり、さもなければ、汎用オペランドデータ例外が認識される。
* 入力テンソル及び出力テンソルのディメンション4インデックスサイズ及びディメンション1インデックスサイズは同一である。
* 入力テンソル及び出力テンソルのデータレイアウト及びデータ型は同一である。
* ディメンション2ストライド及びディメンション3ストライドの両方がゼロである場合(例えば、AVGPOOL2D関数の平均-低減演算を指定する)、一例において、以下の追加の条件が真である。
* 入力テンソルディメンション2インデックスサイズは、ディメンション2ウィンドウサイズに等しい。
入力テンソルディメンション3インデックスサイズは、ディメンション3ウィンドウサイズに等しい。
出力テンソルのディメンション2インデックスサイズ及びディメンション3インデックスサイズは1である。
* 指定されたパディングは有効である。
* ディメンション2ストライド又はディメンション3ストライドのいずれかが非ゼロである場合、一例において、両方のストライドは非ゼロである。
* ディメンション2ストライド及びディメンション3ストライドの両方がゼロより大きい場合(例えば、AVGPOOL2D関数のプーリング演算を指定する)、一例において、以下の追加の条件が真である。
指定されたパディングが有効であるとき、ディメンション2ウィンドウサイズは、入力テンソルのディメンション2インデックスサイズより小さい又はそれに等しい。
指定されたパディングが有効であるとき、ディメンション3ウィンドウサイズは、入力テンソルのディメンション3インデックスサイズより小さい又はそれに等しい。
* 指定されたパディングが同一であるとき、入力及び出力テンソルのディメンション2インデックスサイズ及びディメンション3インデックスサイズの間の以下の関係が満たされる(Pooling Same Padding)。
ここで、
IxDyIS:テンソル記述子xにおいて定義される入力テンソルxのディメンションyインデックスサイズ
OxDyIS:テンソル記述子xにおいて定義される出力テンソルxのディメンションyインデックスサイズ
D2S:ディメンション2ストライド
D3S:ディメンション3ストライド
* 指定されたパディングが有効であるとき、入力及び出力テンソルのディメンション2インデックスサイズ及びディメンション3インデックスサイズの間の以下の関係が満たされる(Pooling Valid Padding)。
ここで、D2WSは、ディメンション2ウィンドウサイズであり、D3WSは、ディメンション3ウィンドウサイズである。
出力テンソル記述子2、入力テンソル記述子2および3、及び関数特有の保存エリアアドレスフィールドが無視される。
ニューラルネットワーク処理支援命令については、一実施形態において、出力テンソルが入力テンソル又はパラメータブロックのいずれかと重なる場合、結果は予測不可能である。
ニューラルネットワーク処理支援命令の実行が試みられ、パラメータブロックが例えばダブルワード境界上で例として指定されないとき、仕様例外が認識される。
ニューラルネットワーク処理支援命令の実行が試みられ、例えば、テンソル記述子の不整合があるとき、汎用オペランドデータ例外が認識される。
ニューラルネットワーク処理支援命令についての結果として得られる条件コードは、例えば、0-正常完了;1-応答コードがセットされる;2-;3-CPUによって判定された量のデータが処理される、を含む。
一実施形態において、ニューラルネットワーク処理支援命令についての実行の優先度は、例えば以下を含む。
1-7.一般的な場合についてのプログラム割り込み条件の優先度と同一の優先度を有する例外
8.A 割り当てられていない又はインストールされていない関数コードが指定されることに起因する条件コード1
8.B ダブルワード境界上で指定されていないパラメータブロックに起因する仕様例外
9.パラメータブロックへのアクセスについてのアクセス例外
10.モデルによってサポートされないパラメータブロックの指定されたフォーマットに起因する条件コード1。
11.A 指定されたテンソルデータレイアウトがサポートされていないことに起因する条件コード1
11.B テンソル記述子間の異なるデータレイアウトに起因する汎用オペランドデータ例外
12.A 上の項目8.A、10、及び11.A並びに下の12.B.1に含まれるもの以外の条件に起因する条件コード1。
12.B.1 NNPA-RELU 及びNNPA-CONVOLUTIONについての無効な出力テンソルデータ型に起因する条件コード1
12.B.2 NNPA-RELU関数特有のパラメータ1及びNNPA-CONVOLUTION関数特有のパラメータ4についての無効な値についての汎用オペランドデータ例外
13.A 出力テンソルへのアクセスのためのアクセス例外
13.B 入力テンソルへのアクセスのためのアクセス例外
13.C 関数特有の保存エリアへのアクセスについてのアクセス例外
14.条件コード0
本明細書において説明されるように、単一命令(例えば、ニューラルネットワーク処理支援命令)は、クエリ関数及び複数の非クエリ関数を含む複数の関数を実行するように構成されている。少なくとも1つの非クエリ関数、AVGPOOL2D関数は、複数の演算(例えば、平均-低減及びプーリング)を実装するように構成されている。1つの関数を使用して複数の演算を実行することによって、例として、重複する符号化及び検証が除去される。実行される特定の演算は、関数への選択入力パラメータの値に依存する。同一の入力パラメータが、関数の両方の演算に使用されるが、選択パラメータの異なる値は、実行される演算を示し、他の入力パラメータの異なる境界チェックをもたらす。平均-低減及びプーリング演算は異なるように実行するが、それらは、同一の入力テンソル及び関数特有のパラメータを有するが異なる相対的制約を有する共通のアルゴリズム演算にアルゴリズム的に低減され得る。1つの相違点は、2つの演算の間で異なる条件(例えば、ストライド、ウィンドウサイズ)をチェックすることである。本明細書において説明されるように、複数の演算を実行する命令の単一関数が提供され、パラメータのいくつかに対する両方の演算についての異なる境界チェックを実装する。これにより、少なくとも、コードの複雑性、コードの重複、及び検証の労力を低減する。
本発明の1又は複数の態様は、コンピュータ技術と密接に結び付いており、コンピュータ内の処理を促進し、その性能を改善する。様々な関数を実行するように構成されているシングルアーキテクチャマシン命令の使用は、複雑性を低減し、リソースの使用を低減し、処理速度を増加することにより、コンピューティング環境内の性能を改善する。複数の演算を実装するための単一関数の使用は、複雑性、リソースの使用、符号化及び/又は検証の労力を低減し、システム性能を改善する。命令、関数、及び/又は演算は、コンピュータ処理、医療処理、エンジニアリング、自動車技術、製造業などの多くの技術分野において使用され得る。最適化を提供することによって、これらの技術分野は、例えば、エラー及び/又は実行時間を低減することによって改善される。
本発明の1又は複数の態様に関連する、コンピューティング環境内の処理を促進する一実施形態の更なる詳細が、図7A~図7Cを参照して説明される。
図7Aを参照すると、実行される関数のインジケーションが取得され、ここで、関数は、命令の1つの関数であり、複数の演算700を実行するように構成されている。複数の演算のうちの実行されるべき演算が判定され702、値のセット及び対応する関係のセットを使用して関数特有のパラメータのセットがバリデートされる704。値のセット及び対応する関係のセットは、実行される演算に基づく706。例として、値の1つのセット、及び、対応する関係のセットは、実行される演算に使用され708、別の値のセット、及び、対応する関係のセットが、複数の演算のうちの別の演算に使用される710。
単一関数、例えば、設計された命令の単一関数を使用して、演算パラメータごとのバリデーションを伴う複数の演算を実行することにより、コードの複雑性、コードの重複、及び/又は、検証の労力が低減され、システム性能が改善する。
一例において、実行される演算を判定することは、少なくとも1つの特定の値に対して1又は複数の関数特有のパラメータをチェックすることを含む720。少なくとも1つの特定の値に関する第1選択関係を有する1又は複数の関数特有のパラメータに基づいて、演算は1つの演算であり722、少なくとも1つの特定の値に関して第2選択関係を有する1又は複数の関数特有のパラメータに基づいて、演算は別の演算である724。
同一の関数特有のパラメータ、異なる関係を使用して、実行される演算を判定することによって、コードの複雑性及び検証の労力が低減される。
例として、関数は平均プール関数を含み、1又は複数の関数特有のパラメータは、1又は複数のストライド値を含み、ここで、ストライド値は、1又は複数の隣接する出力テンソル要素を計算するときにスライディングウィンドウが入力テンソル上を移動する量であり、少なくとも1つの特定の値はゼロを含み、第1選択関係は、等しいことを含み、演算は、1又は複数のストライド値がゼロに等しいことに基づく平均-低減(mean-reduce)演算である726。
更に、一例において、図7Bを参照すると、第2選択関係は、より大きいことを含み、演算は、1又は複数のストライド値がゼロより大きいことに基づくプーリング演算である728。
例として、関数特有のパラメータのセットは、1又は複数の選択ディメンションウィンドウサイズ値を含む730。選択ディメンションウィンドウサイズ値は、スライディングウィンドウが含む選択ディメンションにおける要素の数を指定し732、スライディングウィンドウは、関数の入力テンソル上を移動して出力テンソルを生成するように構成されている734。
一例において、関数は平均プール関数を含み、演算は平均-低減演算を含み、関数特有のパラメータのセットをバリデートするために使用される値のセット及び対応する関係のセットは、選択入力テンソルの1つのディメンションの1つの値及び等しいことである対応する関係、選択入力テンソルの別のディメンションの別の値及び等しいことである対応する関係、並びに、選択値及びより小さい又は等しいことである対応する関係を含む740。
バリデートは、例えば、ディメンション2ウィンドウサイズの値が第1入力テンソルのディメンション2の値に等しいこと、ディメンション3ウィンドウサイズの値が第1入力テンソルのディメンション3の値に等しいこと、ディメンション2ウィンドウサイズの値が選択値より小さい又はそれに等しいこと、及び、ディメンション3ウィンドウサイズの値が選択値より小さい又はそれに等しいことをチェックすることを含む746。
一例において、図7Cをを参照すると、関数は平均プール関数を含み、演算はプーリング演算を含み、関数特有のパラメータのセットをバリデートするために使用される値のセット及び対応する関係のセットは、選択入力テンソルの1つのディメンションの1つの値及びより小さい又は等しいことである対応する関係、並びに、選択入力テンソルの別のディメンションの別の値及びより小さい又は等しいことである対応する関係を含む750。
バリデートは、例えば、ディメンション2ウィンドウサイズの値が、第1入力テンソルのディメンション2の値より小さい又はそれに等しいこと、及び、ディメンション3ウィンドウサイズの値が第1入力テンソルのディメンション3の値より小さい又はそれに等しいことをチェックすることを含む756。
一例において、パディングのタイプが特定のタイプにセットされるかどうかについて判定が行われ、ここで、パディングのタイプは、ウィンドウのどの要素が出力を計算することに使用されるかを示し、1又は複数の実施形態、例えばプーリング演算では、パディングのタイプが特定のタイプにセットされることに基づいて、バリデートが実行される760。更に、一例において、パディングのタイプが特定のタイプにセットされないことに基づいて、出力テンソルの1又は複数のディメンションに関連する1又は複数のチェックが実行される762。
一例において、演算を判定することは、入力テンソルの少なくも1つのスライディングウィンドウストライド値に基づき770、関数特有のパラメータのセットは、入力テンソルの少なくも1つのスライディングウィンドウディメンションを含む772。
他の変形例および実施形態も可能である。
本発明の態様は、多くのタイプのコンピューティング環境によって使用され得る。本発明の1又は複数の態様を組み込み使用するためのコンピューティング環境の別の例が図8Aを参照して説明される。例として、図8Aのコンピューティング環境は、ニューヨーク州アーモンクのインターナショナルビジネスマシンズコーポレーションによって提供されるz/Architecture(登録商標)命令セットアーキテクチャに基づく。しかしながら、z/Architecture命令セットアーキテクチャは、単なる1つの例示的なアーキテクチャである。同様に、コンピューティング環境は、Intel(登録商標)x86アーキテクチャ、インターナショナルビジネスマシンズコーポレーションの他のアーキテクチャ、及び/又は、他の企業のアーキテクチャを含むがこれらに限定されない他のアーキテクチャに基づき得る。Intelは、インテルコーポレーション、又は、米国及び他の国における子会社の商標又は登録商標である。
一例において、コンピューティング環境10は、中央電子処理装置(CEC)11を含む。中央電子処理装置11は、例えば、1又は複数の汎用プロセッサ(すなわち中央処理装置(CPU)13)及び1又は複数の特定用途向けプロセッサ(例えば、ニューラルネットワークプロセッサ31)などの1又は複数のプロセッサ、並びに、入出力(I/O)サブシステム14に結合されたメモリ12(すなわち、システムメモリ、メインメモリ、メインストレージ、中央ストレージ、ストレージ)などの複数のコンポーネントを含む。
例として、1又は複数の特定用途向けプロセッサは、1又は複数の汎用プロセッサとは別であり得、及び/又は、少なくとも1つの専用プロセッサは、少なくとも1つの汎用プロセッサ内に組み込まれ得る。他の変形例も適用可能である。
I/Oサブシステム14は、中央電子処理装置の一部、又はそこから分離されたものであり得る。それは、メインストレージ12と、中央電子処理装置に連結された入出力制御部15および入出力(I/O)デバイス16との間の情報の流れを指示する。
多くのタイプのI/Oデバイスが使用され得る。1つの特定のタイプは、データストレージデバイス17である。データストレージデバイス17は、1又は複数のプログラム18、1又は複数のコンピュータ可読プログラム命令19、及び/又はデータなどを格納し得る。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成され得る。
中央電子処理装置11は、取り外し可能/取り外し不可能、揮発性/不揮発性コンピュータシステム記憶媒体に含まれる及び/又は連結され得る。例えば、それは、取り外し不可能な不揮発性磁気媒体(通常、「ハードドライブ」と呼ばれる)、取り外し可能な不揮発性磁気ディスク(例えば、「フロッピディスク」)から読み取る又はそこに書き込むための磁気ディスクドライブ、及び/又は、CD-ROM、DVD-ROM又は他の光媒体などの取り外し可能な不揮発性光ディスクから読み取る又はそこに書き込むための光ディスクドライブに含まれる及び/又は連結され得る。他のハードウェア及び/又はソフトウェアコンポーネントが、中央電子処理装置11と併せて使用され得ることを理解されたい。例は、マイクロコード又はミリコード、デバイスドライバ、冗長処理ユニット、外部ディスクドライブアレイ、RAIDシステム、テープドライブ、及びデータアーカイブストレージシステムなどを含むが、これらに限定されない。
さらに、中央電子処理装置11は、多数の他の汎用又は専用コンピューティングシステム環境又は構成とともに動作可能であり得る。中央電子処理装置11と共に使用するのに好適であり得る周知のコンピューティングシステム、環境、及び/又は構成の例は、上のシステム又はデバイス及び同様のもののいずれかを含む、パーソナルコンピュータ(PC)システム、サーバコンピュータシステム、シンクライアント、シッククライアント、ハンドヘルド又はラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラマブルコンシューマエレクトロニクス、ネットワークPC、ミニコンピュータシステム、メインフレームコンピュータシステム、及び分散クラウドコンピューティング環境を含むが、これらに限定されない。
中央電子処理装置11は、1又は複数の実施形態において、論理パーティション及び/又は仮想化サポートを提供する。一実施形態において、図8Bに示されるように、メモリ12は、例えば、1又は複数の論理パーティション20、論理パーティションを管理するハイパーバイザ21、およびプロセッサファームウェア22を含む。ハイパーバイザ21の1つの例としては、ニューヨーク州アーモンクのインターナショナルビジネスマシンズコーポレーションによって提供されるプロセッサリソース/システムマネージャ(PR/SMTM)がある。PR/SMは、少なくも1つの法域におけるインターナショナルビジネスマシンズコーポレーションの商標又は登録商標である。
各論理パーティション20は、別個のシステムとして機能することが可能である。すなわち、各論理パーティションは、独立にリセットされ得、ニューヨーク州アーモンクのインターナショナルビジネスマシンズコーポレーションによって提供されるz/OS(登録商標)オペレーティングシステムなどのゲストオペレーティングシステム23、又は、カップリングファシリティコントロールコード(CFCC)などの他の制御コード24を実行し、異なるプログラム25を用いて演算する。論理パーティションにおいて実行されているオペレーティングシステム又はアプリケーションプログラムは、全体の且つ完全なシステムへのアクセスを有するように見えるが、実際には、その一部のみが利用可能である。z/OSオペレーティングシステムが一例として提供されているが、インターナショナルビジネスマシンズコーポレーション及び/又は他の企業によって提供される他のオペレーティングシステムが、本発明の1又は複数の態様に従って使用され得る。
メモリ12は例えば、論理パーティションに割り当てられ得る物理的プロセッサリソースであるCPU13(図8A)に結合される。例えば、論理パーティション20は、1又は複数の論理プロセッサを含み得、その各々は、論理パーティションに動的に割り当てられ得る物理プロセッサリソース13のすべて又は一部を表す。
さらに別の実施形態において、中央電子処理装置は、仮想マシンサポート(論理パーティションサポートを有するもの又は有しないもののいずれか)を提供する。図8Cに示されるように、中央電子処理装置11のメモリ12は、例えば、1又は複数の仮想マシン26と、仮想マシンを管理するハイパーバイザ27などの仮想マシンマネージャと、プロセッサファームウェア28とを含む。ハイパーバイザ27の1つの例としては、ニューヨーク州アーモンクのインターナショナルビジネスマシンズコーポレーションによって提供されるz/VM(登録商標)ハイパーバイザがある。ハイパーバイザは、場合によっては、ホストと称される。z/VMは、少なくも1つの法域におけるインターナショナルビジネスマシンズコーポレーションの商標又は登録商標である。
中央電子処理装置の仮想マシンサポートは、多くの数の仮想マシン26を演算する能力を提供し、その各々は、異なるプログラム29を用いて演算し、Linux(登録商標)オペレーティングシステムなどのゲストオペレーティングシステム30を実行することが可能である。各仮想マシン26は、別個のシステムとして機能することが可能である。すなわち、各仮想マシンは独立してリセットされ、ゲストオペレーティングシステムを実行し、異なるプログラムとともに動作し得る。仮想マシンにおいて実行されているオペレーティングシステム又はアプリケーションプログラムは、全体の且つ完全なシステムへのアクセスを有するように見えるが、実際には、その一部のみが利用可能である。z/VMおよびLinuxが例として提供されているが、他の仮想マシンマネージャ及び/又はオペレーティングシステムが、本発明の1又は複数の態様に従って使用され得る。登録商標であるLinux(登録商標)は、世界的に当該商標の所有者であるLinus Torvaldsの専用ライセンシであるLinux Foundationからのサブライセンスに従って使用されている。
本発明の1又は複数の態様を組み込みおよび使用するためのコンピューティング環境の別の実施形態は、図9Aを参照して説明される。この例において、コンピューティング環境36は、例えば、例えば1又は複数のバス40及び/又は他のタイプの接続を介して互いに連結されている、ネイティブ中央処理装置(CPU)37、メモリ38、および、1又は複数の入出力デバイス及び/又はインタフェース39を含む。例として、コンピューティング環境36は、ニューヨーク州アーモンクのインターナショナルビジネスマシンズコーポレーションによって提供されるPowerPC(登録商標)プロセッサ;カリフォルニア州パロアルトのHewlett Packard社によって提供される、Intel(登録商標)Itanium(登録商標)IIプロセッサを用いるHP Superdome;及び/又は、インターナショナルビジネスマシンズコーポレーション、Hewlett Packard、インテルコーポレーション、オラクル及び/又は他社によって提供されるアーキテクチャに基づく他の機械を含み得る。(PowerPCは、少なくとも1つの法域におけるインターナショナルビジネスマシンズコーポレーションの商標又は登録商標である)。Itaniumは、米国および他の国におけるインテルコーポレーション又はその子会社の商標又は登録商標である。
ネイティブ中央処理装置37は、環境内における処理中に使用される1又は複数の汎用レジスタ及び/又は1又は複数の専用レジスタ又などの、1又は複数のネイティブレジスタ41を含む。これらのレジスタは、任意の特定時点における環境の状態を表す情報を含む。
さらに、ネイティブ中央処理装置37は、メモリ38に格納されている命令およびコードを実行する。1つの特定の例において、中央処理装置は、メモリ38に格納されているエミュレータコード42を実行する。このコードは、1つのアーキテクチャにおいて構成されているコンピューティング環境が別のアーキテクチャをエミュレートすることを可能にする。例えば、エミュレータコード42は、PowerPCプロセッサ、HP Superdomeサーバ、又はその他などの、z/Architecture命令セットアーキテクチャ以外のアーキテクチャに基づくマシンがz/Architecture命令セットアーキテクチャをエミュレートすること、及び、z/Architecture命令セットアーキテクチャに基づいて開発されたソフトウェア及び命令を実行することを可能にする。
エミュレータコード42に関連するさらなる詳細が、図9Bを参照して説明される。メモリ38に格納されているゲスト命令43は、ネイティブCPU37以外のアーキテクチャにおいて実行されるように開発されたソフトウェア命令(例えば、マシン命令と相互に関連付けられた)を備える。例えば、ゲスト命令43は、z/Architecture命令セットアーキテクチャに基づくプロセッサ上で実行するように設計され得るが、代わりに、例えばIntel Itanium IIプロセッサであり得るネイティブCPU37上でエミュレートされている。一例において、エミュレータコード42は、メモリ38から1又は複数のゲスト命令43を取得することと、取得された命令に対してローカルバッファリングを任意選択的に提供することとを行うための命令フェッチルーチン44を含む。それはまた、取得されたゲスト命令のタイプを判定することと、ゲスト命令を1又は複数の対応するネイティブ命令46に変換することとを行うための命令変換ルーチン45を含む。この変換は、例えば、ゲスト命令によって実行される機能を識別することと、その機能を実行するためのネイティブ命令を選択することとを含む。
さらに、エミュレータコード42は、ネイティブ命令を実行させるためのエミュレーション制御ルーチン47を含む。エミュレーション制御ルーチン47は、ネイティブCPU37に、1又は複数の以前に取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させて、そのような実行の終了において、次のゲスト命令又はゲスト命令のグループの取得をエミュレートするための命令フェッチルーチンに制御を返し得る。ネイティブ命令46の実行は、メモリ38からレジスタにデータをロードすること;レジスタからメモリにデータを戻して格納すること;又は、変換ルーチンによって判定されるようないくつかのタイプの算術又は論理演算を実行することを含み得る。
各ルーチンは、例えば、メモリに格納され且つネイティブ中央処理装置37によって実行されるソフトウェアにおいて実装される。他の例において、ルーチン又は動作のうち1又は複数は、ファームウェア、ハードウェア、ソフトウェア又はそれらのいくつかの組み合わせにおいて実装される。エミュレートされたプロセッサのレジスタは、ネイティブCPUのレジスタ41を使用して、又はメモリ38における位置を使用してエミュレートされ得る。実施形態において、ゲスト命令43、ネイティブ命令46およびエミュレータコード42は、同じメモリ内に存在し得、又は異なるメモリデバイス間に分散され得る。
エミュレートされ得る命令は、本発明の1又は複数の態様による、本明細書において説明されるニューラルネットワーク支援処理命令を含む。更に、ニューラルネットワーク処理の他の命令、関数、演算、及び/又は1又は複数の態様は、本発明の1又は複数の態様に従ってエミュレートされ得る。
上記のコンピューティング環境は、使用され得るコンピューティング環境の単なる例である。パーティション化されていない環境、パーティション化されている環境、クラウド環境及び/又はエミュレートされた環境を含むが、これらに限定されない他の環境が使用され得、実施形態は、任意の1つの環境に限定されない。コンピューティング環境の様々な例が本明細書に説明されているが、本発明の1又は複数の態様は多くのタイプの環境とともに使用され得る。本明細書に提供されているコンピューティング環境は単なる例である。
各コンピューティング環境は、本発明の1又は複数の態様を含むように構成されることが可能である。
1又は複数の態様が、クラウドコンピューティングに関連し得る。
本開示はクラウドコンピューティングに関する詳細な説明を含むが、本明細書に記載される教示内容の実装は、クラウドコンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られている、又は、今後開発される他の任意のタイプのコンピューティング環境と併せて実装することが可能である。
クラウドコンピューティングは、管理の労力又はサービスのプロバイダとの対話を最小限に抑えながら迅速にプロビジョニング及びリリースされ得る構成可能なコンピューティングリソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及び、サービス)の共有プールに対する便利なオンデマンドネットワークアクセスを可能にするためのサービス提供モデルである。本クラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、及び少なくとも4つの展開モデルを含んでよい。
特徴は以下のとおりである。
オンデマンドセルフサービス:クラウドコンシューマは、サービスのプロバイダとの人的対話を必要とすることなく、必要に応じて自動的に、サーバ時間及びネットワークストレージなどのコンピューティング能力を一方的にプロビジョニングすることができる。
幅広いネットワークアクセス:能力は、ネットワークを介して利用可能であり、また、異種混交のシンクライアントプラットフォーム又はシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、及びPDA(登録商標))による使用を促進する標準的なメカニズムを通じてアクセスされる。
リソースプーリング:プロバイダのコンピューティングリソースは、マルチテナントモデルを用いて複数のコンシューマにサービスを提供するようにプールされており、様々な物理リソース及び仮想リソースが需要に沿って動的に割り当てられ、また再割り当てされる。コンシューマは、概して、提供されたリソースの正確な位置に対して制御又は知識を有していないが、より高いレベルの抽象化(例えば、国、州、又はデータセンタ)において位置を指定することが可能であり得るという点で、一種の位置独立性がある。
迅速な拡張性:能力は迅速に且つ伸縮自在に、場合によっては自動的にプロビジョニングされ、即座にスケールアウトすることも、迅速にリリースして即座にスケールインすることもできる。コンシューマにとって、多くの場合、プロビジョニングのために利用可能な能力は無制限に見え、任意の時点において任意の量で購入され得る。
計測されるサービス:クラウドシステムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、及びアクティブなユーザアカウント)に適したある抽象化レベルで計量能力を活用することにより、リソースの使用を自動的に制御及び最適化する。リソース使用量をモニタリング、制御及び報告することができ、それにより、利用されるサービスのプロバイダ及びコンシューマの両方に透明性が提供される。
サービスモデルは以下のとおりである。
サービスとしてのソフトウェア(SaaS):コンシューマに提供される能力は、クラウドインフラストラクチャ上で動作しているプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブブラウザ(例えば、ウェブベースの電子メール)などのシンクライアントインタフェースを通じて様々なクライアントデバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定を考え得る例外として、ネットワーク、サーバ、オペレーティングシステム、ストレージ又は更には個々のアプリケーション能力を含む、基礎をなすクラウドインフラストラクチャを管理又は制御しない。
サービスとしてのプラットフォーム(PaaS):コンシューマに提供される能力は、プロバイダによってサポートされるプログラミング言語及びツールを用いて作成された、コンシューマが作成又は取得したアプリケーションをクラウドインフラストラクチャ上に展開することである。コンシューマは、ネットワーク、サーバ、オペレーティングシステム、又はストレージを含む、基礎をなすクラウドインフラストラクチャを管理又は制御しないが、展開されたアプリケーション、及び場合によってはアプリケーションホスティング環境構成に対して制御を有する。
サービスとしてのインフラストラクチャ(IaaS):コンシューマに提供される能力は、処理、ストレージ、ネットワーク、及び他の基本的なコンピューティングリソースをプロビジョニングすることであり、コンシューマは、オペレーティングシステム及びアプリケーションを含み得る任意のソフトウェアを展開し、動作させることができる。コンシューマは、基礎をなすクラウドインフラストラクチャを管理又は制御しないが、オペレーティングシステム、ストレージ、展開されたアプリケーションに対する制御及び、場合によっては、選択されたネットワーキングコンポーネント(例えば、ホストファイアウォール)に対する限定的な制御を有する。
展開モデルは以下のとおりである。
プライベートクラウド:クラウドインフラストラクチャは、組織のためにのみ運用される。それは、組織又は第三者によって管理されてよく、オンプレミス又はオフプレミスで存在してよい。
コミュニティクラウド:クラウドインフラストラクチャは、複数の組織により共有されており、共通の関心事(例えば、ミッション、セキュリティ要件、ポリシ、及び法令順守に関わる考慮事項)を有する特定のコミュニティをサポートする。コミュニティクラウドは、それらの組織又はサードパーティによって管理されてよく、オンプレミス又はオフプレミスで存在してよい。
パブリッククラウド:クラウドインフラストラクチャは、一般大衆又は大規模な業界団体により利用可能になり、クラウドサービスを販売する組織により所有されている。
ハイブリッドクラウド:クラウドインフラストラクチャは、2又はそれより多くのクラウド(プライベート、コミュニティ、又は、パブリック)を組み合わせたものであり、これらのクラウドは、固有のエンティティであり続けるが、データ及びアプリケーションの移植性(例えば、クラウド間で負荷分散するためのクラウドバースト)を可能にする標準化技術又は独自技術によって結びつけられている。
クラウドコンピューティング環境は、ステートレス性、低結合性、モジュール性、及び意味的相互運用性に重点を置いたサービス指向型である。クラウドコンピューティングの中核には、相互接続されたノードからなるネットワークを含むインフラストラクチャが存在する。
ここで、図10を参照すると、例示的なクラウドコンピューティング環境50が示される。図示されている通り、クラウドコンピューティング環境50は、例えば、パーソナルデジタルアシスタント(PDA)又はセルラー電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、及び/又は自動車コンピュータシステム54Nなど、クラウドコンシューマによって使用されるローカルコンピューティングデバイスが通信し得る1又は複数のクラウドコンピューティングノード52を含む。ノード52は、互いに通信し得る。それらは、上述したようなプライベートクラウド、コミュニティクラウド、パブリッククラウド、又はハイブリッドクラウド、又はその組み合わせなどの、1又は複数のネットワークにおいて物理的に又は仮想的にグループ化(図示せず)されてよい。これは、クラウドコンピューティング環境50が、インフラストラクチャ、プラットフォーム、及び/又はソフトウェアを、クラウドコンシューマがそのためにローカルコンピューティングデバイス上にリソースを維持する必要がないサービスとして提供することを可能にする。図10に示されるコンピューティングデバイス54A-Nのタイプは、単なる例示を意図したものであり、コンピューティングノード52及びクラウドコンピューティング環境50は、任意のタイプのネットワーク及び/又はネットワークアドレス可能接続を介して(例えば、ウェブブラウザを使用して)、任意のタイプのコンピュータ化デバイスと通信し得るが理解される。
ここで、図11を参照すると、クラウドコンピューティング環境50(図10)によって提供される機能抽象化レイヤのセットが示される。図11に示されているコンポーネント、層、及び機能が例示のみを意図したものであり、本発明の実施形態がそれらに限定されないことを事前に理解されるべきである。図示されている通り、以下の層及び対応する機能が提供されている。
ハードウェア及びソフトウェア層60は、ハードウェア及びソフトウェアコンポーネントを備える。ハードウェアコンポーネントの例は、メインフレーム61;RISC(縮小命令セットコンピュータ)アーキテクチャベースのサーバ62;サーバ63;ブレードサーバ64;ストレージデバイス65;及び、ネットワーク及びネットワーキングコンポーネント66を含む。幾つかの実施形態において、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア67及びデータベースソフトウェア68を含む。
仮想化層70は、仮想サーバ71、仮想ストレージ72、仮想プライベートネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティングシステム74、ならびに仮想クライアント75である、仮想エンティティの例が提供され得る抽象化層を提供する。
一例において、管理層80は、以下で説明する機能を提供してもよい。リソースプロビジョニング81は、クラウドコンピューティング環境内でタスクを実行するために利用される、コンピューティングリソース及び他のリソースの動的な調達を提供する。計量及び価格設定82は、クラウドコンピューティング環境内でリソースが利用される際のコスト追跡、及びこれらのリソースの消費に対する請求又はインボイス作成を提供する。一例において、これらのリソースは、アプリケーションソフトウェアライセンスを含んでよい。セキュリティは、クラウドコンシューマ及びタスクのアイデンティティ検証、並びに、データ及び他のリソースの保護を提供する。ユーザポータル83は、コンシューマ及びシステム管理者のために、クラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理84は、必要とされるサービスレベルが満たされるように、クラウドコンピューティングリソース割り当て及び管理を提供する。サービスレベルアグリーメント(SLA)計画及び履行85は、SLAに従って将来の要件が予測されるクラウドコンピューティングリソースの事前準備及び調達を提供する。
ワークロード層90は、クラウドコンピューティング環境が利用され得る機能の例を提供する。この層から提供され得るワークロード及び機能の例は、マッピング及びナビゲーション91、ソフトウェア開発及びライフサイクル管理92、仮想教室教育配信93、データ分析処理94、取引処理95、及びニューラルネットワーク処理支援処理96を含む。
本発明の態様は、任意の可能な技術詳細レベルの統合におけるシステム、方法及び/又はコンピュータプログラム製品であり得る。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(又は複数の媒体)を含んでよい。
コンピュータ可読記憶媒体は、命令実行デバイスによって使用されるための命令を保持及び記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、又は上述したものの任意の好適な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のさらに具体的な例の非網羅的リストは、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memory又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM:static random access memory)、ポータブルコンパクトディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタルバーサタイルディスク(DVD:digital versatile disk)、メモリスティック、フロッピディスク、命令が記録されているパンチカード又は溝の中の隆起構造などの機械的にエンコードされるデバイス、及びこれらの任意の好適な組み合わせを含む。本明細書において使用されるコンピュータ可読記憶媒体は、電波又は他の自由に伝播する電磁波、導波路又は他の伝送媒体を通って伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、又はワイヤを通じて伝送される電気信号等、それ自体が一時的な信号であると解釈されるべきではない。
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から、それぞれのコンピューティング/処理デバイスに、又は、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク及び/又は無線ネットワークを介して、外部コンピュータ又は外部記憶デバイスに、ダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ及び/又はエッジサーバを備え得る。各コンピューティング/処理デバイス内のネットワークアダプタカード又はネットワークインタフェースは、ネットワークからのコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。
本発明の動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の構成データであってもよく、Smalltalk(登録商標)又はC++等のようなオブジェクト指向プログラミング言語、および「C」プログラミング言語又は同様のプログラミング言語のような手続き型プログラミング言語を含む1又は複数のプログラミング言語の任意の組み合わせで記述したソースコード又はオブジェクトコードであってもよい。コンピュータ可読プログラム命令は、スタンドアロンのソフトウェアパッケージとして、ユーザのコンピュータ上で全体を実行すること、ユーザのコンピュータ上で一部分を実行することができ、ユーザのコンピュータ上で一部分を、リモートコンピュータ上で一部分を実行すること、又は、リモートコンピュータ又はサーバ上で全体を実行することができる。後者のシナリオでは、リモートコンピュータが、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてよく、又はその接続が、(例えば、インターネットサービスプロバイダを用いたインターネットを介して)外部コンピュータに対して行われてよい。幾つかの実施形態において、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、又はプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによりコンピュータ可読プログラム命令を実行し、電子回路をパーソナライズしてよい。
本発明の態様は、本明細書において、本発明の実施形態に係る方法、装置(システム)、及びコンピュータプログラム製品のフローチャート図及び/又はブロック図を参照して説明されている。フローチャート図及び/又はブロック図の各のブロック、及び、フローチャート図及び/又はブロック図におけるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得ることが理解されよう。
これらのコンピュータ可読プログラム命令をコンピュータ、又は他のプログラマブルデータ処理装置のプロセッサに提供してマシンを生み出してよく、それにより、コンピュータ又は他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フローチャート及び/又はブロック図の1又は複数のブロックで指定された機能/動作を実装するための手段を作成する。これらのコンピュータ可読プログラム命令は、コンピュータ、プログラマブルデータ処理装置及び/又は他のデバイスに特定の様式で機能するように指示することができるコンピュータ可読記憶媒体にも記憶され得、それにより、その中に命令が記憶されたコンピュータ可読記憶媒体が、フローチャート及び/又はブロック図の1又は複数のブロックで指定された機能/動作の態様を実装する命令を含む製品を有する。
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブルデータ処理装置、又は他のデバイス上にロードして、一連の動作段階をコンピュータ、他のプログラマブル装置又は他のデバイス上で実行させ、コンピュータ実装プロセスを生成してよく、それにより、コンピュータ、他のプログラマブル装置、又は他のデバイス上で実行される命令は、フローチャート及び/又はブロック図の1又は複数のブロックで指定された機能/動作を実装する。
図面におけるフローチャート及びブロック図は、本発明の様々な実施形態に係るシステム、方法、及びコンピュータプログラム製品の考えられる実装形態のアーキテクチャ、機能、及び動作を示している。これに関して、フローチャート又はブロック図における各ブロックは、指定された論理機能を実装するための1又は複数の実行可能命令を含む命令のモジュール、セグメント、又は一部を表し得る。いくつかの代替的な実装形態において、ブロックに記されている機能は、図面に記されている順序とは異なる順序で行われ得る。例えば、連続して示されている2つのブロックが、実際には、1つの段階として実現されてよく、同時に、実質的に同時に、部分的に又は全体的に時間が重複する方式で実行されてよく、又は、ブロックは、場合によっては、関与する機能に応じて逆の順序で実行されてよい。ブロック図及び/又はフローチャート図の各ブロック、および、ブロック図及び/又はフローチャート図のブロックの組合せを、指定された機能もしくは動作を行う、又は、特殊目的のハードウェア命令およびコンピュータ命令の組合せを実行する特殊目的のハードウェアベースのシステムにより実装することが可能であることも留意されるであろう。
上記に加えて、顧客環境の管理をオファーするサービスプロバイダによって、1又は複数の態様が提供され、オファーされ、展開され、管理され、サービス提供されるなどのことができる。例えば、サービスプロバイダは、1又は複数の顧客のために1又は複数の態様を実行するコンピュータコード及び/又はコンピュータインフラストラクチャを作成、維持、サポートするなどのことができる。返答として、サービスプロバイダは、例として、サブスクリプション及び/又は手数料契約の下の顧客から支払いを受け取り得る。加えて又は代替的に、サービスプロバイダは、1又は複数のサードパーティに対する広告コンテンツの販売から、支払いを受け取り得る。
1つの態様において、アプリケーションは、1又は複数の実施形態を実行するために展開され得る。1つの例として、アプリケーションの展開は、1又は複数の実施形態を実行するために動作可能なコンピュータインフラストラクチャを提供することを含む。
さらなる態様として、コンピューティングシステムにコンピュータ可読コードを統合することを含むコンピューティングインフラストラクチャが展開され得、ここで、コンピューティングシステムと組み合わされたコードは、1又は複数の実施形態を実行することが可能である。
さらに別の態様として、コンピュータ可読コードをコンピュータシステムに統合することを含むコンピューティングインフラストラクチャを統合するためのプロセスが提供され得る。コンピュータシステムはコンピュータ可読媒体を含み、ここで、コンピュータ媒体は1又は複数の実施形態を含む。コンピュータシステムと組み合わされたコードは、1又は複数の実施形態を実行することが可能である。
様々な実施形態が上記に説明されているが、これらは単なる例である。例えば、他のアーキテクチャのコンピューティング環境が、1又は複数の態様の組み込み及び/又は使用を行うために使用され得る。更に、異なる命令、関数、及び/又は演算が使用され得る。追加的に、異なるタイプのレジスタ及び/又は異なるレジスタが使用され得る。更に、他のデータフォーマット、データレイアウト、及び/又はデータサイズがサポートされ得る。1又は複数の実施形態において、1又は複数の汎用プロセッサ、1又は複数の特定用途向けプロセッサ、又は、汎用及び専用プロセッサの組み合わせが使用され得る。多くの変形例が可能である。
様々な態様が本明細書に説明されている。さらに、多くの変形例を、本発明の態様の趣旨から逸脱することなく行うことが可能である。別様に矛盾していない限り、本明細書に説明された各態様又は特徴とその変形とは、任意の他の態様又は特徴と組み合わせ可能であり得ることに留意されたい。
さらに、他のタイプのコンピューティング環境が利益を得て、使用され得る。一例として、プログラムコードを格納及び/又は実行するのに好適なデータ処理システムが使用可能であり、システムバスを通じてメモリ要素に直接的又は間接的に連結された少なくとも2つのプロセッサを含む。メモリ素子は、例えば、プログラムコードを実際に実行する間に利用されるローカルメモリと、大容量記憶装置と、実行中にコードが大容量記憶装置から検索されなければならない回数を減らすべく、少なくとも一部のプログラムコードの一時的なストレージを提供するキャッシュメモリとを含む。
入出力又はI/Oデバイス(キーボード、ディスプレイ、ポインティングデバイス、DASD、テープ、CD、DVD、サムドライブ、および他のメモリ媒体などを含むが、これらに限定されない)は、直接又は介在するI/Oコントローラを介して、システムに連結され得る。ネットワークアダプタもまた、データ処理システムが他のデータ処理システム又はリモートプリンタ又は記憶装置と結合されることを可能するために、間にあるプライベート又はパブリックネットワークを通じて、システムと結合され得る。モデム、ケーブルモデムおよびイーサネット(登録商標)カードは、利用可能なネットワークアダプタのタイプのほんの一部にすぎない。
本明細書で使用される用語は、特定の実施形態のみを説明することを目的としており、限定を行うことを意図しない。本明細書で使用される場合、文脈が別段明確に示さない限りは、単数形の「a」、「an」、及び「the」は、複数形も含むことを意図する。用語「含む」及び/又は「含み」は、本明細書において使用されるとき、記載された特徴、整数、段階、オペレーション、要素及び/又はコンポーネントの存在を指定するが、1又は複数の他の特徴、整数、段階、オペレーション、要素、コンポーネント、もしくは、それらのグループ、又はその組み合わせの存在又は追加を除外するものではないことを更に理解されたい。
以下の請求項におけるあらゆる手段又は段階プラス機能要素の、対応する構造、材料、動き、およびそれらと同等のものがある場合は、特に請求されるものとして他の請求される要素との組み合わせで機能を実行するための構造、材料、又は行為を含むものとして意図される。1又は複数の実施形態の説明は、例示および説明の目的のために提示されているが、網羅的であること又は開示された形に限定されることを意図するものではない。当業者には多くの修正および変形が明らかとなるであろう。様々な態様および実際の適用を最良に説明するべく、ならびに、企図される特定の使用に好適なように様々な修正を有する様々な実施形態を当業者が理解することを可能にするべく、実施形態が選択および説明された。
以下の請求項におけるあらゆる手段又は段階プラス機能要素の、対応する構造、材料、動き、およびそれらと同等のものがある場合は、特に請求されるものとして他の請求される要素との組み合わせで機能を実行するための構造、材料、又は行為を含むものとして意図される。1又は複数の実施形態の説明は、例示および説明の目的のために提示されているが、網羅的であること又は開示された形に限定されることを意図するものではない。当業者には多くの修正および変形が明らかとなるであろう。様々な態様および実際の適用を最良に説明するべく、ならびに、企図される特定の使用に好適なように様々な修正を有する様々な実施形態を当業者が理解することを可能にするべく、実施形態が選択および説明された。
[項目1]
1又は複数のコンピュータ可読記憶媒体、及び、前記1又は複数のコンピュータ可読記憶媒体にまとめて格納されるプログラム命令
を備え、前記プログラム命令は、
実行される関数のインジケーションを取得する手順、ここで、前記関数は、命令の1つの関数であり、複数の演算を実行するように構成されている;
実行される前記複数の演算のうちの演算を判定する手順;及び
値のセット、及び、対応する関係のセットを使用して、関数特有のパラメータのセットをバリデートする手順、ここで、前記値のセット、及び、前記対応する関係のセットは、実行される前記演算に基づき、ここで、値の1つのセット及び対応する関係のセットは、実行される前記演算のために使用され、別の値のセット及び対応する関係のセットが、前記複数の演算の別の演算のために使用される、
を備える方法を実行するためのものである、
コンピューティング環境内の処理を促進するためのコンピュータプログラム製品。
[項目2]
実行される前記演算を判定する前記手順は、1又は複数の関数特有のパラメータを少なくとも1つの特定の値に対してチェックする手順を含み、ここで、前記1又は複数の関数特有のパラメータが前記少なくとも1つの特定の値に関して第1選択関係を有することに基づいて、前記演算は1つの演算であり、前記1又は複数の関数特有のパラメータが前記少なくとも1つの特定の値に関して第2選択関係を有することに基づいて、前記演算は別の演算である、項目1に記載のコンピュータプログラム製品。
[項目3]
前記関数は平均プール関数を含み、前記1又は複数の関数特有のパラメータは、1又は複数のストライド値を含み、ここで、ストライド値は、1又は複数の隣接する出力テンソル要素を計算するとき、スライディングウィンドウが入力テンソル上を移動する量であり、前記少なくとも1つの特定の値はゼロを含み、前記第1選択関係は、等しいことを含み、前記演算は、1又は複数のストライド値がゼロに等しいことに基づく平均-低減演算である、項目2に記載のコンピュータプログラム製品。
[項目4]
前記第2選択関係は、より大きいことを含み、前記演算は、前記1又は複数のストライド値がゼロより大きいことに基づくプーリング演算である、項目3に記載のコンピュータプログラム製品。
[項目5]
前記関数特有のパラメータのセットは、1又は複数の選択ディメンションウィンドウサイズ値を含み、ここで、選択ディメンションウィンドウサイズ値は、スライディングウィンドウが含む選択ディメンションにおける要素の数を指定し、前記スライディングウィンドウは、前記関数の入力テンソル上を移動して出力テンソルを生成するように構成されている、項目1から4のいずれか一項に記載のコンピュータプログラム製品。
[項目6]
前記関数は平均プール関数を含み、前記演算は平均-低減演算を含み、前記関数特有のパラメータのセットをバリデートするために使用される前記値のセット及び前記対応する関係のセットは、選択入力テンソルの1つのディメンションの1つの値及び等しいことである対応する関係、前記選択入力テンソルの別のディメンションの別の値及び等しいことである対応する関係、並びに、選択値及びより小さい又は等しいことである対応する関係を含む、項目5に記載のコンピュータプログラム製品。
[項目7]
前記バリデートする手順は、ディメンション2ウィンドウサイズの値が第1入力テンソルのディメンション2の値に等しいこと、ディメンション3ウィンドウサイズの値が前記第1入力テンソルのディメンション3の値に等しいこと、前記ディメンション2ウィンドウサイズの前記値が前記選択値より小さい又はそれに等しいこと、及び、前記ディメンション3ウィンドウサイズの前記値が前記選択値より小さい又はそれに等しいことをチェックすることを含む、項目6に記載のコンピュータプログラム製品。
[項目8]
前記関数は平均プール関数を含み、前記演算はプーリング演算を含み、前記関数特有のパラメータのセットをバリデートするために使用される前記値のセット及び対応する関係のセットは、選択入力テンソルの1つのディメンションの1つの値及びより小さい又は等しいことである対応する関係を含み、前記選択入力テンソルの別のディメンションの別の値及びより小さい又は等しいことである対応する関係を含む、項目5に記載のコンピュータプログラム製品。
[項目9]
前記バリデートする手順は、ディメンション2ウィンドウサイズの値が、第1入力テンソルのディメンション2の値より小さい又はそれに等しいこと、及び、ディメンション3ウィンドウサイズの値が前記第1入力テンソルのディメンション3の値より小さい又はそれに等しいことをチェックすることを含む、項目8に記載のコンピュータプログラム製品。
[項目10]
前記方法は更に、パディングのタイプが特定のタイプにセットされるかどうかを判定する手順、ここで、前記パディングのタイプは、ウィンドウのどの要素が出力を計算するために使用されるかを示し、前記パディングのタイプが前記特定のタイプにセットされることに基づいて、前記バリデートする手順が実行されることを含む、項目8に記載のコンピュータプログラム製品。
[項目11]
前記パディングのタイプが前記特定のタイプにセットされていないことに基づいて、出力テンソルの1又は複数のディメンションに関連する1又は複数のチェックが実行される、項目10に記載のコンピュータプログラム製品。
[項目12]
前記演算を判定する前記手順は、入力テンソルの少なくも1つのスライディングウィンドウストライド値に基づき、前記関数特有のパラメータのセットは、入力テンソルの少なくも1つのスライディングウィンドウディメンションを含む、項目1から11のいずれか一項に記載のコンピュータプログラム製品。
[項目13]
コンピューティング環境内の処理を促進するためのコンピュータシステムであって、前記コンピュータシステムは、
メモリ;及び
前記メモリと通信する少なくとも1つのプロセッサ
を備え、前記コンピュータシステムは方法を実行するように構成されており、前記方法は、
実行される関数のインジケーションを取得する手順、ここで、前記関数は、命令の1つの関数であり、複数の演算を実行するように構成されている;
実行される前記複数の演算のうちの演算を判定する手順;及び
値のセット及び対応する関係のセットを使用して、関数特有のパラメータのセットをバリデートする手順、ここで、前記値のセット及び対応する関係のセットは、実行される前記演算に基づき、ここで、値の1つのセット及び対応する関係のセットは、実行される前記演算のために使用され、別の値のセット及び対応する関係のセットは、前記複数の演算の別の演算のために使用される、
を備える、コンピュータシステム。
[項目14]
実行される前記演算を判定する前記手順は、1又は複数の関数特有のパラメータを少なくとも1つの特定の値に対してチェックする手順を含み、ここで、前記1又は複数の関数特有のパラメータが前記少なくとも1つの特定の値に関して第1選択関係を有することに基づいて、前記演算は1つの演算であり、前記1又は複数の関数特有のパラメータが前記少なくとも1つの特定の値に関して第2選択関係を有することに基づいて、前記演算は別の演算である、項目13に記載のコンピュータシステム。
[項目15]
前記関数は平均プール関数を含み、前記1又は複数の関数特有のパラメータは1又は複数のストライド値を含み、ここで、ストライド値は、1又は複数の隣接する出力テンソル要素を計算するときにスライディングウィンドウが入力テンソル上を移動する量であり、前記少なくとも1つの特定の値はゼロを含み、前記第1選択関係は、等しいことを含み、前記演算は、前記1又は複数のストライド値がゼロに等しいことに基づく平均-低減演算であり、ここで、前記第2選択関係は、より大きいことを含み、前記演算は、前記1又は複数のストライド値がゼロより大きいことに基づくプーリング演算である、項目14に記載のコンピュータシステム。
[項目16]
前記演算を判定する前記手順は、入力テンソルの少なくも1つのスライディングウィンドウストライド値に基づき、前記関数特有のパラメータのセットは、入力テンソルの少なくも1つのスライディングウィンドウディメンションを含む、項目13から15のいずれか一項に記載のコンピュータシステム。
[項目17]
コンピューティング環境内の処理を促進するコンピュータ実装方法であって、
実行される関数のインジケーションを取得する段階、ここで、前記関数は、命令の1つの関数であり、複数の演算を実行するように構成されている;
実行される前記複数の演算のうちの演算を判定する段階;及び
値のセット及び対応する関係のセットを使用して関数特有のパラメータのセットをバリデートする段階、ここで、前記値のセット及び対応する関係のセットは、実行される前記演算に基づき、ここで、値の1つのセット及び対応する関係のセットは、実行される前記演算のために使用され、値の別のセット及び対応する関係のセットは、前記複数の演算の別の演算のために使用される、
を備えるコンピュータ実装方法。
[項目18]
実行される前記演算を判定する前記段階は、1又は複数の関数特有のパラメータを少なくとも1つの特定の値に対してチェックする段階を含み、ここで、前記1又は複数の関数特有のパラメータが前記少なくとも1つの特定の値に関して第1選択関係を有することに基づいて、前記演算は1つの演算であり、前記1又は複数の関数特有のパラメータが前記少なくとも1つの特定の値に関して第2選択関係を有することに基づいて、前記演算は別の演算である、項目17に記載のコンピュータ実装方法。
[項目19]
前記関数は平均プール関数を含み、前記1又は複数の関数特有のパラメータは1又は複数のストライド値を含み、ここで、ストライド値は、1又は複数の隣接する出力テンソル要素を計算するときにスライディングウィンドウが入力テンソル上を移動する量であり、前記少なくとも1つの特定の値はゼロを含み、前記第1選択関係は、等しいことを含み、前記演算は、前記1又は複数のストライド値がゼロに等しいことに基づく平均-低減演算であり、ここで、前記第2選択関係は、より大きいことを含み、前記演算は、前記1又は複数のストライド値がゼロより大きいことに基づくプーリング演算である、項目18に記載のコンピュータ実装方法。
[項目20]
前記演算を判定する前記段階は、入力テンソルの少なくも1つのスライディングウィンドウストライド値に基づき、前記関数特有のパラメータのセットは、入力テンソルの少なくも1つのスライディングウィンドウディメンションを含む、項目17から19のいずれか一項に記載のコンピュータ実装方法。
[項目1]
1又は複数のコンピュータ可読記憶媒体、及び、前記1又は複数のコンピュータ可読記憶媒体にまとめて格納されるプログラム命令
を備え、前記プログラム命令は、
実行される関数のインジケーションを取得する手順、ここで、前記関数は、命令の1つの関数であり、複数の演算を実行するように構成されている;
実行される前記複数の演算のうちの演算を判定する手順;及び
値のセット、及び、対応する関係のセットを使用して、関数特有のパラメータのセットをバリデートする手順、ここで、前記値のセット、及び、前記対応する関係のセットは、実行される前記演算に基づき、ここで、値の1つのセット及び対応する関係のセットは、実行される前記演算のために使用され、別の値のセット及び対応する関係のセットが、前記複数の演算の別の演算のために使用される、
を備える方法を実行するためのものである、
コンピューティング環境内の処理を促進するためのコンピュータプログラム製品。
[項目2]
実行される前記演算を判定する前記手順は、1又は複数の関数特有のパラメータを少なくとも1つの特定の値に対してチェックする手順を含み、ここで、前記1又は複数の関数特有のパラメータが前記少なくとも1つの特定の値に関して第1選択関係を有することに基づいて、前記演算は1つの演算であり、前記1又は複数の関数特有のパラメータが前記少なくとも1つの特定の値に関して第2選択関係を有することに基づいて、前記演算は別の演算である、項目1に記載のコンピュータプログラム製品。
[項目3]
前記関数は平均プール関数を含み、前記1又は複数の関数特有のパラメータは、1又は複数のストライド値を含み、ここで、ストライド値は、1又は複数の隣接する出力テンソル要素を計算するとき、スライディングウィンドウが入力テンソル上を移動する量であり、前記少なくとも1つの特定の値はゼロを含み、前記第1選択関係は、等しいことを含み、前記演算は、1又は複数のストライド値がゼロに等しいことに基づく平均-低減演算である、項目2に記載のコンピュータプログラム製品。
[項目4]
前記第2選択関係は、より大きいことを含み、前記演算は、前記1又は複数のストライド値がゼロより大きいことに基づくプーリング演算である、項目3に記載のコンピュータプログラム製品。
[項目5]
前記関数特有のパラメータのセットは、1又は複数の選択ディメンションウィンドウサイズ値を含み、ここで、選択ディメンションウィンドウサイズ値は、スライディングウィンドウが含む選択ディメンションにおける要素の数を指定し、前記スライディングウィンドウは、前記関数の入力テンソル上を移動して出力テンソルを生成するように構成されている、項目1から4のいずれか一項に記載のコンピュータプログラム製品。
[項目6]
前記関数は平均プール関数を含み、前記演算は平均-低減演算を含み、前記関数特有のパラメータのセットをバリデートするために使用される前記値のセット及び前記対応する関係のセットは、選択入力テンソルの1つのディメンションの1つの値及び等しいことである対応する関係、前記選択入力テンソルの別のディメンションの別の値及び等しいことである対応する関係、並びに、選択値及びより小さい又は等しいことである対応する関係を含む、項目5に記載のコンピュータプログラム製品。
[項目7]
前記バリデートする手順は、ディメンション2ウィンドウサイズの値が第1入力テンソルのディメンション2の値に等しいこと、ディメンション3ウィンドウサイズの値が前記第1入力テンソルのディメンション3の値に等しいこと、前記ディメンション2ウィンドウサイズの前記値が前記選択値より小さい又はそれに等しいこと、及び、前記ディメンション3ウィンドウサイズの前記値が前記選択値より小さい又はそれに等しいことをチェックすることを含む、項目6に記載のコンピュータプログラム製品。
[項目8]
前記関数は平均プール関数を含み、前記演算はプーリング演算を含み、前記関数特有のパラメータのセットをバリデートするために使用される前記値のセット及び対応する関係のセットは、選択入力テンソルの1つのディメンションの1つの値及びより小さい又は等しいことである対応する関係を含み、前記選択入力テンソルの別のディメンションの別の値及びより小さい又は等しいことである対応する関係を含む、項目5に記載のコンピュータプログラム製品。
[項目9]
前記バリデートする手順は、ディメンション2ウィンドウサイズの値が、第1入力テンソルのディメンション2の値より小さい又はそれに等しいこと、及び、ディメンション3ウィンドウサイズの値が前記第1入力テンソルのディメンション3の値より小さい又はそれに等しいことをチェックすることを含む、項目8に記載のコンピュータプログラム製品。
[項目10]
前記方法は更に、パディングのタイプが特定のタイプにセットされるかどうかを判定する手順、ここで、前記パディングのタイプは、ウィンドウのどの要素が出力を計算するために使用されるかを示し、前記パディングのタイプが前記特定のタイプにセットされることに基づいて、前記バリデートする手順が実行されることを含む、項目8に記載のコンピュータプログラム製品。
[項目11]
前記パディングのタイプが前記特定のタイプにセットされていないことに基づいて、出力テンソルの1又は複数のディメンションに関連する1又は複数のチェックが実行される、項目10に記載のコンピュータプログラム製品。
[項目12]
前記演算を判定する前記手順は、入力テンソルの少なくも1つのスライディングウィンドウストライド値に基づき、前記関数特有のパラメータのセットは、入力テンソルの少なくも1つのスライディングウィンドウディメンションを含む、項目1から11のいずれか一項に記載のコンピュータプログラム製品。
[項目13]
コンピューティング環境内の処理を促進するためのコンピュータシステムであって、前記コンピュータシステムは、
メモリ;及び
前記メモリと通信する少なくとも1つのプロセッサ
を備え、前記コンピュータシステムは方法を実行するように構成されており、前記方法は、
実行される関数のインジケーションを取得する手順、ここで、前記関数は、命令の1つの関数であり、複数の演算を実行するように構成されている;
実行される前記複数の演算のうちの演算を判定する手順;及び
値のセット及び対応する関係のセットを使用して、関数特有のパラメータのセットをバリデートする手順、ここで、前記値のセット及び対応する関係のセットは、実行される前記演算に基づき、ここで、値の1つのセット及び対応する関係のセットは、実行される前記演算のために使用され、別の値のセット及び対応する関係のセットは、前記複数の演算の別の演算のために使用される、
を備える、コンピュータシステム。
[項目14]
実行される前記演算を判定する前記手順は、1又は複数の関数特有のパラメータを少なくとも1つの特定の値に対してチェックする手順を含み、ここで、前記1又は複数の関数特有のパラメータが前記少なくとも1つの特定の値に関して第1選択関係を有することに基づいて、前記演算は1つの演算であり、前記1又は複数の関数特有のパラメータが前記少なくとも1つの特定の値に関して第2選択関係を有することに基づいて、前記演算は別の演算である、項目13に記載のコンピュータシステム。
[項目15]
前記関数は平均プール関数を含み、前記1又は複数の関数特有のパラメータは1又は複数のストライド値を含み、ここで、ストライド値は、1又は複数の隣接する出力テンソル要素を計算するときにスライディングウィンドウが入力テンソル上を移動する量であり、前記少なくとも1つの特定の値はゼロを含み、前記第1選択関係は、等しいことを含み、前記演算は、前記1又は複数のストライド値がゼロに等しいことに基づく平均-低減演算であり、ここで、前記第2選択関係は、より大きいことを含み、前記演算は、前記1又は複数のストライド値がゼロより大きいことに基づくプーリング演算である、項目14に記載のコンピュータシステム。
[項目16]
前記演算を判定する前記手順は、入力テンソルの少なくも1つのスライディングウィンドウストライド値に基づき、前記関数特有のパラメータのセットは、入力テンソルの少なくも1つのスライディングウィンドウディメンションを含む、項目13から15のいずれか一項に記載のコンピュータシステム。
[項目17]
コンピューティング環境内の処理を促進するコンピュータ実装方法であって、
実行される関数のインジケーションを取得する段階、ここで、前記関数は、命令の1つの関数であり、複数の演算を実行するように構成されている;
実行される前記複数の演算のうちの演算を判定する段階;及び
値のセット及び対応する関係のセットを使用して関数特有のパラメータのセットをバリデートする段階、ここで、前記値のセット及び対応する関係のセットは、実行される前記演算に基づき、ここで、値の1つのセット及び対応する関係のセットは、実行される前記演算のために使用され、値の別のセット及び対応する関係のセットは、前記複数の演算の別の演算のために使用される、
を備えるコンピュータ実装方法。
[項目18]
実行される前記演算を判定する前記段階は、1又は複数の関数特有のパラメータを少なくとも1つの特定の値に対してチェックする段階を含み、ここで、前記1又は複数の関数特有のパラメータが前記少なくとも1つの特定の値に関して第1選択関係を有することに基づいて、前記演算は1つの演算であり、前記1又は複数の関数特有のパラメータが前記少なくとも1つの特定の値に関して第2選択関係を有することに基づいて、前記演算は別の演算である、項目17に記載のコンピュータ実装方法。
[項目19]
前記関数は平均プール関数を含み、前記1又は複数の関数特有のパラメータは1又は複数のストライド値を含み、ここで、ストライド値は、1又は複数の隣接する出力テンソル要素を計算するときにスライディングウィンドウが入力テンソル上を移動する量であり、前記少なくとも1つの特定の値はゼロを含み、前記第1選択関係は、等しいことを含み、前記演算は、前記1又は複数のストライド値がゼロに等しいことに基づく平均-低減演算であり、ここで、前記第2選択関係は、より大きいことを含み、前記演算は、前記1又は複数のストライド値がゼロより大きいことに基づくプーリング演算である、項目18に記載のコンピュータ実装方法。
[項目20]
前記演算を判定する前記段階は、入力テンソルの少なくも1つのスライディングウィンドウストライド値に基づき、前記関数特有のパラメータのセットは、入力テンソルの少なくも1つのスライディングウィンドウディメンションを含む、項目17から19のいずれか一項に記載のコンピュータ実装方法。
Claims (20)
- 1又は複数のコンピュータ可読記憶媒体、及び、前記1又は複数のコンピュータ可読記憶媒体にまとめて格納されるプログラム命令
を備え、前記プログラム命令は、
実行される関数のインジケーションを取得する手順、ここで、前記関数は、命令の1つの関数であり、複数の演算を実行するように構成されている;
実行される前記複数の演算のうちの演算を判定する手順;及び
値のセット、及び、対応する関係のセットを使用して、関数特有のパラメータのセットをバリデートする手順、ここで、前記値のセット、及び、前記対応する関係のセットは、実行される前記演算に基づき、ここで、値の1つのセット及び対応する関係のセットは、実行される前記演算のために使用され、別の値のセット及び対応する関係のセットが、前記複数の演算の別の演算のために使用される、
を備える方法を実行するためのものである、
コンピューティング環境内の処理を促進するためのコンピュータプログラム製品。 - 実行される前記演算を判定する前記手順は、1又は複数の関数特有のパラメータを少なくとも1つの特定の値に対してチェックする手順を含み、ここで、前記1又は複数の関数特有のパラメータが前記少なくとも1つの特定の値に関して第1選択関係を有することに基づいて、前記演算は1つの演算であり、前記1又は複数の関数特有のパラメータが前記少なくとも1つの特定の値に関して第2選択関係を有することに基づいて、前記演算は別の演算である、請求項1に記載のコンピュータプログラム製品。
- 前記関数は平均プール関数を含み、前記1又は複数の関数特有のパラメータは、1又は複数のストライド値を含み、ここで、ストライド値は、1又は複数の隣接する出力テンソル要素を計算するとき、スライディングウィンドウが入力テンソル上を移動する量であり、前記少なくとも1つの特定の値はゼロを含み、前記第1選択関係は、等しいことを含み、前記演算は、1又は複数のストライド値がゼロに等しいことに基づく平均-低減演算である、請求項2に記載のコンピュータプログラム製品。
- 前記第2選択関係は、より大きいことを含み、前記演算は、前記1又は複数のストライド値がゼロより大きいことに基づくプーリング演算である、請求項3に記載のコンピュータプログラム製品。
- 前記関数特有のパラメータのセットは、1又は複数の選択ディメンションウィンドウサイズ値を含み、ここで、選択ディメンションウィンドウサイズ値は、スライディングウィンドウが含む選択ディメンションにおける要素の数を指定し、前記スライディングウィンドウは、前記関数の入力テンソル上を移動して出力テンソルを生成するように構成されている、請求項1から4のいずれか一項に記載のコンピュータプログラム製品。
- 前記関数は平均プール関数を含み、前記演算は平均-低減演算を含み、前記関数特有のパラメータのセットをバリデートするために使用される前記値のセット及び前記対応する関係のセットは、選択入力テンソルの1つのディメンションの1つの値及び等しいことである対応する関係、前記選択入力テンソルの別のディメンションの別の値及び等しいことである対応する関係、並びに、選択値及びより小さい又は等しいことである対応する関係を含む、請求項5に記載のコンピュータプログラム製品。
- 前記バリデートする手順は、ディメンション2ウィンドウサイズの値が第1入力テンソルのディメンション2の値に等しいこと、ディメンション3ウィンドウサイズの値が前記第1入力テンソルのディメンション3の値に等しいこと、前記ディメンション2ウィンドウサイズの前記値が前記選択値より小さい又はそれに等しいこと、及び、前記ディメンション3ウィンドウサイズの前記値が前記選択値より小さい又はそれに等しいことをチェックすることを含む、請求項6に記載のコンピュータプログラム製品。
- 前記関数は平均プール関数を含み、前記演算はプーリング演算を含み、前記関数特有のパラメータのセットをバリデートするために使用される前記値のセット及び対応する関係のセットは、選択入力テンソルの1つのディメンションの1つの値及びより小さい又は等しいことである対応する関係を含み、前記選択入力テンソルの別のディメンションの別の値及びより小さい又は等しいことである対応する関係を含む、請求項5に記載のコンピュータプログラム製品。
- 前記バリデートする手順は、ディメンション2ウィンドウサイズの値が、第1入力テンソルのディメンション2の値より小さい又はそれに等しいこと、及び、ディメンション3ウィンドウサイズの値が前記第1入力テンソルのディメンション3の値より小さい又はそれに等しいことをチェックすることを含む、請求項8に記載のコンピュータプログラム製品。
- 前記方法は更に、パディングのタイプが特定のタイプにセットされるかどうかを判定する手順を備え、ここで、前記パディングのタイプは、ウィンドウのどの要素が出力を計算するために使用されるかを示し、前記パディングのタイプが前記特定のタイプにセットされることに基づいて、前記バリデートする手順が実行されることを含む、請求項8に記載のコンピュータプログラム製品。
- 前記パディングのタイプが前記特定のタイプにセットされていないことに基づいて、出力テンソルの1又は複数のディメンションに関連する1又は複数のチェックが実行される、請求項10に記載のコンピュータプログラム製品。
- 前記演算を判定する前記手順は、入力テンソルの少なくも1つのスライディングウィンドウストライド値に基づき、前記関数特有のパラメータのセットは、入力テンソルの少なくも1つのスライディングウィンドウディメンションを含む、請求項1から11のいずれか一項に記載のコンピュータプログラム製品。
- コンピューティング環境内の処理を促進するためのコンピュータシステムであって、前記コンピュータシステムは、
メモリ;及び
前記メモリと通信する少なくとも1つのプロセッサ
を備え、前記コンピュータシステムは方法を実行するように構成されており、前記方法は、
実行される関数のインジケーションを取得する手順、ここで、前記関数は、命令の1つの関数であり、複数の演算を実行するように構成されている;
実行される前記複数の演算のうちの演算を判定する手順;及び
値のセット及び対応する関係のセットを使用して、関数特有のパラメータのセットをバリデートする手順、ここで、前記値のセット及び対応する関係のセットは、実行される前記演算に基づき、ここで、値の1つのセット及び対応する関係のセットは、実行される前記演算のために使用され、別の値のセット及び対応する関係のセットは、前記複数の演算の別の演算のために使用される、
を備える、コンピュータシステム。 - 実行される前記演算を判定する前記手順は、1又は複数の関数特有のパラメータを少なくとも1つの特定の値に対してチェックする手順を含み、ここで、前記1又は複数の関数特有のパラメータが前記少なくとも1つの特定の値に関して第1選択関係を有することに基づいて、前記演算は1つの演算であり、前記1又は複数の関数特有のパラメータが前記少なくとも1つの特定の値に関して第2選択関係を有することに基づいて、前記演算は別の演算である、請求項13に記載のコンピュータシステム。
- 前記関数は平均プール関数を含み、前記1又は複数の関数特有のパラメータは1又は複数のストライド値を含み、ここで、ストライド値は、1又は複数の隣接する出力テンソル要素を計算するときにスライディングウィンドウが入力テンソル上を移動する量であり、前記少なくとも1つの特定の値はゼロを含み、前記第1選択関係は、等しいことを含み、前記演算は、前記1又は複数のストライド値がゼロに等しいことに基づく平均-低減演算であり、ここで、前記第2選択関係は、より大きいことを含み、前記演算は、前記1又は複数のストライド値がゼロより大きいことに基づくプーリング演算である、請求項14に記載のコンピュータシステム。
- 前記演算を判定する前記手順は、入力テンソルの少なくも1つのスライディングウィンドウストライド値に基づき、前記関数特有のパラメータのセットは、入力テンソルの少なくも1つのスライディングウィンドウディメンションを含む、請求項13から15のいずれか一項に記載のコンピュータシステム。
- コンピューティング環境内の処理を促進するコンピュータ実装方法であって、
実行される関数のインジケーションを取得する段階、ここで、前記関数は、命令の1つの関数であり、複数の演算を実行するように構成されている;
実行される前記複数の演算のうちの演算を判定する段階;及び
値のセット及び対応する関係のセットを使用して関数特有のパラメータのセットをバリデートする段階、ここで、前記値のセット及び対応する関係のセットは、実行される前記演算に基づき、ここで、値の1つのセット及び対応する関係のセットは、実行される前記演算のために使用され、値の別のセット及び対応する関係のセットは、前記複数の演算の別の演算のために使用される、
を備えるコンピュータ実装方法。 - 実行される前記演算を判定する前記段階は、1又は複数の関数特有のパラメータを少なくとも1つの特定の値に対してチェックする段階を含み、ここで、前記1又は複数の関数特有のパラメータが前記少なくとも1つの特定の値に関して第1選択関係を有することに基づいて、前記演算は1つの演算であり、前記1又は複数の関数特有のパラメータが前記少なくとも1つの特定の値に関して第2選択関係を有することに基づいて、前記演算は別の演算である、請求項17に記載のコンピュータ実装方法。
- 前記関数は平均プール関数を含み、前記1又は複数の関数特有のパラメータは1又は複数のストライド値を含み、ここで、ストライド値は、1又は複数の隣接する出力テンソル要素を計算するときにスライディングウィンドウが入力テンソル上を移動する量であり、前記少なくとも1つの特定の値はゼロを含み、前記第1選択関係は、等しいことを含み、前記演算は、前記1又は複数のストライド値がゼロに等しいことに基づく平均-低減演算であり、ここで、前記第2選択関係は、より大きいことを含み、前記演算は、前記1又は複数のストライド値がゼロより大きいことに基づくプーリング演算である、請求項18に記載のコンピュータ実装方法。
- 前記演算を判定する前記段階は、入力テンソルの少なくも1つのスライディングウィンドウストライド値に基づき、前記関数特有のパラメータのセットは、入力テンソルの少なくも1つのスライディングウィンドウディメンションを含む、請求項17から19のいずれか一項に記載のコンピュータ実装方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/350,550 | 2021-06-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024523098A true JP2024523098A (ja) | 2024-06-28 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI833205B (zh) | 用於遞歸神經網路中使用之串連輸入/輸出張量 | |
AU2022292887A1 (en) | Data conversion to/from selected data type with implied rounding mode | |
US12008395B2 (en) | Program event recording storage alteration processing for a neural network accelerator instruction | |
TWI807767B (zh) | 神經網路處理輔助指令 | |
US11797270B2 (en) | Single function to perform multiple operations with distinct operation parameter validation | |
JP2024523098A (ja) | 個別の演算パラメータのバリデーションを伴う複数の演算を実行するための単一関数 | |
TWI804285B (zh) | 查詢模型相依資訊之指令 | |
TWI840785B (zh) | 用於在指令執行期間偵測之無效值之例外摘要 | |
AU2022292046B2 (en) | Reformatting of tensors to provide sub-tensors | |
TWI840790B (zh) | 用於促進一運算環境內之處理的電腦程式產品、電腦系統及電腦實施方法 | |
JP2024523093A (ja) | サブテンソルを提供するためのテンソルの再フォーマット | |
JP2024522737A (ja) | 行列乗算演算とバイアス加算演算を組み合わせて実行する単一関数 | |
JP2024523880A (ja) | 畳み込み演算と選択演算を組み合わせて実行する単一関数 | |
JP2024523782A (ja) | 単一の起動において複数の動作を実行するためのリカレントニューラルネットワークセル活性化 | |
TW202303420A (zh) | 遞歸神經網路單元啟動以執行一單一引動中之複數個運算 | |
JP2024523790A (ja) | ニューラル・ネットワーク・アクセラレータ命令のためのプログラム・イベント記録ストレージ変更処理 | |
JP2024522435A (ja) | ニューラル・ネットワーク処理支援命令 | |
JP2024522443A (ja) | 暗黙の丸めモードを使用する選択されたデータ型との間でのデータ変換 | |
TW202301112A (zh) | 用於在指令執行期間偵測之無效值之例外摘要 | |
TW202301108A (zh) | 執行組合卷積及選擇運算之單一函式 | |
TW202301109A (zh) | 執行組合矩陣乘法及偏差加法運算之單一函式 |