JP2024524902A - 命令実行中に無効な値が検出された場合の例外要約 - Google Patents

命令実行中に無効な値が検出された場合の例外要約 Download PDF

Info

Publication number
JP2024524902A
JP2024524902A JP2023577242A JP2023577242A JP2024524902A JP 2024524902 A JP2024524902 A JP 2024524902A JP 2023577242 A JP2023577242 A JP 2023577242A JP 2023577242 A JP2023577242 A JP 2023577242A JP 2024524902 A JP2024524902 A JP 2024524902A
Authority
JP
Japan
Prior art keywords
tensor
input
value
dimension
data
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
Application number
JP2023577242A
Other languages
English (en)
Inventor
アルバラカット、ライス
ブラッドベリー、ジョナサン
スレーゲル、ティモシー
リヒテナウ、セドリック
フォン、バトラー、ヨアヒム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2024524902A publication Critical patent/JP2024524902A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Complex Calculations (AREA)

Abstract

命令の実行中に検出された無効な値についての例外要約が提供される。無効であると判定された値が、1つ以上の計算のうちの一の計算への入力データ、または1つ以上の計算の結果得られた出力データに含まれていたことを示す表示が取得される。値は、複数の例外のうちの1つの例外により、無効であると判定される。値が無効であると判定された旨の表示を取得したことに基づいて、要約インジケータが設定される。要約インジケータは、複数の例外をまとめて表す。【選択図】図2B

Description

1つ以上の態様は、一般に、コンピューティング環境内の処理を容易にすることに関し、より具体的には、そのような処理を改善することに関する。
データ集約的、もしくは計算集約的、またはその両方であるコンピューティング環境における処理を向上させるために、人工知能アクセラレータ(ニューラルネットワークプロセッサまたはニューラルネットワークアクセラレータとも呼ばれる)などのコプロセッサが利用される。このようなアクセラレータは、例えば、行列やテンソルの計算など、関係する計算を実行する際に使用される大量の計算能力を提供する。
テンソル計算は、一例として、機械学習のサブセットであるディープラーニングを含む複雑な処理で使用される。人工知能の一態様であるディープラーニングまたは機械学習は、様々な技術(特に限定されないが、工学、製造、医療技術、自動車技術、コンピュータ処理など)において使用されている。
テンソル計算を実行する際には、大量の時間と計算能力が使用される。したがって、実行性能およびシステム性能を向上させるために、このような性能に関する改善が求められている。
コンピューティング環境内の処理を容易にするためのコンピュータプログラム製品の提供を通じて、従来技術の欠点が克服されるとともに、さらなる利点が得られる。コンピュータプログラム製品は、1つ以上のコンピュータ可読記憶媒体と、当該1つ以上のコンピュータ可読記憶媒体にまとめて記憶された、方法を実行するためのプログラム命令と、を含む。方法は、無効であると判定された値が、1つ以上の計算のうちの一の計算への入力データ、または当該1つ以上の計算の結果得られた出力データに含まれていたことを示す表示を取得することを含む。当該値は、複数の例外のうちの1つの例外により、無効であると判定される。当該値が無効であると判定された旨の当該表示を取得したことに基づいて、要約インジケータが設定される。当該要約インジケータは、当該複数の例外をまとめて表す。
入力データまたは出力データにおいて無効な値が検出された旨の表示を提供することにより、例えば人工知能モデルのデバッグが容易になる。無効な値を持つ特定のデータ要素を指定したり、複数の例外のどれが検出されたかを区別したりしないことで、より高い演算性能が実現される。
一例において、要約インジケータは、複数の例外を互いに区別することなく、複数の例外を表す。一例において、要約インジケータは、複数の例外のうちのどの例外が値の無効判定に使用されたかに関係なく設定される。
無効な値のタイプ(例えば、非数値、表現不可能な値、範囲外の値)にかかわらず、無効な値を示す1つのインジケータを使用することにより、コーディングおよび処理が容易になり、複雑さが低減され、システム性能が向上する。
一例において、要約インジケータは、1つ以上の計算を実行するために発行された命令によって指定された場所に設けられた例外フラグの範囲違反インジケータである。
例として、複数の例外は、非数値、表現不可能な数値、および範囲外の値を含む。
一例において、値が無効であると決定された旨の表示を取得することは、1つ以上の計算を実行する命令の実行に基づく。これにより、命令の処理および無効な値の報告が容易になる。
一例として、命令は、計算を実行する複数の関数を実行するように構成され、複数の機能は、要約インジケータを使用する。複数の関数で使用される1つのインジケータを有することにより、複雑さおよびコーディングと検証の手間が低減される。
一例において、命令は、人工知能処理に使用される出力テンソルを提供するために、入力テンソルに対して計算を実行するニューラルネットワーク命令である。一例として、命令は、計算を実行する複数の関数を実行するように構成され、複数の関数は、要約インジケータを使用する。
一例として、要約インジケータは特定の命令について定義され、別の命令は別の要約インジケータを使用する。
一例において、特定の命令の実行に基づいて設定される条件コードの値が決定され、要約インジケータの有効性は、条件コードの値が選択された値であると決定することに基づく。
1つ以上の態様に関連するコンピュータ実装方法およびシステムも本明細書にて説明され、特許請求される。さらに、1つ以上の態様に関連するサービスもまた、本明細書にて説明され、特許請求される場合がある。
さらなる特徴および利点が、本明細書に記載の技術によって実現される。他の実施形態および態様が、本明細書において詳細に説明され、特許請求される態様の一部と見なされる。
1つ以上の態様が、本明細書の末尾の特許請求の範囲において例として具体的に指摘され、明確に特許請求される。上述の内容、ならびに1つ以上の態様の目的、特徴、および利点は、添付の図面と併せて行われる以下の詳細な説明から明らかになる。
本発明の1つ以上の態様を組み込んで使用するコンピューティング環境の一例を示す図である。 本発明の1つ以上の態様に係る、図1Aのプロセッサのさらなる詳細を示す図である。 本発明の1つ以上の態様に係る、ニューラルネットワーク処理アシスト命令の実行に関連する処理の一例を示す図である。 本発明の1つ以上の態様に係る、ニューラルネットワーク処理アシスト命令などの命令の実行に関連する例外処理の一例を示す図である。 本発明の1つ以上の態様に係る、ニューラルネットワーク処理アシスト命令のフォーマットの一例を示す図である。 本発明の1つ以上の態様に係る、ニューラルネットワーク処理アシスト命令によって使用される汎用レジスタの一例を示す図である。 本発明の1つ以上の態様に係る、ニューラルネットワーク処理アシスト命令によってサポートされる関数コードの例を示す図である。 本発明の1つ以上の態様に係る、ニューラルネットワーク処理アシスト命令によって使用される別の汎用レジスタの一例を示す図である。 本発明の1つ以上の態様に係る、ニューラルネットワーク処理アシスト命令のクエリ関数によって使用されるパラメータブロックの一例を示す図である。 本発明の1つ以上の態様に係る、ニューラルネットワーク処理アシスト命令の1つ以上の非クエリ関数によって使用されるパラメータブロックの一例を示す図である。 本発明の1つ以上の態様に係る、ニューラルネットワーク処理アシスト命令によって使用されるテンソル記述子の一例を示す図である。 本発明の1つ以上の態様に係る、ニューラルネットワーク処理(NNP)-データタイプ1のデータタイプのフォーマットの一例を示す図である。 (A)~(C)は、本発明の1つ以上の態様に係る、ニューラルネットワーク処理アシスト命令によって使用される入力データレイアウトの一例を示す図である。 (A)~(C)は、本発明の1つ以上の態様に係る、図5の(A)~図5の(C)の入力データレイアウトに対応する出力例を示す図である。 本発明の1つ以上の態様に係る、コンピューティング環境内の処理を容易にする一例を示す図である。 本発明の1つ以上の態様に係る、コンピューティング環境内の処理を容易にする一例を示す図である。 本発明の1つ以上の態様を組み込んで使用するコンピューティング環境の別の例を示す図である。 本発明の1つ以上の態様に係る、図8Aのメモリのさらなる詳細の一例を示す図である。 本発明の1つ以上の態様に係る、図8Aのメモリのさらなる詳細の別の例を示す図である。 本発明の1つ以上の態様を組み込んで使用するコンピューティング環境のさらに別の例を示す図である。 本発明の1つ以上の態様に係る、図9Aのメモリのさらなる詳細を示す図である。 本発明の1つ以上の態様に係る、クラウドコンピューティング環境の一実施形態を示す図である。 本発明の1つ以上の態様に係る、抽象化モデルレイヤの一例を示す図である。
本発明の1つ以上の態様によれば、コンピューティング環境内の処理を容易にする能力が提供される。一例として、計算への入力データ、または計算の結果得られた出力データにおいて無効な値が検出されたことを示す要約インジケータ(summary indicator)が提供される。この値は、複数の例外(例えば、非数値(non-numeric value)、表現不可能な値(non-representable value)、範囲外の値など)のうちの一の例外によって無効とすることができ、1つの要約インジケータは、複数の例外を互いに区別することなく表す。一例において、要約インジケータは、選択された命令で使用され、他の命令は異なるインジケータを使用する。さらに、選択された命令が、計算を実行する複数の関数を実施するように構成されていることに基づいて、要約インジケータは、当該複数の関数によって使用される。これにより、複数の関数が同じ要約インジケータを使用する。
一例において、選択された命令は、例えばクエリ関数(query function)および複数の非クエリ関数(non-query function)を含む複数の関数を実施するように構成された、ニューラルネットワーク処理アシスト命令(Neural Network Processing Assist instruction)などのニューラルネットワーク命令である。非クエリ関数には、例えばテンソル計算に関する関数が含まれる。ニューラルネットワーク処理アシスト命令は、例えば、命令セットアーキテクチャ(ISA)の一部である単一の命令(例えば、ハードウェア/ソフトウェアインタフェースにおける単一のアーキテクチャ化されたハードウェア機械命令)であり、汎用プロセッサ上で処理される(例えば、少なくとも部分的に、デコードもしくは実行またはその両方が行われる)。例えば、命令は、汎用プロセッサ上のプログラムによってディスパッチされ、プログラムが命令をデコードして開始する。命令によって指定された関数は、汎用プロセッサによって実行されるか、もしくは、汎用プロセッサに結合されるかもしくはその一部である、特定の関数用に構成されたコプロセッサなどの専用プロセッサによって実行されるか、またはその両方である。その後、命令は汎用プロセッサ上で完了する。
本発明の1つ以上の態様によれば、ニューラルネットワーク処理アシスト命令(または別の命令)の実行中に、無効な値(例えば、非数値、表現不可能な値、もしくは範囲外の値、またはその組み合わせ)が検出され、要約的に(summarily)示される。これにより、命令もしくはシステムまたはその性能が低下することがない。例えば、非数値、表現不可能な値、または範囲外の値などの無効な値が、計算への入力となっていること、または計算によって作成されたことが報告される。これにより、例えば人工知能モデルのデバッグが容易になる。無効な値は、一例では、正確には特定されない。しかしながら、一例において、どの計算が無効な値を生成した可能性があるかを示す表示(indication)を提供または暗示することができる。
本発明の1つ以上の態様を組み込んで使用するコンピューティング環境の一実施形態を、図1Aを参照して説明する。一例として、コンピューティング環境は、z/Architecture(登録商標)命令セットアーキテクチャ(インターナショナル・ビジネス・マシーンズ・コーポレーション(ニューヨーク州アーモンク)製)に基づいている。z/Architecture命令セットアーキテクチャの一実施形態は、「z/Architecture Principles of Operation」と題された刊行物(IBM刊行物番号SA22-7832-12、第13版、2019年9月)に記載されており、その全体が参照により本明細書に組み込まれる。ただし、z/Architecture命令セットアーキテクチャは、一例に過ぎず、インターナショナル・ビジネス・マシーンズ・コーポレーションおよび/もしくは他のエンティティの他のアーキテクチャもしくは他のタイプのコンピューティング環境またはその両方が、本発明の1つ以上の態様を含む、もしくは使用する、またはその両方を行うことができる。なお、z/ArchitectureおよびIBMは、少なくとも1つの法域における、インターナショナル・ビジネス・マシーンズ・コーポレーションの商標または登録商標である。
図1Aを参照すると、コンピューティング環境100は、例えば、コンピュータシステム102を含む。コンピュータシステム102は例えば、汎用コンピューティングデバイスとして示される。コンピュータシステム102は、特に限定されないが、1つ以上のバスもしくは他の接続またはその両方を介して互いに結合された、1つ以上の汎用プロセッサまたは処理ユニット104(例えば、中央処理装置(CPU))と、ニューラルネットワークプロセッサ105などの少なくとも1つの専用プロセッサと、メモリ106(または、例えば、システムメモリ、メインメモリ、メインストレージ、中央ストレージ、またはストレージとも呼ばれる)と、1つ以上の入力/出力(I/O)インタフェース108とを含んでもよい。例えば、プロセッサ104、105およびメモリ106は、1つ以上のバス110を介してI/Oインタフェース108に結合され、プロセッサ104、105は、1つ以上のバス111を介して互いに結合される。
バス111は、例えば、メモリまたはキャッシュコヒーレンスバス(cache coherence bus)である。バス110は、例えば、メモリバスまたはメモリコントローラ、周辺バス、アクセラレーテッドグラフィックスポート、および様々なバスアーキテクチャのいずれかを使用するプロセッサまたはローカルバスを含む、複数のタイプのバス構造のいずれか1つ以上を表す。例えば、特に限定されないが、このようなアーキテクチャには、インダストリスタンダードアーキテクチャ(ISA:Industry Standard Architecture)、マイクロチャネルアーキテクチャ(MCA:Micro Channel Architecture)、拡張ISA(EISA:Enhanced ISA)、ビデオエレクトロニクススタンダーズアソシエーション(VESA:Video Electronics Standards Association)ローカルバス、およびペリフェラルコンポーネントインターコネクト(PCI:Peripheral Component Interconnect)が含まれる。
例として、1つ以上の専用プロセッサ(例えば、ニューラルネットワークプロセッサ)は、1つ以上の汎用プロセッサと別体であってこれらに結合されていてもよいし、これらに組み込まれていてもよいし、その両方であってもよい。多くの変形が可能である。
例えば、メモリ106は、例えば1つ以上のバス111を介してプロセッサ104のローカルキャッシュ114もしくはニューラルネットワークプロセッサ105またはその両方に結合可能な、共有キャッシュなどのキャッシュ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を介して、ネットワークインタフェース132と通信してもよい。これにより、コンピュータシステム102は、ローカルエリアネットワーク(LAN)、汎用ワイドエリアネットワーク(WAN)、もしくは公衆ネットワーク(例えば、インターネット)またはその組み合わせなどの1つ以上のネットワークと通信することができ、他のコンピューティングデバイスまたはシステムとの通信を実現することができる。
コンピュータシステム102は、取り外し可能/取り外し不可能な揮発性/不揮発性コンピュータシステム可読媒体を含んでもよいし、これらの媒体に結合されてもよいし、その両方であってもよい。例えば、コンピュータシステム102は、取り外し不可能な不揮発性磁気媒体(一般的に「ハードドライブ」と呼ばれる)、取り外し可能な不揮発性磁気ディスク(例えば、「フロッピーディスク」)への読み書きのための磁気ディスクドライブ、もしくは、取り外し可能な不揮発性光ディスク(CD-ROM、DVD-ROMや他の光媒体など)への読み書きのための光ディスクドライブ、またはその組み合わせを含んでもよいし、これらの媒体に結合されてもよいし、その両方であってもよい。なお、他のハードウェアコンポーネントもしくはソフトウェアコンポーネントまたはその両方をコンピュータシステム102とともに使用してもよい。例としては、特に限定されないが、マイクロコードまたはミリコード、デバイスドライバ、冗長処理ユニット、外部ディスクドライブアレイ、RAIDシステム、テープドライブ、データアーカイブストレージシステムなどが挙げられる。
コンピュータシステム102は、他の多くの汎用または専用コンピューティングシステム環境または構成とともに動作してもよい。コンピュータシステム102とともに使用するのに適した周知のコンピューティングシステム、環境、もしくは構成またはその組み合わせの例としては、特に限定されないが、パーソナルコンピュータ(PC)システム、サーバコンピュータシステム、シンクライアント、シッククライアント、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家電、ネットワークPC、ミニコンピュータシステム、メインフレームコンピュータシステム、および、これらのシステムまたはデバイスのいずれかを含む分散型クラウドコンピューティング環境などが挙げられる。
一例として、プロセッサ(例えば、プロセッサ104もしくはプロセッサ105またはその両方)は、命令を実行するために使用される複数の機能コンポーネント(またはそのサブセット)を含む。図1Bに示すように、これらの機能コンポーネントは、例えば、実行される命令をフェッチする命令フェッチコンポーネント150と、フェッチされた命令をデコードし、デコードされた命令のオペランドを取得する命令デコードユニット152と、デコードされた命令を実行する1つ以上の命令実行コンポーネント154と、必要に応じて命令実行のためにメモリにアクセスするメモリアクセスコンポーネント156と、実行された命令の結果を提供するライトバック(write back)コンポーネント158とを含む。コンポーネントのうちの1つ以上は、命令処理において1つ以上のレジスタ160にアクセスする、もしくはレジスタ160を使用する、またはその両方を行うことができる。さらに、コンポーネントのうちの1つ以上は、本発明の1つ以上の態様に従って、例えば本明細書に記載するニューラルネットワーク処理アシスト命令(または本発明の1つ以上の態様を使用可能な他の処理)の例外チェック/報告もしくはニューラルネットワーク処理アシスト処理またはその両方を実行する際に使用される1つ以上の他のコンポーネントの少なくとも一部を含むか、またはこれら1つ以上の他のコンポーネントにアクセスすることができる。これら1つ以上の他のコンポーネントには、例えば、例外チェック/報告コンポーネント170およびニューラルネットワーク処理アシストコンポーネント172(もしくは1つ以上の他のコンポーネントまたはその組み合わせ)が含まれる。
本発明の1つ以上の態様によれば、特に限定されないが、ニューラルネットワーク処理アシスト命令などの命令の実行中に、例外チェックおよび報告が実行される。一例において、ニューラルネットワーク処理アシスト命令は汎用プロセッサ(例えば、プロセッサ104)上で開始され、命令によって指定された関数は、当該関数に応じて汎用プロセッサもしくは専用プロセッサ(例えば、ニューラルネットワークプロセッサ105)またはその両方において実行される。その後、命令は汎用プロセッサ上で完了する。他の例において、命令は、1つ以上の汎用プロセッサまたは1つ以上の専用プロセッサ上で開始、実行、完了される。他の変形も可能である。
ニューラルネットワーク処理アシスト命令の実行に関するさらなる詳細を、図2Aを参照して説明する。図2Aを参照すると、一例において、ステップ200にて、ニューラルネットワーク処理アシスト命令が、汎用プロセッサ(例えば、プロセッサ104)などのプロセッサによって取得され、デコードされる。デコードされた命令は、ステップ210にて、例えば汎用プロセッサ上で発行される。ステップ220にて、実行する関数が決定される。一例において、この決定は、命令の関数コードフィールドをチェックすることによって行われる。関数コードフィールドの一例は後述する。そして、ステップ230にて、関数が実行される。
関数を実行する一実施形態において、ステップ232にて、関数を専用プロセッサ(例えば、ニューラルネットワークプロセッサ105)上で実行するかどうかが決定される。例えば、一例において、ニューラルネットワーク処理アシスト命令のクエリ関数が汎用プロセッサ上で実行され、非クエリ関数が専用プロセッサ上で実行される。ただし、他の変形も可能である。関数が専用プロセッサ上で実行されない場合(例えば、関数がクエリ関数である、または別の例では、1つ以上の選択された関数である)、一例において、関数はステップ234にて、汎用プロセッサ上で実行される。一方、関数が専用プロセッサ上で実行される場合(例えば、関数が非クエリ関数である、または別の例では、1つ以上の選択された関数である)、ステップ236にて、例えば、ニューラルネットワーク計算で使用するテンソルデータに関連するメモリアドレス情報など、関数を実行する際に使用するための情報が、汎用プロセッサから専用プロセッサに提供される。専用プロセッサはその情報を取得し、ステップ238にて、関数を実行する。関数の実行が完了すると、ステップ240にて、処理は汎用プロセッサに戻り、汎用プロセッサはステップ250にて、命令を完了する(他の例において、命令は、1つ以上の汎用プロセッサまたは1つ以上の専用プロセッサ上で開始、実行、完了されてもよい。他の変形も可能である)。
本発明の1つ以上の態様によれば、非クエリ関数(またはそのサブセット)の各々の実行中に、図2Bを参照して説明するように、非数値、表現不可能な値、もしくは範囲外の値またはその組み合わせなどの無効な値について1つ以上のチェックが行われ、そのような値を検出したことに基づいて、そのような無効な値の表示が報告される。一例として、図2Bの処理は、ニューラルネットワークプロセッサ105などの専用プロセッサによって実行される。ただし、他の例において、汎用プロセッサまたは他のプロセッサがこの処理を実行してもよい。
図2Bを参照すると、一例において、ステップ260にて、命令によって実行される関数への入力データ(例えば、入力テンソルデータ)が読み取られる。ステップ262にて、入力データにおいて、1つ以上の非数値、1つ以上の表現不可能な値、1つ以上の範囲外の値、もしくは1つ以上の他の例外値、またはその組み合わせなどの1つ以上の無効な値のチェックが行われる。なお、追加の例外、より少ない例外、もしくは他の例外、またはその組み合わせがチェックされてもよい。表現不可能な値の例としては、無限大、ゼロによる除算、非数値(not-a-number)、無限大と非数値の組み合わせ(NINF)などが挙げられる。ステップ264にて無効な値が検出された場合、ステップ266にて、無効な値の表示が提供される。
一例において、無効な値の表示は、命令を開始した汎用プロセッサに送り返され、汎用プロセッサは、要約インジケータを、無効な値を示す例えば1に設定する。要約インジケータにおいては、どのタイプの例外が無効な値の検出の原因となったのかの区別はない。要約インジケータの設定は、例外のタイプ(例えば、非数値、表現不可能な値の1つ、範囲外の値など)とは無関係である。しかし、一実施形態において、要約インジケータが設定され、無効な値を検出したことに基づいて処理が汎用プロセッサに戻るので、無効な値を検出する結果となった計算は既知であるか、または容易に特定される。
具体的な例として、要約インジケータは、無効な値が検出された計算を実行した関数を開始した命令によってアクセス可能な選択された場所に設けられた、例外フラグ内の範囲インジケータ(range indicator)(例えば、ビット)である。例として、選択された場所は汎用レジスタ(例えば、汎用レジスタ0)、または命令によって使用されるメモリ場所である。様々な場所が可能である。例外フラグ、特に範囲インジケータの例は以下で示す。
ステップ264の照会に戻り、入力データ中に無効な値が見つからなければ、命令によって指定された関数に基づく1つ以上の計算が実行され、出力データが生成される。一例において、ステップ270にて、出力データに1つ以上の無効な値があるかどうかのチェックが行われる。ステップ272にて、無効な値が検出された場合、ステップ266にて、無効な値の表示が提供される。一例において、この表示は汎用プロセッサに提供され、汎用プロセッサは、本明細書で説明するように、要約インジケータを設定する。ただし、別の例では、この要約インジケータは別のインジケータであってもよく、無効な入力値に対して使用されるインジケータと同じであってもよいし、異なっていてもよい。
ステップ272の照会に戻り、無効な値が見つからなければ、この例外処理は完了する。
本明細書で説明するように、計算処理を実行する際に、入力データまたは出力データの値が、非数値、表現不可能な数値、もしくは範囲外の値またはその組み合わせなどの無効な値であるかどうかが検出される。無効な値を検出したことに基づいて、要約インジケータ(例えば、範囲例外フラグ)が設定される。一例において、どのデータ要素が無効な値を提供したかの表示は提供されない。これにより、算術演算においてより高い性能を実現することができる。
要約インジケータを使用する命令の一例は、ニューラルネットワーク処理アシスト命令である。一例において、要約インジケータは、ニューラルネットワーク処理アシスト命令およびその関数/演算によって独占的に使用される。他の命令は、他のインジケータを使用してもよい。ニューラルネットワーク処理アシスト命令および当該命令によってサポートされる関数に関するさらなる詳細は、図3A~3Gを参照して本明細書で説明する。なお、本明細書における命令もしくは命令の関数またはその両方の説明では、特定の場所、特定のフィールド、もしくはフィールドの特定のサイズまたはその組み合わせが示される(例えば、特定のバイトもしくはビットまたはその両方)。ただし、他の場所、フィールド、もしくはサイズまたはその組み合わせが提供されてもよい。さらに、ビットを特定の値、例えば1または0に設定することが指定される場合があるが、これは一例に過ぎない。他の例において、ビットが設定される場合、反対の値や別の値など、異なる値に設定されてもよい。多くの変形が可能である。
一例において、図3Aを参照すると、ニューラルネットワーク処理アシスト命令300は、拡張操作コード(オペコード(opcode))によってレジスタおよびレジスタ操作を示すRREフォーマットを有する。図3Aに示すように、一例において、ニューラルネットワーク処理アシスト命令300は、ニューラルネットワーク処理アシスト操作を示す操作コード(オペコード)フィールド302(例えば、ビット0~15)を含む。一例において、命令のビット16~31は予備(reserved)で、0を含むようになっている。
一例において、命令は、命令によって暗黙的に(implicitly)指定された複数の汎用レジスタを使用する。例えば、ニューラルネットワーク処理アシスト命令300は、暗黙のレジスタである汎用レジスタ0および汎用レジスタ1を使用する。これらの例は、それぞれ図3Bおよび図3Dを参照して説明する。
図3Bを参照すると、一例において、汎用レジスタ0は、関数コードフィールドと、命令の完了時に更新される可能性のあるステータスフィールドとを含む。一例として、汎用レジスタ0は、応答コードフィールド310(例えば、ビット0~15)と、例外フラグフィールド312(例えば、ビット24~31)と、関数コードフィールド314(例えば、ビット56~63)とを含む。さらに、一例において、汎用レジスタ0のビット16~23およびビット32~55は予備で、0を含むようになっている。1つ以上のフィールドは、命令によって実行される特定の関数によって使用される。一例において、すべてのフィールドがすべての関数で使用されるわけではない。各フィールドについて以下に説明する。
応答コード(RC)310:このフィールド(例えば、ビット位置0~15)は、応答コードを含む。ニューラルネットワーク処理アシスト命令の実行が、例えば「1」の条件コードで完了すると、応答コードが記憶される。無効な入力条件に遭遇すると、実行中に認識された無効な入力条件の原因を示す0以外の値が応答コードフィールドに記憶され、選択された条件コード、例えば「1」が設定される。応答コードフィールドに記憶されるコードは、一例として以下のように定義される。
応答コード 意味
0001 パラメータブロックのバージョン番号で指定されているパラメータブロックのフォーマットが、モデルでサポートされていない。
0002 指定された関数が定義されていないか、マシンにインストールされていない。
0010 指定されたテンソルのデータレイアウトフォーマットがサポートされていない。
0011 指定されたテンソルのデータタイプがサポートされていない。
0012 指定された単一のテンソル次元(single tensor dimension)が最大次元インデックスサイズ(maximum dimension index size)より大きい。
0013 指定されたテンソルのサイズが最大テンソルサイズより大きい。
0014 指定されたテンソルのアドレスが4Kバイト境界(4 K-byte boundary)にアライメントされていない。
0015 関数固有セーブ領域アドレス(function-specific-save-area-address)が4Kバイト境界にアライメントされていない。
F000-FFFF 関数固有応答コード。これらの応答は、特定の関数に対して定義される。
例外フラグ(EF)312:このフィールド(例えば、ビット位置24~31)は、例外フラグを含む。命令の実行中に例外条件が検出された場合、対応する例外フラグ制御(例えば、ビット)が、例えば1に設定され、そうでない場合、制御は変更されない。例外フラグフィールドは、命令の最初の呼び出しの前に0に初期化される。予備のフラグは、命令の実行中に変更されない。例外フラグフィールドに記憶されるフラグは、一例として以下のように定義される。
EF(ビット) 意味
0 範囲違反。このフラグは、無効な値が入力テンソルで検出されたか、または出力テンソルに記憶されたときにセットされる。このフラグは、例えば、命令が例えば「0」の条件コードで完了したときにのみ有効である。一例において、このフラグは本明細書で説明する要約インジケータである。
1~7 予備
関数コード(FC)314:このフィールド(例えば、ビット位置56~63)は、関数コードを含む。ニューラルネットワーク処理アシスト命令に対して割り当てられた関数コードの例を、図3Cに示している。他のすべての関数コードは未割り当てである。未割り当てまたは未インストールの関数コードが指定された場合、例えば16進数「0002」の応答コードと、例えば「1」の選択条件コードとが設定される。このフィールドは、実行中に変更されない。
ここで示すように、ニューラルネットワーク処理アシスト命令は、汎用レジスタ0に加えて汎用レジスタ1も使用する。汎用レジスタ1の例を、図3Dに示している。例として、24ビットアドレス指定モードにおけるビット40~63、31ビットアドレス指定モードにおけるビット33~63、または64ビットアドレス指定モードにおけるビット0~63は、パラメータブロック320のアドレスを含む。汎用レジスタ1の内容は、例えば、ストレージ内のパラメータブロックの左端バイト(leftmost byte)の論理アドレスを指定する。パラメータブロックは、ダブルワード境界(doubleword boundary)で指定される。そうでない場合、指定例外が認識される。すべての関数について、汎用レジスタ1の内容は変更されない。
アクセスレジスタモードでは、アクセスレジスタ1は、一例として、パラメータブロック、入力テンソル、出力テンソル、および関数固有セーブ領域を含むアドレス空間を指定する。
一例において、パラメータブロックは、実行される命令によって指定される関数に応じて、異なるフォーマットを有することができる。例えば、クエリ関数はあるフォーマットのパラメータブロックを有し、命令の他の関数は別のフォーマットのパラメータブロックを有する。別の例では、すべての関数が同じパラメータブロックフォーマットを使用する。他の変形も可能である。
例として、パラメータブロックもしくはパラメータブロック内の情報またはその両方は、メモリ、ハードウェアレジスタ、もしくはメモリおよび/もしくはレジスタの組み合わせ、またはこれらの組み合わせに記憶される。他の例も可能である。
NNPA-QAF(使用可能関数照会(Query Available Functions))演算などのクエリ関数によって使用されるパラメータブロックの一例について、図3Eを参照して説明する。図示するように、一例において、NNPA-QAFパラメータブロック330は、例えば以下を含む。
インストール済み関数ベクトル(installed functions vector)332:パラメータブロックのこのフィールド(例えば、バイト0~31)は、インストール済み関数のベクトルを含む。一例において、インストール済み関数ベクトルのビット0~255は、ニューラルネットワーク処理アシスト命令の関数コード0~255にそれぞれ対応する。ビットが例えば1の場合、対応する関数がインストールされ、そうでない場合、関数はインストールされない。
インストール済みパラメータブロックフォーマットベクトル(installed parameter block formats vector)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 4次元特徴テンソル(4D-feature tensor)
1 4次元カーネルテンソル(4D-kernel tensor)
2~31 予備
最大次元インデックスサイズ340:パラメータブロックのこのフィールド(例えば、バイト60~63)は、例えば、任意の指定のテンソルについての指定の次元インデックスサイズ内の要素の最大数を指定する32ビットの符号なし2進整数を含む。別の例において、最大次元インデックスサイズは、任意の指定のテンソルについての指定の次元インデックスサイズ内の最大バイト数を指定する。他の例も可能である。
最大テンソルサイズ342:パラメータブロックのこのフィールド(例えば、バイト64~71)は、例えば、テンソルフォーマットによって必要とされるパッドバイト(pad bytes)を含む、任意の指定のテンソルの最大バイト数を指定する32ビットの符号なし2進整数を含む。別の例において、最大テンソルサイズは、テンソルフォーマットによって必要とされる任意のパディング(padding)を含む、任意の指定のテンソルの最大総要素数を指定する。他の例も可能である。
インストール済みNNP-データタイプ1変換ベクトル344:パラメータブロックのこのフィールド(例えば、バイト72~73)は、インストール済みNNP-データタイプ1変換のベクトルを含む。一例において、インストール済みNNP-データタイプ1変換ベクトルのビット0~15は、NNP-データタイプ1フォーマットからの/へのインストール済みデータタイプの変換に対応する。ビットが1の場合、対応する変換がインストールされ、そうでない場合、変換はインストールされない。追加の変換、より少ない変換、もしくは他の変換、またはその組み合わせが指定されてもよい。
ビット データタイプ
0 予備
1 BFPタイニーフォーマット(tiny format)
2 BFPショートフォーマット(short format)
3~15 予備
図3Eを参照してクエリ関数のパラメータブロックの一例を説明したが、NNPA-QAF演算を含むクエリ関数のパラメータブロックの他のフォーマットを使用してもよい。フォーマットは、一例において、実行されるクエリ関数のタイプに依存する場合がある。さらに、パラメータブロックもしくはパラメータブロックの各フィールドまたはその両方は、追加の情報、より少ない情報、もしくは他の情報、またはその組み合わせを含んでもよい。
クエリ関数用のパラメータブロックに加えて、一例において、ニューラルネットワーク処理アシスト命令の非クエリ関数などの、非クエリ関数用のパラメータブロックフォーマットが存在する。ニューラルネットワーク処理アシスト命令の非クエリ関数などの非クエリ関数によって使用されるパラメータブロックの一例を、図3Fを参照して説明する。
図示するように、一例において、例えばニューラルネットワーク処理アシスト命令の非クエリ関数によって採用されるパラメータブロック350には、例えば以下のものが含まれる。
パラメータブロックバージョン番号352:パラメータブロックのこのフィールド(例えば、バイト0~1)は、パラメータブロックのバージョンおよびサイズを指定する。一例において、パラメータブロックバージョン番号のビット0~8は予備で、0を含むようになっており、パラメータブロックバージョン番号のビット9~15は、パラメータブロックのフォーマットを指定する符号なし2進整数を含む。クエリ関数は、使用可能なパラメータブロックフォーマットを示すメカニズムを提供する。指定されたパラメータブロックのサイズまたはフォーマットがモデルによってサポートされていない場合、例えば16進数「0001」の応答コードが汎用レジスタ0に記憶され、条件コード(例えば、条件コード「1」)を設定することによって命令が完了する。パラメータブロックバージョン番号はプログラムによって指定され、命令の実行中に変更されることはない。
モデルバージョン番号354:パラメータブロックのこのフィールド(例えば、バイト2)は、命令(例えば、特定の非クエリ関数)を実行したモデルを識別する符号なし2進整数である。継続フラグ(後述)が1である場合、モデルバージョン番号は、パラメータブロックの継続状態バッファフィールド(後述)の内容を解釈して演算を再開する目的で、演算に対する入力となることができる。
継続フラグ356:パラメータブロックのこのフィールド(例えば、ビット63)は、例えば、1のとき、演算が部分的に完了しており、継続状態バッファの内容を使用して演算が再開可能であることを示す。プログラムは、継続フラグを0に初期化し、演算を再開する目的で命令が再実行される場合には、継続フラグを変更しない。それ以外の場合、結果は予測不可能となる。
演算の最初に継続フラグがセットされ、パラメータブロックの内容が最初の呼び出し以降に変更された場合、結果は予測不可能となる。
関数固有セーブ領域アドレス358:パラメータブロックのこのフィールド(例えば、バイト56~63)は、関数固有セーブ領域の論理アドレスを含む。一例において、関数固有セーブ領域アドレスは4Kバイト境界にアライメントされる。そうでない場合、汎用レジスタ0に例えば16進数「0015」の応答コードが設定され、命令は例えば「1」の条件コードで完了する。アドレスは現在のアドレス指定モードに従う。関数固有セーブ領域のサイズは、関数コードに依存する。
関数固有セーブ領域全体がプログラムイベント記録(PER:program event recording)ストレージ領域指定と重なる場合、関数固有セーブ領域について、該当する場合、PERストレージ変更イベントが認識される。関数固有セーブ領域の一部のみがPERストレージ領域指定と重なる場合、以下のいずれが発生するかはモデルに依存する。
* 関数固有セーブ領域全体について、該当する場合、PERストレージ変更イベントが認識される。
* 関数固有セーブ領域の記憶される部分について、該当する場合、PERストレージ変更イベントが認識される。
パラメータブロック全体がPERストレージ領域指定と重なる場合、パラメータブロックについて、該当する場合、PERストレージ変更イベントが認識される。パラメータブロックの一部のみがPERストレージ領域指定と重なる場合、以下のいずれが発生するかはモデルに依存する。
* パラメータブロック全体について、該当する場合、PERストレージ変更イベントが認識される。
* パラメータブロックの記憶される部分について、該当する場合、PERストレージ変更イベントが認識される。
パラメータブロックについて、該当する場合、PERゼロアドレス検出イベント(PER zero-address detection event)が認識される。ゼロアドレス検出は、一例において、テンソルアドレスまたは関数固有セーブ領域アドレスには適用されない。
出力テンソル記述子(descriptor)(例えば、1~2)360/入力テンソル記述子(例えば、1~3)365:テンソル記述子の一例を、図3Gを参照して説明する。一例において、テンソル記述子360、365は以下を含む。
データレイアウトフォーマット382:テンソル記述子のこのフィールド(例えば、バイト0)は、データレイアウトフォーマットを指定する。有効なデータレイアウトフォーマットには、例えば以下のようなものがある(なお、追加のデータレイアウトフォーマット、より少ないデータレイアウトフォーマット、もしくは他のデータレイアウトフォーマット、またはその組み合わせも可能である)。
フォーマット 説明 アライメント(バイト)
0 4次元特徴テンソル 4096
1 4次元カーネルテンソル 4096
2~255 予備 -
サポートされていない、または予備のデータレイアウトフォーマットが指定された場合、例えば、16進数「0010」の応答コードが汎用レジスタ0に記憶され、例えば「1」の条件コードを設定することによって命令が完了する。
データタイプ384:このフィールド(例えば、バイト1)は、テンソルのデータタイプを指定する。サポートされるデータタイプの例を以下に示す(なお、追加のデータタイプ、より少ないデータタイプ、もしくは他のデータタイプ、またはその組み合わせも可能である)。
値 データタイプ データサイズ(ビット)
0 NNPデータタイプ-1 16
1~255 予備 -
サポートされていない、または予備のデータタイプが指定された場合、例えば、16進数「0011」の応答コードが汎用レジスタ0に記憶され、例えば「1」の条件コードを設定することによって命令が完了する。
次元1~4インデックスサイズ386:まとめて、次元インデックスサイズ1~4は、4次元テンソルの形状を指定する。各次元インデックスサイズは、0より大きく、最大次元インデックスサイズ(340、図3E)以下である。そうでない場合、例えば16進数「0012」の応答コードが汎用レジスタ0に記憶され、例えば「1」の条件コードを設定することによって命令が完了する。総テンソルサイズは、最大テンソルサイズ(342、図3E)以下である。そうでない場合、例えば16進数「0013」の応答コードが汎用レジスタ0に記憶され、例えば「1」の条件コードを設定することによって命令が完了する。
一例において、NNPA-データタイプ1の要素を持つ4D特徴テンソルのバイト数(すなわち、総テンソルサイズ)を決定するために、以下が使用される:次元インデックス4*次元インデックス3*ceil(次元インデックス2/32)*32*ceil(次元インデックス1/64)*64*2。
テンソルアドレス388:テンソル記述子のこのフィールド(例えば、バイト24~31)は、テンソルの左端バイトの論理アドレスを含む。アドレスは現在のアドレス指定モードに従う。
アドレスが関連するデータレイアウトフォーマットの境界にアライメントされていない場合、例えば16進数「0014」の応答コードが汎用レジスタ0に記憶され、例えば「1」の条件コードを設定することによって命令が完了する。
アクセスレジスタモードでは、アクセスレジスタ1は、ストレージ内のすべてのアクティブな入出力テンソルを含むアドレス空間を指定する。
図3Fに戻ると、パラメータブロック350は、一例において、本明細書で説明するように、特定の関数によって使用可能な関数固有パラメータ1~5(370)をさらに含む。
さらに、パラメータブロック350は、一例において、継続状態バッファ(continuation state buffer)フィールド375を含む。このフィールドは、この命令の演算が再開される場合に使用されるデータ(またはデータの位置)を含む。
演算への入力として、パラメータブロックの予備フィールドは0を含む必要がある。演算が終了すると、予備フィールドは0として記憶されてもよいし、変更されなくてもよい。
図3Fを参照して非クエリ関数のパラメータブロックの一例を説明したが、ニューラルネットワーク処理アシスト命令の非クエリ関数を含む、非クエリ関数のパラメータブロックの他のフォーマットを使用してもよい。フォーマットは、一例において、実行される関数のタイプに依存してもよい。さらに、図3Gを参照してテンソル記述子の一例を説明したが、他のフォーマットを使用してもよい。さらに、入出力テンソルについて異なるフォーマットを使用してもよい。他の変形も可能である。
ニューラルネットワーク処理アシスト命令の一実施形態によってサポートされる様々な関数に関するさらなる詳細を以下に説明する。
関数コード0:NNPA-QAF(使用可能関数照会)
ニューラルネットワーク処理アシスト(NNPA:Neural Network Processing Assist)クエリ関数は、例えば、インストールされた関数の利用可能性、インストールされたパラメータブロックフォーマット、インストールされたデータタイプ、インストールされたデータレイアウトフォーマット、最大次元インデックスサイズ、最大テンソルサイズなどの選択された情報を表示するメカニズムを提供する。情報は取得されると、パラメータブロック(例えば、パラメータブロック330)などの選択された場所に配置される。演算が終了すると、パラメータブロックの予備フィールドは0として記憶されてもよいし、変更されなくてもよい。
クエリ関数の一実施形態の実行において、汎用プロセッサ104などのプロセッサは、ニューラルネットワークプロセッサ105などのニューラルネットワークプロセッサの特定のモデルなど、特定のプロセッサに関する情報を取得する。プロセッサまたはマシンの特定のモデルは、特定の能力を有する。プロセッサまたはマシンの別のモデルは、追加の能力、より少ない能力、もしくは異なる能力もしくはその組み合わせを有している場合があり、かつ/または、追加の能力、より少ない能力、もしくは異なる能力もしくはその組み合わせを有する異なる世代(例えば、現在または将来の世代)である場合がある。取得された情報は、パラメータブロック(例えば、パラメータブロック330)内に配置されるか、あるいは、さらなる処理においてこの情報を使用する可能性のある1つ以上のアプリケーションがアクセス可能であるか、もしくはこれら1つ以上のアプリケーションとともに使用されるか、またはその両方である他の構造内に配置される。一例において、パラメータブロックもしくはパラメータブロックの情報またはその両方は、メモリ内に保持される。他の実施形態において、パラメータブロックもしくは情報またはその両方は、1つ以上のハードウェアレジスタ内に保持されてもよい。別の例として、クエリ関数は、この情報をアプリケーションまたは非特権(non-privileged)プログラムが利用できるようにするためのアプリケーションプログラミングインタフェースを利用可能にする、オペレーティングシステムによって実行される特権操作(privileged operation)であってもよい。さらに別の例では、クエリ関数は、ニューラルネットワークプロセッサ105などの専用プロセッサによって実行される。他の変形も可能である。
情報は、例えば、クエリ関数を実行するプロセッサのファームウェアによって取得される。ファームウェアは、特定のプロセッサ(例えば、ニューラルネットワークプロセッサ)の特定のモデルの属性に関する知識を有する。この情報は、例えば、制御ブロック、レジスタ、もしくはメモリもしくはその組み合わせに記憶されてもよいし、かつ/または、クエリ関数を実行するプロセッサがアクセス可能であってもよい。
取得される情報は、例えば、特定のプロセッサの選択されたモデルの1つ以上のインストールまたはサポートされたデータタイプ、1つ以上のインストールまたはサポートされたデータレイアウトフォーマット、もしくは1つ以上のインストールまたはサポートされたデータサイズ、またはその組み合わせを含む、特定のプロセッサの少なくとも1つ以上のデータ属性に関するモデル依存詳細情報を含む。この情報は、他のモデル(例えば、以前のモデルもしくは将来のモデルまたはその両方)が同じデータタイプ、データサイズ、もしくはデータレイアウトフォーマット、またはその組み合わせなどの同じデータ属性をサポートしない可能性があるという点で、モデル依存である。クエリ関数(例えば、NNPA-QAF関数)の実行が完了すると、一例として、条件コード0が設定される。条件コード1、2、3は、一例において、クエリ関数には適用されない。取得される情報に関するさらなる詳細を以下に説明する。
ここで示すように、一例において、取得される情報は、例えば、ニューラルネットワークプロセッサの特定のモデルの1つ以上のデータ属性に関するモデル依存情報を含む。データ属性の一例は、ニューラルネットワークプロセッサのインストールされたデータタイプである。例えば、ニューラルネットワークプロセッサ(または他のプロセッサ)の特定のモデルは、例として、NNP-データタイプ1データタイプ(ニューラルネットワーク処理-データタイプ1データタイプとも呼ぶ)もしくは他のデータまたはその両方などの1つ以上のデータタイプをサポートしてもよい。NNP-データタイプ1データタイプは、16ビット浮動小数点(floating-point)フォーマットであり、例えば、ディープラーニングの訓練と推論演算について多くの利点を提供する。利点は例えば、ディープラーニングネットワークの精度を維持する、サブノーマルフォーマットを排除して丸めモード(rounding mode)とコーナーケース(corner case)の取り扱いを簡素化する、算術演算で最も近い値に自動的に丸める、無限大と非数(NaN:not-a-number)の特別なエンティティを1つの値(NINF)に結合し、算術演算で受け入れられ取り扱われるようにする、などである。NINFは、指数オーバーフローや無効な演算(0による除算など)に対するより良いデフォルトを提供する。これにより、多くのプログラムはそのようなエラーを隠すことなく、また専用の例外ハンドラを使用することなく実行を続けることができる。その他のモデル依存データタイプも可能である。
NNP-データタイプ1データタイプのフォーマットの一例を図4に示す。図示するように、一例において、NNP-データタイプ1のデータは、例えば、フォーマット400で表すことができる。フォーマット400は、例えば、符号402(例えば、ビット0)、指数+31(404)(例えば、ビット1~6)、および小数406(例えば、ビット7~15)を含む。
NNP-データタイプ1のフォーマットの特性の例を以下に示す。
特性 NNP-データタイプ1
フォーマット長(ビット) 16ビット
バイアス付き指数長(ビット) 6ビット
小数部長(ビット) 9ビット
精度(p) 10ビット
最大左単位表示(left-units-view)指数(Emax) 32
最小左単位表示指数(Emin) -31
左単位表示(LUV)バイアス 31
Figure 2024524902000002
Figure 2024524902000003
Dmin -
Figure 2024524902000004
NNP-データタイプ1データタイプに関するさらなる詳細を以下に説明する。
バイアス付き指数(biased exponent):指数を符号なし数(unsigned numbers)として表現できるようにするために使用されるバイアスを上に示している。バイアス付き指数は、NNP-データタイプ1データタイプのクラスを参照して後述するように、すべての0とすべての1のバイアス付き指数に対して特別な意味が付されていないことを除いて、バイナリ浮動小数点フォーマットの特性に類似する。
仮数(significand):NNP-データタイプ1の数値の2進小数点(binary point)は、左端の小数ビットの左側にあるとみなされる。2進小数点の左側には暗黙の(implied)単位ビットが存在し、これは正規数(normal numbers)の場合は1、ゼロの場合は0とみなされる。左側に暗黙の単位ビットが付加された小数部(fraction)が、数値の仮数となる。
通常のNNP-データタイプ1の値は、仮数に基数2を乗じた値を非バイアス付き指数のべき乗にしたものである。
非ゼロ数(non-zero numbers)の値:非ゼロ数の値を以下に示す。
数値クラス 値
正規数 ±2e-31x (1.f)
ここで、eは10進数で示されるバイアス付き指数であり、fは2進数で示される小数である。
一実施形態において、NNP-データタイプ1のデータには、数値エンティティおよび関連する非数値エンティティを含む3つのクラスがある。各データ項目は、符号、指数、および仮数を含む。指数は、すべてのバイアス付き指数が非負(non-negative)の符号なし数値となり、最小のバイアス付き指数が0であるようにバイアスが付いている。仮数は、明示的な小数部、および2進小数点の左側の暗黙的な単位ビットを含む。符号ビットは、プラスの場合が0、マイナスの場合が1である。
許容されるすべての非ゼロ有限数は、一意のNNP-データタイプ1表現を有する。同じ値に対して複数の表現を可能とする非正規(subnormal)数は存在せず、非正規の算術演算は存在しない。この3つのクラスには、例えば以下が含まれる。
データクラス 符号 バイアス付き指数 単位ビット* 小数部
ゼロ ± 0 0 0
正規数 ± 0 1 非0
正規数 ± 非0、すべて1ではない 1 いずれかの値
正規数 ± すべて1 - すべて1ではない
NINF ± すべて1 - すべて1
ここで、「-」は該当しないことを示し、「*」は暗黙の単位ビットを示し、NINFは数値または無限大ではないことを示す。
各クラスに関するさらなる詳細を以下に説明する。
ゼロ:ゼロは、ゼロのバイアス付き指数およびゼロの小数部を持つ。暗黙の単位ビットはゼロである。
正規数:正規数は任意の値のバイアス付き指数を持つことができる。バイアス付き指数が0の場合、小数部は非0となる。バイアス付き指数がすべて1の場合、小数部はすべて1にはならない。その他のバイアス付き指数値は、どのような小数値でもよい。暗黙の単位ビットは、すべての正規数に対して1である。
NINF:NINFは、すべての1のバイアス付き指数とすべての1の小数部で表される。NINFは、NNP-データタイプ1(すなわち、6つの指数ビットと9つの小数ビットを持つディープラーニング用に設計された16ビット浮動小数点)の表現可能な値の範囲にない値を表す。通常、NINFは演算中に伝搬されるだけなので、演算が終わっても表示されたままになる。
一例において、NNP-データタイプ1がサポートされているが、他の専用または非標準データタイプ、および、1つ以上の標準データタイプ(例えば、IEEE754短精度(short precision)、バイナリ浮動小数点16ビット、IEEE半精度(half precision)浮動小数点、8ビット浮動小数点、4ビット整数フォーマット、もしくは8ビット整数フォーマットまたはその組み合わせなど)がサポートされてもよい。これらのデータフォーマットは、ニューラルネットワーク処理について異なる性質を有する。一例として、より小さいデータタイプ(例えば、より少ないビット)は、より高速に処理することができるとともに、キャッシュ/メモリの使用を少なくすることができる。より大きいデータタイプは、ニューラルネットワークにおいて結果の精度が高くなる。サポートされるデータタイプは、照会パラメータブロックにおいて(例えば、パラメータブロック330のインストール済みデータタイプフィールド336において)1つ以上の割り当てビットを有することができる。例えば、特定のプロセッサによってサポートされる専用または非標準データタイプは、インストール済みデータタイプフィールドにおいて示されるが、標準データタイプは示されない。他の実施形態では、1つ以上の標準データタイプも示される。その他の変形も可能である。
一具体例において、インストール済みデータタイプフィールド336のビット0は、NNP-データタイプ1のデータタイプ用に予約され、例えば1に設定されると、プロセッサがNNP-データタイプ1をサポートすることを示す。例として、インストール済みデータタイプのビットベクトルは、最大16のデータタイプを表すように構成され、各データタイプにビットが割り当てられる。ただし、他の実施形態において、ビットベクトルは、より多いデータタイプをサポートしてもよいし、より少ないデータタイプをサポートしてもよい。さらに、ベクトルは、1つ以上のビットが一のデータタイプに割り当てられるように構成されてもよい。多くの例が可能であり、かつ/または、追加のデータタイプ、より少ないデータタイプ、もしくは他のデータタイプ、もしくはその組み合わせがベクトルにおいてサポートもしくは表示もしくはその両方が行われてもよい。
一例において、クエリ関数は、モデル依存プロセッサにインストールされているデータタイプの表示を取得し、例えば、パラメータブロック330のインストール済みデータタイプフィールド336に1つ以上のビットを設定することによって、当該表示をパラメータブロックに配置する。さらに、一例において、クエリ関数は、インストール済みデータレイアウトフォーマット(別のデータ属性)の表示を取得し、例えば、インストール済みデータレイアウトフォーマットフィールド338に1つ以上のビットを設定することによって、当該情報をパラメータブロックに配置する。データレイアウトフォーマットの例としては、例えば、4次元特徴テンソルレイアウト(4D-feature tensor layout)および4次元カーネルテンソルレイアウト(4D-kernel tensor layout)が挙げられる。4次元特徴テンソルレイアウトは、一例において、本明細書で説明する関数によって使用され、一例において、畳み込み関数が4次元カーネルテンソルレイアウトを使用する。これらのデータレイアウトフォーマットは、ニューラルネットワーク処理アシスト命令の関数を実行する際の処理効率を向上させる方法で、ストレージ内のデータをテンソル用に配置する。例えば、ニューラルネットワーク処理アシスト命令は、効率的に動作するために、特定のデータレイアウトフォーマットで提供される入力テンソルを使用する。なお、例示的なレイアウトを提供したが、本明細書に記載の関数もしくは他の関数またはその両方について、追加のレイアウト、より少ないレイアウト、もしくは他のレイアウト、またはその組み合わせが提供されてもよい。
特定のプロセッサモデルに対するレイアウトの使用または利用可能性は、インストール済みデータレイアウトフォーマットのベクトル(たとえば、パラメータブロック330のフィールド338)によって提供される。このベクトルは、例えば、インストール済みデータレイアウトフォーマットのビットベクトルであり、CPUが、どのレイアウトがサポートされているかをアプリケーションに伝えることを可能にする。例えば、ビット0は4次元特徴テンソルレイアウト用に予約され、例えば1に設定されると、プロセッサが4次元特徴テンソルレイアウトをサポートしていることを示す。ビット1は4次元カーネルテンソルレイアウト用に予約され、例えば1に設定されると、プロセッサが4次元カーネルテンソルレイアウトをサポートしていることを示す。一例において、インストール済みデータレイアウトフォーマットのビットベクトルは、最大16個のデータレイアウトを表すように構成され、各データレイアウトにビットが割り当てられる。ただし、他の実施形態において、ビットベクトルは、これより多いまたはこれより少ないデータレイアウトをサポートしてもよい。さらに、1つ以上のビットがデータレイアウトに割り当てられるようにベクトルが構成されてもよい。多くの例が可能である。4次元特徴テンソルレイアウトと4次元カーネルテンソルレイアウトの詳細は後述する。繰り返しになるが、性能を最適化するために、現在または将来において他のレイアウトを使用してもよい。
一例において、ニューラルネットワーク処理アシスト命令は、4次元テンソル、すなわち4次元を有するテンソルで動作する。これらの4次元テンソルは、本明細書で説明する一般的な入力テンソルから、たとえば行優先(row-major)の方法で得られる。すなわち、テンソル要素をメモリアドレスの増加順に列挙するときに、E1と呼ばれる内部次元は、まず、0から始まりE1インデックスサイズ1までE1インデックスサイズの値をステップアップし、その後、E2次元のインデックスが増加し、E1次元のステッピングが繰り返される。最後に、E4次元と呼ばれる外部次元のインデックスが増加される。
より低い次元数を持つテンソル(例えば、3次元または1次元テンソル)は、4次元テンソルとして表現され、4次元テンソルのうち元のテンソルの次元を超える1つ以上の次元は1に設定される。
次元E4、E3、E2、E1を有する行優先汎用4次元テンソルの、4次元特徴テンソルレイアウト(本明細書において、NNPAデータレイアウトフォーマット0-4次元特徴テンソルとも呼ぶ)への変換について説明する。
結果として得られるテンソルは、例えば、64要素ベクトルの4次元テンソル、または以下の次元を有する5次元テンソルとして表すことができる。
Figure 2024524902000005
汎用テンソル(generic tensor)の要素[e4][e3][e2][e1]は、結果として得られる5次元テンソルの以下の要素にマッピングされる。
Figure 2024524902000006
結果として得られるテンソルは、汎用テンソルより大きくなる場合がある。結果として得られるテンソルの要素のうち、汎用テンソルに対応する要素がないものは、パッド要素(pad elements)と呼ばれる。
64要素ベクトルのNNPAデータレイアウトフォーマット0-4次元特徴テンソルの要素[fe4][fe1][fe3][fe2][fe0]、またはそれと同等の表現を、要素の5次元テンソルと考える。この要素は、パッド要素であるか、または次元E4、E3、E2、E1を持つ汎用4次元テンソルの対応する要素のいずれかであり、以下の式で決定することができる。
fe2 ≧ E2の場合、E2(またはページ)パッド要素である。
そうでなければ、fe1 * 64 + fe0 ≧ E1の場合、E1(または行)パッド要素である。
そうでなければ、汎用4次元テンソルの対応する要素は以下の通りになる。
[fe4][fe3][fe2][fe1 * 64 + fe0]
畳み込みニューラルネットワークベースの人工知能モデルの場合、特徴テンソルの4次元の意味は、一般的に以下のようにマッピングできる。
E4:N-ミニバッチ(mini-batch)のサイズ
E3:H-3次元テンソル/画像の高さ
E2:W-3次元テンソル/画像の幅
E1:C-3次元テンソルのチャンネルまたはクラス
機械学習またはリカレントニューラルネットワークベースの人工知能モデルの場合、4次元特徴テンソルの4次元の意味は、一般的に以下のようにマッピングできる。
E4:T-時間ステップまたはモデルの数
E3:予備。通常は1に設定
E2:Nmb-ミニバッチサイズ
E1:L-特長
NNPAデータレイアウトフォーマット0は、例えば、4kバイトのデータブロック(ページ)の2次元データ局所性と、生成テンソルの外部次元に対する4kバイトのブロックデータアライメントを提供する。
パッド要素バイトは入力テンソルでは無視され、出力テンソルでは予測不可能である。パッドバイト上のPERストレージの変更は予測不可能である。
次元E1、E2、E3、E4を有する4次元特徴テンソルレイアウトの入力データレイアウトの一例を図5の(A)~(C)に示し、4次元特徴テンソルレイアウトの出力例を図6の(A)~(C)に示す。図5の(A)を参照すると、次元E1、E2、E3を有する3次元テンソル500が示されている。一例において、各3次元テンソルは複数の2次元テンソル502を含む。各2次元テンソル502内の数値は、その各要素がメモリ内のどこに配置されるかのメモリオフセットを記述する。入力は、図5の(A)~(C)に対応する図6の(A)~(C)に示されるように、メモリ内の元のテンソル(例えば、図5の(A)~(C)の元の4次元テンソル)のデータをレイアウトするために使用される。
図6の(A)では、一例として、メモリ600のユニット(例えば、メモリページ)は、各々が、例えばe2_page_idxによって識別される、予め選択された数(例えば、32)の行602を含む。各行は、各々が、例えばe1_page_idxによって識別される、予め選択された数(例えば、64)の要素604を有する。ある行が、予め選択された数の要素を含まない場合、行パディングまたはE1パディングと呼ばれるパディング606が行われる。メモリユニットが、予め選択された数の行を持たない場合、ページパディングまたはE2パディングと呼ばれるパディング608が行われる。例として、行パディングは、例えば、0または他の値であり、ページパディングは、例えば、既存の値、0、または他の値である。
一例において、行の出力要素は、その対応する入力のE1方向における要素位置に基づいて、メモリ内(たとえばページ内)に提供される。例えば、図5の(A)を参照すると、図示の3つの行列の要素位置0、1および2(例えば、各行列の同じ位置における要素位置)は、図6の(A)のページ0の行0に示されている、などである。この例では、4次元テンソルは小さく、4次元テンソルを表す各2次元テンソルの要素のすべてが1ページに収まっている。ただし、これは一例に過ぎない。2次元テンソルは、1つ以上のページを含んでもよい。2次元テンソルが4次元テンソルの再編成(reformatting)に基づいて作成される場合、2次元テンソルのページ数は、4次元テンソルのサイズに基づく。一例において、1つ以上のceil関数を使用して、何ページ使用されるかを示す、2次元テンソルの行数および各行の要素数が決定される。他の変形も可能である。
一例において、4次元特徴テンソルレイアウトに加えて、ニューラルネットワークプロセッサは、畳み込みなどの特定の人工知能(例えば、ニューラルネットワーク処理アシスト)演算を実行する際に、メモリアクセスおよびデータ収集ステップの数を削減するために4次元テンソルの要素を再配置する、4次元カーネルテンソルをサポートしてもよい。一例において、次元E4、E3、E2、E1を持つ行優先汎用4Dテンソルは、本明細書で説明するように、NNPAデータレイアウトフォーマット1-4次元カーネルテンソル(4次元カーネルテンソル)に変換される。
結果として得られるテンソルは、例えば64要素ベクトルの4次元テンソル、または以下の次元を持つ5次元テンソルとして表すことができる。
Figure 2024524902000007
汎用テンソル(generic tensor)の要素[e4][e3][e2][e1]は、結果として得られる5次元テンソルの以下の要素にマッピングされる。
Figure 2024524902000008
結果として得られるテンソルは、汎用テンソルより大きくなる場合がある。結果として得られるテンソルの要素のうち、汎用テンソルに対応する要素がないものは、パッド要素と呼ばれる。
64要素ベクトルのNNPAデータレイアウトフォーマット1-4次元特徴テンソルの要素[fe4][fe1][fe3][fe2][fe0]、またはそれと同等の表現を、要素の5次元テンソルと考える。この要素は、パッド要素であるか、または次元E4、E3、E2、E1を持つ汎用4次元テンソルの対応する要素のいずれかであり、以下の式で決定することができる。
fe2 ≧ E2の場合、E2(またはページ)パッド要素である。
そうでなければ、fe1 * 64 + fe0 ≧ E1の場合、E1(または行)パッド要素である。
そうでなければ、汎用4次元テンソルの対応する要素は以下の通りになる。
[fe4][fe3][fe2][fe1 * 64 + fe0]
畳み込みニューラルネットワークベースの人工知能モデルの場合、カーネルテンソルの4次元の意味は、一般的に以下のようにマッピングできる。
E4:H-3次元テンソル/画像の高さ
E3:W-3次元テンソル/画像の幅
E2:C-3次元テンソルのチャンネル数
E1:K-カーネル数
NNPAデータレイアウトフォーマット1は、効率的な処理のために、例えば、4kバイトのデータブロック(ページ)内の2次元カーネル並列性(parallelism)と、生成テンソルの外部次元に対する4kバイトブロックデータアライメントを提供する。
パッドバイトは入力テンソルでは無視される。パッドバイト上のPERストレージの変更は予測不可能である。
繰り返しになるが、例示的なデータレイアウトフォーマットは4次元特徴テンソルレイアウトおよび4次元カーネルテンソルレイアウトを含むが、他のデータレイアウトフォーマットがプロセッサ(例えば、ニューラルネットワークプロセッサ105)によってサポートされてもよい。サポートされるデータレイアウトの表示は、例えば、フィールド338に1つ以上のビットを設定することによって取得され、クエリパラメータブロックに配置される。
照会パラメータブロックはまた、本発明の1つ以上の態様に従って、他のデータ属性情報を含む。他のデータ属性情報は、例えば、データのサポートサイズ情報(supported size information)を含む。ニューラルネットワークプロセッサなどのプロセッサは、通常、テンソルの次元の最大サイズもしくはテンソルの全体サイズまたはその両方を制限することができる内部バッファサイズ、処理ユニット、データバス構造、ファームウェア制限などに基づく制限を有する。したがって、クエリ関数はこれらの制限をアプリケーションに伝達するためのフィールドを提供する。例えば、プロセッサは、クエリ関数の実行に基づいて、最大次元インデックスサイズ(例えば、65,536要素)および最大テンソルサイズ(例えば、8GB)などの様々なデータサイズを取得し、この情報をパラメータブロック(例えば、パラメータブロック330)のフィールド340および342にそれぞれ含める。なお、追加のサイズ情報、より少ないサイズ情報、もしくは他のサイズ情報、またはその組み合わせがプロセッサ(例えば、ニューラルネットワークプロセッサ105)によってサポートされてもよく、したがって、取得され、パラメータブロック(例えば、フィールド340、342もしくは他のフィールドまたはその両方)に配置されてもよい。他の実施形態において、制限はより小さくてもより大きくてもよいし、もしくは、サイズは要素の代わりにバイト、バイトの代わりに要素など、他の単位であってもよいし、その両方であってもよい。さらに、他の実施形態において、すべての次元について同じ最大サイズではなく、各次元の最大サイズが異なっていてもよい。多くの変形が可能である。
本発明の1つ以上の態様に従って、選択されたプロセッサ(例えば、ニューラルネットワークプロセッサ105)の特定のモデルに関連する詳細情報を伝達するクエリ関数が提供される。詳細情報には、例えば、特定のプロセッサに関連するモデル依存情報が含まれる(プロセッサはまた、標準データタイプ、標準データレイアウトなどの標準データ属性をサポートしてもよく、これらは、クエリ関数によって暗示され、必ずしも提示はされない。ただし、他の実施形態において、クエリ関数は、データ属性のすべてまたは種々の選択されたサブセットなどを表示してもよい)。例示的な情報を提供しているが、他の実施形態において、他の情報が提供されてもよい。取得された情報(これは、一のプロセッサの異なるモデル、もしくは異なるプロセッサの異なるモデル、またはその両方において異なっていてもよい)は、人工知能処理もしくは他の処理またはその両方を実行するために使用される。人工知能処理もしくは他の処理またはその両方は、例えば、ニューラルネットワーク処理アシスト命令の1つ以上の非クエリ関数を採用してもよい。処理に採用される特定の非クエリ関数は、ニューラルネットワーク処理アシスト命令を1回以上実行し、特定の非クエリ関数を指定することによって実行される。
ニューラルネットワーク処理アシスト命令によってサポートされる非クエリ関数の例のさらなる詳細を以下に説明する(なお、他の実施形態において、追加の関数、より少ない関数、もしくは他の関数、またはその組み合わせがサポートされてもよい)。
関数コード16:NNPA-ADD(加算)
NNPA-ADD関数が指定されると、テンソル記述子1によって記述された入力テンソル1の各要素が、テンソル記述子2によって記述された入力テンソル2の対応する要素に加算され、その結果の和が、出力テンソル記述子によって記述された出力テンソルの対応する要素に配置される。
一例において、指定されたテンソル記述子のいずれかの指定されたデータレイアウトが4次元特徴テンソルを指定しない場合(例えば、データレイアウト=0)、または、指定されたテンソル記述子のデータタイプがNNP-データタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード(例えば、それぞれ16進数「0010」または16進数「0011」)が汎用レジスタ0に設定され、命令は、例えば「1」の条件コードで完了する。
一例において、入力テンソル1、入力テンソル2、および出力テンソルの形状、データレイアウト、およびデータタイプは同じである。そうでない場合、一般オペランドデータ例外(general operand data exception)が認識される。
一例において、出力テンソル記述子2、入力テンソル記述子3、関数固有パラメータ1~5、および関数固有セーブ領域アドレスフィールドは無視される。
関数コード17:NNPA-SUB(減算)
NNPA-SUB関数が指定されると、テンソル記述子2によって記述された入力テンソル2の各要素が、テンソル記述子1によって記述された入力テンソル1の対応する要素から減算され、その結果得られた差分が、出力テンソルの対応する要素に配置される。
一例において、指定されたテンソル記述子のいずれかの指定されたデータレイアウトが4次元特徴テンソルを指定しない場合(例えば、データレイアウト=0)、または、指定されたテンソル記述子のデータタイプがNNP-データタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード(例えば、それぞれ16進数「0010」または16進数「0011」)が汎用レジスタ0に設定され、命令は、例えば「1」の条件コードで完了する。
一例において、入力テンソル1、入力テンソル2、および出力テンソルの形状、データレイアウト、およびデータタイプは同じである。そうでない場合、一般オペランドデータ例外が認識される。
一例において、出力テンソル記述子2、入力テンソル記述子3、関数固有パラメータ1~5、および関数固有セーブ領域アドレスフィールドは無視される。
関数コード18:NNPA-MUL(乗算)
NNPA-MUL関数が指定されると、テンソル記述子1によって記述された入力テンソル1の各要素(乗数)と、テンソル記述子2によって記述された入力テンソル2の対応する要素(被乗数)との積が、出力テンソルの対応する要素に配置される。
一例において、指定されたテンソル記述子のいずれかの指定されたデータレイアウトが4次元特徴テンソルを指定しない場合(例えば、データレイアウト=0)、または、指定されたテンソル記述子のデータタイプがNNP-データタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード(例えば、それぞれ16進数「0010」または16進数「0011」)が汎用レジスタ0に設定され、命令は、例えば「1」の条件コードで完了する。
一例において、入力テンソル1、入力テンソル2、および出力テンソルの形状、データレイアウト、およびデータタイプは同じである。そうでない場合、一般オペランドデータ例外が認識される。
一例において、出力テンソル記述子2、入力テンソル記述子3、関数固有パラメータ1~5、および関数固有セーブ領域アドレスフィールドは無視される。
関数コード19:NNPA-DIV(除算)
NNPA-DIV関数が指定されると、テンソル記述子1によって記述された入力テンソル1の各要素(被除数)は、テンソル記述子2によって記述された入力テンソル2の対応する要素(除数)で除算され、その商が出力テンソルの対応する要素に配置される。
一例において、指定されたテンソル記述子のいずれかの指定されたデータレイアウトが4次元特徴テンソルを指定しない場合(例えば、データレイアウト=0)、または、指定されたテンソル記述子のデータタイプがNNP-データタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード(例えば、それぞれ16進数「0010」または16進数「0011」)が汎用レジスタ0に設定され、命令は、例えば「1」の条件コードで完了する。
一例において、入力テンソル1、入力テンソル2、および出力テンソルの形状、データレイアウト、およびデータタイプは同じである。そうでない場合、一般オペランドデータ例外が認識される。
一例において、出力テンソル記述子2、入力テンソル記述子3、関数固有パラメータ1~5、および関数固有セーブ領域アドレスフィールドは無視される。
関数コード20:NNPA-MIN(最小)
NNPA-MIN関数が指定されると、テンソル記述子1によって記述された入力テンソル1の各要素が、テンソル記述子2によって記述された入力テンソル2の対応する要素と比較される。2つの値のうち小さい方が、出力テンソル記述子の対応する要素に配置される。両方の値が等しい場合、その値が出力テンソルの対応する要素に配置される。
一例において、指定されたテンソル記述子のいずれかの指定されたデータレイアウトが4次元特徴テンソルを指定しない場合(例えば、データレイアウト=0)、または、指定されたテンソル記述子のデータタイプがNNP-データタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード(例えば、それぞれ16進数「0010」または16進数「0011」)が汎用レジスタ0に設定され、命令は、例えば「1」の条件コードで完了する。
一例において、入力テンソル1、入力テンソル2、および出力テンソルの形状、データレイアウト、およびデータタイプは同じである。そうでない場合、一般オペランドデータ例外が認識される。
一例において、出力テンソル記述子2、入力テンソル記述子3、関数固有パラメータ1~5、および関数固有セーブ領域アドレスフィールドは無視される。
関数コード21:NNPA-MAX(最大)
NNPA-MAX関数が指定されると、テンソル記述子1によって記述された入力テンソル1の各要素が、テンソル記述子2によって記述された入力テンソル2の対応する要素と比較される。2つの値のうち大きい方が、出力テンソル記述子の対応する要素に配置される。両方の値が等しい場合、その値が出力テンソルの対応する要素に配置される。
一例において、指定されたテンソル記述子のいずれかの指定されたデータレイアウトが4次元特徴テンソルを指定しない場合(例えば、データレイアウト=0)、または、指定されたテンソル記述子のデータタイプがNNP-データタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード(例えば、それぞれ16進数「0010」または16進数「0011」)が汎用レジスタ0に設定され、命令は、例えば「1」の条件コードで完了する。
一例において、入力テンソル1、入力テンソル2、および出力テンソルの形状、データレイアウト、およびデータタイプは同じである。そうでない場合、一般オペランドデータ例外が認識される。
一例において、出力テンソル記述子2、入力テンソル記述子3、関数固有パラメータ1~5、および関数固有セーブ領域アドレスフィールドは無視される。
関数コード32:NNPA-LOG(自然対数)
NNPA-LOG関数が指定されると、テンソル記述子1によって記述された入力テンソルの各要素について、その要素が0より大きい場合、出力テンソル記述子によって記述された出力テンソルの対応する要素は、その要素の自然対数となる。そうでない場合、出力テンソルの対応する要素は数値表現できず、対象データタイプの負の無限大(negative infinity)に関連する値が記憶される。
一例において、指定されたテンソル記述子のいずれかの指定されたデータレイアウトが4次元特徴テンソルを指定しない場合(例えば、データレイアウト=0)、または、指定されたテンソル記述子のデータタイプがNNP-データタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード(例えば、それぞれ16進数「0010」または16進数「0011」)が汎用レジスタ0に設定され、命令は、例えば「1」の条件コードで完了する。
一例において、入力テンソル1および出力テンソルの形状、データレイアウト、およびデータタイプは同じである。そうでない場合、一般オペランドデータ例外が認識される。
一例において、出力テンソル記述子2、入力テンソル記述子2、入力テンソル記述子3、関数固有パラメータ1~5、および関数固有セーブ領域アドレスフィールドは無視される。
関数コード33:NNPA-EXP(指数)
NNPA-EXP関数が指定されると、テンソル記述子1によって記述された入力テンソルの各要素について、出力テンソル記述子によって記述された出力テンソルの対応する要素が、その要素の指数となる。
一例において、指定されたテンソル記述子のいずれかの指定されたデータレイアウトが4次元特徴テンソルを指定しない場合(例えば、データレイアウト=0)、または、指定されたテンソル記述子のデータタイプがNNP-データタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード(例えば、それぞれ16進数「0010」または16進数「0011」)が汎用レジスタ0に設定され、命令は、例えば「1」の条件コードで完了する。
一例において、入力テンソル1および出力テンソルの形状、データレイアウト、およびデータタイプは同じである。そうでない場合、一般オペランドデータ例外が認識される。
一例において、出力テンソル記述子2、入力テンソル記述子2、入力テンソル記述子3、関数固有パラメータ1~5、および関数固有セーブ領域アドレスフィールドは無視される。
関数コード49:NNPA-RELU(正規化線形ユニット(Rectified Linear Unit))
NNPA-RELU関数が指定されると、テンソル記述子1によって記述された入力テンソルの各要素について、その要素が0以下の場合、出力テンソル記述子によって記述された出力テンソルの対応する要素は0である。そうでない場合、出力テンソルの対応する要素は、入力テンソルの要素と、関数固有パラメータ1で指定されたクリッピング値(clipping value)とのうちの最小値となる。
一例として、関数固有パラメータ1は、RELU操作のクリッピング値を定義する。例えば、クリッピング値は関数固有パラメータ1のビット16~31にある。クリッピング値は、例えば、NNPA-データタイプ1フォーマットで指定される。0のクリッピング値は、正の最大値が使用されること、言い換えると、クリッピングが行われないことを示す。負の値が指定された場合、一般オペランドデータ例外が認識される。
一例において、指定されたテンソル記述子のいずれかの指定されたデータレイアウトが4次元特徴テンソルを指定しない場合(例えば、データレイアウト=0)、または、指定されたテンソル記述子のデータタイプがNNP-データタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード(例えば、それぞれ16進数「0010」または16進数「0011」)が汎用レジスタ0に設定され、命令は、例えば「1」の条件コードで完了する。
一例において、入力テンソル1および出力テンソルの形状、データレイアウト、およびデータタイプは同じである。そうでない場合、一般オペランドデータ例外が認識される。
一例において、出力テンソル記述子2、入力テンソル記述子2、入力テンソル記述子3、および関数固有セーブ領域アドレスフィールドは無視される。一例において、関数固有パラメータ2~5はゼロを含む。
関数コード50:NNPA-TANH
NNPA-TANH関数が指定されると、テンソル記述子1によって記述された入力テンソルの各要素について、出力テンソル記述子によって記述された出力テンソルの対応する要素値は、その要素の双曲線正接となる。
一例において、指定されたテンソル記述子のいずれかの指定されたデータレイアウトが4次元特徴テンソルを指定しない場合(例えば、データレイアウト=0)、または、指定されたテンソル記述子のデータタイプがNNP-データタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード(例えば、それぞれ16進数「0010」または16進数「0011」)が汎用レジスタ0に設定され、命令は、例えば「1」の条件コードで完了する。
一例において、入力テンソル1および出力テンソルの形状、データレイアウト、およびデータタイプは同じである。そうでない場合、一般オペランドデータ例外が認識される。
一例において、出力テンソル記述子2、入力テンソル記述子2、入力テンソル記述子3、関数固有パラメータ1~5、および関数固有セーブ領域アドレスフィールドは無視される。
関数コード51:NNPA-SIGMOID
NNPA-SIGMOID関数が指定されると、テンソル記述子1によって記述された入力テンソルの各要素について、出力テンソル記述子によって記述された出力テンソルの対応する要素は、その要素のS字形(sigmoidal)となる。
一例において、指定されたテンソル記述子のいずれかの指定されたデータレイアウトが4次元特徴テンソルを指定しない場合(例えば、データレイアウト=0)、または、指定されたテンソル記述子のデータタイプがNNP-データタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード(例えば、それぞれ16進数「0010」または16進数「0011」)が汎用レジスタ0に設定され、命令は、例えば「1」の条件コードで完了する。
一例において、入力テンソル1および出力テンソルの形状、データレイアウト、およびデータタイプは同じである。そうでない場合、一般オペランドデータ例外が認識される。
一例において、出力テンソル記述子2、入力テンソル記述子2、入力テンソル記述子3、関数固有パラメータ1~5、および関数固有セーブ領域アドレスフィールドは無視される。
関数コード52:NNPA-SOFTMAX
NNPA-SOFTMAX関数が指定されると、入力テンソル1の次元1の各ベクトルについて、以下に説明するように、出力テンソルの対応するベクトルが計算される。
* ベクトルの最大値が計算される。
* ベクトルの次元1の各要素と上記で計算された最大値との差の指数の和が計算される。入力ベクトルの次元1の要素と上記で計算された最大値の両方が数値であり、差が非数値である場合、その要素の指数の結果は強制的にゼロになる。
* ベクトルの各要素について、その要素と上記で計算された最大値との差の指数を上記で計算された和で割ることにより、中間商(intermediate quotient)が形成される。任意の活性化関数がこの中間商に適用され、出力ベクトルの対応する要素が形成される。
このプロセスは、例えば、次元1のすべての次元4インデックスサイズ×次元3インデックスサイズ×次元2インデックスサイズのベクトルについて繰り返される。
一例において、NNPA-SOFTMAX関数固有パラメータ1は、活性化関数を制御する。一例として、関数固有パラメータ1のACTフィールド(例えば、ビット28~31)が活性化関数を指定する。活性化関数の例には以下が含まれる。
ACT 活性化関数
0 活性化関数は実行しない
1 LOG
2~15 予備
ACTフィールドに予備の値が指定された場合、例えば16進数「F001」の応答コードが報告され、例えば「1」の条件コードで演算が完了する。
一例において、指定されたテンソル記述子のいずれかの指定されたデータレイアウトが4次元特徴テンソルを指定しない場合(例えば、データレイアウト=0)、または、指定されたテンソル記述子のデータタイプがNNP-データタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード(例えば、それぞれ16進数「0010」または16進数「0011」)が汎用レジスタ0に設定され、命令は、例えば「1」の条件コードで完了する。
一例において、入力テンソルの次元3インデックスサイズが1に等しくない場合、例えば、16進数「F000」の応答コードが記憶され、命令は、例えば「1」の条件コードで完了する。
一例において、入力テンソル1および出力テンソルの形状、データレイアウト、およびデータタイプは同じである。そうでない場合、一般オペランドデータ例外が認識される。
一例において、出力テンソル記述子2、入力テンソル記述子2、および入力テンソル記述子3は無視される。一例において、関数固有パラメータ2~5はゼロを含む。
8Kバイトの関数固有セーブ領域が、この関数によって使用されてもよい。
一実施形態において、次元1のベクトルを取得する場合、指定されたデータレイアウトフォーマットによっては、メモリ内で要素が連続しない場合がある。入力テンソル1の次元1のベクトルのすべての要素が、指定されたデータタイプで表現可能な最大の大きさの負の数を含む場合、結果の精度が低下する可能性がある。
関数コード64:NNPA-BATCHNORM(バッチ正規化)
NNPA-BATCHNORM関数が指定されると、入力1テンソルの次元1の各ベクトルについて、そのベクトルの各要素に、入力2テンソルを構成する次元1ベクトルの対応する要素を乗算することによって、出力テンソルの次元1の対応するベクトルが計算される。そして、完全精度積(full precision product)が、入力3テンソルを構成する次元1ベクトルの対応する要素に加算され、出力テンソルの指定されたデータタイプの精度に丸められる。このプロセスは、例えば、次元1のすべての次元4インデックスサイズ×次元3インデックスサイズ×次元2インデックスサイズのベクトルについて繰り返される。
一例において、指定されたテンソル記述子のいずれかの指定されたデータレイアウトが4次元特徴テンソルを指定しない場合(例えば、データレイアウト=0)、または、指定されたテンソル記述子のデータタイプがNNP-データタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード(例えば、それぞれ16進数「0010」または16進数「0011」)が汎用レジスタ0に設定され、命令は、例えば「1」の条件コードで完了する。
一例において、以下の条件が真となり、そうでない場合、一般オペランドデータ例外が認識される。
* 入力テンソル1と出力テンソルの形状およびデータレイアウトは同じである。
* 入力テンソルと出力テンソルのデータタイプは同じである。
* 入力テンソル1、2、3と出力テンソルの次元1インデックスサイズは同じである。
* 入力テンソル2および3の次元2、3、4インデックスサイズは1である。
一例において、出力テンソル記述子2および関数固有セーブ領域アドレスフィールドは無視される。一例において、関数固有パラメータ2~5はゼロを含む。
関数コード80:NNPA-MAXPOOL2D
関数コード81:NNPA-AVGPOOL2D
NNPA-MAXPOOL2D関数またはNNPA-AVGPOOL2D関数のいずれかが指定されると、入力テンソル1記述子によって記述された入力テンソル1が、指定された演算によって縮小し、入力ウィンドウ(windows of the input)を要約(summarize)する。入力ウィンドウは、次元インデックス2および3上で2次元スライディングウィンドウを移動することによって選択される。ウィンドウの要約は、出力テンソルの要素となる。スライディングウィンドウの次元は、例えば関数固有パラメータ4および関数固有パラメータ5によって記述される。隣接する出力テンソル要素を計算する際に、スライディングウィンドウが入力1テンソル上を移動する量をストライド(stride)と呼ぶ。スライディングウィンドウのストライドは、例えば関数固有パラメータ2および関数固有パラメータ3によって指定される。NNPA-MAXPOOL2D演算が指定された場合、以下に定義するMax演算がウィンドウに対して実行される。NNPA-AVGPOOL2D演算が指定された場合、以下に定義するAVG演算がウィンドウに対して実行される。指定されたパディングタイプが「Valid」の場合、ウィンドウ内のすべての要素が、出力要素の計算に使用される集合(collection)に追加される。指定されたパディングタイプが「Same」の場合、ウィンドウの位置に応じて、ウィンドウからの要素のサブセットのみが、出力要素の計算に使用される集合に追加されてもよい。
一例において、CollectElements演算は、要素の集合に一の要素を追加し、集合内の要素の数をインクリメントする。ウィンドウの開始位置が移動するたびに、集合は空になる。演算の実行に必要のない要素にアクセスするかどうかは予測不可能である。
Max演算:一例において、ウィンドウ内の要素の集合の最大値は、集合内のすべての要素を互いに比較し、最大の値を返すことによって計算される。
Avg(平均)演算:一例において、ウィンドウ内の要素の集合の平均値は、集合内のすべての要素の合計を集合内の要素の数で割ったものとして計算される。
一例において、フィールドは以下のように割り当てられる。
* プーリング関数固有パラメータ1は、パディングタイプを制御する。例えば、関数固有パラメータ1のビット29~31は、パディングタイプを指定するPADフィールドを含む。タイプの例には、例えば以下が含まれる。
PAD パディングタイプ
0 Valid
1 Same
2~7 予備
PADフィールドに予備の値が指定された場合、例えば16進数「F000」の応答コードが報告され、演算は、例えば「1」の条件コードで完了する。
一例において、関数固有パラメータ1のビット位置0~28は予備であり、ゼロを含む。
* 関数固有パラメータ2は、例えば、次元2でスライディングウィンドウが移動する要素数を指定する次元2ストライド(D2S:dimension-2-stride)を指定する32ビットの符号なし2進整数を含む。
* 関数固有パラメータ3は、例えば、次元3でスライディングウィンドウが移動する要素数を指定する次元3ストライド(D3S)を指定する32ビットの符号なし2進整数を含む。
* 関数固有パラメータ4は、例えば、スライディングウィンドウが含む次元2の要素数を指定する次元2ウィンドウサイズ(D2WS:dimension-2-window-size)を指定する32ビットの符号なし2進整数を含む。
* 関数固有パラメータ5は、例えば、スライディングウィンドウが含む次元3の要素数を指定する次元3ウィンドウサイズ(D3WS)を指定する32ビットの符号なし2進整数を含む。
一例において、関数固有パラメータ2~5の指定値は最大次元インデックスサイズ以下であり、関数固有パラメータ4~5の指定値はゼロより大きい。そうでない場合、例えば16進数「0012」の応答コードが報告され、演算は、例えば「1」の条件コードで完了する。
次元2ストライドおよび次元3ストライドがともに0であり、かつ次元2ウィンドウサイズまたは次元3ウィンドウサイズのいずれかが例えば1024より大きい場合、例えば16進数「F001」の応答コードが記憶される。次元2ストライドおよび次元3ストライドがともに例えば0より大きく、かつ次元2ウィンドウサイズまたは次元3ウィンドウサイズのいずれかが例えば64より大きい場合、例えば16進数「F002」の応答コードが記憶される。次元2ストライドおよび次元3ストライドがともに例えば0より大きく、かつ次元2ストライドまたは次元3ストライドのいずれかが例えば30より大きい場合、例えば16進数「F003」の応答コードが記憶される。次元2ストライドおよび次元3ストライドがともに例えば0より大きく、入力テンソル次元2インデックスサイズまたは入力テンソル次元3インデックスサイズのいずれかが例えば1024より大きい場合、例えば16進数「F004」の応答コードが記憶される。上記のすべての条件について、命令は、例えば「1」の条件コードで完了する。
一例において、指定されたテンソル記述子のいずれかの指定されたデータレイアウトが4次元特徴テンソルを指定しない場合(例えば、データレイアウト=0)、または、指定されたテンソル記述子のデータタイプがNNP-データタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード(例えば、それぞれ16進数「0010」または16進数「0011」)が汎用レジスタ0に設定され、命令は、例えば「1」の条件コードで完了する。
一例において、以下の条件が真となり、そうでない場合、一般オペランドデータ例外が認識される。
* 入力テンソルと出力テンソルの次元4インデックスサイズおよび次元1インデックスサイズは同じである。
* 入力テンソルと出力テンソルのデータレイアウトおよびデータタイプは同じである。
* 次元2ストライドおよび次元3ストライドがともに0である場合、一例において以下の追加の条件が真となる。
* 入力テンソル次元2インデックスサイズは、次元2ウィンドウサイズと等しい。
* 入力テンソルの入力テンソル次元3インデックスサイズは、次元3ウィンドウサイズと等しい。
* 出力テンソルの次元2インデックスサイズと次元3インデックスサイズは1である。
* 指定されたパディングはValidである。
* 次元2ストライドまたは次元3ストライドのいずれかが非0である場合、一例において、両方のストライドが非0である。
* 次元2ストライドと次元3ストライドがともに0より大きい場合、一例において以下の追加の条件が真となる。
* 指定されたパディングがValidの場合、次元2ウィンドウサイズは、入力テンソルの次元2インデックスサイズ以下である。
* 指定されたパディングがValidの場合、次元3ウィンドウサイズは、入力テンソルの次元3インデックスサイズ以下である。
* 指定されたパディングがSameの場合、入力テンソルと出力テンソルの次元2インデックスサイズと次元3インデックスサイズとの間で以下の関係が満たされる(プーリングSameパディング)。
Figure 2024524902000009
Figure 2024524902000010
ここで、以下の通りである。
IxDyIS テンソル記述子xで定義される入力テンソルxの次元yインデックスサイズ
OxDyIS テンソル記述子xで定義される出力テンソルxの次元yインデックスサイズ
D2S 次元2ストライド
D3S 次元3ストライド
* 指定されたパディングがValidの場合、入力テンソルと出力テンソルの次元2インデックスサイズと次元3インデックスサイズとの間で以下の関係が満たされる(プーリングValidパディング)。
Figure 2024524902000011
Figure 2024524902000012
ここで、D2WSは次元2ウィンドウサイズであり、D3WSは次元3ウィンドウサイズである。
出力テンソル記述子2、入力テンソル記述子2、3、および関数固有セーブ領域アドレスフィールドは無視される。
関数コード96:NNPA-LSTMACT(長・短期記憶活性化(Long Short-Term Memory Activation))
NNPA-LSTMACT関数が指定されると、入力テンソル1記述子によって記述され、各次元4インデックス値について4つのサブテンソルに分割された入力テンソル1が、入力テンソル2記述子によって記述され、各次元4インデックス値について4つのサブテンソルに分割された入力テンソル2、および入力テンソル3記述子によって記述された入力テンソル3とともに、LSTMACT演算の入力となる。LSTMACT演算の終了時には、出力テンソル1記述子によって記述された出力テンソル1と、出力テンソル2記述子によって記述された出力テンソル2とに結果が書き込まれる。
一例において、指定されたテンソル記述子のいずれかの指定されたデータレイアウトが4次元特徴テンソルを指定しない場合(例えば、データレイアウト=0)、または、指定されたテンソル記述子のデータタイプがNNP-データタイプ1を指定しない場合(例えば、データタイプ=0)、それぞれ16進数「0010」または16進数「0011」の応答コードが汎用レジスタ0に設定され、命令は、例えば「1」の条件コードで完了する。
一実施形態において、以下の条件が真となり、そうでない場合、一般オペランドデータ例外が認識される。
* 入力テンソル3と出力テンソル1、2の次元4インデックスサイズは、例えば1に等しい。
* 入力テンソル1と入力テンソル2の次元4インデックスサイズは、例えば4に等しい。
* 例えば、すべての入力テンソルと2つの出力テンソルの次元3インデックスサイズは、例えば1に等しい。
* 例えば、すべての入力テンソルと2つの出力テンソルのデータレイアウトおよびデータタイプは同じである。
* 例えば、すべての入力テンソルと2つの出力テンソルの次元1インデックスサイズは同じである。
* 例えば、すべての入力テンソルと2つの出力テンソルの次元2インデックスサイズは同じである。
一例において、関数固有セーブ領域アドレスフィールドは無視される。関数固有パラメータ1~5は、一例において0を含む。
関数コード97:NNPA-GRUACT(ゲート付き再帰ユニット活性化(Gated Recurrent Unit Activation))
NNPA-GRUACT関数が指定されると、入力テンソル1記述子によって記述され、各次元4インデックス値について3つのサブテンソルに分割された入力テンソル1が、入力テンソル2記述子によって記述され、各次元4インデックス値について3つのサブテンソルに分割された入力テンソル2、および入力テンソル3記述子によって記述された入力テンソル3とともに、GRUACT演算の入力となる。GRUACT演算の終了時には、出力テンソル記述子によって記述された出力テンソルが記録される。
一例において、指定されたテンソル記述子のいずれかの指定されたデータレイアウトが4次元特徴テンソルを指定しない場合(例えば、データレイアウト=0)、または、指定されたテンソル記述子のデータタイプがNNP-データタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード(例えば、それぞれ16進数「0010」または16進数「0011」)が汎用レジスタ0に設定され、命令は、例えば「1」の条件コードで完了する。
一実施形態において、以下の条件が真となり、そうでない場合、一般オペランドデータ例外が認識される。
* 出力テンソルと入力テンソル3の次元4インデックスサイズは、例えば1に等しい。
* 入力テンソル1と入力テンソル2の次元4インデックスサイズは、例えば3に等しい。
* 例えば、すべての入力テンソルと出力テンソルの次元3インデックスサイズは、例えば1に等しい。
* 例えば、すべての入力テンソルと出力テンソルの次元1インデックスサイズは同じである。
* 例えば、すべての入力テンソルと出力テンソルの次元2インデックスサイズは同じである。
* 例えば、すべての入力テンソルと出力テンソルのデータレイアウトおよびデータタイプは同じである。
一例において、出力テンソル記述子2および関数固有セーブ領域アドレスフィールドは無視される。関数固有パラメータ2~5は、一例において0を含む。
関数コード112:NNPA-CONVOLUTION
NNPA-CONVOLUTION関数が指定されると、出力テンソル1記述子によって記述された出力テンソルの各出力要素について、次元インデックス3、2、1からなる3次元入力1ウィンドウが、入力テンソル1記述子によって記述された入力テンソル1から選択される。次元インデックス4、3、2からなる同じサイズの3次元入力2ウィンドウが、入力テンソル2記述子によって記述されたテンソル2から選択される。入力1ウィンドウの要素は、入力2ウィンドウの対応する要素と乗算され、すべての積が加算されて初期和(initial summation)が作成される。この初期和を入力テンソル3の対応する要素に加算し、中間和(intermediate summation)の値を計算する。出力テンソルの要素は、中間和に対して指定の活性化関数を実行した結果となる。活性化関数が指定されていない場合、出力要素は中間和に等しい。
指定されたパディングタイプがValidの場合、ウィンドウのすべての要素が、初期和を計算するために使用される。指定されたパディングタイプがSameの場合、ウィンドウの位置によっては、初期和を計算する際に、入力1ウィンドウの一部の要素が暗黙的に0となる場合がある。
演算の実行に必要でない要素がアクセスされるかどうかは予測不可能である。
一例において、畳み込み関数によって使用される関数固有パラメータのフィールドは、以下のように割り当てられる。
* NNPA-CONVOLUTION関数固有パラメータ1は、パディングタイプおよび活性化関数を制御する。一例において、関数固有パラメータ1のビット29~31は、パディングタイプを指定するPADフィールドを含む。以下にタイプの例を示す。
PAD パディングタイプ
0 Valid
1 Same
2~7 予備
PADフィールドに予備の値が指定された場合、例えば16進数「F000」の応答コードが報告され、例えば「1」の条件コードで動作が完了する。
さらに、一例において、NNPA-CONVOLUTION関数固有パラメータ1のビット24~27は、活性化関数を指定する活性化フィールドを含む。関数の例を以下に示す。
ACT 活性化関数
0 活性化関数は実行しない
1 RELU
2~15 予備
RELUの活性化関数が指定された場合、次のように出力要素値が決定される。中間和の値が0以下であれば、出力テンソルの対応する要素は0となる。そうでない場合、出力テンソルの対応する要素は、中間和の値と、関数固有パラメータ4で指定されたクリッピング値とのうちの最小値となる。
ACTフィールドに予備の値が指定された場合、例えば16進数「F001」の応答コードが報告され、例えば「1」の条件コードで動作が完了する。
* 関数固有パラメータ2は、例えば、次元2でスライディングウィンドウが移動する要素数を指定する次元2ストライド(D2S)を指定する32ビットの符号なし2進整数を含む。
* 関数固有パラメータ3は、例えば、次元3でスライディングウィンドウが移動する要素数を指定する次元3ストライド(D3S)を指定する32ビットの符号なし2進整数を含む。
関数固有パラメータ2~3の指定された値は、最大次元インデックスサイズよりも小さい。そうでない場合、例えば16進数「0012」の応答コードが報告され、演算は、例えば「1」の条件コードで完了する。
* 関数固有パラメータ4は、任意のRELU演算のクリッピング値を定義する。一例において、クリッピング値は関数固有パラメータ4のビット16~31にある。
一例において、ACTフィールドが0の場合、このフィールドは無視される。ACTフィールドがRELUを指定する場合、クリッピング値はNNP-データタイプ1フォーマットで指定される。0のクリッピング値は、正の最大値が使用されること、言い換えると、クリッピングが行われないことを示す。非0が指定された場合、一般オペランドデータ例外が認識される。
一例において、入力テンソル2を除く指定されたテンソル記述子のいずれかの指定されたデータレイアウトが4次元特徴テンソルを指定しない場合(例えば、データレイアウト=0)、または、入力テンソル2の指定されたデータレイアウトが4次元カーネルテンソルを指定しない場合(例えば、データレイアウト=1)、例えば16進数「0010」の応答コードが汎用レジスタ0に設定され、命令は、例えば「1」の条件コードで完了する。一例において、指定されたテンソル記述子のデータタイプがNNP-データタイプ1を指定しない場合(例えば、データタイプ=0)、例えば16進数「0011」の応答コードが汎用レジスタ0に設定され、命令は、例えば「1」の条件コードで完了する。
次元2ストライドおよび次元3ストライドがともに0であり、かつ入力テンソル2の次元3インデックスサイズまたは次元4インデックスサイズが例えば448より大きい場合、例えば16進数「F002」の応答コードが記憶される。次元2ストライドおよび次元3ストライドがともに0より大きく、入力テンソル2の次元3インデックスサイズまたは次元4インデックスサイズのいずれかが例えば64より大きい場合、例えば16進数「F003」の応答コードが記憶され、演算は、例えば「1」の条件コードで完了する。次元2ストライドまたは次元3ストライドのいずれかが例えば13より大きい場合、例えば16進数「F004」の応答コードが記憶され、演算は、例えば「1」の条件コードで完了する。
一例において、以下の条件が真となり、そうでない場合、一般オペランドデータ例外が認識される。
* 入力テンソル1、入力テンソル3、および出力テンソルのデータレイアウトは同じである。
* すべての入力テンソルと出力テンソルのデータタイプは同じである。
* 入力3テンソルの次元2、次元3、次元4インデックスサイズは1である。
* 出力テンソルの次元4インデックスサイズは、入力1テンソルの次元4インデックスサイズに等しい。
* 出力テンソルの次元1インデックスサイズは、入力2テンソルの次元1インデックスサイズおよび入力3テンソルの次元1インデックスサイズに等しい。
* 入力1テンソルの次元1インデックスサイズは、入力2テンソルの次元2インデックスサイズに等しい。
* 次元2ストライドと次元3ストライドがともに0である場合、一例において以下の追加の条件が真となる。
* 入力1テンソルの次元2インデックスサイズは、入力2テンソルの次元3インデックスサイズに等しい。
* 入力1テンソルの次元3インデックスサイズは、入力2テンソルの次元4インデックスサイズに等しい。
* 出力テンソルの次元2インデックスサイズおよび次元3インデックスサイズは1である。
* 指定されたパディングはValidである。
* 次元2ストライドまたは次元3ストライドのいずれかが非0である場合、両方のストライドが非0である。
* 次元2ストライドと次元3ストライドがともに0より大きい場合、一例において以下の追加の条件が真となる。
* 指定されたパディングがValidの場合、入力1テンソルの次元2インデックスサイズは、入力テンソル2の次元3インデックスサイズ以上である。
* 指定されたパディングがValidの場合、入力1テンソルの次元3インデックスサイズは、入力2テンソルの次元4インデックスサイズ以上である。
* 指定されたパディングがSameの場合、一例において、入力1テンソルと出力テンソルの次元2インデックスサイズと次元3インデックスサイズとの間で以下の関係が満たされる(畳み込みSameパディング)。
Figure 2024524902000013
Figure 2024524902000014
ここで、以下の通りである。
O1D2IS 出力テンソルの次元2インデックスサイズ
O1D3IS 出力テンソルの次元3インデックスサイズ
I1D2IS 入力1テンソルの次元2インデックスサイズ
I1D3IS 入力1テンソルの次元3インデックスサイズ
D2S 次元2ストライド
D3S 次元3ストライド
* 指定されたパディングがValidの場合、一例において、入力1テンソルの次元2インデックスサイズおよび次元3インデックスサイズと、入力2テンソルの次元3インデックスサイズおよび次元4インデックスサイズと、出力テンソルとの間で以下の関係が満たされる(畳み込みValidパディング)。
Figure 2024524902000015
Figure 2024524902000016
ここで、以下の通りである。
O1D2IS 出力テンソルの次元2インデックスサイズ
O1D3IS 出力テンソルの次元3インデックスサイズ
I1D2IS 入力1テンソルの次元2インデックスサイズ
I1D3IS 入力1テンソルの次元3インデックスサイズ
I2D3IS 入力2テンソルの次元3インデックスサイズ
I2D4IS 入力2テンソルの次元4インデックスサイズ
D2S 次元2ストライド
D3S 次元3ストライド
一例において、出力テンソル記述子2および関数固有セーブ領域アドレスフィールドは無視される。関数固有パラメータ5は、一例において0を含む。
関数コード113:NNPA-MATMUL-OP(行列乗算演算(Matrix Multiplication Operation))
NNPA-MATMUL-OP関数が指定された場合、出力テンソル記述子によって記述された出力テンソルの各要素は、一例において以下に説明するように計算される。
* 入力テンソル1記述子によって記述された入力テンソル1から、後述する次元1ベクトル取得演算(get-dimension-1-vector operation)を用いて、次元1ベクトルが選択される。
* 入力テンソル2記述子によって記述された入力テンソル2から、後述する次元2ベクトル取得演算(get-dimension-2-vector operation)を用いて、次元2ベクトルが選択される。
* 次元1ベクトルと次元2ベクトルの中間ドット積(intermediate dot product)は、後述するドット積演算を用いて計算される。
* 中間ドット積と、入力テンソル3記述子によって記述された、出力テンソル要素と同じ次元インデックス4および次元インデックス1の値を持つ入力テンソル3の要素とに対して演算が実行される。得られた要素は出力テンソルに記憶される。融合演算(fused operation)は関数固有パラメータ1によって決定され、以下に説明される。
次元1ベクトル取得演算:指定された出力要素について、入力1テンソルから次元1ベクトルが選択される。ここで、入力次元4インデックスが出力次元4インデックスであり、入力次元3インデックスが出力次元3インデックスであり、入力次元2インデックスが出力次元2インデックスである。
次元2ベクトル取得演算:指定された出力要素について、入力2テンソルから次元2ベクトルが選択される。ここで、入力次元4インデックスが出力次元4インデックスであり、入力次元3インデックスが出力次元3インデックスであり、入力次元1インデックスが出力次元1インデックスである。
ドット積演算:同じサイズおよびデータタイプの2つのベクトルの中間ドット積は、入力ベクトル1の各要素と入力ベクトル2の対応する要素の積の和として計算される。
融合演算:関数固有パラメータ1は、中間ドット積と入力テンソル3からの対応する要素とに対して実行される演算を制御する。一例において、NNPA-MATMUL-OP関数固有パラメータ1は、例えばビット24~31に演算フィールドを含む。演算フィールドは、実行される演算を指定する。演算の例を以下に示す。
演算 演算タイプ
0 加算
1 ドット積が高いか比較
2 ドット積が低くないか比較
3 ドット積と要素が等しいかどうか比較
4 ドット積と要素が等しくないか比較
5 ドット積が高くないか比較
6 ドット積が低いか比較
一例において、加算の演算タイプの場合、入力テンソル3要素が中間ドット積に加算される。比較の演算タイプの場合、中間ドット積が入力テンソル3要素と比較され、比較が真であれば、結果は例えば+1の値に設定され、そうでない場合、出力テンソルについて指定されたデータタイプにおいて、例えば+0の値に設定される。
一例において、OPERATIONフィールドの他の値はすべて予備である。OPERATIONフィールドに予備の値が指定された場合、例えば16進数「F000」の応答コードが報告され、演算は、例えば「1」の条件コードで完了する。
一例において、指定されたテンソル記述子のいずれかの指定されたデータレイアウトが4次元特徴テンソルを指定しない場合(例えば、データレイアウト=0)、または、指定されたテンソル記述子のデータタイプがNNP-データタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード(例えば、それぞれ16進数「0010」または16進数「0011」)が汎用レジスタ0に設定され、命令は、例えば「1」の条件コードで完了する。
一実施形態において、以下の条件が真となり、そうでない場合、一般オペランドデータ例外が認識される。
* すべての入力テンソルと出力テンソルの次元4インデックスサイズは同じである。
* すべての入力テンソルと出力テンソルの次元3インデックスサイズは1に等しい。
* 入力テンソル3の次元2インデックスサイズは1に等しい。
* 入力テンソル1と出力テンソルの次元2インデックスサイズは同じである。
* 入力テンソル1の次元1インデックスサイズと入力テンソル2の次元2インデックスサイズは同じである。
* 入力テンソル2、入力テンソル3、および出力テンソルの次元1インデックスサイズは同じである。
* すべての入力テンソルと出力テンソルのデータレイアウトおよびデータタイプは同じである。
一実施形態において、出力テンソル記述子2および関数固有セーブ領域アドレスフィールドは無視される。関数固有パラメータ2~5は、一例において0を含む。
関数コード114:NNPA-MATMUL-OP-BCAST23(行列乗算演算-ブロードキャスト23)
NNPA-MATMUL-OP-BCAST23関数が指定されると、出力テンソル記述子によって記述された出力テンソルの各要素が、一例として以下に説明するように計算される。
* 入力テンソル1記述子によって記述された入力テンソル1から、後述する次元1ベクトル取得演算を用いて、次元1ベクトルが選択される。
* 入力テンソル2記述子によって記述された入力テンソル2から、後述する次元2ベクトル取得演算を用いて、次元2ベクトルが選択される。
* 次元1ベクトルと次元2ベクトルのドット積は、後述するドット積演算を用いて計算される。
* 入力テンソル3記述子によって記述された、出力テンソル要素と同じ次元インデックス1の値を持つ入力テンソル3の要素が、先に計算されたドット積に加算され、出力テンソルに記憶される。
次元1ベクトル取得演算:指定された出力要素について、入力1テンソルから次元1ベクトルが選択される。ここで、入力次元4インデックスが出力次元4インデックスであり、入力次元3インデックスが出力次元3インデックスであり、入力次元2インデックスが出力次元2インデックスである。
次元2ベクトル取得演算:指定された出力要素について、入力2テンソルから次元2ベクトルが選択される。ここで、入力次元4インデックスが1であり、入力次元3インデックスが出力次元3インデックスであり、入力次元1インデックスが出力次元1インデックスである。
ドット積演算:同じサイズおよびデータタイプの2つのベクトルの中間積は、入力ベクトル1の各要素と入力ベクトル2の対応する要素の積の和として計算される。
一例において、指定されたテンソル記述子のいずれかの指定されたデータレイアウトが4次元特徴テンソルを指定しない場合(例えば、データレイアウト=0)、または、指定されたテンソル記述子のデータタイプがNNP-データタイプ1を指定しない場合(例えば、データタイプ=0)、応答コード(例えば、それぞれ16進数「0010」または16進数「0011」)が汎用レジスタ0に設定され、命令は、例えば「1」の条件コードで完了する。
一実施形態において、以下の条件が真となり、そうでない場合、一般オペランドデータ例外が認識される。
* 入力テンソル1と出力テンソルの次元4インデックスサイズは同じである。
* 入力テンソル2と入力テンソル3の次元4インデックスサイズは1に等しい。
* すべての入力テンソルと出力テンソルの次元3インデックスサイズは1に等しい。
* 入力テンソル3の次元2インデックスサイズは1に等しい。
* 入力テンソル1と出力テンソルの次元2インデックスサイズは同じである。
* 入力テンソル1の次元1インデックスサイズと入力テンソル2の次元2インデックスサイズは同じである。
* 入力テンソル2、入力テンソル3、および出力テンソルの次元1インデックスサイズは同じである。
* すべての入力テンソルと出力テンソルのデータレイアウトおよびデータタイプは同じである。
一実施形態において、出力テンソル記述子2および関数固有セーブ領域アドレスフィールドは無視される。関数固有パラメータ1~5は、一例において0を含む。
ニューラルネットワーク処理アシスト命令について、一実施形態において、出力テンソルが入力テンソルのいずれかまたはパラメータブロックと重なる場合、結果は予測不可能である。
一例として、ニューラルネットワーク処理アシスト命令の実行が試行され、パラメータブロックが、例えばダブルワード境界上で指定されていない場合に、指定例外(specification exception)が認識される。
ニューラルネットワーク処理アシスト命令の実行が試行され、例えばテンソル記述子の不整合がある場合に、一般オペランドデータ例外が認識される。
ニューラルネットワーク処理アシスト命令に対する条件コードの結果は、例えば、以下を含む。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
本明細書で説明するように、単一の命令(例えば、ニューラルネットワーク処理アシスト命令)は、クエリ関数および複数の非クエリ関数を含む複数の関数を実行するように構成される。各非クエリ関数は、大量のデータを操作する可能性があり、例外チェックが提供される。例えば、計算中に、非数値、表現不可能な数値、もしくは範囲外の値またはその組み合わせが計算を通じて伝播(propagate)する場合がある。非数値、表現不可能な数値、もしくは範囲外の値またはその組み合わせなどの無効な値が生成されたタイミングを知ることは、それ以上の計算を実行しない(例えば、別の関数を呼び出すためのニューラルネットワーク処理アシスト命令を実行しない)ことを決定する可能性があるため、有用である。無効な値を検出することにより、性能の低下を招くことがない。したがって、本発明の1つ以上の態様によれば、計算処理を実行する際に、入力値または出力値が、非数値、表現不可能な数値、もしくは範囲外の値またはその組み合わせなどの無効な値であるかどうかが検出される。計算処理の終了時(例えば、計算を実行する前に無効な入力を検出した後、または呼び出された関数の1つ以上の計算を実行した後)に、要約インジケータ(例えば、範囲例外フラグ)が(例えば、1に)設定される。一例において、どのデータ要素が無効な値を提供したかの表示は提供されない。これにより、算術演算においてより高い性能を実現することができる。無効な値が入力となっているか、または計算によって生成されたことを報告することにより、人工知能モデルのデバッグが容易になる。無効な値の正確な特定は必要ではないが、どの計算関数がこれらの値の1つを生成したかを知ることは有用である。
本発明の1つ以上の態様は、コンピュータ技術と密接に結びついており、コンピュータ内の処理を容易にし、その性能を向上させる。様々な関数を実行するように構成された単一のアーキテクチャ化された機械命令を使用することにより、複雑さを低減し、リソースの使用を低減し、処理速度を向上させることによって、コンピューティング環境内の性能を向上させる。さらに、例外チェック、および例外の要約を提供する報告を実行することにより、性能が低下せず、また、人工知能モデルの作成もしくはデバッグまたはその両方が容易になる。処理における命令もしくは最適化またはその両方は、コンピュータ処理、医療処理、工学、自動車技術、製造など、多くの技術分野で使用することができる。最適化を実現することで、例えば、エラーもしくは実行時間もしくはその両方を低減し、かつ/または、性能を向上することにより、これらの技術分野が改善される。
本発明の1つ以上の態様に関連する、コンピューティング環境内の処理を容易にする一実施形態のさらなる詳細を、図7Aおよび7Bを参照して説明する。
図7Aを参照すると、一例において、無効であると判定された値が、1つ以上の計算のうちの一の計算への入力データ、または1つ以上の計算の結果得られた出力データに含まれていたことを示す表示が取得される(700)。この値は、複数の例外のうちの1つの例外により、無効であると判定される(702)。値が無効であると判定された旨の表示を取得したことに基づいて、要約インジケータが設定される(704)。要約インジケータは、複数の例外をまとめて表す(706)。
入力データまたは出力データにおいて無効な値が検出された旨の表示を提供することにより、例えば人工知能モデルのデバッグが容易になる。無効な値を持つ特定のデータ要素を指定したり、複数の例外のどれが検出されたかを区別したりしないことで、より高い演算性能が実現される。
一例において、要約インジケータは、複数の例外を互いに区別することなく、複数の例外を表す(708)。一例において、要約インジケータは、複数の例外のうちのどの例外が値の無効判定に使用されたかに関係なく設定される(710)。
無効な値のタイプ(例えば、非数値、表現不可能な値、範囲外の値)にかかわらず、無効な値を示す1つのインジケータを使用することにより、コーディングおよび処理が容易になり、複雑さが低減され、システム性能が向上する。
一例において、要約インジケータは、1つ以上の計算を実行するために発行された命令によって指定された場所に設けられた例外フラグの範囲違反インジケータである(712)。
例として、複数の例外は、非数値、表現不可能な数値、および範囲外の値を含む(714)。
図7Bを参照すると、一例において、値が無効であると判定された旨の表示を取得することは、1つ以上の計算を実行する命令を実行することに基づく(720)。これにより、命令の処理および無効な値の提供が容易になる。
一例として、命令は、計算を実行する複数の関数を実行するように構成され、複数の関数は、要約インジケータを使用する(722)。複数の関数で使用される1つのインジケータを有することにより、複雑さおよびコーディングと検証の手間が低減される。
一例において、命令は、人工知能処理に使用される出力テンソルを提供するために、入力テンソルに対して計算を実行するニューラルネットワーク命令である(724)。一例として、命令は、計算を実行する複数の関数を実行するように構成され、複数の関数は、要約インジケータを使用する(726)。
一例として、要約インジケータは特定の命令について定義され、別の命令は別の要約インジケータを使用する(728)。
一例において、当該特定の命令の実行に基づいて設定される条件コードの値が決定され(730)、要約インジケータの有効性は、条件コードの値が選択された値であるとの判定に基づく(732)。
他の変形および実施形態も可能である。
本発明の態様は、多くの種類のコンピューティング環境で使用することができる。本発明の1つ以上の態様を組み込んで使用するコンピューティング環境の別の例を、図8Aを参照して説明する。一例として、図8Aのコンピューティング環境は、インターナショナル・ビジネス・マシーンズ・コーポレーション(ニューヨーク州アーモンク)製のz/Architecture(登録商標)命令セットアーキテクチャに基づいている。ただし、z/Architecture命令セットアーキテクチャは、アーキテクチャの一例に過ぎない。繰り返しになるが、コンピューティング環境は、Intel(登録商標)x86アーキテクチャ、インターナショナル・ビジネス・マシーンズ・コーポレーションの他のアーキテクチャ、もしくは他社のアーキテクチャまたはその組み合わせを含む(ただし、これらに限定されない)他のアーキテクチャに基づいてもよい。なお、Intelは、インテル・コーポレーションまたはその子会社の米国およびその他の国における商標または登録商標である。
一例として、コンピューティング環境10は、中央電子処理装置(CEC:central electronics complex)11を含む。中央電子処理装置11は、複数のコンポーネントを含む。複数のコンポーネントは、例えば、1つ以上の汎用プロセッサ(別名、中央処理装置(CPU)13)および1つ以上の専用プロセッサ(例えば、ニューラルネットワークプロセッサ31)などの1つ以上のプロセッサと、入出力(I/O)サブシステム14とに結合されたメモリ12(別名、システムメモリ、メインメモリ、メインストレージ、中央ストレージ、ストレージ)を含む。
例として、1つ以上の専用プロセッサは、1つ以上の汎用プロセッサと別体に設けられてもよいし、少なくとも1つの専用プロセッサが、少なくとも1つの汎用プロセッサ内に組み込まれてもよいし、その両方であってもよい。他の変形も可能である。
I/Oサブシステム14は、中央電子処理装置の一部であってもよいし、そこから分離していてもよい。I/Oサブシステム14は、メインストレージ12と、中央電子処理装置に結合された入出力制御ユニット15および入出力(I/O)デバイス16との間の情報フローを指示する。
多くのタイプのI/Oデバイスを使用することができる。1つの特定のタイプとして、データストレージデバイス17が使用される。データストレージデバイス17は、1つ以上のプログラム18、1つ以上のコンピュータ可読プログラム命令19、もしくはデータまたはその組み合わせなどを記憶することができる。コンピュータ可読プログラム命令は、本発明の態様に係る実施形態の機能を実行するように構成することができる。
中央電子処理装置11は、取り外し可能/取り外し不可能な揮発性/不揮発性のコンピュータシステムストレージ媒体を含むことができ、もしくはこれに結合することができ、またはその両方とすることができる。例えば、中央電子処理装置11は、取り外し不可能な不揮発性磁気媒体(一般的に「ハードディスク」と呼ばれる)、取り外し可能な不揮発性磁気ディスク(例えば「フロッピーディスク」)に対して読み書きを行うための磁気ディスクドライブ、もしくは、CD-ROM、DVD-ROMや他の光学媒体など、取り外し可能な不揮発性の光ディスクに対して読み書きを行うための光ディスクドライブを含むことができ、もしくはこれに結合することができ、またはその両方とすることができる。なお、他のハードウェアもしくはソフトウェアまたはその両方のコンポーネントを中央電子処理装置11と組み合わせて使用してもよい。これらのコンポーネントの例としては、特に限定されないが、マイクロコードまたはミリコード、デバイスドライバ、冗長処理ユニット、外部ディスクドライブアレイ、RAIDシステム、テープドライブ、およびデータアーカイブストレージシステムなどが挙げられる。
さらに、中央電子処理装置11は、多くの他の汎用もしくは専用コンピューティングシステム環境または構成とともに動作可能である。中央電子処理装置11とともに使用するのに適した周知のコンピューティングシステム、環境、もしくは構成またはその組み合わせの例としては、特に限定されないが、パーソナルコンピュータ(PC)システム、サーバコンピュータシステム、シンクライアント、シッククライアント、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家電、ネットワークPC、ミニコンピュータシステム、メインフレームコンピュータシステム、および、これらのシステムまたはデバイスのいずれかを含む分散型クラウドコンピューティング環境などが挙げられる。
中央電子処理装置11は、1つ以上の実施形態において、論理パーティショニングもしくは仮想化サポートまたはその両方を提供する。一実施形態において、図8Bに示すように、メモリ12は、例えば、1つ以上の論理パーティション20、論理パーティションを管理するハイパーバイザ21、およびプロセッサファームウェア22を含む。ハイパーバイザ21の一例としては、インターナショナル・ビジネス・マシーンズ・コーポレーション(ニューヨーク州アーモンク)製のProcessor Resource/System Manager(PR/SMTM)が挙げられる。なお、PR/SMは、少なくとも1つの法域におけるインターナショナル・ビジネス・マシーンズ・コーポレーションの商標または登録商標である。
各論理パーティション20は、別個のシステムとして機能することができる。すなわち、各論理パーティションは、独立してリセットされ、ゲストオペレーティングシステム23(インターナショナル・ビジネス・マシーンズ・コーポレーション(ニューヨーク州アーモンク)製のz/OS(登録商標)オペレーティングシステムなど)、または他の制御コード24(結合ファシリティ制御コード(CFCC:coupling facility control code)など)を実行し、異なるプログラム25とともに動作することができる。論理パーティション内で実行されているオペレーティングシステムまたはアプリケーションプログラムは、全体の完全なシステムにアクセスできるように見えるが、実際には、その一部しか利用できない。なお、z/OSオペレーティングシステムを例示したが、インターナショナル・ビジネス・マシーンズ・コーポレーションもしくは他の企業またはその両方が提供する他のオペレーティングシステムを、本発明の1つ以上の態様に従って使用してもよい。
メモリ12は、例えば、CPU13(図8A)に結合される。CPU13は、論理パーティションに割り当てることができる物理プロセッサリソースである。例えば、論理パーティション20は、1つ以上の論理プロセッサを含んでもよく、その各々は、論理パーティションに動的に割り当てることができる物理プロセッサリソース13のすべてまたは割り当て分を表す。
さらなる一実施形態において、中央電子処理装置は、仮想マシンサポート(論理パーティショニングサポートを有するもの、または有しないものいずれか)を提供する。図8Cに示すように、中央電子処理装置11のメモリ12は、例えば、1つ以上の仮想マシン26と、仮想マシンを管理するハイパーバイザ27などの仮想マシンマネージャと、プロセッサファームウェア28とを含む。ハイパーバイザ27の一例としては、インターナショナル・ビジネス・マシーンズ・コーポレーション(ニューヨーク州アーモンク)製のz/VM(登録商標)ハイパーバイザが挙げられる。ハイパーバイザは、ホストと呼ばれることもある。なお、z/VMは、少なくとも1つの法域におけるインターナショナル・ビジネス・マシーンズ・コーポレーションの商標または登録商標である。
中央電子処理装置の仮想マシンサポートは、各々が異なるプログラム29とともに動作し、Linux(登録商標)オペレーティングシステムなどのゲストオペレーティングシステム30を実行することができる、多数の仮想マシン26を運用する能力を提供する。各仮想マシン26は、別個のシステムとして機能することができる。すなわち、各仮想マシンは、独立してリセットされ、ゲストオペレーティングシステムを実行し、異なるプログラムとともに動作することができる。仮想マシン内で実行されるオペレーティングシステムまたはアプリケーションプログラムは、全体の完全なシステムにアクセスできるように見えるが、実際には、その一部しか利用できない。なお、z/VMおよびLinuxを例示したが、他の仮想マシンマネージャもしくはオペレーティングシステムまたはその両方を、本発明の1つ以上の態様に従って使用してもよい。なお、登録商標Linuxは、世界規模での当該商標の所有者であるLinus Torvaldsの独占的ライセンシーであるLinux Foundationからのサブライセンスに従って使用される。
本発明の1つ以上の態様を組み込んで使用するコンピューティング環境の別の実施形態を、図9Aを参照して説明する。この例では、コンピューティング環境36は、例えば、ネイティブ中央処理装置(CPU)37と、メモリ38と、例えば1つ以上のバス40もしくは他の接続またはその両方介して互いに結合された1つ以上の入出力デバイス39もしくは入出力インタフェース39またはその両方と含む。一例として、コンピューティング環境36は、インターナショナル・ビジネス・マシーンズ・コーポレーション(ニューヨーク州アーモンク)製のPowerPC(登録商標)プロセッサ、ヒューレット・パッカード・カンパニー(カリフォルニア州パロアルト)製のIntel(登録商標)Itanium(登録商標)IIプロセッサ搭載HP Superdome、もしくは、インターナショナル・ビジネス・マシーンズ・コーポレーション、ヒューレット・パッカード、インテル・コーポレーション、オラクルもしくは他の企業またはその組み合わせが提供するアーキテクチャに基づく他のマシン、またはその組み合わせを含むことができる。なお、PowerPCは、少なくとも1つの法域におけるインターナショナル・ビジネス・マシーンズ・コーポレーションの商標または登録商標である。Itaniumは、インテル・コーポレーションまたはその子会社の米国およびその他の国における商標または登録商標である。
ネイティブ中央処理装置37は、環境内での処理中に使用される1つ以上の汎用レジスタもしくは1つ以上の専用レジスタまたはその両方などの、1つ以上のネイティブレジスタ41を含む。これらのレジスタは、任意の特定の時点における環境の状態を表す情報を含む。
さらに、ネイティブ中央処理装置37は、メモリ38に記憶されている命令およびコードを実行する。1つの具体例では、中央処理装置は、メモリ38に記憶されているエミュレータコード42を実行する。このコードは、あるアーキテクチャで構成されたコンピューティング環境が別のアーキテクチャをエミュレートすることを可能にする。例えば、エミュレータコード42は、z/Architecture命令セットアーキテクチャ以外のアーキテクチャ(PowerPCプロセッサ、HP Superdomeサーバなど)に基づくマシンが、z/Architecture命令セットアーキテクチャをエミュレートし、z/Architecture命令セットアーキテクチャに基づいて開発されたソフトウェアおよび命令を実行することを可能にする。
エミュレータコード42に関連するさらなる詳細を、図9Bを参照して説明する。メモリ38に記憶されたゲスト命令(guest instructions)43は、ネイティブCPU37のアーキテクチャ以外のアーキテクチャで実行されるように開発されたソフトウェア命令(例えば、マシン命令と相互に関連付けられた)を含む。例えば、ゲスト命令43は、z/Architecture命令セットアーキテクチャに基づくプロセッサ上で実行されるように設計されていた可能性があるが、その代わりに、ネイティブCPU37(例えばIntel Itanium IIプロセッサであってもよい)上でエミュレートされている。一例として、エミュレータコード42は、メモリ38から1つ以上のゲスト命令43を取得し、取得した命令に対して必要に応じてローカルバッファを提供するための命令フェッチルーチン(instruction fetching routine)44を含む。また、エミュレータコード42は、取得したゲスト命令のタイプを決定し、ゲスト命令を1つ以上の対応するネイティブ命令(native instructions)46に変換するための命令変換ルーチン(instruction translation routine)45を含む。この変換は、例えば、ゲスト命令によって実行される機能を特定することと、当該機能を実行するためのネイティブ命令を選択することとを含む。
さらに、エミュレータコード42は、ネイティブ命令を実行させるためのエミュレーション制御ルーチン(emulation control routine)47を含む。エミュレーション制御ルーチン47は、ネイティブCPU37に、1つ以上の以前に取得したゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、このような実行の終了時に、次のゲスト命令またはゲスト命令グループの取得をエミュレートするために、制御を命令フェッチルーチンに戻させてもよい。ネイティブ命令46の実行は、メモリ38からレジスタにデータをロードすること、レジスタからメモリにデータを戻して記憶すること、または、変換ルーチンによって決定される何らかのタイプの算術演算または論理演算を実行することを含んでもよい。
各ルーチンは、例えば、メモリに記憶されかつネイティブ中央処理装置37によって実行されるソフトウェアにおいて実装される。他の例において、ルーチンまたは操作のうちの1つ以上は、ファームウェア、ハードウェア、ソフトウェアまたはそれらの組み合わせにおいて実装される。エミュレートされたプロセッサのレジスタは、ネイティブCPUのレジスタ41を使用してエミュレートされてもよいし、メモリ38内の位置を使用してエミュレートされてもよい。実施形態において、ゲスト命令43、ネイティブ命令46およびエミュレータコード42は、同じメモリに存在してもよいし、異なるメモリデバイス間に分散されてもよい。
エミュレート可能な命令は、本発明の1つ以上の態様に従って、本明細書に記載のニューラルネットワークアシスト処理命令を含む。さらに、本発明の1つ以上の態様に従って、他の命令、ニューラルネットワーク処理の1つ以上の態様、もしくは例外チェックおよび報告、またはその組み合わせがエミュレートされてもよい。
上述したコンピューティング環境は、使用可能なコンピューティング環境の例に過ぎない。他の環境(特に限定されないが、非パーティション化環境、パーティション化環境、クラウド環境もしくはエミュレートされた環境またはその組み合わせを含む)を使用してもよく、実施形態はいずれか1つの環境に限定されない。本明細書では、コンピューティング環境の様々な例を説明しているが、本発明の1つ以上の態様は、多くのタイプの環境とともに使用することができる。本明細書で提供されるコンピューティング環境は、例示に過ぎない。
各コンピューティング環境は、本発明の1つ以上の態様を含むように構成することができる。
1つ以上の態様は、クラウドコンピューティングに関係してもよい。
本開示は、クラウドコンピューティングに関する詳細な説明を含むが、本明細書に記載された教示の実装形態は、クラウドコンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在公知のまたは後に開発される任意の他のタイプのコンピューティング環境と組み合わせて実施することが可能である。
クラウドコンピューティングは、設定可能なコンピューティングリソース(例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、記憶装置、アプリケーション、仮想マシンおよびサービス)の共有プールへの簡便かつオンデマンドのネットワークアクセスを可能にするためのサービス提供のモデルであり、リソースは、最小限の管理労力または最小限のサービスプロバイダとのやり取りによって速やかに準備(provision)およびリリースできるものである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、および少なくとも4つの展開モデルを含むことができる。
特性は以下の通りである。
オンデマンド・セルフサービス:クラウドの消費者は、サービスプロバイダとの人的な対話を必要することなく、必要に応じて自動的に、サーバ時間やネットワークストレージなどのコンピューティング能力を一方的に準備することができる。
ブロード・ネットワークアクセス:コンピューティング能力はネットワーク経由で利用可能であり、また、標準的なメカニズムを介してアクセスできる。それにより、異種のシンまたはシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、PDA)による利用が促進される。
リソースプーリング:プロバイダのコンピューティングリソースはプールされ、マルチテナントモデルを利用して複数の消費者に提供される。様々な物理リソースおよび仮想リソースが、需要に応じて動的に割り当ておよび再割り当てされる。一般に消費者は、提供されたリソースの正確な位置を管理または把握していないため、位置非依存(location independence)の感覚がある。ただし消費者は、より高い抽象レベル(例えば、国、州、データセンタ)では場所を特定可能な場合がある。
迅速な柔軟性(elasticity):コンピューティング能力は、迅速かつ柔軟に準備することができるため、場合によっては自動的に、直ちにスケールアウトし、また、速やかにリリースされて直ちにスケールインすることができる。消費者にとって、準備に利用可能なコンピューティング能力は無制限に見える場合が多く、任意の時間に任意の数量で購入することができる。
サービスの測定:クラウドシステムは、サービスの種類(例えば、ストレージ、処理、帯域幅、アクティブユーザアカウント)に適したある程度の抽象化レベルでの計量機能(metering capability)を活用して、リソースの使用を自動的に制御し最適化する。リソース使用量を監視、制御、および報告して、利用されるサービスのプロバイダおよび消費者の両方に透明性を提供することができる。
サービスモデルは以下の通りである。
サービスとしてのソフトウェア(SaaS):消費者に提供される機能は、クラウドインフラストラクチャ上で動作するプロバイダのアプリケーションを利用できることである。当該そのアプリケーションは、ウェブブラウザ(例えばウェブメール)などのシンクライアントインタフェースを介して、各種のクライアント装置からアクセスできる。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージや、個別のアプリケーション機能さえも含めて、基礎となるクラウドインフラストラクチャの管理や制御は行わない。ただし、ユーザ固有の限られたアプリケーション構成の設定はその限りではない。
サービスとしてのプラットフォーム(PaaS):消費者に提供される機能は、プロバイダによってサポートされるプログラム言語およびツールを用いて、消費者が作成または取得したアプリケーションを、クラウドインフラストラクチャに展開(deploy)することである。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージを含む、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、展開されたアプリケーションを制御でき、かつ場合によってはそのホスティング環境の構成も制御できる。
サービスとしてのインフラストラクチャ(IaaS):消費者に提供される機能は、オペレーティングシステムやアプリケーションを含む任意のソフトウェアを消費者が展開および実行可能な、プロセッサ、ストレージ、ネットワーク、および他の基本的なコンピューティングリソースを準備することである。消費者は、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、オペレーティングシステム、ストレージ、および展開されたアプリケーションを制御でき、かつ場合によっては一部のネットワークコンポーネント(例えばホストファイアウォール)を部分的に制御できる。
展開モデルは以下の通りである。
プライベートクラウド:このクラウドインフラストラクチャは、特定の組織専用で運用される。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
コミュニティクラウド:このクラウドインフラストラクチャは、複数の組織によって共有され、共通の関心事(例えば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンス)を持つ特定のコミュニティをサポートする。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
パブリッククラウド:このクラウドインフラストラクチャは、不特定多数の人々や大規模な業界団体に提供され、クラウドサービスを販売する組織によって所有される。
ハイブリッドクラウド:このクラウドインフラストラクチャは、2つ以上のクラウドモデル(プライベート、コミュニティまたはパブリック)を組み合わせたものとなる。それぞれのモデル固有の実体は保持するが、標準または個別の技術によってバインドされ、データとアプリケーションの可搬性(例えば、クラウド間の負荷分散のためのクラウドバースティング)を実現する。
クラウドコンピューティング環境は、ステートレス性(statelessness)、低結合性(low coupling)、モジュール性(modularity)および意味論的相互運用性(semantic interoperability)に重点を置いたサービス指向型環境である。クラウドコンピューティングの中核にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
ここで、図10に例示的なクラウドコンピューティング環境50を示す。図示するように、クラウドコンピューティング環境50は1つ以上のクラウドコンピューティングノード52を含む。これらに対して、クラウド消費者が使用するローカルコンピュータ装置(例えば、PDAもしくは携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、もしくは自動車コンピュータシステム54Nまたはこれらの組み合わせなど)は通信を行うことができる。ノード52は互いに通信することができる。ノード52は、例えば、上述のプライベート、コミュニティ、パブリックもしくはハイブリッドクラウドまたはこれらの組み合わせなど、1つ以上のネットワークにおいて、物理的または仮想的にグループ化(不図示)することができる。これにより、クラウドコンピューティング環境50は、サービスとしてのインフラストラクチャ、プラットフォームもしくはソフトウェアまたはこれらの組み合わせを提供することができ、クラウド消費者はこれらについて、ローカルコンピュータ装置上にリソースを維持する必要がない。なお、図10に示すコンピュータ装置54A~Nの種類は例示に過ぎず、コンピューティングノード52およびクラウドコンピューティング環境50は、任意の種類のネットワークもしくはネットワークアドレス指定可能接続(例えば、ウェブブラウザの使用)またはその両方を介して、任意の種類の電子装置と通信可能であることを理解されたい。
ここで、クラウドコンピューティング環境50(図10)によって提供される機能的抽象化レイヤのセットを図11に示す。なお、図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、ROM、消去可能プログラマブルROM(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、CD-ROM、DVD、メモリスティック、フロッピーディスク、パンチカードまたは溝内の隆起構造などに命令を記録した機械的に符号化されたデバイス、およびこれらの適切な組み合せが挙げられる。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号のような、一過性の信号それ自体として解釈されるべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティングデバイス/処理デバイスへダウンロードすることができる。あるいは、ネットワーク(例えばインターネット、LAN、WANもしくは無線ネットワークまたはこれらの組み合わせ)を介して、外部コンピュータまたは外部ストレージデバイスへダウンロード可能である。ネットワークは、銅製伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータもしくはエッジサーバまたはこれらの組み合わせを備えることができる。各コンピューティングデバイス/処理デバイス内のネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を、各々のコンピューティングデバイス/処理デバイスにおけるコンピュータ可読記憶媒体に記憶するために転送する。
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用構成データ、または、スモールトークや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つ以上の専用プロセッサ、または汎用プロセッサと専用プロセッサの組み合わせが使用されてもよい。多くの変形が可能である。
本明細書では、様々な態様を説明している。さらに、本発明の態様の主旨から逸脱することなく、多くの変形が可能である。特に矛盾しない限り、本明細書に記載の各態様または特徴、およびその変形は、任意の他の態様または特徴と組み合わせてもよい。
さらに、他のタイプのコンピューティング環境も本発明の恩恵を受け、使用することができる。一例として、システムバスを介してメモリ要素に直接的または間接的に結合された少なくとも2つのプロセッサを含む、プログラムコードの記憶もしくは実行またはその両方に適したデータ処理システムを使用することができる。メモリ要素には、例えば、プログラムコードの実際の実行中に使用されるローカルメモリ、バルクストレージ、および、実行中にバルクストレージからコードを取得する回数を減らすために少なくとも一部のプログラムコードの一時的なストレージを提供するキャッシュメモリがある。
入出力またはI/Oデバイス(特に限定されないが、キーボード、ディスプレイ、ポインティングデバイス、DASD、テープ、CD、DVD、サムドライブおよび他のメモリ媒体など)は、直接的に、またはI/Oコントローラを間に介してシステムに結合することができる。また、ネットワークアダプタをシステムに結合して、データ処理システムを、プライベートネットワークまたはパブリックネットワークを間に介して他のデータ処理システム、リモートプリンタまたはストレージデバイスに結合できるようにしてもよい。利用可能なネットワークアダプタを数種類挙げると、モデム、ケーブルモデム、イーサネットカードなどがある。
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、種々の実施形態を限定することを意図するものではない。本明細書において、単数形「ある(a)」、「ある(an)」および「その(the)」は、文脈上そうではないことが明らかでない限り、複数形も含むことを意図している。さらに、本明細書において、「含む(comprises)」もしくは「含んでいる(comprising)」またはその両方の用語が用いられる場合、記載された特徴、整数、ステップ、操作、要素、もしくは構成要素またはその組み合わせが存在することを規定するが、1つ以上の他の特徴、整数、ステップ、操作、要素、構成要素、もしくはそれらのグループまたはその組み合わせが存在したり、追加されたりすることを排除するものではない。
以下の特許請求の範囲に存在する場合、すべてのミーンズプラスファンクション要素またはステッププラスファンクション要素の対応する構造、材料、動作、および均等物は、具体的に特許請求された他の特許請求要素と組み合わせて機能を実行するための任意の構造、材料、または動作を含むことを意図している。1つ以上の実施形態の記載は、例示および説明を目的として提示されたものであり、網羅的であることや、開示した形態に限定することを意図したものではない。多くの変更および変形が当業者には明らかである。本実施形態は、様々な態様および実際の応用例を最もよく説明するために、かつ他の当業者が、企図している特定の用途に適した各種の変更を伴う各種の実施形態を理解できるように選択され記載されたものである。

Claims (20)

  1. コンピューティング環境内での処理を容易にするためのコンピュータプログラム製品であって、
    1つ以上のコンピュータ可読記憶媒体と、当該1つ以上のコンピュータ可読記憶媒体にまとめて記憶された、方法を実行するためのプログラム命令と、を含み、当該方法は、
    無効であると判定された値が、1つ以上の計算のうちの一の計算への入力データ、または当該1つ以上の計算の結果得られた出力データに含まれていたことを示す表示を取得することであって、当該値は、複数の例外のうちの1つの例外により、無効であると判定される、ことと、
    前記値が無効であると判定された旨の前記表示を取得したことに基づいて、前記複数の例外をまとめて表す要約インジケータを設定することと、
    を含む、コンピュータプログラム製品。
  2. 前記要約インジケータは、前記複数の例外を互いに区別することなく、当該複数の例外を表す、前記請求項に記載のコンピュータプログラム製品。
  3. 前記要約インジケータは、前記複数の例外のうちのどの例外が前記値の無効判定に使用されたかに関係なく設定される、前記請求項のいずれか1項に記載のコンピュータプログラム製品。
  4. 前記要約インジケータは、前記1つ以上の計算を実行するために発行された命令によって指定された場所に設けられた例外フラグの範囲違反インジケータである、前記請求項のいずれか1項に記載のコンピュータプログラム製品。
  5. 前記複数の例外は、非数値、表現不可能な数値、および範囲外の値を含む、前記請求項のいずれか1項に記載のコンピュータプログラム製品。
  6. 前記値が無効であると判定された旨の前記表示を取得することは、前記1つ以上の計算を実行する命令を実行することに基づく、前記請求項のいずれか1項に記載のコンピュータプログラム製品。
  7. 前記命令は、計算を実行する複数の関数を実行するように構成され、当該複数の関数は、前記要約インジケータを使用する、前記請求項に記載のコンピュータプログラム製品。
  8. 前記命令は、人工知能処理に使用される出力テンソルを提供するために、入力テンソルに対して計算を実行するニューラルネットワーク命令であり、当該命令は、計算を実行する複数の関数を実行するように構成され、当該複数の関数は、要約インジケータを使用する、前記2つの請求項のいずれか1項に記載のコンピュータプログラム製品。
  9. 前記要約インジケータは特定の命令について定義され、別の命令は別の要約インジケータを使用する、前記請求項のいずれか1項に記載のコンピュータプログラム製品。
  10. 前記方法は、前記特定の命令の実行に基づいて設定される条件コードの値を決定することをさらに含み、前記要約インジケータの有効性は、当該条件コードの値が選択された値であるとの判定に基づく、前記請求項に記載のコンピュータプログラム製品。
  11. コンピューティング環境内での処理を容易にするためのコンピュータシステムであって、
    メモリと、
    前記メモリと通信する少なくとも1つのプロセッサと、を備え、前記コンピュータシステムは方法を実行するように構成され、当該方法は、
    無効であると判定された値が、1つ以上の計算のうちの一の計算への入力データ、または当該1つ以上の計算の結果得られた出力データに含まれていたことを示す表示を取得することであって、当該値は、複数の例外のうちの1つの例外により、無効であると判定される、ことと、
    前記値が無効であると判定された旨の前記表示を取得したことに基づいて、前記複数の例外をまとめて表す要約インジケータを設定することと、
    を含む、コンピュータシステム。
  12. 前記要約インジケータは、前記複数の例外を互いに区別することなく、当該複数の例外を表す、前記請求項に記載のコンピュータシステム。
  13. 前記要約インジケータは、前記複数の例外のうちのどの例外が前記値の無効判定に使用されたかに関係なく設定される、前記2つの請求項のいずれか1項に記載のコンピュータシステム。
  14. 前記値が無効であると判定された旨の前記表示を取得することは、前記1つ以上の計算を実行する命令を実行することに基づいており、
    前記命令は、人工知能処理に使用される出力テンソルを提供するために、入力テンソルに対して計算を実行するニューラルネットワーク命令であり、当該命令は、計算を実行する複数の関数を実行するように構成され、当該複数の関数は、要約インジケータを使用する、前記3つの請求項のいずれか1項に記載のコンピュータシステム。
  15. 前記要約インジケータは特定の命令について定義され、別の命令は別の要約インジケータを使用する、前記4つの請求項のいずれか1項に記載のコンピュータシステム。
  16. コンピューティング環境内での処理を容易にするためのコンピュータ実装方法であって、
    無効であると判定された値が、1つ以上の計算のうちの一の計算への入力データ、または当該1つ以上の計算の結果得られた出力データに含まれていたことを示す表示を取得することであって、当該値は、複数の例外のうちの1つの例外により、無効であると判定される、ことと、
    前記値が無効であると判定された旨の前記表示を取得したことに基づいて、前記複数の例外をまとめて表す要約インジケータを設定することと、
    を含む、コンピュータ実装方法。
  17. 前記要約インジケータは、前記複数の例外を互いに区別することなく、当該複数の例外を表す、前記請求項に記載のコンピュータ実装方法。
  18. 前記要約インジケータは、前記複数の例外のうちのどの例外が前記値の無効判定に使用されたかに関係なく設定される、前記2つの請求項のいずれか1項に記載のコンピュータ実装方法。
  19. 前記値が無効であると判定された旨の前記表示を取得することは、前記1つ以上の計算を実行する命令を実行することに基づいており、
    前記命令は、人工知能処理に使用される出力テンソルを提供するために、入力テンソルに対して計算を実行するニューラルネットワーク命令であり、当該命令は、計算を実行する複数の関数を実行するように構成され、当該複数の関数は、要約インジケータを使用する、前記3つの請求項のいずれか1項に記載のコンピュータ実装方法。
  20. 前記要約インジケータは特定の命令について定義され、別の命令は別の要約インジケータを使用する、前記4つの請求項のいずれか1項に記載のコンピュータ実装方法。
JP2023577242A 2021-06-17 2022-06-14 命令実行中に無効な値が検出された場合の例外要約 Pending JP2024524902A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/350,467 2021-06-17
US17/350,467 US11734013B2 (en) 2021-06-17 2021-06-17 Exception summary for invalid values detected during instruction execution
PCT/IB2022/055505 WO2022264034A1 (en) 2021-06-17 2022-06-14 Exception summary for invalid values detected during instruction execution

Publications (1)

Publication Number Publication Date
JP2024524902A true JP2024524902A (ja) 2024-07-09

Family

ID=84527254

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023577242A Pending JP2024524902A (ja) 2021-06-17 2022-06-14 命令実行中に無効な値が検出された場合の例外要約

Country Status (7)

Country Link
US (1) US11734013B2 (ja)
JP (1) JP2024524902A (ja)
CN (1) CN117396898A (ja)
DE (1) DE112022002414T5 (ja)
GB (1) GB2622160A (ja)
TW (1) TWI840785B (ja)
WO (1) WO2022264034A1 (ja)

Family Cites Families (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5685009A (en) * 1994-07-20 1997-11-04 Exponential Technology, Inc. Shared floating-point registers and register port-pairing in a dual-architecture CPU
US5761105A (en) 1995-09-26 1998-06-02 Advanced Micro Devices, Inc. Reservation station including addressable constant store for a floating point processing unit
US8291003B2 (en) 2008-09-09 2012-10-16 International Business Machines Corporation Supporting multiple formats in a floating point processor
US9286130B2 (en) 2012-08-27 2016-03-15 International Business Machines Corporation Optimizing virtual machine deployment time by temporarily allocating more processing resources during the initial deployment time of the virtual machine
US10623386B1 (en) 2012-09-26 2020-04-14 Pure Storage, Inc. Secret sharing data protection in a storage system
US9141361B2 (en) 2012-09-30 2015-09-22 Intel Corporation Method and apparatus for performance efficient ISA virtualization using dynamic partial binary translation
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
US10061824B2 (en) 2015-01-30 2018-08-28 Splunk Inc. Cell-based table manipulation of event data
US9747546B2 (en) 2015-05-21 2017-08-29 Google Inc. Neural network processor
US10460230B2 (en) 2015-06-04 2019-10-29 Samsung Electronics Co., Ltd. Reducing computations in a neural network
US10728169B1 (en) 2015-06-26 2020-07-28 Amazon Technologies, Inc. Instance upgrade migration
US9710401B2 (en) 2015-06-26 2017-07-18 Intel Corporation Processors, methods, systems, and instructions to support live migration of protected containers
US9940101B2 (en) 2015-08-25 2018-04-10 Samsung Electronics Co., Ltd. Tininess prediction and handler engine for smooth handling of numeric underflow
US10726328B2 (en) 2015-10-09 2020-07-28 Altera Corporation Method and apparatus for designing and implementing a convolution neural net accelerator
US10346350B2 (en) 2015-10-08 2019-07-09 Via Alliance Semiconductor Co., Ltd. Direct execution by an execution unit of a micro-operation loaded into an architectural register file by an architectural instruction of a processor
US9569277B1 (en) 2016-01-29 2017-02-14 International Business Machines Corporation Rebalancing virtual resources for virtual machines based on multiple resource capacities
US10778707B1 (en) 2016-05-12 2020-09-15 Amazon Technologies, Inc. Outlier detection for streaming data using locality sensitive hashing
US10891538B2 (en) 2016-08-11 2021-01-12 Nvidia Corporation Sparse convolutional neural network accelerator
US10810484B2 (en) 2016-08-12 2020-10-20 Xilinx, Inc. Hardware accelerator for compressed GRU on FPGA
US10802992B2 (en) 2016-08-12 2020-10-13 Xilinx Technology Beijing Limited Combining CPU and special accelerator for implementing an artificial neural network
US9959498B1 (en) 2016-10-27 2018-05-01 Google Llc Neural network instruction set architecture
US10175980B2 (en) 2016-10-27 2019-01-08 Google Llc Neural network compute tile
US10120680B2 (en) 2016-12-30 2018-11-06 Intel Corporation Systems, apparatuses, and methods for arithmetic recurrence
EP3607453B1 (en) 2017-04-07 2022-08-31 Intel Corporation Methods and apparatus for deep learning network execution pipeline on multi-processor platform
WO2018193354A1 (en) 2017-04-17 2018-10-25 Cerebras Systems Inc. Wavelet representation for accelerated deep learning
CN107704922B (zh) 2017-04-19 2020-12-08 赛灵思公司 人工神经网络处理装置
US20180322386A1 (en) 2017-05-05 2018-11-08 Intel Corporation Fine-grain compute communication execution for deep learning frameworks
US10338925B2 (en) 2017-05-24 2019-07-02 Microsoft Technology Licensing, Llc Tensor register files
WO2019035862A1 (en) 2017-08-14 2019-02-21 Sisense Ltd. SYSTEM AND METHOD FOR INCREASING THE PRECISION OF APPROXIMATION OF INTERROGATION RESULTS USING NEURAL NETWORKS
US11216437B2 (en) 2017-08-14 2022-01-04 Sisense Ltd. System and method for representing query elements in an artificial neural network
US10558599B2 (en) 2017-09-12 2020-02-11 Nxp Usa, Inc. Method and apparatus for loading a matrix into an accelerator
CN109543826A (zh) 2017-09-21 2019-03-29 杭州海康威视数字技术股份有限公司 一种基于深度神经网络的激活量量化方法及装置
KR102610820B1 (ko) 2017-09-27 2023-12-06 삼성전자주식회사 뉴럴 네트워크 시스템 및 뉴럴 네트워크 시스템의 동작방법
US11108809B2 (en) 2017-10-27 2021-08-31 Fireeye, Inc. System and method for analyzing binary code for malware classification using artificial neural network techniques
GB2568087B (en) 2017-11-03 2022-07-20 Imagination Tech Ltd Activation functions for deep neural networks
US11175892B2 (en) * 2017-11-20 2021-11-16 Intel Corporation Integrated circuits with machine learning extensions
US11373088B2 (en) 2017-12-30 2022-06-28 Intel Corporation Machine learning accelerator mechanism
CN111836658B (zh) 2018-01-10 2022-07-08 林约翰斯顿有限责任公司 紧凑式注射器系统和方法
US11093830B2 (en) 2018-01-30 2021-08-17 D5Ai Llc Stacking multiple nodal networks
US20210004668A1 (en) 2018-02-16 2021-01-07 The Governing Council Of The University Of Toronto Neural network accelerator
US10552199B2 (en) 2018-02-26 2020-02-04 Nutanix, Inc. System and method for binary throttling for live migration of virtual machines
US20200074293A1 (en) 2018-08-29 2020-03-05 DinoplusAI Holdings Limited Computing Device for Multiple Activation Functions in Neural Networks
US20190340499A1 (en) 2018-05-04 2019-11-07 Microsoft Technology Licensing, Llc Quantization for dnn accelerators
US10656913B2 (en) 2018-06-05 2020-05-19 International Business Machines Corporation Enhanced low precision binary floating-point formatting
US10620951B2 (en) 2018-06-22 2020-04-14 Intel Corporation Matrix multiplication acceleration of sparse matrices using column folding and squeezing
US10832139B2 (en) 2018-06-22 2020-11-10 Moffett Technologies Co. Limited Neural network acceleration and embedding compression systems and methods with activation sparsification
US10908906B2 (en) 2018-06-29 2021-02-02 Intel Corporation Apparatus and method for a tensor permutation engine
CN109146072B (zh) 2018-08-01 2021-03-23 上海天数智芯半导体有限公司 基于卷积神经网络加速器的数据重用方法
US10885277B2 (en) 2018-08-02 2021-01-05 Google Llc On-device neural networks for natural language understanding
US10817042B2 (en) 2018-09-27 2020-10-27 Intel Corporation Power savings for neural network architecture with zero activations during inference
US11676003B2 (en) 2018-12-18 2023-06-13 Microsoft Technology Licensing, Llc Training neural network accelerators using mixed precision data formats
GB2580130B (en) * 2018-12-21 2021-02-24 Graphcore Ltd Overflow condition
US10699465B1 (en) 2018-12-28 2020-06-30 Intel Corporation Cluster of scalar engines to accelerate intersection in leaf node
US20200218985A1 (en) 2019-01-03 2020-07-09 Alibaba Group Holding Limited System and method for synthetic-model-based benchmarking of ai hardware
US11645358B2 (en) 2019-01-29 2023-05-09 Hewlett Packard Enterprise Development Lp Generation of executable files corresponding to neural network models
US20200264876A1 (en) 2019-02-14 2020-08-20 Microsoft Technology Licensing, Llc Adjusting activation compression for neural network training
US11023205B2 (en) * 2019-02-15 2021-06-01 International Business Machines Corporation Negative zero control in instruction execution
US10824560B2 (en) 2019-02-18 2020-11-03 Nxp B.V. Using a memory safety violation indicator to detect accesses to an out-of-bounds or unallocated memory area
US20200302284A1 (en) 2019-03-18 2020-09-24 Nvidia Corporation Data compression for a neural network
US11574239B2 (en) 2019-03-18 2023-02-07 Microsoft Technology Licensing, Llc Outlier quantization for training and inference
US11392114B2 (en) 2019-03-26 2022-07-19 Toshiba Mitsubishi-Electric Industrial Systems Corporation Abnormality determination support apparatus
US11442700B2 (en) 2019-03-29 2022-09-13 Stmicroelectronics S.R.L. Hardware accelerator method, system and device
US10789402B1 (en) 2019-05-01 2020-09-29 Xilinx, Inc. Compiler and hardware abstraction layer architecture for a neural network accelerator
US11366771B2 (en) 2019-05-02 2022-06-21 EMC IP Holding Company LLC Host device with multi-path layer configured for detection and resolution of initiator-related conditions
US11790250B2 (en) 2019-05-09 2023-10-17 Intel Corporation Using computational cost and instantaneous load analysis for intelligent deployment of neural networks on multiple hardware executors
CN110197260B (zh) 2019-06-06 2020-10-02 百度在线网络技术(北京)有限公司 一种数据处理方法及装置
US11281468B2 (en) * 2019-06-12 2022-03-22 Shanghai Zhaoxin Semiconductor Co., Ltd. Instruction execution method and instruction execution device
TWI701612B (zh) 2019-06-19 2020-08-11 創鑫智慧股份有限公司 用於神經網路中激勵函數的電路系統及其處理方法
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US20200410322A1 (en) 2019-06-26 2020-12-31 Nvidia Corporation Neural architecture for self supervised event learning and anomaly detection
US11907827B2 (en) 2019-06-28 2024-02-20 Intel Corporation Schedule-aware tensor distribution module
US11568238B2 (en) 2019-06-28 2023-01-31 Amazon Technologies, Inc. Dynamic processing element array expansion
US11630770B2 (en) 2019-07-11 2023-04-18 Meta Platforms Technologies, Llc Systems and methods for reading and writing sparse data in a neural network accelerator
US11567555B2 (en) 2019-08-30 2023-01-31 Intel Corporation Software assisted power management
US11727267B2 (en) 2019-08-30 2023-08-15 Intel Corporation Artificial neural network with trainable activation functions and fractional derivative values
US11797188B2 (en) 2019-12-12 2023-10-24 Sk Hynix Nand Product Solutions Corp. Solid state drive with multiplexed internal channel access during program data transfers

Also Published As

Publication number Publication date
TWI840785B (zh) 2024-05-01
GB202318580D0 (en) 2024-01-17
GB2622160A (en) 2024-03-06
WO2022264034A1 (en) 2022-12-22
DE112022002414T5 (de) 2024-03-21
US20220413867A1 (en) 2022-12-29
US11734013B2 (en) 2023-08-22
CN117396898A (zh) 2024-01-12
TW202301112A (zh) 2023-01-01

Similar Documents

Publication Publication Date Title
TWI840790B (zh) 用於促進一運算環境內之處理的電腦程式產品、電腦系統及電腦實施方法
US12008395B2 (en) Program event recording storage alteration processing for a neural network accelerator instruction
TWI807767B (zh) 神經網路處理輔助指令
US11675592B2 (en) Instruction to query for model-dependent information
US11734013B2 (en) Exception summary for invalid values detected during instruction execution
AU2022292046B2 (en) Reformatting of tensors to provide sub-tensors
US11797270B2 (en) Single function to perform multiple operations with distinct operation parameter validation
JP2024523880A (ja) 畳み込み演算と選択演算を組み合わせて実行する単一関数
JP2024523782A (ja) 単一の起動において複数の動作を実行するためのリカレントニューラルネットワークセル活性化