IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特表2024-522435ニューラル・ネットワーク処理支援命令
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-06-21
(54)【発明の名称】ニューラル・ネットワーク処理支援命令
(51)【国際特許分類】
   G06F 15/167 20060101AFI20240614BHJP
【FI】
G06F15/167 610B
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023564226
(86)(22)【出願日】2022-06-09
(85)【翻訳文提出日】2023-10-19
(86)【国際出願番号】 EP2022065677
(87)【国際公開番号】W WO2022263282
(87)【国際公開日】2022-12-22
(31)【優先権主張番号】17/350,393
(32)【優先日】2021-06-17
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】アルバラカート、ライス
(72)【発明者】
【氏名】ブラッドベリー、ジョナサン
(72)【発明者】
【氏名】スリゲル、ティモシー
(72)【発明者】
【氏名】リヒテナウ、セドリック
(72)【発明者】
【氏名】ヴァイシャウプト、サイモン
(72)【発明者】
【氏名】サポリート、アンソニー
【テーマコード(参考)】
5B045
【Fターム(参考)】
5B045CC08
5B045DD01
5B045EE03
5B045FF03
5B045GG13
(57)【要約】
第1のプロセッサは、複数の機能を実行するように構成された命令を処理する。これらの複数の機能は、1つまたは複数のテンソルに対して動作するための1つまたは複数の機能を含む。実行される複数の機能のうちの1つの機能の決定が行われる。第1のプロセッサは、この機能に関連する情報を第2のプロセッサに提供する。第2のプロセッサは、この機能を実行することになる。第1のプロセッサおよび第2のプロセッサは、メモリを共有し、メモリ一貫性を実現する。
【特許請求の範囲】
【請求項1】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、
1つまたは複数のコンピュータ可読ストレージ媒体と、前記1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを備え、前記プログラム命令が、
第1のプロセッサによって、複数の機能を実行するように構成された命令を処理することであって、前記複数の機能が、1つまたは複数のテンソルに対して動作するための機能を含む、前記処理することと、
実行される前記複数の機能のうちの1つの機能を決定することと、
前記第1のプロセッサによって、前記機能に関連する情報を第2のプロセッサに提供することであって、前記機能が前記第2のプロセッサによって実行され、前記第1のプロセッサおよび前記第2のプロセッサが、メモリを共有し、メモリ一貫性を実現する、前記提供することとを含む方法を実行する、コンピュータ・プログラム製品。
【請求項2】
前記方法が、前記第1のプロセッサまたは前記第2のプロセッサのどちらが前記機能を実行するべきかを決定することをさらに含み、前記機能が前記第2のプロセッサによって実行されるべきとの決定に基づいて、前記提供が実行される、請求項1に記載のコンピュータ・プログラム製品。
【請求項3】
前記第1のプロセッサまたは前記第2のプロセッサのどちらが前記機能を実行するべきかを前記決定することが、前記命令によって指定された前記機能が非照会機能であるか照会機能であるかを決定することを含み、前記機能が照会機能であることに基づいて、前記第1のプロセッサが前記機能を実行することになり、前記機能が非照会機能であることに基づいて、前記第2のプロセッサが前記機能を実行することになる、請求項1または2に記載のコンピュータ・プログラム製品。
【請求項4】
前記第1のプロセッサによる前記命令の前記処理が、前記命令の同期実行を含む、請求項1ないし3のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項5】
前記方法が、
前記機能の実行が割り込まれたかどうかを判定することと、
前記機能の実行が割り込まれたとの決定に基づいて、前記機能の実行を再開するために、選ばれたバッファ内の情報を取得することとをさらに含む、請求項1ないし4のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項6】
前記機能の実行が割り込まれたかどうかの前記判定が、前記命令を再実行することにおいて使用されるパラメータ・ブロックに含まれている継続フラグをチェックすることを含む、請求項5に記載のコンピュータ・プログラム製品。
【請求項7】
前記選ばれたバッファが、前記命令を再実行することにおいて使用されるパラメータ・ブロック内で示される、請求項5に記載のコンピュータ・プログラム製品。
【請求項8】
前記1つまたは複数のテンソルが、前記第2のプロセッサ用に最適化された形式である、請求項1ないし7のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項9】
前記第2のプロセッサに提供される前記情報が、実行される前記機能によって操作される前記1つまたは複数のテンソルのうちの少なくとも1つのテンソルを取得するために使用される、メモリ・アドレス情報を含む、請求項1ないし8のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項10】
前記命令が、実行される前記機能を処理することに関連する情報を提供するパラメータ・ブロックを指定し、前記パラメータ・ブロックが、実行される前記機能に依存する、請求項1ないし9のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項11】
コンピューティング環境内の処理を容易にするためのコンピュータ・システムであって、前記コンピュータ・システムが、
メモリと、
前記メモリと通信する少なくとも1つのプロセッサとを備え、前記コンピュータ・システムが方法を実行するように構成されており、前記方法が、
第1のプロセッサによって、複数の機能を実行するように構成された命令を処理することであって、前記複数の機能が、1つまたは複数のテンソルに対して動作するための機能を含む、前記処理することと、
実行される前記複数の機能のうちの1つの機能を決定することと、
前記第1のプロセッサによって、前記機能に関連する情報を第2のプロセッサに提供することであって、前記機能が前記第2のプロセッサによって実行され、前記第1のプロセッサおよび前記第2のプロセッサが、メモリを共有し、メモリ一貫性を実現する、前記提供することとを含む、コンピュータ・システム。
【請求項12】
前記方法が、前記第1のプロセッサまたは前記第2のプロセッサのどちらが前記機能を実行するべきかを決定することをさらに含み、前記機能が前記第2のプロセッサによって実行されるべきとの決定に基づいて、前記提供が実行される、請求項11に記載のコンピュータ・システム。
【請求項13】
前記第1のプロセッサまたは前記第2のプロセッサのどちらが前記機能を実行するべきかを前記決定することが、前記命令によって指定された前記機能が非照会機能であるか照会機能であるかを決定することを含み、前記機能が照会機能であることに基づいて、前記第1のプロセッサが前記機能を実行することになり、前記機能が非照会機能であることに基づいて、前記第2のプロセッサが前記機能を実行することになる、請求項11または12に記載のコンピュータ・システム。
【請求項14】
前記方法が、
前記機能の実行が割り込まれたかどうかを判定することと、
前記機能の実行が割り込まれたとの決定に基づいて、前記機能の実行を再開するために、選ばれたバッファ内の情報を取得することとをさらに含む、請求項11ないし13のいずれか一項に記載のコンピュータ・システム。
【請求項15】
前記第1のプロセッサによる前記命令の前記処理が、前記命令の同期実行を含む、請求項11ないし14のいずれか一項に記載のコンピュータ・システム。
【請求項16】
コンピューティング環境内の処理を容易にするコンピュータ実装方法であって、前記コンピュータ実装方法が、
第1のプロセッサによって、複数の機能を実行するように構成された命令を処理することであって、前記複数の機能が、1つまたは複数のテンソルに対して動作するための機能を含む、前記処理することと、
実行される前記複数の機能のうちの1つの機能を決定することと、
前記機能が前記第2のプロセッサによって実行されるべきとの決定に基づいて、前記第1のプロセッサによって、前記機能に関連する情報を第2のプロセッサに提供することであって、前記第1のプロセッサおよび前記第2のプロセッサが、メモリを共有し、メモリ一貫性を実現する、前記提供することとを含む、コンピュータ実装方法。
【請求項17】
前記第1のプロセッサまたは前記第2のプロセッサのどちらが前記機能を実行するべきかを決定することをさらに含み、前記機能が前記第2のプロセッサによって実行されるべきとの決定に基づいて、前記提供が実行される、請求項16に記載のコンピュータ実装方法。
【請求項18】
前記第1のプロセッサまたは前記第2のプロセッサのどちらが前記機能を実行するべきかを前記決定することが、前記命令によって指定された前記機能が非照会機能であるか照会機能であるかを決定することを含み、前記機能が照会機能であることに基づいて、前記第1のプロセッサが前記機能を実行することになり、前記機能が非照会機能であることに基づいて、前記第2のプロセッサが前記機能を実行することになる、請求項16または17に記載のコンピュータ実装方法。
【請求項19】
前記機能の実行が割り込まれたかどうかを判定することと、
前記機能の実行が割り込まれたとの決定に基づいて、前記機能の実行を再開するために、選ばれたバッファ内の情報を取得することとをさらに含む、請求項16ないし18のいずれか一項に記載のコンピュータ実装方法。
【請求項20】
前記第1のプロセッサによる前記命令の前記処理が、前記命令の同期実行を含む、請求項16ないし19のいずれか一項に記載のコンピュータ実装方法。
【請求項21】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、
1つまたは複数のコンピュータ可読ストレージ媒体と、前記1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを備え、前記プログラム命令が、
複数の機能を実行するように構成された命令を処理することであって、前記複数の機能が、1つまたは複数の入力テンソルに対して動作するための機能を含み、前記1つまたは複数の入力テンソルが、前記複数の機能のうちの1つまたは複数の機能を実行するために使用される選ばれたプロセッサ用に最適化された形式を有する、前記処理することと、
前記複数の機能から、実行される特定の機能を決定することと、
前記特定の機能の実行を開始することとを含む方法を実行する、コンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
1つまたは複数の態様は、一般に、コンピューティング環境内の処理を容易にすることに関し、特に、そのような処理を改善することに関する。
【背景技術】
【0002】
データ量が多いか、または計算負荷が高いか、あるいはその両方であるコンピューティング環境における処理を改良するために、人工知能アクセラレータ(ニューラル・ネットワーク・プロセッサまたはニューラル・ネットワーク・アクセラレータとも呼ばれる)などのコプロセッサが利用される。そのようなアクセラレータは、例えば、行列またはテンソルに対する計算などの複雑な計算を実行することにおいて使用される、大量の計算能力を提供する。
【0003】
一例として、テンソル計算は、機械学習のサブセットである深層学習を含む、複雑な処理において使用される。人工知能の側面である深層学習または機械学習は、設計、製造、医療技術、自動車技術、コンピュータ処理などを含むが、これらに限定されない、さまざまな技術において使用される。
【0004】
テンソル計算を含む人工知能のワークロードを実行するために、汎用プロセッサ上で多くの命令を実行するか、または専用ハードウェア実装を使用する、ソフトウェア実装が使用されることがある。汎用プロセッサ上で多くの命令を使用することは、ニューラル・ネットワーク動作の性能を制限する可能性がある。さらに、専用ハードウェア実装のプログラミングでは、ハードウェア世代ごとに、プログラムが変更されて再コンパイルされる必要があることがあり、これによって複雑さが増し、検証コストが増える。
【発明の概要】
【0005】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品の提供によって、従来技術の欠点が克服され、追加の利点がもたらされる。コンピュータ・プログラム製品は、1つまたは複数のコンピュータ可読ストレージ媒体と、方法を実行するために1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを含む。この方法は、第1のプロセッサによって、複数の機能を実行するように構成された命令を処理することを含む。これらの複数の機能は、1つまたは複数のテンソルに対して動作するための機能を含む。実行される複数の機能のうちの1つの機能の決定が行われる。第1のプロセッサは、この機能に関連する情報を第2のプロセッサに提供する。第2のプロセッサは、この機能を実行することになる。第1のプロセッサおよび第2のプロセッサは、メモリを共有し、メモリ一貫性を実現する。
【0006】
命令を処理する第1のプロセッサとメモリを共有する第2のプロセッサによって1つまたは複数の機能が実行され得る、複数の機能のために構成された単一の命令を使用して、第2のプロセッサと通信するためのコストのかかるメモリ・ピンニング(memory pinning)および入出力動作が不要になる。
【0007】
1つの例では、第1のプロセッサまたは第2のプロセッサのどちらが機能を実行するべきかに関する決定が行われ、機能が第2のプロセッサによって実行されるべきとの決定に基づいて、提供が実行される。
【0008】
1つの例では、第1のプロセッサまたは第2のプロセッサのどちらが機能を実行するべきかを決定することは、命令によって指定された機能が非照会機能であるか照会機能であるかを決定することを含む。機能が照会機能であることに基づいて、第1のプロセッサが機能を実行することになり、機能が非照会機能であることに基づいて、第2のプロセッサが機能を実行することになる。
【0009】
例として、第1のプロセッサによる命令の処理は、命令の同期実行を含む。
【0010】
さらなる態様では、機能の実行が割り込まれたかどうかに関する判定が行われる。機能の実行が割り込まれたとの決定に基づいて、機能の実行を再開するために、選ばれたバッファ内の情報が取得される。
【0011】
例として、機能の実行が割り込まれたかどうかの判定は、命令を再実行することにおいて使用されるパラメータ・ブロックに含まれている継続フラグをチェックすることを含む。さらに、1つの例では、選ばれたバッファは、命令を再実行することにおいて使用されるパラメータ・ブロック内で示される。
【0012】
1つの例では、1つまたは複数のテンソルは、第2のプロセッサ用に最適化された形式である。さらに、例として、第2のプロセッサに提供される情報は、実行される機能によって操作される1つまたは複数のテンソルのうちの少なくとも1つのテンソルを取得するために使用される、メモリ・アドレス情報を含む。
【0013】
例として、命令は、実行される機能を処理することに関連する情報を提供するパラメータ・ブロックを指定する。パラメータ・ブロックは、例えば、実行される機能に依存する。
【0014】
1つの態様では、コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品が提供される。コンピュータ・プログラム製品は、1つまたは複数のコンピュータ可読ストレージ媒体と、方法を実行するために1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを含む。この方法は、複数の機能を実行するように構成された命令を処理することを含む。複数の機能は、1つまたは複数の入力テンソルに対して動作するための機能を含み、1つまたは複数の入力テンソルは、複数の機能のうちの1つまたは複数の機能を実行するために使用される選ばれたプロセッサ用に最適化された形式を有する。複数の機能から、実行される特定の機能の決定が行われ、この特定の機能の実行が開始される。
【0015】
1つまたは複数の態様に関連するコンピュータ実装方法およびシステムも本明細書に記載され、請求される。さらに、1つまたは複数の態様に関連するサービスも本明細書に記載されており、請求されてよい。
【0016】
さらなる特徴および利点が、本明細書に記載された技術によって実現される。他の実施形態および態様は、本明細書において詳細に説明され、請求される態様の一部と見なされる。
【0017】
1つまたは複数の態様は、本明細書の最後にある特許請求の範囲において例として具体的に指摘され、明確に請求される。前述の内容、ならびに1つまたは複数の態様の目的、特徴、および利点は、添付の図面と併せて行われる以下の詳細な説明から明らかになる。
【図面の簡単な説明】
【0018】
図1A】本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の一例を示す図である。
図1B】本発明の1つまたは複数の態様に従って、図1Aのプロセッサの詳細をさらに示す図である。
図2A】本発明の1つまたは複数の態様に従って、ニューラル・ネットワーク処理支援命令(NeuralNetwork Processing Assist instruction)を実行することに関連する処理の1つの例を示す図である。
図2B】本発明の1つまたは複数の態様に従って、ニューラル・ネットワーク処理支援命令の実行に関連付けられた割り込み処理の1つの例を示す図である。
図3A】本発明の1つまたは複数の態様に従って、ニューラル・ネットワーク処理支援命令の形式の1つの例を示す図である。
図3B】本発明の1つまたは複数の態様に従って、ニューラル・ネットワーク処理支援命令によって使用される汎用レジスタの1つの例を示す図である。
図3C】本発明の1つまたは複数の態様に従って、ニューラル・ネットワーク処理支援命令によってサポートされる機能コードの例を示す図である。
図3D】本発明の1つまたは複数の態様に従って、ニューラル・ネットワーク処理支援命令によって使用される別の汎用レジスタの1つの例を示す図である。
図3E】本発明の1つまたは複数の態様に従って、ニューラル・ネットワーク処理支援命令の照会機能によって使用されるパラメータ・ブロックの1つの例を示す図である。
図3F】本発明の1つまたは複数の態様に従って、ニューラル・ネットワーク処理支援命令の1つまたは複数の非照会機能によって使用されるパラメータ・ブロックの1つの例を示す図である。
図3G】本発明の1つまたは複数の態様に従って、ニューラル・ネットワーク処理支援命令によって使用されるテンソル記述子の1つの例を示す図である。
図4】本発明の1つまたは複数の態様に従って、ニューラル・ネットワーク処理(NNP:Neural Network Processing)データ型1データ型の形式の1つの例を示す図である。
図5】(A)、(B)、および(C)は、本発明の1つまたは複数の態様に従って、ニューラル・ネットワーク処理支援命令によって使用される入力データ・レイアウトの例を示す図である。
図6】(A)、(B)、および(C)は、本発明の1つまたは複数の態様に従って、図5(A)~5(C)の入力データ・レイアウトに対応する例示的な出力を示す図である。
図7A】本発明の1つまたは複数の態様に従って、コンピューティング環境内の処理を容易にする1つの例を示す図である。
図7B】本発明の1つまたは複数の態様に従って、コンピューティング環境内の処理を容易にする1つの例を示す図である。
図8A】本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例を示す図である。
図8B】本発明の1つまたは複数の態様に従って、図8Aのメモリのさらなる詳細の1つの例を示す図である。
図8C】本発明の1つまたは複数の態様に従って、図8Aのメモリのさらなる詳細の別の例を示す図である。
図9A】本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境のさらに別の例を示す図である。
図9B】本発明の1つまたは複数の態様に従って、図9Aのメモリのさらなる詳細を示す図である。
図10】本発明の1つまたは複数の態様に従って、クラウド・コンピューティング環境の1つの実施形態を示す図である。
図11】本発明の1つまたは複数の態様に従って、抽象モデル・レイヤの1つの例を示す図である。
【発明を実施するための形態】
【0019】
本発明の1つまたは複数の態様に従って、コンピューティング環境内の処理を容易にするための能力が提供される。例として、例えば照会機能および複数の非照会機能を含む複数の機能を実装するように構成された、ニューラル・ネットワーク処理支援命令が提供される。非照会機能は、例えば、テンソル計算に関連する機能を含む。ニューラル・ネットワーク処理支援命令は、例えば、汎用プロセッサ上で処理される(例えば、少なくとも一部においてデコードされるか、または実行されるか、あるいはその両方である)、命令セット・アーキテクチャ(ISA:instruction set architecture)の一部である単一の命令(例えば、ハードウェア/ソフトウェア・インターフェイスでの単一の設計されたハードウェア・マシン命令)である。例えば、プログラムによって、汎用プロセッサ上で命令がディスパッチされ、汎用プロセッサが命令をデコードして開始する。汎用プロセッサ、または汎用プロセッサに結合されたか、もしくは汎用プロセッサの一部である、特定の機能のために構成されたコプロセッサなどの専用プロセッサ、あるいはその両方によって、命令によって指定された機能が実行される。その後、命令が汎用プロセッサ上で完了する。他の例では、命令は、1つまたは複数の汎用プロセッサまたは1つまたは複数の専用プロセッサ上で開始され、実行され、完了される。
【0020】
1つの実施形態では、単一の設計された命令が、例えばメイン・メモリに対して動作し、例えば同期的に実行される。メイン・メモリは、1つの例では、1つまたは複数の機能(例えば、1つまたは複数の非照会機能)を実行するために使用される専用プロセッサと共有される。共有されたメイン・メモリの使用は、専用プロセッサと通信するためのコストのかかるメモリ・ピンニングまたは入出力(I/O:input/output)動作あるいはその両方の必要性を取り除く。共有されたメイン・メモリは、汎用プロセッサおよび専用プロセッサのキャッシュが整合性を保ったままである、メモリ一貫性を実現する。さらに、1つの例では、命令が同期的に実行されるため、1つの例では、命令を開始するプロセッサは、命令の実行中に、命令によって指定された機能を実行している専用プロセッサ(または別のプロセッサ)に情報を提供するが、命令の割り込みが存在しない限り、または命令が完了しない限り、他の作業を実行しない。
【0021】
ニューラル・ネットワーク処理支援命令は、多くの命令を使用するか、または他の世代のために再プログラミングを必要とすることがある専用プロセッサをプログラムするか、あるいはその両方などの、以前の技術と比較して、性能の向上をもたらす。ニューラル・ネットワーク処理支援命令の実行は、例えばソフトウェア実装と比較して、より少ない実行サイクルを使用する。複数の機能を実行するための単一の命令の使用は、例えば、高い性能を有する多くのマシン世代にわたるソフトウェアの再利用を可能にする。関数の各々は、単一の命令(例えば、単一の設計された命令)の一部として構成され、システム・リソースの使用および複雑さを減らし、システム性能を改善する。
【0022】
本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の1つの実施形態が、図1Aを参照して説明される。一例として、コンピューティング環境は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるz/Architecture(R)命令セット・アーキテクチャに基づく。z/Architecture命令セット・アーキテクチャの1つの実施形態は、“z/Architecture Principles of Operation," IBM Publication No.SA22-7832-12, Thirteenth Edition, September 2019という公開文献に記載されており、この公開文献は本明細書において参照によってその全体が本明細書に組み込まれている。しかし、z/Architecture命令セット・アーキテクチャは1つの例示的なアーキテクチャにすぎず、International Business Machines Corporationまたは他の実体あるいはその両方の、他のアーキテクチャまたは他の種類のコンピューティング環境あるいはその両方が、本発明の1つまたは複数の態様を含むか、または使用するか、あるいはその両方であってよい。z/ArchitectureおよびIBMは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。
【0023】
図1Aを参照すると、コンピューティング環境100は、例えば、汎用コンピューティング・デバイスの形態で示されるコンピュータ・システム102を含んでいる。コンピュータ・システム102は、1つまたは複数のバスまたは他の接続あるいはその両方を介して互いに結合された1つまたは複数の汎用プロセッサまたはプロセッシング・ユニット104(例えば、中央処理装置(CPU:central processing units))、ニューラル・ネットワーク・プロセッサ105などの少なくとも1つの専用プロセッサ、メモリ106(例えば、システム・メモリ、メイン・メモリ、主記憶装置、中央記憶装置、またはストレージとしても知られている)、および1つまたは複数の入出力(I/O:input/output)インターフェイス108を含んでよいが、これらに限定されない。例えば、プロセッサ104、105およびメモリ106は、1つまたは複数のバス110を介してI/Oインターフェイス108に結合され、プロセッサ104、105は、1つまたは複数のバス111を介して互いに結合される。
【0024】
バス111は、例えば、メモリまたはキャッシュ・コヒーレンス・バス(memory or cache coherence bus, and bus)であり、バス110は、例えば、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、およびさまざまなバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、複数の種類のバス構造のいずれかの1つまたは複数を表す。例として、そのようなアーキテクチャは、ISA(Industry Standard Architecture)、MCA(Micro Channel Architecture)、EISA(Enhanced ISA)、VESA(Video Electronics Standards Association)ローカル・バス、およびPCI(Peripheral Component Interconnects)を含むが、これらに限定されない。
【0025】
例として、1つまたは複数の専用プロセッサ(例えば、ニューラル・ネットワーク・プロセッサ)は、1つまたは複数の汎用プロセッサから分離されるが、1つまたは複数の汎用プロセッサに結合されてよく、または1つまたは複数の汎用プロセッサ内に組み込まれてよく、あるいはその両方であってよい。多くの変形が可能である。
【0026】
例えば、メモリ106は、例えば1つまたは複数のバス111を介して、プロセッサ104またはニューラル・ネットワーク・プロセッサ105あるいはその両方のローカル・キャッシュ114に結合されてよい、共有キャッシュなどのキャッシュ112を含んでよい。さらに、メモリ106は、1つまたは複数のプログラムまたはアプリケーション116および少なくとも1つのオペレーティング・システム118を含んでよい。例示的なオペレーティング・システムは、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるz/OS(R)オペレーティング・システムを含む。z/OSは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。International Business Machines Corporationまたは他の実体あるいはその両方によって提供される他のオペレーティング・システムが使用されてもよい。メモリ106は、本発明の態様の実施形態の機能を実行するように構成され得る1つまたは複数のコンピュータ可読プログラム命令120を含んでもよい。
【0027】
さらに、1つまたは複数の実施形態では、メモリ106はプロセッサ・ファームウェア122を含む。プロセッサ・ファームウェアは、例えば、プロセッサのマイクロコードまたはミリコードを含む。プロセッサ・ファームウェアは、例えば、上位レベルのマシン・コードの実装において使用される、ハードウェア・レベルの命令またはデータ構造あるいはその両方を含む。1つの実施形態では、プロセッサ・ファームウェアは、例えば、信頼できるソフトウェアを含んでいるマイクロコードまたはミリコード、基盤になるハードウェアに固有のマイクロコードまたはミリコードとして通常は提供され、システムのハードウェアへのオペレーティング・システムのアクセスを制御する、独自のコードを含む。
【0028】
コンピュータ・システム102は、例えばI/Oインターフェイス108を介して、ユーザ端末、テープ・ドライブ、ポインティング・デバイス、ディスプレイ、および1つまたは複数のデータ・ストレージ・デバイス134などの、1つまたは複数の外部デバイス130と通信してよい。データ・ストレージ・デバイス134は、1つまたは複数のプログラム136、1つまたは複数のコンピュータ可読プログラム命令138、またはデータ、あるいはその組合せなどを格納してよい。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成されてよい。
【0029】
コンピュータ・システム102は、例えばI/Oインターフェイス108を介してネットワーク・インターフェイス132と通信してもよく、ネットワーク・インターフェイス132は、コンピュータ・システム102が、ローカル・エリア・ネットワーク(LAN:local area network)、一般的な広域ネットワーク(WAN:wide area network)、またはパブリック・ネットワーク(例えば、インターネット)、あるいはその組合せなどの1つまたは複数のネットワークと通信できるようにし、他のコンピューティング・デバイスまたはシステムとの通信を実現する。
【0030】
コンピュータ・システム102は、取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体を含むか、またはそのようなコンピュータ・システム・ストレージ媒体に結合されるか、あるいはその両方であってよい。例えば、コンピュータ・システム102は、取り外し不可、不揮発性の磁気媒体(通常は、「ハード・ドライブ」と呼ばれる)、取り外し可能、不揮発性の磁気ディスク(例えば、「フロッピー(R)・ディスク」)に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、またはCD-ROM、DVD-ROM、もしくは他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りと書き込みを行うための光ディスク・ドライブ、あるいはその組合せを含むか、またはこれらに結合されるか、あるいはその両方であってよい。他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム102と併用できるということが理解されるべきである。その例として、マイクロコードまたはミリコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
【0031】
コンピュータ・システム102は、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用されてよい。コンピュータ・システム102での使用に適し得る周知のコンピューティング・システム、環境、または構成、あるいはその組合せの例としては、パーソナル・コンピュータ(PC:personal computer)システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、マイクロコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらのシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などが挙げられるが、これらに限定されない。
【0032】
1つの例では、プロセッサ(例えば、プロセッサ104またはプロセッサ105あるいはその両方)は、命令を実行するために使用される複数の機能コンポーネント(またはそれらのサブセット)を含む。図1Bに示されているように、これらの機能コンポーネントは、例えば、実行される命令をフェッチするための命令フェッチ・コンポーネント150と、フェッチされた命令をデコードするため、およびデコードされた命令のオペランドを取得するための命令デコード・ユニット152と、デコードされた命令を実行するための1つまたは複数の命令実行コンポーネント154と、必要な場合に、命令を実行するためにメモリにアクセスするためのメモリ・アクセス・コンポーネント156と、実行された命令の結果を提供するための書き戻しコンポーネント158とを含む。コンポーネントのうちの1つまたは複数は、命令処理において1つまたは複数のレジスタ160にアクセスするか、または1つまたは複数のレジスタ160を使用するか、あるいはその両方を実行してよい。さらに、コンポーネントのうちの1つまたは複数は、本発明の1つまたは複数の態様に従って、本明細書において説明されているように、例えば、ニューラル・ネットワーク処理支援命令(または本発明の1つまたは複数の態様を使用し得る他の処理)のニューラル・ネットワーク処理支援処理を実行することにおいて使用される1つまたは複数の他のコンポーネントの少なくとも一部を含むか、またはそれらのコンポーネントにアクセスすることができてよい。1つまたは複数の他のコンポーネントは、例えば、ニューラル・ネットワーク処理支援コンポーネント172(または1つまたは複数の他のコンポーネントあるいはその組合せ)を含んでよい。
【0033】
本発明の1つまたは複数の態様に従って、ニューラル・ネットワーク処理支援命令が汎用プロセッサ(例えば、プロセッサ104)上で開始され、命令によって指定された機能が、機能に応じて、汎用プロセッサ上または専用プロセッサ(例えば、ニューラル・ネットワーク・プロセッサ105)上あるいはその両方で実行される。その後、命令が汎用プロセッサ上で完了する。他の例では、命令は、1つまたは複数の汎用プロセッサまたは1つまたは複数の専用プロセッサ上で開始され、実行され、完了される。他の変形が可能である。
【0034】
ニューラル・ネットワーク処理支援命令を実行することに関連するさらなる詳細が、図2A~2Bを参照して説明される。図2Aを参照すると、1つの例では、汎用プロセッサ(例えば、プロセッサ104)などのプロセッサによって、ニューラル・ネットワーク処理支援命令が取得され、デコードされる(200)。デコードされた命令が、例えば、汎用プロセッサ上で発行される(210)。実行される機能に関する決定が行われる(220)。1つの例では、この決定は、命令の機能コード・フィールドをチェックすることによって行われ、その例が下で説明される。機能が実行される(230)。
【0035】
機能を実行するための1つの実施形態では、機能が専用プロセッサ(例えば、ニューラル・ネットワーク・プロセッサ105)上で実行されるべきかどうかに関する判定が行われる(232)。例えば、1つの例では、ニューラル・ネットワーク処理支援命令の照会機能が汎用プロセッサ上で実行され、非照会機能が専用プロセッサ上で実行される。しかし、他の変形が可能である。機能が専用プロセッサ上で実行されない場合(例えば機能は、照会機能であり、または別の例では、1つまたは複数の選択された機能である)、1つの例では、機能は汎用プロセッサ上で実行される(234)。しかし、機能が専用プロセッサ上で実行される場合(例えば機能は、非照会機能であり、または別の例では、1つまたは複数の選択された機能である)、例えば汎用プロセッサによって、ニューラル・ネットワーク計算236において使用されるテンソル・データに関連するメモリ・アドレス情報などの、機能を実行することにおいて使用するための情報が、専用プロセッサに提供される。専用プロセッサは、情報を取得し、機能238を実行する。機能の実行が完了した後に、処理が汎用プロセッサ240に戻り、汎用プロセッサが命令250を完了する(他の例では、命令は、1つまたは複数の汎用プロセッサまたは1つまたは複数の専用プロセッサ上で開始され、実行され、完了され得る。他の変形が可能である)。
【0036】
本発明の1つまたは複数の態様に従って、汎用プロセッサおよび専用プロセッサは、メイン・メモリなどのメモリを共有して、キャッシュ一貫性を実現し、複雑さを軽減し、システム性能を改善する。さらに、1つまたは複数の態様では、例えば汎用プロセッサによる命令の処理は、命令の同期実行を含み、汎用プロセッサは、例として、情報(例えば、入力データのアドレス)を、機能を実行している専用プロセッサ(または他のプロセッサ)に提供することなどの、この命令に関連する作業以外の作業を実行することを控える。同期実行は、例えば、命令の完了または命令の割り込みに基づいて終了する。
【0037】
本発明の1つまたは複数の態様に従って、命令は、割り込み可能であるように構成される。したがって、図2Bを参照すると、命令の以前の実行が割り込まれたかどうかに関する判定が行われる(260)。この判定は、1つの例では、例えば、実行されている命令によって使用されるパラメータ・ブロック内で提供された継続フラグなどの、指標をチェックすることによって決定される。命令の以前の実行、したがって、指定された機能が割り込まれた場合、1つの例では、継続状態バッファ(その例が、本明細書において説明される)などの選ばれたバッファに格納された情報が、割り込まれた動作を再開するために使用される(262)。
【0038】
ニューラル・ネットワーク処理支援命令およびこの命令によってサポートされている機能に関連するさらなる詳細が、本明細書において図3A~3Gを参照して説明される。命令または命令の機能あるいはその両方の本明細書における説明では、フィールドの特定の位置、特定のフィールド、またはフィールドの特定のサイズ、あるいはその組合せが(例えば、特定のバイトまたはビットあるいはその両方で)示される。しかし、他の位置、フィールド、またはサイズ、あるいはその組合せが提供されてよい。さらに、特定の値(例えば、1または0)へのビットの設定が指定されことがあるが、これは単なる例である。ビットは、設定されている場合、他の例では反対の値または別の値などの異なる値に設定されてよい。多くの変形が可能である。
【0039】
1つの例では、図3Aを参照すると、ニューラル・ネットワーク処理支援命令300は、拡張されたオペレーション・コード(オペコード)と共にレジスタおよびレジスタ動作を示すRRE形式を有する。図3Aに示されているように、1つの例では、ニューラル・ネットワーク処理支援命令300は、ニューラル・ネットワーク処理支援動作を示すオペレーション・コード(オペコード)フィールド302(例えば、ビット0~15)を含んでいる。1つの例では、命令のビット16~31は予備であり、0を含むべきである。
【0040】
1つの例では、命令は、命令によって暗黙的に指定された複数の汎用レジスタを使用する。例えば、ニューラル・ネットワーク処理支援命令300は、暗黙のレジスタである汎用レジスタ0および汎用レジスタ1を使用し、その例が、図3Bおよび3Dを参照してそれぞれ説明される。
【0041】
図3Bを参照すると、1つの例では、汎用レジスタ0は、機能コード・フィールド、および命令の完了時に更新され得るステータス・フィールドを含んでいる。例として、汎用レジスタ0は、応答コード・フィールド310(例えば、ビット0~15)、例外フラグ・フィールド312(例えば、ビット24~31)、および機能コード・フィールド314(例えば、ビット56~63)を含む。さらに、1つの例では、汎用レジスタ0のビット16~23および32~55は予備であり、0を含むべきである。1つまたは複数のフィールドは、命令によって実行される特定の機能によって使用される。1つの例では、すべての関数によってすべてのフィールドが使用されるわけではない。フィールドの各々が、以下で説明される。
【0042】
応答コード(FC)310:このフィールド(例えば、ビット位置0~15)は、応答コードを含む。ニューラル・ネットワーク処理支援命令の実行が、例えば1の条件コードを伴って完了するときに、応答コードが格納される。無効な入力条件が発生した場合、実行中に認識された無効な入力条件の原因を示す0以外の値が応答コード・フィールドに格納され、選択された条件コード(例えば、1)が設定される。応答コード・フィールドに格納されるコードは、1つの例では次のように定義される。
【0043】
応答コード 意味
【0044】
0001 パラメータ・ブロック・バージョン番号によって指定されたパラメータ・ブロックの形式が、モデルによってサポートされない。
【0045】
0002 指定された機能が定義されていないか、またはマシンにインストールされていない。
【0046】
0010 指定されたテンソル・データ・レイアウト形式がサポートされていない。
【0047】
0011 指定されたテンソル・データ型がサポートされていない。
【0048】
0012 指定された単一のテンソルの次元が最大次元インデックス・サイズ(maximum dimension index size)より大きい。
【0049】
0013 指定されたテンソルのサイズが、最大テンソル・サイズより大きい。
【0050】
0014 指定されたテンソル・アドレスが、4Kバイト境界にアライメントされていない。
【0051】
0015 機能に固有の保存領域のアドレスが、4Kバイト境界にアライメントされていない。
【0052】
F000~FFFF 機能に固有の応答コード。これらの応答コードは、特定の機能に関して定義される。
【0053】
例外フラグ(EF)312:このフィールド(例えば、ビット位置24~31)は、例外フラグを含む。命令の実行中に例外条件が検出された場合、対応する例外フラグ制御(例えば、ビット)が、例えば1に設定され、そうでない場合、この制御は変化しないままである。命令の最初の呼び出しの前に、例外フラグ・フィールドが0に初期化される。命令の実行中に、予備のフラグは変化しない。1つの例では、例外フラグ・フィールドに格納されるフラグは次のように定義される。
【0054】
EF(ビット) 意味
【0055】
0 範囲違反。数値以外が、入力テンソル内で検出されたか、または出力テンソルに格納された場合、このフラグが設定される。このフラグは、例えば、命令が例えば条件コード0を伴って完了する場合にのみ有効である。
【0056】
1~7 予備。
【0057】
機能コード(FC)314:このフィールド(例えば、ビット位置56~63)は、機能コードグを含む。ニューラル・ネットワーク処理支援命令に割り当てられている機能コードの例が、図3Cに示されている。他のすべての機能コードは、割り当てられていない。割り当てられていないか、またはインストールされていない機能コードが指定された場合、例えば16進数0002の応答コードおよび選ばれた条件コード(例えば、1)が設定される。実行中に、このフィールドは変更されない。
【0058】
示されているように、汎用レジスタ0に加えて、ニューラル・ネットワーク処理支援命令は、汎用レジスタ1も使用し、その例が図3Dに示されている。例として、24ビット・アドレス指定モードでのビット40~63、31ビット・アドレス指定モードでのビット33~63、または64ビット・アドレス指定モードでのビット0~63は、パラメータ・ブロックのアドレス320を含む。汎用レジスタ1の内容は、例えば、ストレージ内のパラメータ・ブロックの左端のバイトの論理アドレスを指定する。パラメータ・ブロックはダブルワード境界上で指定され、そうでない場合、指定例外が認識される。すべての機能に関して、汎用レジスタ1の内容は変更されない。
【0059】
アクセス・レジスタ・モードでは、例として、アクセス・レジスタ1が、パラメータ・ブロック、入力テンソル、出力テンソル、および機能に固有の保存領域を含んでいるアドレス空間を指定する。
【0060】
1つの例では、パラメータ・ブロックは、実行される命令によって指定された機能に応じて、異なる形式を有してよい。例えば、照会機能は、1つの形式のパラメータ・ブロックを含み、命令の他の機能は、別の形式のパラメータ・ブロックを含む。別の例では、すべての機能が同じパラメータ・ブロック形式を使用する。他の変形も可能である。
【0061】
例として、パラメータ・ブロックまたはパラメータ・ブロック内の情報あるいはその両方は、メモリ、ハードウェア・レジスタ、ならびに/あるいはメモリおよび/またはレジスタの組合せに格納される。他の例も可能である。
【0062】
NNPA-使用可能な機能の照会(NNPA-Query Available Functions)(QAF)動作などの照会機能によって使用されるパラメータ・ブロックの1つの例が、図3Eを参照して説明される。図に示されているように、1つの例では、NNPA-使用可能な機能の照会のパラメータ・ブロック330は、例えば以下を含む。
【0063】
インストール済み機能ベクトル332:パラメータ・ブロックのこのフィールド(例えば、バイト0~31)は、インストール済み機能ベクトルを含む。1つの例では、インストール済み機能ベクトルのビット0~255は、ニューラル・ネットワーク処理支援命令の機能コード0~255にそれぞれ対応する。あるビットが例えば1である場合、対応する機能がインストールされており、そうでない場合、その機能はインストールされていない。
【0064】
インストール済みパラメータ・ブロック形式ベクトル334:パラメータ・ブロックのこのフィールド(例えば、バイト32~47)は、インストール済みパラメータ・ブロック形式ベクトルを含む。1つの例では、インストール済みパラメータ・ブロック形式ベクトルのビット0~127は、ニューラル・ネットワーク処理支援命令の非照会機能のパラメータ・ブロック形式0~127に対応する。あるビットが例えば1である場合、対応するパラメータ・ブロック形式がインストールされており、そうでない場合、そのパラメータ・ブロック形式はインストールされていない。
【0065】
インストール済みデータ型336:パラメータ・ブロックのこのフィールド(例えば、バイト48~49)は、インストール済みデータ型ベクトルを含む。1つの例では、インストール済みデータ型ベクトルのビット0~15は、インストールされているデータ型に対応する。あるビットが例えば1である場合、対応するデータ型がインストールされており、そうでない場合、そのデータ型はインストールされていない。データ型の例としては、以下が挙げられる(追加のデータ型、より少ないデータ型、または他のデータ型、あるいはその組合せが可能である)。
【0066】
ビット データ型
【0067】
0 NNPデータ型1
【0068】
1~15 予備
【0069】
インストール済みデータ・レイアウト形式338:パラメータ・ブロックのこのフィールド(例えば、バイト52~55)は、インストール済みデータ・レイアウト形式ベクトルを含む。1つの例では、インストール済みデータ・レイアウト形式ベクトルのビット0~31は、インストールされているデータ・レイアウト形式に対応する。あるビットが例えば1である場合、対応するデータ・レイアウト形式がインストールされており、そうでない場合、そのデータ・レイアウト形式はインストールされていない。データ・レイアウト形式の例としては、以下が挙げられる(追加のデータ・レイアウト形式、より少ないデータ・レイアウト形式、または他のデータ・レイアウト形式、あるいはその組合せが可能である)。
【0070】
ビット データ・レイアウト形式
【0071】
0 4D特徴テンソル
【0072】
1 4Dカーネル・テンソル
【0073】
2~31 予備
【0074】
最大次元インデックス・サイズ340:パラメータ・ブロックのこのフィールド(例えば、バイト60~63)は、例えば、任意の指定されたテンソルの、指定された次元インデックス・サイズでの要素の最大数を指定する、32ビット符号なし2進整数を含む。別の例では、最大次元インデックス・サイズは、任意の指定されたテンソルの、指定された次元インデックス・サイズでの最大バイト数を指定する。他の例も可能である。
【0075】
最大テンソル・サイズ342:パラメータ・ブロックのこのフィールド(例えば、バイト64~71)は、例えば、テンソルの形式によって必要とされる任意のパッド・バイトを含む、任意の指定されたテンソル内の最大バイト数を指定する、32ビット符号なし2進整数を含む。別の例では、最大テンソル・サイズは、テンソルの形式によって必要とされる任意のパディングを含む、任意の指定されたテンソル内の全要素の最大数を指定する。他の例も可能である。
【0076】
インストール済みNNPデータ型1変換ベクトル344:パラメータ・ブロックのこのフィールド(例えば、バイト72~73)は、インストール済みNNPデータ型1変換ベクトルを含む。1つの例では、インストール済みNNPデータ型1変換ベクトルのビット0~15は、NNPデータ型1形式との間でのインストールされているデータ型変換に対応する。ビットが1である場合、対応する変換がインストールされており、そうでない場合、その変換はインストールされていない。追加の変換、より少ない変換、または他の変換、あるいはその組合せが指定されてよい。
【0077】
ビット データ型
【0078】
0 予備
【0079】
1 BFP少量形式
【0080】
2 BFP短形式
【0081】
3~15 予備
【0082】
図3Eを参照して、照会機能のパラメータ・ブロックの1つの例が説明されるが、NNPA-使用可能な機能の照会動作を含む、照会機能のパラメータ・ブロックの他の形式が使用されてよい。この形式は、1つの例では、実行される照会機能の種類に依存してよい。さらに、パラメータ・ブロックまたはパラメータ・ブロックの各フィールドあるいはその両方は、追加の情報、より少ない情報、または他の情報、あるいはその組合せを含んでよい。
【0083】
照会機能のパラメータ・ブロックに加えて、1つの例では、ニューラル・ネットワーク処理支援命令の非照会機能などの、非照会機能のパラメータ・ブロック形式が存在する。ニューラル・ネットワーク処理支援命令の非照会機能などの、非照会機能によって使用されるパラメータ・ブロックの1つの例が、図3Fを参照して説明される。
【0084】
図に示されているように、1つの例では、例えばニューラル・ネットワーク処理支援命令の非照会機能によって使用されるパラメータ・ブロック350は、例えば、以下を含む。
【0085】
パラメータ・ブロック・バージョン番号352:パラメータ・ブロックのこのフィールド(例えば、バイト0~1)は、パラメータ・ブロックのバージョンおよびサイズを指定する。1つの例では、パラメータ・ブロック・バージョン番号のビット0~8は予備であり、0を含むことになり、パラメータ・ブロック・バージョン番号のビット9~15は、パラメータ・ブロックの形式を指定する符号なし2進整数を含む。照会機能は、使用可能なパラメータ・ブロック形式を示すメカニズムを提供する。指定されたパラメータ・ブロックのサイズまたは形式がモデルよってサポートされていない場合、例えば16進数0001の応答コードが汎用レジスタ0に格納され、条件コード(例えば、条件コード1)を設定することによって、命令が完了する。パラメータ・ブロック・バージョン番号は、プログラムによって指定され、命令の実行中に変更されない。
【0086】
モデル・バージョン番号354:パラメータ・ブロックのこのフィールド(例えば、バイト2)は、命令(例えば、特定の非照会機能)を実行したモデルを識別する符号なし2進整数である。継続フラグ(下で説明される)が1である場合、パラメータ・ブロックの継続状態バッファ・フィールド(下で説明される)の内容を解釈して動作を再開する目的で、モデル・バージョン番号が動作への入力であってよい。
【0087】
継続フラグ356:パラメータ・ブロックのこのフィールド(例えば、ビット63)は、例えば1である場合、動作が部分的に完了していることを示し、継続状態バッファの内容が、動作を再開するために使用されてよい。プログラムは、継続フラグを0に初期化し、動作を再開する目的で命令が再実行される場合に継続フラグを変更しないようにするべきであり、そうでない場合、結果が予測不可能になる。
【0088】
動作の開始時に継続フラグが設定され、最初の呼び出し以来、パラメータ・ブロックの内容が変化した場合、結果が予測不可能になる。
【0089】
機能に固有の保存領域アドレス358:パラメータ・ブロックのこのフィールド(例えば、バイト56~63)は、機能に固有の保存領域の論理アドレスを含む。1つの例では、機能に固有の保存領域アドレスは、4Kバイト境界にアライメントされるべきであり、そうでない場合、例えば16進数0015の応答コードが汎用レジスタ0に設定され、例えば1の条件コードを伴って命令が完了する。このアドレスは、現在のアドレス指定モードの影響を受ける。機能に固有の保存領域のサイズは、機能コードに依存する。
【0090】
機能に固有の保存領域全体がプログラム・イベント記録(PER:program event recording)ストレージ領域指定と重複する場合、機能に固有の保存領域に関して、適用可能な場合、PERストレージ変更イベントが認識される。機能に固有の保存領域の一部のみがPERストレージ領域指定と重複する場合、以下のうちのどれが発生するかは、モデルに依存する。
【0091】
* 機能に固有の保存領域全体に関して、適用可能な場合、PERストレージ変更イベントが認識される。
【0092】
* 格納された機能に固有の保存領域の一部に関して、適用可能な場合、PERストレージ変更イベントが認識される。
【0093】
パラメータ・ブロック全体がPERストレージ領域指定と重複する場合、パラメータ・ブロックに関して、適用可能な場合、PERストレージ変更イベントが認識される。パラメータ・ブロックの一部のみがPERストレージ領域指定と重複する場合、以下のうちのどれが発生するかは、モデルに依存する。
【0094】
* パラメータ・ブロック全体に関して、適用可能な場合、PERストレージ変更イベントが認識される。
【0095】
* 格納されたパラメータ・ブロックの一部に関して、適用可能な場合、PERストレージ変更イベントが認識される。
【0096】
パラメータ・ブロックに関して、適用可能な場合、PERゼロ・アドレス検出イベントが認識される。ゼロ・アドレス検出は、1つの例では、テンソル・アドレスまたは機能に固有の保存領域アドレスには適用されない。
【0097】
出力テンソル記述子(例えば、1~2)360/入力テンソル記述子(例えば、1~3)365:テンソル記述子の1つの例が、図3Gを参照して説明される。1つの例では、テンソル記述子360、365は以下を含む。
【0098】
データ・レイアウト形式382:テンソル記述子のこのフィールド(例えば、バイト0)は、データ・レイアウト形式を指定する。有効なデータ・レイアウト形式は、例えば、以下を含む(追加のデータ・レイアウト形式、より少ないデータ・レイアウト形式、または他のデータ・レイアウト形式、あるいはその組合せが可能である)。
【0099】
形式 説明 アライメント(バイト)
【0100】
0 4D特徴テンソル 4096
【0101】
1 4Dカーネル・テンソル 4096
【0102】
2~255 予備 --
【0103】
サポートされていないか、または予備のデータ・レイアウト形式が指定された場合、例えば16進数0010の応答コードが汎用レジスタ0に格納され、例えば条件コード1を設定することによって、命令が完了する。
【0104】
データ型384:このフィールド(例えば、バイト1)は、テンソルのデータ型を指定する。サポートされているデータ型の例が、以下で説明される(追加のデータ型、より少ないデータ型、または他のデータ型、あるいはその組合せが可能である)。
【0105】
値 データ型 データ・サイズ(ビット)
【0106】
0 NNPデータ型1 16
【0107】
1~255 予備 --
【0108】
サポートされていないか、または予備のデータ型が指定された場合、例えば16進数0011の応答コードが汎用レジスタ0に格納され、例えば条件コード1を設定することによって、命令が完了する。
【0109】
次元1~4インデックス・サイズ386:集合的に、次元インデックス・サイズ1~4が、4Dテンソルの形状を指定する。各次元インデックス・サイズは、0より大きく、かつ最大次元インデックス・サイズ(図3Eの340)以下であるべきであり、そうでない場合、例えば16進数0012の応答コードが汎用レジスタ0に格納され、例えば条件コード1を設定することによって、命令が完了する。合計テンソル・サイズは、最大テンソル・サイズ(図3Eの342)以下であるべきであり、そうでない場合、例えば16進数0013の応答コードが汎用レジスタ0に格納され、例えば条件コード1を設定することによって、命令が完了する。
【0110】
1つの例では、NNPデータ型1の要素を含む4D特徴テンソルでのバイト数(すなわち、合計テンソル・サイズ)を決定するために、次元インデックス4*次元インデック3*ceil(次元インデック2/32)*32*ceil(次元インデック1/64)*64*2が使用される。
【0111】
テンソル・アドレス388:テンソル記述子のこのフィールド(例えば、バイト24~31)は、テンソルの左端のバイトの論理アドレスを含む。このアドレスは、現在のアドレス指定モードの影響を受ける。
【0112】
このアドレスが関連するデータ・レイアウト形式の境界にアライメントされていない場合、例えば16進数0014の応答コードが汎用レジスタ0に格納され、例えば条件コード1を設定することによって、命令が完了する。
【0113】
アクセス・レジスタ・モードでは、アクセス・レジスタ1が、ストレージ内にすべてのアクティブな入力テンソルおよび出力テンソルを含んでいるアドレス空間を指定する。
【0114】
図3Fに戻り、パラメータ・ブロック350は、1つの例では、本明細書において説明されるように、特定の機能によって使用され得る機能に固有のパラメータ1~5(370)をさらに含んでいる。
【0115】
さらに、パラメータ・ブロック350は、1つの例では継続状態バッファ・フィールド375を含み、継続状態バッファ・フィールド375は、この命令の動作が再開される場合に使用されるデータ(またはデータの位置)を含む。
【0116】
動作への入力として、パラメータ・ブロックの予備フィールドは0を含むべきである。動作が終了するときに、予備フィールドは、0が格納されてよく、または変化しないままであってよい。
【0117】
図3Fを参照して、非照会機能のパラメータ・ブロックの1つの例が説明されるが、ニューラル・ネットワーク処理支援命令の非照会機能を含む、非照会機能のパラメータ・ブロックの他の形式が使用されてよい。この形式は、1つの例では、実行される機能の種類に依存してよい。さらに、図3Gを参照してテンソル記述子の1つの例が説明されるが、他の形式が使用されてよい。さらに、入力テンソルおよび出力テンソルの異なる形式が使用されてよい。他の変形が可能である。
【0118】
以下では、ニューラル・ネットワーク処理支援命令の1つの実施形態によってサポートされるさまざまな機能に関するさらなる詳細が説明される。
【0119】
機能コード0:NNPA-QAF(使用可能な機能の照会)
【0120】
ニューラル・ネットワーク処理支援(NNPA:Neural Network Processing Assist)照会機能は、例えば、インストールされている機能、インストールされているパラメータ・ブロック形式、インストールされているデータ型、インストールされているデータ・レイアウト形式、最大次元インデックス・サイズ、および最大テンソル・サイズの可用性などの、選択された情報を示すためのメカニズムを提供する。この情報は、取得されて、パラメータ・ブロック(例えば、パラメータ・ブロック330)などの選択された位置に配置される。動作が終了するときに、パラメータ・ブロックの予備フィールドは、0が格納されてよく、または変化しないままであってよい。
【0121】
照会機能の1つの実施形態の実行では、汎用プロセッサ104などのプロセッサは、ニューラル・ネットワーク・プロセッサ105などのニューラル・ネットワーク・プロセッサの特定のモデルなどの、特定のプロセッサに関連する情報を取得する。プロセッサまたはマシンの特定のモデルは、特定の能力を有する。プロセッサまたはマシンの別のモデルは、追加の能力、より少ない能力、もしくは異なる能力、またはその組合せを有してよく、または追加の能力、より少ない能力、もしくは異なる能力、またはその組合せを有する異なる世代(例えば、現在の世代または将来の世代)のモデルであってよく、あるいはその両方であってよい。取得された情報は、パラメータ・ブロック(例えば、パラメータ・ブロック330)に配置されるか、あるいはこの情報をさらなる処理に使用し得る1つまたは複数のアプリケーションによってアクセス可能であるか、もしくはそのようなアプリケーションで使用するための、またはその両方である、他の構造に配置される。1つの例では、パラメータ・ブロックまたはパラメータ・ブロックの情報あるいはその両方は、メモリ内で維持される。他の実施形態では、パラメータ・ブロックまたは情報あるいはその両方は、1つまたは複数のハードウェア・レジスタ内で維持されてよい。別の実施例では、照会機能は、オペレーティング・システムによって実行される特権操作であってよく、オペレーティング・システムは、この情報をアプリケーションまたは非特権プログラムによって使用可能にするために、アプリケーション・プログラミング・インターフェイスを使用可能にする。さらなる例では、照会機能は、ニューラル・ネットワーク・プロセッサ105などの専用プロセッサによって実行される。他の変形が可能である。
【0122】
この情報は、例えば、照会機能を実行するプロセッサのファームウェアによって取得される。ファームウェアは、特定のプロセッサ(例えば、ニューラル・ネットワーク・プロセッサ)の特定のモデルの属性の知識を有する。この情報は、例えば、制御ブロック、レジスタ、もしくはメモリ、またはその組合せに格納されてよく、または他の方法で、照会機能を実行するプロセッサによってアクセス可能であってよく、あるいはその両方であってよい。
【0123】
例えば、取得される情報は、例えば、特定のプロセッサの選択されたモデルの1つまたは複数のインストールされているか、もしくはサポートされているデータ型、1つまたは複数のインストールされているか、もしくはサポートされているデータ・レイアウト形式、または1つまたは複数のインストールされているか、もしくはサポートされているデータ・サイズ、あるいはその組合せを含む、特定のプロセッサの少なくとも1つまたは複数のデータ属性に関する、モデルに依存する詳細な情報を含む。この情報は、他のモデル(例えば、前のモデルまたは将来のモデルあるいはその両方)が、同じデータ型、データ・サイズ、またはデータ・レイアウト形式、あるいはその組合せなどの、同じデータ属性をサポートしないことがあるという点において、モデルに依存する。照会機能(例えば、NNPA-QAF機能)の実行が完了するときに、例として、条件コード0が設定される。1つの例では、条件コード1、2、および3は、照会機能には適用できない。取得される情報に関連する詳細が、以下で説明される。
【0124】
示されているように、1つの例では、取得される情報は、例えば、ニューラル・ネットワーク・プロセッサの特定のモデルの、1つまたは複数のデータ属性に関するモデルに依存する情報を含む。データ属性の1つの例は、ニューラル・ネットワーク・プロセッサのインストールされているデータ型である。例えば、ニューラル・ネットワーク・プロセッサ(または他のプロセッサ)の特定のモデルは、例として、NNPデータ型1データ型(ニューラル・ネットワーク処理データ型1データ型とも呼ばれる)または他のデータ型あるいはその両方などの、1つまたは複数のデータ型をサポートしてよい。NNPデータ型1データ型は、16ビットの浮動小数点形式であり、例えば、深層学習ネットワークの精度を維持することと、非正規形式を取り除き、丸めモードおよびコーナー・ケースの処理を簡略化することと、算術演算の場合の最も近い値への自動的な丸めと、無限大および非数値(NaN:not-a-number)の特殊な実体が、算術演算によって受け取られて処理される1つの値(NINF)に結合されることとを含む複数の利点を、深層学習トレーニングおよび推論計算にもたらす。NINFは、指数オーバーフローおよび無効な演算(0による除算など)のためのより良いデフォルトを提供する。これによって、そのようなエラーを隠蔽せず、特殊な例外ハンドラを使用することなく、多くのプログラムが実行を継続することを可能にする。他のモデルに依存するデータ型も可能である。
【0125】
NNPデータ型1データ型の形式の1つの例が、図4に示されている。図に示されているように、1つの例では、NNPデータ型1データは、形式400で表されてよく、形式400は、例えば、符号402(例えば、ビット0)、指数+31 404(例えば、ビット1~6)、および小数部406(例えば、ビット7~15)を含む。
【0126】
NNPデータ型1形式の例示的な特性が、以下に示される。
【0127】
特性 NNPデータ型1
【0128】
形式の長さ(ビット) 16ビット
【0129】
バイアス付き指数の長さ(ビット) 6ビット
【0130】
小数部の長さ(ビット) 9ビット
【0131】
精度(p) 10ビット
【0132】
最大左単位表示指数(Emax) 32
【0133】
最小左単位表示指数(Emin) -31
【0134】
左単位表示(LUV:Left-units-view)バイアス 31
【0135】
Nmax (1-2-9)×233≒8.6×10
【0136】
Nmin (1+2-9)×2-31≒4.6×10-10
【0137】
Dmin --
ここで、≒は値が近似であることを示し、Nmaxは(大きさが)最大の表すことができる有限数であり、Nminは(大きさが)最小の表すことができる数値である。
【0138】
以下では、NNPデータ型1データ型に関連するさらなる詳細が説明される。
【0139】
バイアス付き指数:上では、指数が符号なし数値として表されることを可能にするために使用されるバイアスが示されている。バイアス付き指数は、2進浮動小数点形式の特性に類似しているが、NNPデータ型1データ型のクラスを参照して下で説明されているように、特殊な意味が、すべて0およびすべて1のバイアス付き指数に加えられていない点が異なる。
【0140】
仮数:NNPデータ型1の数値の2進小数点は、左端の小数部ビットの左にあると見なされる。2進小数点の左には暗黙の単位ビットが存在し、暗黙の単位ビット(unit bit)は、正規数の場合に1、0の場合に0と見なされる。暗黙の単位ビットが左に追加された小数部が、数値の仮数になる。
【0141】
正規のNNPデータ型1の値は、仮数と、基数2のバイアスなし指数乗との積である。
【0142】
0以外の数値の値:0以外の数値の値が以下に示される。
【0143】
数値のクラス 値
【0144】
正規数 ±2e-31×(1.f)
ここで、eは10進数で示されたバイアス付き指数であり、fは2進数での小数部である。
【0145】
1つの実施形態では、数値の実体および関連する非数値の実体を含む、NNPデータ型1データの3つのクラスが存在する。各データ項目は、符号、指数、および仮数を含む。指数は、すべてのバイアス付き指数が非負の符号なし数値になり、最小のバイアス付き指数が0になるように、バイアスされる。仮数は、明示的な小数部、および2進小数点の左の暗黙的な単位ビットを含む。符号ビットは、プラスの場合に0になり、マイナスの場合に1になる。
【0146】
許可される0以外の有限数は、すべて一意のNNPデータ型1表現を有する。数値が同じ値の複数の表現を可能にすることがある、非正規数は存在せず、非正規数の算術演算は存在しない。3つのクラスは、例えば、以下を含む。
【0147】
データのクラス 符号 バイアス付き指数 単位ビット* 小数部
【0148】
0 ± 0 0 0
【0149】
正規数 ± 0 1 0でない
【0150】
正規数 ± 0でなく、すべて1ではない 1 任意
【0151】
正規数 ± すべて1 - すべて1ではない
【0152】
NINF ± すべて1 - すべて1
ここで、-は適用されないことを示し、*は単位ビットが暗黙であることを示し、NINFは数値でないか、または無限大である。
【0153】
以下では、クラスの各々に関するさらなる詳細が説明される。
【0154】
0:0は、0のバイアス付き指数および0の小数部を含む。暗黙の単位ビットは0である。
【0155】
正規数:正規数は、任意の値のバイアス付き指数を含んでよい。バイアス付き指数が0である場合、小数部は0以外になる。バイアス付き指数がすべて1である場合、小数部は、すべて1にはならない。他のバイアス付き指数の値は、任意の小数部の値を有してよい。すべての正規数の暗黙の単位ビットは、1である。
【0156】
NINF:NINFは、すべて1のバイアス付き指数およびすべて1の小数部によって表される。NINFは、NNPデータ型1で表すことができる値(すなわち、指数の6ビットおよび小数部の9ビットを含む、深層学習用に設計された16ビットの浮動小数点)の範囲内にない値を表す。通常、NINFは、最後に可視のままになるように、計算中に単に伝搬される。
【0157】
1つの例では、NNPデータ型1データ型がサポートされるが、いくつか例を挙げると、IEEE 754短精度、2進浮動小数点16ビット、IEEE半精度浮動小数点、8ビット浮動小数点、4ビット整数形式、または8ビット整数形式、あるいはその組合せを含むが、これらに限定されない、1つまたは複数の標準的なデータ型に加えて、他の特殊なデータ型および非標準的なデータ型がサポートされてよい。これらのデータ形式は、ニューラル・ネットワーク処理に関して異なる品質を有する。例として、より小さいデータ型(例えば、より少ないビット)は、より高速に処理されることが可能であり、より少ないキャッシュ/メモリを使用することができ、より大きいデータ型は、ニューラル・ネットワークにおける結果のより高い精度をもたらす。サポートされるデータ型は、照会パラメータ・ブロック内(例えば、パラメータ・ブロック330のインストール済みデータ型フィールド336内)に1つまたは複数の割り当てられたビットを有してよい。例えば、特定のプロセッサによってサポートされる特殊なデータ型または非標準的なデータ型は、インストール済みデータ型フィールドに示されるが、標準的なデータ型は示されない。他の実施形態では、1つまたは複数の標準的なデータ型も示される。他の変形が可能である。
【0158】
1つの特定の例では、インストール済みデータ型フィールド336のビット0は、NNPデータ型1データ型のために予約されており、例えば1に設定された場合、プロセッサがNNPデータ型1をサポートするということを示す。1つの例として、インストール済みデータ型のビット・ベクトルは、最大で16個までのデータ型を表すように構成され、ビット・ベクトル内のビットが、各データ型に割り当てられる。しかし、他の実施形態では、ビット・ベクトルはより多くのデータ型またはより少ないデータ型をサポートしてよい。さらに、内部の1つまたは複数のビットがデータ型に割り当てられるベクトルが構成されてよい。多くの例が可能であり、かつ/あるいは追加のデータ型、より少ないデータ型、もしくは他のデータ型、またはその組合せがサポートされるか、もしくはベクトル内に示されるか、またはその両方であってよい。
【0159】
1つの例では、照会機能は、モデルに依存するプロセッサにインストールされているデータ型の指示を取得し、例えば、パラメータ・ブロック330のインストール済みデータ型フィールド336内の1つまたは複数のビットを設定することによって、この指示をパラメータ・ブロックに配置する。さらに、1つの例では、照会機能は、インストール済みデータ・レイアウト形式(別のデータ属性)の指示を取得し、例えば、インストール済みデータ・レイアウト形式フィールド338内の1つまたは複数のビットを設定することによって、この情報をパラメータ・ブロックに配置する。データ・レイアウト形式の例としては、例えば、4D特徴テンソル・レイアウトおよび4Dカーネル・テンソル・レイアウトが挙げられる。1つの例では、4D特徴テンソル・レイアウトは、本明細書に記載された機能によって使用され、1つの例では、畳み込み機能が、4Dカーネル・テンソル・レイアウトを使用する。これらのデータ・レイアウト形式は、ニューラル・ネットワーク処理支援命令の機能の実行における処理効率を向上させる方法で、テンソルのデータをストレージに配置する。例えば、効率的に動作するために、ニューラル・ネットワーク処理支援命令は、特定のデータ・レイアウト形式で提供された入力テンソルを使用する。例示的なレイアウトが提供されるが、本明細書に記載された機能または他の機能あるいはその両方のために、追加のレイアウト、より少ないレイアウト、または他のレイアウト、あるいはその組合せが提供されてよい。
【0160】
特定のプロセッサ・モデルのためのレイアウトの使用または可用性は、インストール済みデータ・レイアウト形式のベクトル(例えば、パラメータ・ブロック330のフィールド338)によって実現される。このベクトルは、例えば、どのレイアウトがサポートされているかをCPUがアプリケーションに伝達することを可能にする、インストール済みデータ・レイアウト形式のビット・ベクトルである。例えば、ビット0は、4D特徴テンソル・レイアウトのために予約されており、例えば1に設定された場合、プロセッサが4D特徴テンソル・レイアウトをサポートするということを示し、ビット1は、4Dカーネル・テンソル・レイアウトのために予約されており、例えば1に設定された場合、プロセッサが4Dカーネル・テンソル・レイアウトをサポートするということを示す。1つの例では、インストール済みデータ・レイアウト形式のビット・ベクトルは、最大で16個までのデータ・レイアウトを表すように構成され、ビット・ベクトル内のビットが、各データ・レイアウトに割り当てられる。しかし、他の実施形態では、ビット・ベクトルはより多くのデータ・レイアウトまたはより少ないデータ・レイアウトをサポートしてよい。さらに、内部の1つまたは複数のビットがデータ・レイアウトに割り当てられるベクトルが構成されてよい。多くの例が可能である。以下では、4D特徴テンソル・レイアウトおよび4Dカーネル・テンソル・レイアウトに関するさらなる詳細が説明される。やはり、性能を最適化するために、現在または将来において他のレイアウトが使用されてよい。
【0161】
1つの例では、ニューラル・ネットワーク処理支援命令は、4Dテンソル(すなわち、4次元を有するテンソル)を使用して動作する。これらの4Dテンソルは、例えば行優先で、本明細書に記載された一般的な入力テンソルから取得され、すなわち、増加するメモリ・アドレスの順序でテンソル要素を列挙するときに、E1と呼ばれる内部の次元が、0から開始して、E1インデックス・サイズ1まで、E1インデックス・サイズ値によって最初に増やされ、その後、E2次元のインデックスが増やされ、E1次元を通過することが繰り返される。E4次元と呼ばれる外側の次元のインデックスが、最後に増やされる。
【0162】
より少ない数の次元を有するテンソル(例えば、3Dテンソルまたは1Dテンソル)は、元のテンソルの次元を超える4Dテンソルの1つまたは複数の次元が1に設定された4Dテンソルとして表される。
【0163】
4D特徴テンソル・レイアウト(本明細書では、NNPAデータ・レイアウト形式0の4D特徴テンソルとも呼ばれる)への次元E4、E3、E2、E1を有する行優先の一般的な4Dテンソルの変換が、本明細書において説明される。
【0164】
例えば、結果として得られたテンソルは、例えば64要素ベクトルの4Dテンソル、または次の次元を有する5Dテンソルとして表され得る。
【0165】
E4、
【数1】

、E3、
【数2】

、64、ここで、
【数3】

はceil関数を参照する(言い換えると、E4*E3*ceil(E2/32)*32*ceil(E1/64)*64要素)。
【0166】
一般的なテンソルの要素[e4][e3][e2][e1]が、結果として得られた5Dテンソルの次の要素にマッピングされてよい。
【0167】
【数4】

、ここで、
【数5】

はフロア関数であり、modはモジュロである(言い換えると、要素
【数6】

、ここで、
【数7】

および
【数8】

)。
【0168】
結果として得られたテンソルは、一般的なテンソルより大きくなることがある。一般的なテンソル内に対応する要素がない結果として得られたテンソルの要素は、パッド要素と呼ばれる。
【0169】
64要素ベクトルのNNPAデータ・レイアウト形式0の4D特徴テンソルの要素[fe4][fe1][fe3][fe2][fe0]またはそれと同等の5Dテンソルとしての表現の要素について考える。この要素は、パッド要素であるか、または次元E4、E3、E2、E1を有する一般的な4Dテンソル内の対応する要素が、次式を用いて決定され得る。
【0170】
・fe2≧E2である場合、この要素は、E2(またはページ)のパッド要素である
【0171】
・そうでなく、fe1*64+fe0≧E1である場合、この要素は、E1(または行)のパッド要素である。
【0172】
・そうでない場合、一般的な4Dテンソル内の対応する要素は次のとおりである。
【0173】
[fe4][fe3][fe2][fe1*64+fe0]
【0174】
畳み込みニューラル・ネットワークに基づく人工知能モデルの場合、特徴テンソルの4次元の意味は、通常、以下にマッピングされ得る。
【0175】
・E4:N-ミニバッチのサイズ
【0176】
・E3:H-3Dテンソル/画像の高さ
【0177】
・E2:W-3Dテンソル/画像の幅
【0178】
・E1:C-3Dテンソルのチャネルまたはクラス
【0179】
機械学習または回帰型ニューラル・ネットワークに基づく人工知能モデルの場合、4D特徴テンソルの4次元の意味は、通常、以下にマッピングされてよい。
【0180】
・E4:T-時間ステップまたはモデルの数
【0181】
・E3:予備、通常、1に設定される
【0182】
・E2:Nmb-ミニバッチのサイズ
【0183】
・E1:L-特徴
【0184】
NNPAデータ・レイアウト形式0は、例えば、生成されたテンソルの外側の次元の4kバイトのブロック・データのアライメントに加えて、データ(ページ)の4kバイトのブロックと共に、2次元データの局所性を提供する。
【0185】
パッド要素のバイトは、入力テンソルの場合、無視され、出力テンソルの場合、予測不可能である。パッド・バイトに対するPERストレージ変更は、予測不可能である。
【0186】
次元E1、E2、E3、およびE4を有する4D特徴テンソル・レイアウトの入力データ・レイアウトの1つの例が、図5(A)~5(C)に示されており、4D特徴テンソル・レイアウトの例示的な出力が、図6(A)~6(C)に示されている。図5(A)を参照すると、次元E1、E2、およびE3を有する3Dテンソル500が示されている。1つの例では、各3Dテンソルは、複数の2Dテンソル502を含む。各2Dテンソル502内の数字は、要素の各々がメモリ内に存在する位置のメモリ・オフセットを表す。これらの入力は、図5(A)~5(C)に対応する図6(A)~6(C)に示されているように、元のテンソル(例えば、図5(A)~5(C)の元の4Dテンソル)のデータをメモリ内でレイアウトするために使用される。
【0187】
図6(A)では、例として、メモリの単位600(例えば、メモリ・ページ)が、事前に選択された数(例えば、32個)の行602を含み、行602の各々が、例えばe2_page_idxによって識別され、各行は、例えばe1_page_idxによってそれぞれ識別される事前に選択された数(例えば、64個)の要素604を含む。行が事前に選択された数の要素を含んでいない場合、その行はパディングされ(606)、行パディングまたはE1パディングと呼ばれ、メモリの単位が事前に選択された数の行を含んでいない場合、そのメモリの単位はパディングされ(608)、ページ・パディングまたはE2パディングと呼ばれる。例として、行パディングは、例えば0または他の値であり、ページ・パディングは、例えば既存の値、0、または他の値である。
【0188】
1つの例では、対応する入力のE1方向での要素位置に基づいて、行の出力要素がメモリ内(例えば、ページ内)で提供される。例えば、図5(A)を参照すると、示された3つの行列の要素位置0、1、および2(例えば、各行列内の同じ位置での要素位置)が、図6(A)のページ0の行0などに示されている。この例では、4Dテンソルは、小さく、4Dテンソルを表す各2Dテンソルの要素のすべてが1つのページに収まっている。しかし、これは1つの例にすぎない。2Dテンソルは、1つまたは複数のページを含んでよい。2Dテンソルが、4Dテンソルの再フォーマッティングに基づいて作成される場合、2Dテンソルのページの数は、4Dテンソルのサイズに基づく。1つの例では、使用されるページ数を示す、2Dテンソル内の行の数および各行内の要素の数を決定するために、1つまたは複数のceil関数が使用される。他の変形が可能である。
【0189】
4D特徴テンソル・レイアウトに加えて、1つの例では、ニューラル・ネットワーク・プロセッサは4Dカーネル・テンソルをサポートしてよく、4Dカーネル・テンソルは、畳み込みなどの特定の人工知能(例えば、ニューラル・ネットワーク処理支援)動作を実行するときに、メモリ・アクセスおよびデータ収集ステップの数を減らすように、4Dテンソルの要素を再配置する。例として、本明細書において説明されるように、次元E4、E3、E2、E1を有する行優先の一般的な4Dテンソルが、NNPAデータ・レイアウト形式1の4Dカーネル・テンソル(4Dカーネル・テンソル)に変換される。
【0190】
結果として得られたテンソルは、例えば64要素ベクトルの4Dテンソル、または次の次元を有する5Dテンソルとして表され得る。
【0191】
【数9】

、E4、E3、
【数10】

、64、ここで、
【数11】

はceil関数を参照する(言い換えると、E4*E3*ceil(E2/32)*32*ceil(E1/64)*64要素)。
【0192】
一般的なテンソルの要素[e4][e3][e2][e1]が、結果として得られた5Dテンソルの次の要素にマッピングされてよい。
【0193】
【数12】

、ここで、
【数13】

はフロア関数を参照し、modはモジュロである。言い換えると、要素
【数14】

、ここで、
【数15】

および
【数16】

【0194】
結果として得られたテンソルは、一般的なテンソルより大きくなることがある。一般的なテンソル内に対応する要素がない結果として得られたテンソルの要素は、パッド要素と呼ばれる。
【0195】
64要素ベクトルのNNPAデータ・レイアウト形式1の4D特徴テンソルの要素[fe1][fe4][fe3][fe2][fe0]またはそれと同等の5Dテンソルとしての表現の要素について考える。この要素は、パッド要素であるか、または次元E4、E3、E2、E1を有する一般的な4Dテンソル内の対応する要素が、次式を用いて決定され得る。
【0196】
・fe2≧E2である場合、この要素は、E2(またはページ)のパッド要素である
【0197】
・そうでなく、fe1*64+fe0≧E1である場合、この要素は、E1(または行)のパッド要素である。
【0198】
・そうでない場合、一般的な4Dテンソル内の対応する要素は次のとおりである。
【0199】
[fe4][fe3][fe2][fe1*64+fe0]
【0200】
畳み込みニューラル・ネットワークに基づく人工知能モデルの場合、カーネル・テンソルの4次元の意味は、通常、以下にマッピングされ得る。
【0201】
・E4:H-3Dテンソル/画像の高さ
【0202】
・E3:W-3Dテンソル/画像の幅
【0203】
・E2:C-3Dテンソルのチャネルの数
【0204】
・E1:K-カーネルの数
【0205】
NNPAデータ・レイアウト形式1は、例えば、効率的な処理のために、生成されたテンソルの外側の次元の4kバイトのブロック・データのアライメントに加えて、データ(ページ)の4kバイトのブロック内の2次元カーネルの並列性を提供する。
【0206】
パッド・バイトは、入力テンソルの場合、無視される。パッド・バイトに対するPERストレージ変更は、予測不可能である。
【0207】
やはり、例示的なデータ・レイアウト形式は4D特徴テンソル・レイアウトおよび4Dカーネル・テンソル・レイアウトを含むが、プロセッサ(例えば、ニューラル・ネットワーク・プロセッサ105)によって他のデータ・レイアウト形式がサポートされてよい。サポートされているデータ・レイアウトの指示は、取得されて、例えばフィールド338内の1つまたは複数のビットを設定することによって、照会パラメータ・ブロックに配置される。
【0208】
照会パラメータ・ブロックは、本発明の1つまたは複数の態様に従って、例えば、データのサポートされているサイズの情報を含む、他のデータ属性情報も含む。ニューラル・ネットワーク・プロセッサなどのプロセッサは、通常、テンソルの次元の最大サイズまたはテンソルの全体的サイズあるいはその両方を制限する可能性がある、内部バッファ・サイズ、プロセッシング・ユニット、データ・バス構造、ファームウェアの制限などに基づく制限を有する。したがって、照会機能は、これらの制限をアプリケーションに伝達するためのフィールドを提供する。例えば、プロセッサは、照会機能を実行することに基づいて、最大次元インデックス・サイズ(例えば、65,536要素)および最大テンソル・サイズ(例えば、8GB)などのさまざまなデータ・サイズを取得し、この情報をパラメータ・ブロック(例えば、パラメータ・ブロック330)のフィールド340および342にそれぞれ含める。プロセッサ(例えば、ニューラル・ネットワーク・プロセッサ105)によって、追加のサイズ情報、より少ないサイズ情報、または他のサイズ情報、あるいはその組合せがサポートされてもよく、したがって、取得されて、パラメータ・ブロック(例えばフィールド340、342または他のフィールドあるいはその両方)に配置されてもよい。他の実施形態では、これらの制限は、より小さくなるか、もしくはより大きくなることができ、またはサイズは、要素の代わりのバイト、バイトの代わりの要素などの、他の単位であってよく、あるいはその両方である。さらに、他の実施形態は、すべての次元で同じ最大値ではなく、各次元の異なる最大サイズを可能にする。多くの変形が可能である。
【0209】
本発明の1つまたは複数の態様に従って、選択されたプロセッサ(例えば、ニューラル・ネットワーク・プロセッサ105)の特定のモデルに関連する詳細な情報を伝達する照会機能が提供される。詳細な情報は、例えば、特定のプロセッサに関連するモデルに依存する情報を含む(プロセッサは、標準的なデータ型、標準的なデータ・レイアウトなどの、標準的なデータ属性をサポートすることもあり、これらは暗黙であり、照会機能によって必ずしも提示されないが、別の実施形態では、照会機能は、データ属性のすべてまたはさまざまな選択されたサブセットなどを示してよい)。例示的な情報が提供されるが、他の実施形態では、他の情報が提供されてよい。1つのプロセッサまたは異なる複数のプロセッサあるいはその両方の異なるモデルによって異なることがある、取得された情報は、人工知能または他の処理あるいはその両方を実行するために使用される。処理において使用される特定の非照会機能は、ニューラル・ネットワーク処理支援命令を1回または複数回実行し、特定の非照会機能を指定することによって実行される。
【0210】
以下では、ニューラル・ネットワーク処理支援命令によってサポートされる例示的な非照会機能のさらなる詳細が説明される(他の実施形態では、追加の機能、より少ない機能、または他の機能、あるいはその組合せがサポートされてよい)。
【0211】
機能コード16:NNPA-ADD(加算)
【0212】
NNPA-ADD機能が指定された場合、テンソル記述子1によって記述された入力テンソル1の各要素が、テンソル記述子2によって記述された入力テンソル2の対応する要素に加算され、結果として得られた合計が、出力テンソル記述子によって記述された出力テンソルの対応する要素に配置される。
【0213】
1つの例では、指定されたテンソル記述子のいずれかにおいて指定されたデータ・レイアウトが4D特徴テンソルを指定しない場合(例えば、データ・レイアウト=0)、またはいずれかの指定されたテンソル記述子におけるデータ型がNNPデータ型1を指定しない場合(例えば、データ型=0)、応答コード(例えば、16進数0010または16進数0011)が、汎用レジスタ0にそれぞれ設定され、例えば条件コード1を伴って命令が完了する。
【0214】
1つの例では、入力テンソル1、入力テンソル2、および出力テンソルの形状、データ・レイアウト、およびデータ型は同じであるべきであり、そうでない場合、一般オペランド・データ例外が認識される。
【0215】
1つの例では、出力テンソル記述子2、入力テンソル記述子3、機能に固有のパラメータ1~5、および機能に固有の保存領域アドレス・フィールドは無視される。
【0216】
機能コード17:NNPA-SUB(減算)
【0217】
NNPA-SUB機能が指定された場合、テンソル記述子2によって記述された入力テンソル2の各要素が、テンソル記述子1によって記述された入力テンソル1の対応する要素から減算され、結果として得られた差が、出力テンソルの対応する要素に配置される。
【0218】
1つの例では、指定されたテンソル記述子のいずれかにおいて指定されたデータ・レイアウトが4D特徴テンソルを指定しない場合(例えば、データ・レイアウト=0)、またはいずれかの指定されたテンソル記述子におけるデータ型がNNPデータ型1を指定しない場合(例えば、データ型=0)、応答コード(例えば、16進数0010または16進数0011)が、汎用レジスタ0にそれぞれ設定され、例えば条件コード1を伴って命令が完了する。
【0219】
1つの例では、入力テンソル1、入力テンソル2、および出力テンソルの形状、データ・レイアウト、およびデータ型は同じであるべきであり、そうでない場合、一般オペランド・データ例外が認識される。
【0220】
1つの例では、出力テンソル記述子2、入力テンソル記述子3、機能に固有のパラメータ1~5、および機能に固有の保存領域アドレス・フィールドは無視される。
【0221】
機能コード18:NNPA-MUL(乗算)
【0222】
NNPA-MUL機能が指定された場合、テンソル記述子1によって記述された入力テンソル1の各要素(乗数)およびテンソル記述子2によって記述された入力テンソル2の対応する要素(被乗数)の積が、出力テンソルの対応する要素に配置される。
【0223】
1つの例では、指定されたテンソル記述子のいずれかにおいて指定されたデータ・レイアウトが4D特徴テンソルを指定しない場合(例えば、データ・レイアウト=0)、またはいずれかの指定されたテンソル記述子におけるデータ型がNNPデータ型1を指定しない場合(例えば、データ型=0)、応答コード(例えば、16進数0010または16進数0011)が、汎用レジスタ0にそれぞれ設定され、例えば条件コード1を伴って命令が完了する。
【0224】
1つの例では、入力テンソル1、入力テンソル2、および出力テンソルの形状、データ・レイアウト、およびデータ型は同じであるべきであり、そうでない場合、一般オペランド・データ例外が認識される。
【0225】
1つの例では、出力テンソル記述子2、入力テンソル記述子3、機能に固有のパラメータ1~5、および機能に固有の保存領域アドレス・フィールドは無視される。
【0226】
機能コード19:NNPA-DIV(除算)
【0227】
NNPA-DIV機能が指定された場合、テンソル記述子1によって記述された入力テンソル1の各要素(被除数)が、テンソル記述子2によって記述された入力テンソル2の対応する要素(除数)で割り、その商が、出力テンソルの対応する要素に配置される。
【0228】
1つの例では、指定されたテンソル記述子のいずれかにおいて指定されたデータ・レイアウトが4D特徴テンソルを指定しない場合(例えば、データ・レイアウト=0)、またはいずれかの指定されたテンソル記述子におけるデータ型がNNPデータ型1を指定しない場合(例えば、データ型=0)、応答コード(例えば、16進数0010または16進数0011)が、汎用レジスタ0にそれぞれ設定され、例えば条件コード1を伴って命令が完了する。
【0229】
1つの例では、入力テンソル1、入力テンソル2、および出力テンソルの形状、データ・レイアウト、およびデータ型は同じであるべきであり、そうでない場合、一般オペランド・データ例外が認識される。
【0230】
1つの例では、出力テンソル記述子2、入力テンソル記述子3、機能に固有のパラメータ1~5、および機能に固有の保存領域アドレス・フィールドは無視される。
【0231】
機能コード20:NNPA-MIN(最小値)
【0232】
NNPA-MIN機能が指定された場合、テンソル記述子1によって記述された入力テンソル1の各要素が、テンソル記述子2によって記述された入力テンソル2の対応する要素と比較される。これら2つの値のうちのより小さい値が、出力テンソル記述子の対応する要素に配置される。両方の値が等しい場合、それらの値が出力テンソルの対応する要素に配置される。
【0233】
1つの例では、指定されたテンソル記述子のいずれかにおいて指定されたデータ・レイアウトが4D特徴テンソルを指定しない場合(例えば、データ・レイアウト=0)、またはいずれかの指定されたテンソル記述子におけるデータ型がNNPデータ型1を指定しない場合(例えば、データ型=0)、応答コード(例えば、16進数0010または16進数0011)が、汎用レジスタ0にそれぞれ設定され、例えば条件コード1を伴って命令が完了する。
【0234】
1つの例では、入力テンソル1、入力テンソル2、および出力テンソルの形状、データ・レイアウト、およびデータ型は同じであるべきであり、そうでない場合、一般オペランド・データ例外が認識される。
【0235】
1つの例では、出力テンソル記述子2、入力テンソル記述子3、機能に固有のパラメータ1~5、および機能に固有の保存領域アドレス・フィールドは無視される。
【0236】
機能コード21:NNPA-MAX(最大値)
【0237】
NNPA-MAX機能が指定された場合、テンソル記述子1によって記述された入力テンソル1の各要素が、テンソル記述子2によって記述された入力テンソル2の対応する要素と比較される。これら2つの値のうちのより大きい値が、出力テンソル記述子の対応する要素に配置される。両方の値が同じである場合、それらの値が出力テンソルの対応する要素に配置される。
【0238】
1つの例では、指定されたテンソル記述子のいずれかにおいて指定されたデータ・レイアウトが4D特徴テンソルを指定しない場合(例えば、データ・レイアウト=0)、またはいずれかの指定されたテンソル記述子におけるデータ型がNNPデータ型1を指定しない場合(例えば、データ型=0)、応答コード(例えば、16進数0010または16進数0011)が、汎用レジスタ0にそれぞれ設定され、例えば条件コード1を伴って命令が完了する。
【0239】
1つの例では、入力テンソル1、入力テンソル2、および出力テンソルの形状、データ・レイアウト、およびデータ型は同じであるべきであり、そうでない場合、一般オペランド・データ例外が認識される。
【0240】
1つの例では、出力テンソル記述子2、入力テンソル記述子3、機能に固有のパラメータ1~5、および機能に固有の保存領域アドレス・フィールドは無視される。
【0241】
機能コード32:NNPA-LOG(自然対数)
【0242】
NNPA-LOG機能が指定された場合、テンソル記述子1によって記述された入力テンソルの要素ごとに、その要素が0より大きい場合、出力テンソル記述子によって記述された出力テンソル内の対応する要素が、その要素の自然対数になる。そうでない場合、出力テンソル内の対応する要素は、数値的に表すことができず、ターゲットのデータ型での負の無限大に関連付けられた値が格納される。
【0243】
1つの例では、指定されたテンソル記述子のいずれかにおいて指定されたデータ・レイアウトが4D特徴テンソルを指定しない場合(例えば、データ・レイアウト=0)、またはいずれかの指定されたテンソル記述子におけるデータ型がNNPデータ型1を指定しない場合(例えば、データ型=0)、応答コード(例えば、16進数0010または16進数0011)が、汎用レジスタ0にそれぞれ設定され、例えば条件コード1を伴って命令が完了する。
【0244】
1つの例では、入力テンソル1および出力テンソルの形状、データ・レイアウト、およびデータ型は同じであるべきであり、そうでない場合、一般オペランド・データ例外が認識される。
【0245】
1つの例では、出力テンソル記述子2、入力テンソル記述子2、入力テンソル記述子3、機能に固有のパラメータ1~5、および機能に固有の保存領域アドレス・フィールドは無視される。
【0246】
機能コード33:NNPA-EXP(指数関数)
【0247】
NNPA-EXP機能が指定された場合、テンソル記述子1によって記述された入力テンソルの要素ごとに、出力テンソル記述子によって記述された出力テンソル内の対応する要素が、その要素の指数関数になる。
【0248】
1つの例では、指定されたテンソル記述子のいずれかにおいて指定されたデータ・レイアウトが4D特徴テンソルを指定しない場合(例えば、データ・レイアウト=0)、またはいずれかの指定されたテンソル記述子におけるデータ型がNNPデータ型1を指定しない場合(例えば、データ型=0)、応答コード(例えば、16進数0010または16進数0011)が、汎用レジスタ0にそれぞれ設定され、例えば条件コード1を伴って命令が完了する。
【0249】
1つの例では、入力テンソル1および出力テンソルの形状、データ・レイアウト、およびデータ型は同じであるべきであり、そうでない場合、一般オペランド・データ例外が認識される。
【0250】
1つの例では、出力テンソル記述子2、入力テンソル記述子2、入力テンソル記述子3、機能に固有のパラメータ1~5、および機能に固有の保存領域アドレス・フィールドは無視される。
【0251】
機能コード49:NNPA-RELU(整流線形ユニット)
【0252】
NNPA-RELU機能が指定された場合、テンソル記述子1によって記述された入力テンソルの要素ごとに、その要素が0以下である場合、出力テンソル記述子によって記述された出力テンソル内の対応する要素が0になる。そうでない場合、出力テンソル内の対応する要素は、入力テンソル内の要素、および機能に固有のパラメータ1において指定されたクリッピング値のうちの最小値になる。
【0253】
例として、機能に固有のパラメータ1は、RELU動作のクリッピング値を定義する。例えば、クリッピング値は、機能に固有のパラメータ1のビット16~31にある。クリッピング値は、例えばNNPAデータ型1形式で指定される。0のクリッピング値は、最大正値を使用することを示し、言い換えると、クリッピングが実行されない。負の値が指定された場合、一般オペランド・データ例外が認識される。
【0254】
1つの例では、指定されたテンソル記述子のいずれかにおいて指定されたデータ・レイアウトが4D特徴テンソルを指定しない場合(例えば、データ・レイアウト=0)、またはいずれかの指定されたテンソル記述子におけるデータ型がNNPデータ型1を指定しない場合(例えば、データ型=0)、応答コード(例えば、16進数0010または16進数0011)が、汎用レジスタ0にそれぞれ設定され、例えば条件コード1を伴って命令が完了する。
【0255】
1つの例では、入力テンソル1および出力テンソルの形状、データ・レイアウト、およびデータ型は同じであるべきであり、そうでない場合、一般オペランド・データ例外が認識される。
【0256】
1つの例では、出力テンソル記述子2、入力テンソル記述子2、入力テンソル記述子3、および機能に固有の保存領域アドレス・フィールドは無視される。1つの例では、機能に固有のパラメータ2~5は、0を含むべきである。
【0257】
機能コード50:NNPA-TANH
【0258】
NNPA-TANH機能が指定された場合、テンソル記述子1によって記述された入力テンソルの要素ごとに、出力テンソル記述子によって記述された出力テンソル内の対応する要素値が、その要素の双曲線正接になる。
【0259】
1つの例では、指定されたテンソル記述子のいずれかにおいて指定されたデータ・レイアウトが4D特徴テンソルを指定しない場合(例えば、データ・レイアウト=0)、またはいずれかの指定されたテンソル記述子におけるデータ型がNNPデータ型1を指定しない場合(例えば、データ型=0)、応答コード(例えば、16進数0010または16進数0011)が、汎用レジスタ0にそれぞれ設定され、例えば条件コード1を伴って命令が完了する。
【0260】
1つの例では、入力テンソル1および出力テンソルの形状、データ・レイアウト、およびデータ型は同じであるべきであり、そうでない場合、一般オペランド・データ例外が認識される。
【0261】
1つの例では、出力テンソル記述子2、入力テンソル記述子2、入力テンソル記述子3、機能に固有のパラメータ1~5、および機能に固有の保存領域アドレス・フィールドは無視される。
【0262】
機能コード51:NNPA-SIGMOID
【0263】
NNPA-SIGMOID機能が指定された場合、テンソル記述子1によって記述された入力テンソルの要素ごとに、出力テンソル記述子によって記述された出力テンソル内の対応する要素が、その要素のシグモイドになる。
【0264】
1つの例では、指定されたテンソル記述子のいずれかにおいて指定されたデータ・レイアウトが4D特徴テンソルを指定しない場合(例えば、データ・レイアウト=0)、またはいずれかの指定されたテンソル記述子におけるデータ型がNNPデータ型1を指定しない場合(例えば、データ型=0)、応答コード(例えば、16進数0010または16進数0011)が、汎用レジスタ0にそれぞれ設定され、例えば条件コード1を伴って命令が完了する。
【0265】
1つの例では、入力テンソル1および出力テンソルの形状、データ・レイアウト、およびデータ型は同じであるべきであり、そうでない場合、一般オペランド・データ例外が認識される。
【0266】
1つの例では、出力テンソル記述子2、入力テンソル記述子2、入力テンソル記述子3、機能に固有のパラメータ1~5、および機能に固有の保存領域アドレス・フィールドは無視される。
【0267】
機能コード52:NNPA-SOFTMAX
【0268】
NNPA-SOFTMAX機能が指定された場合、下で説明されているように、入力テンソル1の次元1におけるベクトルごとに、出力テンソル内の対応するベクトルが計算される。
【0269】
*ベクトルの最大値が計算される。
【0270】
*次元1におけるベクトルの各要素と上で計算された最大値の間の差の指数関数の総和が計算される。次元1における入力ベクトルの要素および上で計算された最大値の両方が数値であり、差が非数値である場合、その要素の指数関数の結果が強制的に0にされる。
【0271】
*ベクトル内の要素ごとに、中間の商が、要素と上で計算された最大値の間の差の指数関数を、上で計算された総和で割った値で形成される。任意選択的な活性化関数が、この中間の商に適用されて、出力ベクトル内の対応する要素を形成する。
【0272】
例えば、次元1における次元4インデックス・サイズ×次元3インデックス・サイズ×次元2インデックス・サイズ個のベクトルすべてについて、このプロセスが繰り返される。
【0273】
1つの例では、NNPA-SOFTMAX機能に固有のパラメータ1が活性化関数を制御する。例として、機能に固有のパラメータ1のACTフィールド(例えば、ビット28~31)が、活性化関数を指定する。例示的な活性化関数は、以下を含む。
【0274】
ACT 活性化関数
【0275】
0 活性化関数が実行されない
【0276】
1 LOG
【0277】
2~15 予備
【0278】
ACTフィールドの予備の値が指定された場合、例えば16進数F001の応答コードが報告され、例えば条件コード1を伴って動作が完了する。
【0279】
1つの例では、指定されたテンソル記述子のいずれかにおいて指定されたデータ・レイアウトが4D特徴テンソルを指定しない場合(例えば、データ・レイアウト=0)、またはいずれかの指定されたテンソル記述子におけるデータ型がNNPデータ型1を指定しない場合(例えば、データ型=0)、応答コード(例えば、16進数0010または16進数0011)が、汎用レジスタ0にそれぞれ設定され、例えば条件コード1を伴って命令が完了する。
【0280】
1つの例では、入力テンソルの次元3インデックス・サイズが1に等しくない場合、例えば16進数F000の応答コードが格納され、例えば条件コード1を伴って命令が完了する。
【0281】
1つの例では、入力テンソル1および出力テンソルの形状、データ・レイアウト、およびデータ型は同じであるべきであり、そうでない場合、一般オペランド・データ例外が認識される。
【0282】
1つの例では、出力テンソル記述子2、入力テンソル記述子2、および入力テンソル記述子3は無視される。1つの例では、機能に固有のパラメータ2~5は、0を含むべきである。
【0283】
この機能によって、8Kバイトの機能に固有の保存領域が使用されてよい。
【0284】
1つの実施形態では、次元1におけるベクトルを取得するときに、指定されたデータ・レイアウト形式に応じて、要素はメモリ内で隣接していないことがある。入力テンソル1の次元1のベクトルのすべての要素が、指定されたデータ型で表すことができる最大の大きさの負の数値を含んでいる場合、結果は、あまり正確でないことがある。
【0285】
機能コード64:NNPA-BATCHNORM(バッチ正規化)
【0286】
NNPA-BATCHNORM機能が指定された場合、入力1テンソルの次元1におけるベクトルごとに、出出力テンソルの次元1における対応するベクトルが、ベクトル内の各要素に、入力2テンソルを構成する次元1のベクトル内の対応する要素を掛けることによって、計算される。次に、最大精度の積が、入力3テンソルを構成する次元1のベクトル内の対応する要素に加算され、その後、出力テンソルの指定されたデータ型の精度に丸められる。例えば、次元1における次元4インデックス・サイズ×次元3インデックス・サイズ×次元2インデックス・サイズ個のベクトルすべてについて、このプロセスが繰り返される。
【0287】
1つの例では、指定されたテンソル記述子のいずれかにおいて指定されたデータ・レイアウトが4D特徴テンソルを指定しない場合(例えば、データ・レイアウト=0)、またはいずれかの指定されたテンソル記述子におけるデータ型がNNPデータ型1を指定しない場合(例えば、データ型=0)、応答コード(例えば、16進数0010または16進数0011)が、汎用レジスタ0にそれぞれ設定され、例えば条件コード1を伴って命令が完了する。
【0288】
1つの例では、以下の条件が真になるべきであり、そうでない場合、一般オペランド・データ例外が認識される。
【0289】
*入力テンソル1および出力テンソルの外形およびデータ・レイアウトが、同じであるべきである。
【0290】
*入力テンソルおよび出力テンソルのデータ型が、同じであるべきである。
【0291】
*入力テンソル1、2、3および出力テンソルの次元1インデックス・サイズが、同じであるべきである。
【0292】
*入力テンソル2および3の次元2、3、および4インデックス・サイズが、1であるべきである。
【0293】
1つの例では、出力テンソル記述子2および機能に固有の保存領域アドレス・フィールドは無視される。1つの例では、機能に固有のパラメータ2~5は、0を含むべきである。
【0294】
機能コード80:NNPA-MAXPOOL2D
機能コード81:NNPA-AVGPOOL2D
【0295】
NNPA-MAXPOOL2D機能またはNNPA-AVGPOOL2D機能のいずれかが指定された場合、入力のウィンドウを要約するために、入力テンソル1記述子によって記述された入力テンソル1が、指定された動作によって減らされる。入力のウィンドウは、2Dスライド・ウィンドウを次元インデックス2および3上で移動することによって選択される。ウィンドウの要約が、出力テンソルの要素になる。スライド・ウィンドウの次元は、例えば、機能に固有のパラメータ4および機能に固有のパラメータ5によって記述される。隣接する出力テンソルの要素を計算するときに、スライド・ウィンドウが入力1テンソル上を移動する量は、ストライドと呼ばれる。スライド・ウィンドウのストライドは、例えば、機能に固有のパラメータ2および機能に固有のパラメータ3によって指定される。NNPA-MAXPOOL2D動作が指定された場合、以下で定義されるMax動作がウィンドウに対して実行される。NNPA-AVGPOOL2D動作が指定された場合、以下で定義されるAVG動作がウィンドウに対して実行される。指定されたパディングの種類が「有効」である場合、ウィンドウ内のすべての要素が、結果として得られる出力要素を計算するために使用される集合に追加される。指定されたパディングの種類が「同じ」である場合、ウィンドウの位置に応じて、ウィンドウからの要素のサブセットのみが、結果として得られる出力要素を計算するために使用される集合に追加されてよい。
【0296】
1つの例では、CollectElements動作は、要素の集合に要素を追加し、集合内の要素の数をインクリメントする。ウィンドウの開始位置が移動するたびに、集合が空にされる。動作を実行するために必要とされない要素がアクセスされるかどうかは、予測不可能である。
【0297】
Max動作:1つの例では、集合内のすべての要素を互いに比較し、最も大きい値を返すことにとって、ウィンドウ内の要素の集合の最大値が計算される。
【0298】
Avg(平均値)動作:1つの例では、集合内のすべての要素の総和を集合内の要素の数で割った値として、ウィンドウ内の要素の集合の平均値が計算される。
【0299】
1つの例では、フィールドが次のように割り当てられる。
【0300】
*プール機能に固有のパラメータ1は、パディングの種類を制御する。例えば、機能に固有のパラメータ1のビット29~31は、パディングの種類を指定するパッド・フィールドを含む。例示的な種類は、例えば、以下を含む。
【0301】
パッド パディングの種類
【0302】
0 有効
【0303】
1 同じ
【0304】
2~7 予備
【0305】
パッド・フィールドの予備の値が指定された場合、例えば16進数F000の応答コードが報告され、例えば条件コード1を伴って動作が完了する。
【0306】
1つの例では、機能に固有のパラメータ1のビット位置0~28は予備であり、0を含むべきである。
【0307】
*機能に固有のパラメータ2は、例えば、次元2ストライド(D2S:dimension-2-stride)を指定する32ビット符号なし2進整数を含み、次元2ストライドは、次元2においてスライド・ウィンドウが移動する要素の数を指定する。
【0308】
*機能に固有のパラメータ3は、例えば、次元3ストライド(D3S:dimension-3-stride)を指定する32ビット符号なし2進整数を含み、次元3ストライドは、次元3においてスライド・ウィンドウが移動する要素の数を指定する。
【0309】
*機能に固有のパラメータ4は、例えば、次元2ウィンドウ・サイズ(D2WS:dimension-2-window-size)を指定する32ビット符号なし2進整数を含み、次元2ウィンドウ・サイズは、次元2においてスライド・ウィンドウが含む要素の数を指定する。
【0310】
*機能に固有のパラメータ5は、例えば、次元3ウィンドウ・サイズ(D3WS:dimension-3-window-size)を指定する32ビット符号なし2進整数を含み、次元3ウィンドウ・サイズは、次元3においてスライド・ウィンドウが含む要素の数を指定する。
【0311】
1つの例では、機能に固有のパラメータ2~5において指定される値は、最大次元インデックス・サイズ以下であるべきであり、機能に固有のパラメータ4~5において指定される値は、0より大きくなるべきであり、そうでない場合、応答コード(例えば、16進数0012)が報告され、例えば条件コード1を伴って動作が完了する。
【0312】
次元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を伴って命令が完了する。
【0313】
1つの例では、指定されたテンソル記述子のいずれかにおいて指定されたデータ・レイアウトが4D特徴テンソルを指定しない場合(例えば、データ・レイアウト=0)、またはいずれかの指定されたテンソル記述子におけるデータ型がNNPデータ型1を指定しない場合(例えば、データ型=0)、応答コード(例えば、16進数0010または16進数0011)が、汎用レジスタ0にそれぞれ設定され、例えば条件コード1を伴って命令が完了する。
【0314】
1つの例では、以下の条件が真になるべきであり、そうでない場合、一般オペランド・データ例外が認識される。
【0315】
*入力テンソルおよび出力テンソルの次元4インデックス・サイズおよび次元1インデックス・サイズが、同じであるべきである。
【0316】
*入力テンソルおよび出力テンソルのデータ・レイアウトおよびデータ型が、同じであるべきである。
【0317】
*次元2ストライドおよび次元3ストライドが両方とも0である場合、1つの例では、以下の追加の条件が真になるべきである。
【0318】
*入力テンソルの次元2インデックス・サイズが、次元2ウィンドウ・サイズに等しくなるべきである。
【0319】
*入力テンソルの次元3インデックス・サイズが、次元3ウィンドウ・サイズに等しくなるべきである。
【0320】
*出力テンソルの次元2インデックス・サイズおよび次元3インデックス・サイズが、1であるべきである。
【0321】
*指定されたパディングが、有効であるべきである。
【0322】
*次元2ストライドまたは次元3ストライドのいずれかが0以外である場合、1つの例では、両方のストライドが0以外であるべきである。
【0323】
*次元2ストライドおよび次元3ストライドが両方とも0より大きい場合、1つの例では、以下の追加の条件が真になるべきである。
【0324】
*指定されたパディングが「有効」である場合、次元2ウィンドウ・サイズが、入力テンソルの次元2インデックス・サイズ以下であるべきである。
【0325】
*指定されたパディングが「有効」である場合、次元3ウィンドウ・サイズが、入力テンソルの次元3インデックス・サイズ以下であるべきである。
【0326】
*指定されたパディングが「同じ」である場合、入力テンソルおよび出力テンソルの次元2インデックス・サイズと次元3インデックス・サイズの間の以下の関係が満たされるべきである(プールの同じパディング)。
【0327】
【数17】
【0328】
【数18】
【0329】
ここで、
【0330】
IxDyIS テンソル記述子xで定義された入力テンソルxの次元yインデックス・サイズ。
【0331】
OxDyIS テンソル記述子xで定義された出力テンソルxの次元yインデックス・サイズ。
【0332】
D2S 次元2ストライド。
【0333】
D3S 次元3ストライド。
【0334】
*指定されたパディングが「有効」である場合、入力テンソルおよび出力テンソルの次元2インデックス・サイズと次元3インデックス・サイズの間の以下の関係が満たされるべきである(プールの有効なパディング)。
【0335】
【数19】
【0336】
【数20】
【0337】
ここで、D2WSは次元2ウィンドウ・サイズであり、D3WSは次元3ウィンドウ・サイズである。
【0338】
出力テンソル記述子2、入力テンソル記述子2および3、ならびに機能に固有の保存領域アドレス・フィールドは無視される。
【0339】
機能コード96:NNPA-LSTMACT(長短期記憶有効化)
【0340】
NNPA-LSTMACT機能が指定された場合、次元4のインデックス値ごとに4つのサブテンソルに分割された、入力テンソル1記述子によって記述された入力テンソル1が、次元4のインデックス値ごとに4つのサブテンソルに分割された、入力テンソル2記述子によって記述された入力テンソル2、および入力テンソル3記述子によって記述された入力テンソル3と共に、LSTMACT動作への入力となる。LSTMACT動作の終了時に、結果が、出力テンソル1記述子によって記述された出力テンソル1および出力テンソル2記述子によって記述された出力テンソル2に書き込まれる。
【0341】
1つの例では、指定されたテンソル記述子のいずれかにおいて指定されたデータ・レイアウトが4D特徴テンソルを指定しない場合(例えば、データ・レイアウト=0)、またはいずれかの指定されたテンソル記述子におけるデータ型がNNPデータ型1を指定しない場合(例えば、データ型=0)、応答コード(16進数0010または16進数0011)が、汎用レジスタ0にそれぞれ設定され、例えば条件コード1を伴って命令が完了する。
【0342】
1つの実施形態では、以下の条件が真になるべきであり、そうでない場合、一般オペランド・データ例外が認識される。
【0343】
*入力テンソル3、ならびに出力テンソル1および2の次元4インデックス・サイズが、例えば1に等しくなるべきである。
【0344】
*入力テンソル1および入力テンソル2の次元4インデックス・サイズが、例えば4に等しくなるべきである。
【0345】
*例えば、すべての入力テンソルおよび2つの出力テンソルの次元3インデックス・サイズが、例えば1に等しくなるべきである。
【0346】
*例えば、すべての入力テンソルおよび2つの出力テンソルのデータ・レイアウトおよびデータ型が、同じであるべきである。
【0347】
*例えば、すべての入力テンソルおよび2つの出力テンソルの次元1インデックス・サイズが、同じであるべきである。
【0348】
*例えば、すべての入力テンソルおよび2つの出力テンソルの次元2インデックス・サイズが、同じであるべきである。
【0349】
1つの例では、機能に固有の保存領域アドレス・フィールドは無視される。1つの例では、機能に固有のパラメータ1~5は、0を含むべきである。
【0350】
機能コード97:NNPA-GRUACT(ゲート付き回帰型ユニット有効化)
【0351】
NNPA-GRUACT機能が指定された場合、次元4のインデックス値ごとに3つのサブテンソルに分割された、入力テンソル1記述子によって記述された入力テンソル1が、次元4のインデックス値ごとに3つのサブテンソルに分割された、入力テンソル2記述子によって記述された入力テンソル2、および入力テンソル3記述子によって記述された入力テンソル3と共に、GRUACT動作への入力となる。GRUACT動作の終了時に、出力テンソル記述子によって記述され出力テンソルが格納される。
【0352】
1つの例では、指定されたテンソル記述子のいずれかにおいて指定されたデータ・レイアウトが4D特徴テンソルを指定しない場合(例えば、データ・レイアウト=0)、またはいずれかの指定されたテンソル記述子におけるデータ型がNNPデータ型1を指定しない場合(例えば、データ型=0)、応答コード(例えば、16進数0010または16進数0011)が、汎用レジスタ0にそれぞれ設定され、例えば条件コード1を伴って命令が完了する。
【0353】
1つの実施形態では、以下の条件が真になるべきであり、そうでない場合、一般オペランド・データ例外が認識される。
【0354】
*出力テンソルおよび入力テンソル3の次元4インデックス・サイズが、例えば1に等しくなるべきである。
【0355】
*入力テンソル1および入力テンソル2の次元4インデックス・サイズが、例えば3に等しくなるべきである。
【0356】
*例えば、すべての入力テンソルおよび出力テンソルの次元3インデックス・サイズが、例えば1に等しくなるべきである。
【0357】
*例えば、すべての入力テンソルおよび出力テンソルの次元1インデックス・サイズが、同じであるべきである。
【0358】
*例えば、すべての入力テンソルおよび出力テンソルの次元2インデックス・サイズが、同じであるべきである。
【0359】
*例えば、すべての入力テンソルおよび出力テンソルのデータ・レイアウトおよびデータ型が、同じであるべきである。
【0360】
1つの例では、出力テンソル記述子2および機能に固有の保存領域アドレス・フィールドは無視される。1つの例では、機能に固有のパラメータ2~5は、0を含むべきである。
【0361】
機能コード112:NNPA-CONVOLUTION
【0362】
NNPA-CONVOLUTION機能が指定された場合、出力テンソル1記述子によって記述された出力テンソル内の出力要素ごとに、次元インデックス3、2、および1から成る3次元入力1ウィンドウが、入力テンソル1記述子によって記述された入力テンソル1から選択される。次元インデックス4、3、および2から成る同じサイズの3次元入力2ウィンドウが、入力テンソル2記述子によって記述されたテンソル2から選択される。入力1ウィンドウ内の要素に、入力2ウィンドウ内の対応する要素が掛けられ、すべての積が一緒に加算されて、初期総和を作成する。この初期総和が、入力テンソル3の対応する要素に加算されて、中間総和値を計算する。出力テンソルの要素は、中間総和に対して実行された指定された活性化関数の結果である。活性化関数が指定されない場合、出力要素は、中間総和に等しくなる。
【0363】
指定されたパディングの種類が「有効」である場合、ウィンドウ内のすべての要素が使用されて、結果として得られる初期総和を計算する。指定されたパディングの種類が「同じ」である場合、ウィンドウの位置に応じて、結果として得られる初期総和を計算するときに、入力1ウィンドウの一部の要素が暗黙の0になってよい。
【0364】
動作を実行するために必要とされない要素がアクセスされるかどうかは、予測不可能である。
【0365】
1つの例では、畳み込み機能によって使用されるに機能に固有のパラメータのフィールドが、次のように割り当てられる。
【0366】
*NNPA-CONVOLUTION機能に固有のパラメータ1は、パディングの種類および活性化関数を制御する。1つの例では、機能に固有のパラメータ1のビット29~31は、パディングの種類を指定するパッド・フィールドを含む。例示的な種類は、次のとおりである。
【0367】
パッド パディングの種類
【0368】
0 有効
【0369】
1 同じ
【0370】
2~7 予備
【0371】
パッド・フィールドの予備の値が指定された場合、例えば16進数F000の応答コードが報告され、例えば条件コード1を伴って動作が完了する。
【0372】
さらに、1つの例では、NNPA-CONVOLUTION機能に固有のパラメータ1のビット24~27は、活性化関数を指定する活性化フィールドを含む。例示的な関数は、次のとおりである。
【0373】
ACT 活性化関数
【0374】
0 活性化関数が実行されない
【0375】
1 RELU
【0376】
2~15 予備
【0377】
RELUの活性化関数が指定された場合、結果として得られる出力要素値は、次のように決定される。中間総和値が0以下である場合、出力テンソル内の対応する要素は0になり、そうでない場合、出力テンソル内の対応する要素は、中間総和値、および機能に固有のパラメータ4において指定されたクリッピング値のうちの最小値になる。
【0378】
ACTフィールドの予備の値が指定された場合、例えば16進数F001の応答コードが報告され、例えば条件コード1を伴って動作が完了する。
【0379】
*機能に固有のパラメータ2は、例えば、次元2ストライド(D2S)を指定する32ビット符号なし2進整数を含み、次元2ストライドは、次元2においてスライド・ウィンドウが移動する要素の数を指定する。
【0380】
*機能に固有のパラメータ3は、例えば、次元3ストライド(D3S)を指定する32ビット符号なし2進整数を含み、次元3ストライドは、次元3においてスライド・ウィンドウが移動する要素の数を指定する。
【0381】
機能に固有のパラメータ2~3において指定される値は、最大次元インデックス・サイズ未満であるべきであり、そうでない場合、応答コード(例えば、16進数0012)が報告され、例えば条件コード1を伴って動作が完了する。
【0382】
*機能に固有のパラメータ4は、任意選択的なRELU動作のクリッピング値を定義する。1つの例では、クリッピング値は、機能に固有のパラメータ4のビット16~31にある。
【0383】
1つの例では、ACTフィールドが0である場合、このフィールドは無視される。ACTフィールドがRELUを指定する場合、NNPデータ型1形式でクリッピング値が指定される。0のクリッピング値は、最大正値を使用することを示し、言い換えると、クリッピングが実行されない。0以外が指定された場合、一般オペランド・データ例外が認識される。
【0384】
1つの例では、入力テンソル2を除く指定されたテンソル記述子のいずれかにおいて指定されたデータ・レイアウトが4D特徴テンソルを指定しない場合(例えば、データ・レイアウト=0)、または入力テンソル2において指定されたデータ・レイアウトが4Dカーネル・テンソルを指定しない場合(例えば、データ・レイアウト=1)、応答コード(例えば、16進数0010)が汎用レジスタ0に設定され、例えば条件コード1を伴って命令が完了する。1つの例では、いずれかの指定されたテンソル記述子におけるデータ型がNNPデータ型1を指定しない場合(例えば、データ型=0)、応答コード(例えば、16進数0011)が、汎用レジスタ0に設定され、例えば条件コード1を伴って命令が完了する。
【0385】
次元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を伴って動作が完了する。
【0386】
1つの例では、以下の条件が真になるべきであり、そうでない場合、一般オペランド・データ例外が認識される。
【0387】
*入力テンソル1、入力テンソル3、および出力テンソルのデータ・レイアウトが、同じであるべきである。
【0388】
*すべての入力テンソルおよび出力テンソルのデータ型が、同じであるべきである。
【0389】
*入力3テンソルの次元2、次元3、および次元4インデックス・サイズが、1であるべきである。
【0390】
*出力テンソルの次元4インデックス・サイズが、入力1テンソルの次元4インデックス・サイズに等しくなるべきである。
【0391】
*出力テンソルの次元1インデックス・サイズが、入力2テンソルの次元1インデックス・サイズおよび入力3テンソルの次元1インデックス・サイズに等しくなるべきである。
【0392】
*入力1テンソルの次元1インデックス・サイズが、入力2テンソルの次元2インデックス・サイズに等しくなるべきである。
【0393】
*次元2ストライドおよび次元3ストライドが両方とも0である場合、1つの例では、以下の追加の条件が真になるべきである。
【0394】
*入力1テンソルの次元2インデックス・サイズが、入力2テンソルの次元3インデックス・サイズに等しくなるべきである。
【0395】
*入力テンソルの入力1テンソルの次元3インデックス・サイズが、入力2テンソルの次元4インデックス・サイズに等しくなるべきである。
【0396】
*出力テンソルの次元2インデックス・サイズおよび次元3インデックス・サイズが、1であるべきである。
【0397】
*指定されたパディングが、「有効」であるべきである。
【0398】
*次元2ストライドまたは次元3ストライドのいずれかが0以外である場合、両方のストライドが0以外であるべきである。
【0399】
*次元2ストライドおよび次元3ストライドが両方とも0より大きい場合、1つの例では、以下の追加の条件が真になるべきである。
【0400】
*指定されたパディングが「有効」である場合、入力1テンソルの次元2インデックス・サイズが、入力テンソル2の次元3インデックス・サイズ以上であるべきである。
【0401】
*指定されたパディングが「有効」である場合、入力1テンソルの次元3インデックス・サイズが、入力2テンソルの次元4インデックス・サイズ以上であるべきである。
【0402】
*指定されたパディングが「同じ」である場合、1つの例では、入力1テンソルおよび出力テンソルの次元2インデックス・サイズと次元3インデックス・サイズの間の以下の関係が満たされるべきである(畳み込みの同じパディング)。
【0403】
【数21】
【0404】
【数22】
【0405】
ここで、
【0406】
O1D2IS 出力テンソルの次元2インデックス・サイズ。
【0407】
O1D3IS 出力テンソルの次元3インデックス・サイズ。
【0408】
I1D2IS 入力1テンソルの次元2インデックス・サイズ。
【0409】
I1D3IS 入力1テンソルの次元3インデックス・サイズ。
【0410】
D2S 次元2ストライド。
【0411】
D3S 次元3ストライド。
【0412】
*指定されたパディングが「有効」である場合、1つの例では、入力1テンソルの次元2インデックス・サイズと次元3インデックス・サイズの間、入力2テンソルおよび出力テンソルの次元3インデックス・サイズと次元4インデックス・サイズの間の以下の関係が満たされるべきである(畳み込みの有効なパディング)。
【0413】
【数23】
【0414】
【数24】
【0415】
ここで、
【0416】
O1D2IS 出力テンソルの次元2インデックス・サイズ。
【0417】
O1D3IS 出力テンソルの次元3インデックス・サイズ。
【0418】
I1D2IS 入力1テンソルの次元2インデックス・サイズ。
【0419】
I1D3IS 入力1テンソルの次元3インデックス・サイズ。
【0420】
I2D3IS 入力2テンソルの次元3インデックス・サイズ。
【0421】
I2D4IS 入力2テンソルの次元4インデックス・サイズ。
【0422】
D2S 次元2ストライド。
【0423】
D3S 次元3ストライド。
【0424】
1つの例では、出力テンソル記述子2および機能に固有の保存領域アドレス・フィールドは無視される。1つの例では、機能に固有のパラメータ5は、0を含むべきである。
【0425】
機能コード113:NNPA-MATMUL-OP(行列乗算演算)
【0426】
NNPA-MATMUL-OP機能が指定された場合、1つの例では、出力テンソル記述子によって記述された出力テンソル内の各要素が、下で説明されているように計算される。
【0427】
*下で説明される次元1ベクトル取得動作を使用して、次元1ベクトルが、入力テンソル1記述子によって記述された入力テンソル1から選択される。
【0428】
*下で説明される次元2ベクトル取得動作を使用して、次元2ベクトルが、入力テンソル2記述子によって記述された入力テンソル2から選択される。
【0429】
*下で説明されるドット積演算を使用して、次元1ベクトルおよび次元2ベクトルの中間ドット積が計算される。
【0430】
中間ドット積と、出力テンソルの要素と同じ次元インデックス4および次元インデックス1の値を有する、入力テンソル3記述子によって記述された入力テンソル3の要素とに対して、動作が実行される。結果として得られた要素が、出力テンソルに格納される。融合された動作が、機能に固有のパラメータ1によって決定され、下で説明される。
【0431】
次元1ベクトル取得動作:指定された出力要素に関して、次元1のベクトルが入力1テンソルから選択され、入力次元4インデックスが出力次元4インデックスになり、入力次元3インデックスが出力次元3インデックスになり、入力次元2インデックスが出力次元2インデックスになる。
【0432】
次元2ベクトル取得動作:指定された出力要素に関して、次元2のベクトルが入力2テンソルから選択され、入力次元4インデックスが出力次元4インデックスになり、入力次元3インデックスが出力次元3インデックスになり、入力次元1インデックスが出力次元1インデックスになる。
【0433】
ドット積演算:同じサイズおよびデータ型の2つのベクトルの中間ドット積が、入力ベクトル1内の各要素および入力ベクトル2の対応する要素の積の総和として計算される。
【0434】
融合された動作:機能に固有のパラメータ1は、中間ドット積および入力テンソル3からの対応する要素に対して実行される動作を制御する。1つの例では、NNPA-MATMUL-OP機能に固有のパラメータ1は、例えばビット24~31に、動作フィールドを含む。動作フィールドは、実行される動作を指定する。例示的な動作が以下に示される。
【0435】
動作 動作の種類
【0436】
0 加算
【0437】
1 ドット積が高いかどうか比較する
【0438】
2 ドット積が低くないかどうか比較する
【0439】
3 ドット積および要素が等しいかどうか比較する
【0440】
4 ドット積および要素が等しくないかどうか比較する
【0441】
5 ドット積が高くないかどうか比較する
【0442】
6 ドット積が低いかどうか比較する
【0443】
1つの例では、加算の動作の種類の場合、入力テンソル3の要素が、中間ドット積に加算される。比較の動作の種類の場合、中間ドット積が入力テンソル3の要素と比較され、比較が真である場合、出力テンソルに対して指定されたデータ型で、結果が、例えば+1の値に設定され、そうでない場合、例えば+0の値に設定される。
【0444】
1つの例では、動作フィールドの他のすべての値は予備である。動作フィールドの予備の値が指定された場合、例えば16進数F000の応答コードが報告され、例えば条件コード1を伴って動作が完了する。
【0445】
1つの例では、指定されたテンソル記述子のいずれかにおいて指定されたデータ・レイアウトが4D特徴テンソルを指定しない場合(例えば、データ・レイアウト=0)、またはいずれかの指定されたテンソル記述子におけるデータ型がNNPデータ型1を指定しない場合(例えば、データ型=0)、応答コード(例えば、16進数0010または16進数0011)が、汎用レジスタ0にそれぞれ設定され、例えば条件コード1を伴って命令が完了する。
【0446】
1つの実施形態では、以下の条件が真になるべきであり、そうでない場合、一般オペランド・データ例外が認識される。
【0447】
*すべての入力テンソルおよび出力テンソルの次元4インデックス・サイズが、同じであるべきである。
【0448】
*例えば、すべての入力テンソルおよび出力テンソルの次元3インデックス・サイズが、1に等しくなるべきである。
【0449】
*入力テンソル3の次元2インデックス・サイズが、1に等しくなるべきである。
【0450】
*入力テンソル1および出力テンソルの次元2インデックス・サイズが、同じであるべきである。
【0451】
*入力テンソル1の次元1インデックス・サイズおよび入力テンソル2の次元2インデックス・サイズが、同じであるべきである。
【0452】
*入力テンソル2、入力テンソル3、および出力テンソルの次元1インデックス・サイズが、同じであるべきである。
【0453】
*すべての入力テンソルおよび出力テンソルのデータ・レイアウトおよびデータ型が、同じであるべきである。
【0454】
1つの実施形態では、出力テンソル記述子2および機能に固有の保存領域アドレス・フィールドは無視される。1つの例では、機能に固有のパラメータ2~5は、0を含むべきである。
【0455】
機能コード114:NNPA-MATMUL-OP-BCAST23(行列乗算演算-ブロードキャスト23)
【0456】
NNPA-MATMUL-OP-BCAST23機能が指定された場合、1つの例では、出力テンソル記述子によって記述された出力テンソル内の各要素が、下で説明されているように計算される。
【0457】
*下で説明される次元1ベクトル取得動作を使用して、次元1ベクトルが、入力テンソル1記述子によって記述された入力テンソル1から選択される。
【0458】
*下で説明される次元2ベクトル取得動作を使用して、次元2ベクトルが、入力テンソル2記述子によって記述された入力テンソル2から選択される。
【0459】
*下で説明されるドット積演算を使用して、次元1ベクトルおよび次元2ベクトルのドット積が計算される。
【0460】
*出力テンソルの要素と同じ次元インデックス1の値を有する、入力テンソル3記述子によって記述された入力テンソル3の要素が、前に計算されたドット積に加算されて、出力テンソルに格納される。
【0461】
次元1ベクトル取得動作:指定された出力要素に関して、次元1のベクトルが入力1テンソルから選択され、入力次元4インデックスが出力次元4インデックスになり、入力次元3インデックスが出力次元3インデックスになり、入力次元2インデックスが出力次元2インデックスになる。
【0462】
次元2ベクトル取得動作:指定された出力要素に関して、次元2のベクトルが入力2テンソルから選択され、入力次元4インデックスが1になり、入力次元3インデックスが出力次元3インデックスになり、入力次元1インデックスが出力次元1インデックスになる。
【0463】
ドット積演算:同じサイズおよびデータ型の2つのベクトルの中間積が、入力ベクトル1内の各要素および入力ベクトル2の対応する要素の積の総和として計算される。
【0464】
1つの例では、指定されたテンソル記述子のいずれかにおいて指定されたデータ・レイアウトが4D特徴テンソルを指定しない場合(例えば、データ・レイアウト=0)、またはいずれかの指定されたテンソル記述子におけるデータ型がNNPデータ型1を指定しない場合(例えば、データ型=0)、応答コード(例えば、16進数0010または16進数0011)が、汎用レジスタ0にそれぞれ設定され、例えば条件コード1を伴って命令が完了する。
【0465】
1つの実施形態では、以下の条件が真になるべきであり、そうでない場合、一般オペランド・データ例外が認識される。
【0466】
*入力テンソル1および出力テンソルの次元4インデックス・サイズが、同じであるべきである。
【0467】
*入力テンソル2および入力テンソル3の次元4インデックス・サイズが、1に等しくなるべきである。
【0468】
*すべての入力テンソルおよび出力テンソルの次元3インデックス・サイズが、1に等しくなるべきである。
【0469】
*入力テンソル3の次元2インデックス・サイズが、1に等しくなるべきである。
【0470】
*入力テンソル1および出力テンソルの次元2インデックス・サイズが、同じであるべきである。
【0471】
*入力テンソル1の次元1インデックス・サイズおよび入力テンソル2の次元2インデックス・サイズが、同じであるべきである。
【0472】
*入力テンソル2、入力テンソル3、および出力テンソルの次元1インデックス・サイズが、同じであるべきである。
【0473】
*すべての入力テンソルおよび出力テンソルのデータ・レイアウトおよびデータ型が、同じであるべきである。
【0474】
1つの実施形態では、出力テンソル記述子2および機能に固有の保存領域アドレス・フィールドは無視される。1つの例では、機能に固有のパラメータ1~5は、0を含むべきである。
【0475】
ニューラル・ネットワーク処理支援命令の場合、1つの実施形態では、出力テンソルがいずれかの入力テンソルまたはパラメータ・ブロックと重複する場合に、結果が予測不可能になる。
【0476】
例として、ニューラル・ネットワーク処理支援命令の実行が試みられ、パラメータ・ブロックが例えばダブルワード境界上に指定されない場合、指定例外が認識される。
【0477】
ニューラル・ネットワーク処理支援命令の実行が試みられ、例えば、テンソル記述子に矛盾がある場合、一般オペランド・データ例外が認識される。
【0478】
ニューラル・ネットワーク処理支援命令の結果として得られる条件コードは、例えば、0-正常完了、1-応答コードが設定される、2--、3-CPUによって決定された処理済みのデータの量、を含む。
【0479】
1つの実施形態では、ニューラル・ネットワーク処理支援命令の実行の優先度は、例えば以下を含む。
【0480】
1.~7. 一般的な事例に関する、プログラム割り込み条件の優先度と同じ優先度を持つ例外。
【0481】
8.A 割り当てられていないか、またはインストールされていない機能コードが指定されたことに起因する条件コード1。
【0482】
8.B パラメータ・ブロックがダブルワード境界上で指定されないことに起因する指定例外。
【0483】
9. パラメータ・ブロックへのアクセスに関するアクセス例外。
【0484】
10. パラメータ・ブロックの指定された形式がモデルによってサポートされていないことに起因する条件コード1。
【0485】
11.A 指定されたテンソル・データ・レイアウトがサポートされていないことに起因する条件コード1。
【0486】
11.B テンソル記述子間で異なるデータ・レイアウトに起因する一般オペランド・データ例外。
【0487】
12.A 上記の項目8.A、10、および11.A、ならびに下記の12.B.1に含まれている条件以外の条件に起因する条件コード1。
【0488】
12.B.1 NNPA-RELUおよびNNPA-CONVOLUTIONの無効な出力テンソル・データ型に起因する条件コード1。
【0489】
12.B.2 NNPA-RELU機能に固有のパラメータ1およびNNPA-CONVOLUTION機能に固有のパラメータ4の無効な値に関する一般オペランド・データ例外。
【0490】
13.A 出力テンソルへのアクセスに関するアクセス例外。
【0491】
13.B 入力テンソルへのアクセスに関するアクセス例外。
【0492】
13.C 機能に固有の保存領域へのアクセスに関するアクセス例外。
【0493】
14. 条件コード0。
【0494】
本明細書において説明されるように、単一の命令(例えば、ニューラル・ネットワーク処理支援命令)が、照会機能および複数の非照会機能を含む、複数の機能を実行するように構成される。各非照会機能は、大量のデータに対して動作することがあり、したがって、機能およびしたがって命令は、割り込まれることがある。割り込まれた場合、継続フラグなどの指標が設定され、継続状態バッファなどの選ばれた位置内の情報が、機能の処理を続行するために、命令の再実行において使用される。
【0495】
さらに、1つの実施形態では、非照会機能は、例えば、実行される機能を指定する命令を開始する汎用プロセッサ(または他のプロセッサ)とメモリを共有する専用プロセッサ(例えば、ニューラル・ネットワーク・プロセッサ105または他のプロセッサ)によって実行される。1つの例では、汎用プロセッサは、専用プロセッサが機能(例えば、テンソル計算)を実行できるようにするために、命令の実行中に、入力テンソルのアドレスなどの情報を専用プロセッサに提供する。機能の実行を含む命令の実行中に、汎用プロセッサは、情報を専用プロセッサに提供し続けるが、命令の割り込みまたは完了まで、他の作業を実行しない(すなわち、1つの例では、命令の実行が同期的である)。
【0496】
本発明の1つまたは複数の態様は、コンピュータ技術に密接に関係しており、コンピュータ内の処理を容易にし、その性能を改善する。さまざまな機能を実行するように構成された単一の設計されたマシン命令の使用は、複雑さを軽減すること、リソースの使用を減らすこと、および処理速度を上げることによって、コンピューティング環境内の性能を改善する。さらに、命令をディスパッチするプロセッサとメモリを共有する別のプロセッサによって1つまたは複数の機能が実行される、複数の機能のために構成された単一の命令(例えば、単一の設計された命令)を使用することによって、他のプロセッサと通信するためのコストのかかるメモリ・ピンニングおよび入出力動作が不要になる。
【0497】
コンピューティング環境内の処理が、本発明の1つまたは複数の態様に関連しているとき、その処理を容易にする1つの実施形態のさらなる詳細が、図7Aおよび7Bを参照して説明される。
【0498】
図7Aを参照すると、第1のプロセッサが、複数の機能を実行するように構成された命令を処理する(700)。例として、これらの複数の機能は、1つまたは複数のテンソルに対して動作するための機能を含む(702)。実行される複数の機能のうちの1つの機能の決定が行われる(704)。第1のプロセッサは、この機能に関連する情報を第2のプロセッサに提供し、この機能は第2のプロセッサによって実行される(708)。第1のプロセッサおよび第2のプロセッサは、メモリを共有し、メモリ一貫性を実現する(710)。
【0499】
命令を処理する第1のプロセッサとメモリを共有する第2のプロセッサによって1つまたは複数の機能が実行され得る、複数の機能のために構成された単一の命令を使用して、第2のプロセッサと通信するためのコストのかかるメモリ・ピンニングおよび入出力動作が不要になる。
【0500】
1つの例では、第1のプロセッサまたは第2のプロセッサのどちらが機能を実行するべきかに関する決定が行われ(712)、第2のプロセッサが機能を実行するべきとの決定に基づいて、提供が実行される(713)。
【0501】
1つの例では、第1のプロセッサまたは第2のプロセッサのどちらが機能を実行するべきかを決定することは、命令によって指定された機能が非照会機能であるか照会機能であるかを決定することを含む(714)。機能が照会機能であることに基づいて、第1のプロセッサが機能を実行することになり(716)、機能が非照会機能であることに基づいて、第2のプロセッサが機能を実行することになる(718)。
【0502】
例として、第1のプロセッサによる命令の処理は、命令の同期実行を含む(720)。
【0503】
さらなる態様では、図7Bを参照すると、機能の実行が割り込まれたかどうかに関する判定が行われる(730)。機能の実行が割り込まれたとの決定に基づいて、機能の実行を再開するために、選ばれたバッファ内の情報が取得される(732)。
【0504】
例として、機能の実行が割り込まれたかどうかの判定は、命令を再実行することにおいて使用されるパラメータ・ブロックに含まれている継続フラグをチェックすることを含む(734)。さらに、1つの例では、選ばれたバッファは、命令を再実行することにおいて使用されるパラメータ・ブロック内で示される(736)。
【0505】
1つの例では、1つまたは複数のテンソルは、第2のプロセッサ用に最適化された形式である(738)。さらに、例として、第2のプロセッサに提供される情報は、実行される機能によって操作される1つまたは複数のテンソルのうちの少なくとも1つのテンソルを取得するために使用される、メモリ・アドレス情報を含む(740)。
【0506】
例として、命令は、実行される機能を処理することに関連する情報を提供するパラメータ・ブロックを指定する(742)。パラメータ・ブロックは、例えば、実行される機能に依存する(744)。
【0507】
他の変形および実施形態が可能である。
【0508】
本発明の態様は、多くの種類のコンピューティング環境によって使用されてよい。本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例が、図8Aを参照して説明される。例として、図8Aのコンピューティング環境は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるz/Architecture(R)命令セット・アーキテクチャに基づく。しかし、z/Architecture命令セット・アーキテクチャは、1つの例示的なアーキテクチャにすぎない。さらに、コンピューティング環境は、Intel(R)x86アーキテクチャ、International Business Machines Corporationの他のアーキテクチャ、または他の企業のアーキテクチャ、あるいはその組合せを含むが、これらに限定されない、他のアーキテクチャに基づいてよい。Intelは、米国および他の国における、Intel Corporationまたはその子会社の商標または登録商標である。
【0509】
1つの例では、コンピューティング環境10は中央電子回路複合体(CEC:central electronics complex)11を含む。中央電子回路複合体11は、例えば、1つまたは複数の汎用プロセッサ(中央処理装置(CPU)13としても知られている)および1つまたは複数の専用プロセッサ(例えば、ニューラル・ネットワーク・プロセッサ31)などの1つまたは複数のプロセッサおよび入出力(I/O)サブシステム14に結合された、メモリ12(システム・メモリ、メイン・メモリ、主記憶装置、中央記憶装置、ストレージとしても知られている)などの、複数のコンポーネントを含んでいる。
【0510】
例として、1つまたは複数の専用プロセッサは、1つまたは複数の汎用プロセッサから分離していてよく、または少なくとも1つの専用プロセッサは、少なくとも1つの汎用プロセッサ内に埋め込まれてよく、あるいはその両方であってよい。他の変形も可能である。
【0511】
I/Oサブシステム14は、中央電子回路複合体の一部であるか、または中央電子回路複合体から分離することができる。I/Oサブシステム14は、主記憶装置12と、中央電子回路複合体に結合された入出力制御ユニット15および入出力(I/O)デバイス16との間の情報の流れを方向付ける。
【0512】
多くの種類のI/Oデバイスが使用されてよい。1つの特定の種類は、データ・ストレージ・デバイス17である。データ・ストレージ・デバイス17は、1つまたは複数のプログラム18、1つまたは複数のコンピュータ可読プログラム命令19、またはデータ、あるいはその組合せなどを格納することができる。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成され得る。
【0513】
中央電子回路複合体11は、取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体を含むか、またはそのようなにコンピュータ・システム・ストレージ媒体に結合されるか、あるいはその両方であることができる。例えば、中央電子回路複合体11は、取り外し不可、不揮発性の磁気媒体(通常は、「ハード・ドライブ」と呼ばれる)、取り外し可能、不揮発性の磁気ディスク(例えば、「フロッピー(R)・ディスク」)に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、あるいはCD-ROM、DVD-ROM、または他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りまたは書き込みを行うための光ディスク・ドライブ、あるいはその組合せを含むか、またはこれらに結合されるか、あるいはその両方であることができる。他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、中央電子回路複合体11と併用できるということが理解されるべきである。その例として、マイクロコードまたはミリコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
【0514】
さらに、中央電子回路複合体11は、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用され得る。中央電子回路複合体11での使用に適し得る周知のコンピューティング・システム、環境、または構成、あるいはその組合せの例としては、パーソナル・コンピュータ(PC:personal computer)システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、マイクロコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらのシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などが挙げられるが、これらに限定されない。
【0515】
中央電子回路複合体11は、1つまたは複数の実施形態では、論理分割または仮想化あるいはその両方のサポートを提供する。1つの実施形態では、図8Bに示されているように、メモリ12は、例えば、1つまたは複数の論理パーティション20、論理パーティションを管理するハイパーバイザ21、およびプロセッサ・ファームウェア22を含んでいる。ハイパーバイザ21の1つの例は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるプロセッサ・リソース/システム管理機構(PR/SM(TM):Processor Resource/System Manager)である。PR/SMは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。
【0516】
各論理パーティション20は、別々のシステムとして機能することができる。すなわち、各論理パーティションは、独立してリセットされて、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるz/OS(R)オペレーティング・システムなどのゲスト・オペレーティング・システム23、または結合機能制御コード(CFCC:coupling facility control code)などの他の制御コード24を実行し、異なるプログラム25と共に動作することができる。論理パーティション内で実行されるオペレーティング・システムまたはアプリケーション・プログラムは、完全なシステム全体にアクセスできるように見えるが、実際は、その一部のみが利用可能である。z/OSオペレーティング・システムが例として提供されているが、本発明の1つまたは複数の態様に従って、International Business Machines Corporationまたは他の企業あるいはその両方によって提供される他のオペレーティング・システムが使用されてよい。
【0517】
メモリ12は、論理パーティションに割り当てられ得る物理プロセッサ・リソースである、例えばCPU13(図8A)に結合される。例えば、論理パーティション20は、1つまたは複数の論理プロセッサを含んでよく、それらの論理プロセッサの各々は、論理パーティションに動的に割り当てられ得る物理プロセッサ・リソース13のすべてまたは一部を表す。
【0518】
さらに別の実施形態では、中央電子回路複合体は、(論理分割をサポートするか、またはサポートしない)仮想マシンのサポートを提供する。図8Cに示されているように、中央電子回路複合体11のメモリ12は、例えば、1つまたは複数の仮想マシン26、仮想マシンを管理する仮想マシン・マネージャ(ハイパーバイザ27など)、およびプロセッサ・ファームウェア28を含んでいる。ハイパーバイザ27の1つの例は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるz/VM(R)ハイパーバイザである。ハイパーバイザは、ホストと呼ばれることがある。z/VMは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。
【0519】
中央電子回路複合体の仮想マシンのサポートは、多数の仮想マシン26を操作する能力を提供し、各仮想マシン26は、異なるプログラム29と共に動作し、Linux(R)ゲスト・オペレーティング・システムなどのゲスト・オペレーティング・システム30を実行することができる。各仮想マシン26は、別々のシステムとして機能することができる。すなわち、各仮想マシンは、独立してリセットされ、ゲスト・オペレーティング・システムを実行し、異なるプログラムと共に動作することができる。仮想マシン内で実行されるオペレーティング・システムまたはアプリケーション・プログラムは、完全なシステム全体にアクセスできるように見えるが、実際は、その一部のみが利用可能である。z/VMおよびLinuxが例として提供されているが、本発明の1つまたは複数の態様に従って、他の仮想マシン・マネージャまたはオペレーティング・システムあるいはその両方が使用されてよい。Linux Foundation(世界規模での商標の所有者であるLinus Torvaldsの専用実施権者)からのサブライセンスに従って、登録商標Linux(R)が使用される。
【0520】
本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の実施形態が、図9Aを参照して説明される。この例では、コンピューティング環境36は、例えば、1つまたは複数のバス40または他の接続あるいはその両方を介して互いに結合された、ネイティブ中央処理装置(CPU)37、メモリ38、および1つまたは複数の入出力デバイスまたはインターフェイスあるいはその両方39を含む。例として、コンピューティング環境36は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるPowerPC(R)プロセッサ、ヒューレット・パッカード社(カリフォルニア州パロアルト市)によって提供されるインテル(R)Itanium(R)IIプロセッサ内蔵HP Superdome、あるいはInternational Business Machines Corporation、ヒューレット・パッカード社、インテル社、Oracle社、もしくは他の企業、またはその組合せによって提供されるアーキテクチャに基づく他のマシン、あるいはその組合せを含んでよい。PowerPCは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。Itaniumは、米国および他の国における、インテル社またはその子会社の商標または登録商標である。
【0521】
ネイティブ中央処理装置37は、環境内で処理中に使用される1つまたは複数の汎用レジスタまたは1つまたは複数の専用レジスタあるいはその両方などの、1つまたは複数のネイティブ・レジスタ41を含む。これらのレジスタは、いずれかの特定の時点での環境の状態を表す情報を含む。
【0522】
さらに、ネイティブ中央処理装置37は、メモリ38に格納された命令およびコードを実行する。1つの特定の例では、中央処理装置は、メモリ38に格納されたエミュレータ・コード42を実行する。このコードは、あるアーキテクチャで構成されたコンピューティング環境が、別のアーキテクチャをエミュレートできるようにする。例えば、エミュレータ・コード42は、z/Architecture命令セット・アーキテクチャ以外のアーキテクチャに基づくマシン(PowerPCプロセッサ、HP Superdomeサーバなど)が、z/Architecture命令セット・アーキテクチャをエミュレートし、z/Architecture命令セット・アーキテクチャに基づいて開発されたソフトウェアおよび命令を実行できるようにする。
【0523】
エミュレータ・コード42に関連するさらなる詳細が、図9Bを参照して説明される。メモリ38に格納されたゲスト命令43は、ネイティブCPU37のアーキテクチャ以外のアーキテクチャにおいて実行されるように開発された(例えば、マシン命令と相互関係がある)ソフトウェア命令を含む。例えば、ゲスト命43は、z/Architecture命令セット・アーキテクチャに基づくプロセッサ上で実行するように設計されていてよいが、代わりに、例えばインテルItanium IIプロセッサであってよい、ネイティブCPU37上でエミュレートされる。1つの例では、エミュレータ・コード42は、メモリ38から1つまたは複数のゲスト命令43を取得するため、および取得された命令のローカル・バッファリングを任意選択的に提供するための命令フェッチ・ルーチン44を含む。エミュレータ・コード42は、取得されたゲスト命令の種類を決定するため、およびゲスト命令を、1つまたは複数の対応するネイティブ命令46に変換するための命令変換ルーチン45も含む。この変換は、例えば、ゲスト命令によって実行される機能を識別すること、およびこの機能を実行するためのネイティブ命令を選択することを含む。
【0524】
さらに、エミュレータ・コード42は、ネイティブ命令の実行を引き起こすためのエミュレーション制御ルーチン47を含む。エミュレーション制御ルーチン47は、ネイティブCPU37に、1つまたは複数のすでに取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、そのような実行の終了時に、次のゲスト命令またはゲスト命令のグループの取得をエミュレートするために、制御を命令フェッチ・ルーチンに返してよい。ネイティブ命令46の実行は、データをメモリ38からレジスタに読み込むこと、データをレジスタからメモリに再び格納すること、あるいは変換ルーチンによって決定されたとおりに、何らかの種類の算術演算または論理演算を実行することを含んでよい。
【0525】
例えば、各ルーチンは、メモリに格納されてネイティブ中央処理装置37によって実行されるソフトウェアにおいて実装される。他の例では、ルーチンまたは動作のうちの1つまたは複数は、ファームウェア、ハードウェア、ソフトウェア、またはこれらの何らかの組合せにおいて実装される。エミュレートされたプロセッサのレジスタは、ネイティブCPUのレジスタ41を使用して、またはメモリ38内の位置を使用することによって、エミュレートされてよい。実施形態では、ゲスト命令43、ネイティブ命令46、およびエミュレータ・コード42は、同じメモリ内に存在してよく、または異なるメモリ・デバイス間で分配されてよい。
【0526】
エミュレートされ得る命令は、本発明の1つまたは複数の態様に従って、本明細書に記載されたニューラル・ネットワーク処理支援命令を含む。さらに、他の命令またはニューラル・ネットワーク処理の1つまたは複数の態様あるいはその両方が、本発明の1つまたは複数の態様に従ってエミュレートされてよい。
【0527】
前述のコンピューティング環境は、使用可能なコンピューティング環境の例にすぎない。分割されない環境、分割された環境、クラウド環境、またはエミュレートされた環境、あるいはその組合せを含むが、これらに限定されない、他の環境が使用されてよく、実施形態はいずれか1つの環境に限定されない。本明細書ではコンピューティング環境のさまざまな例が説明されるが、本発明の1つまたは複数の態様が、多くの種類の環境と共に使用されてよい。本明細書で提供されるコンピューティング環境は、例にすぎない。
【0528】
各コンピューティング環境は、本発明の1つまたは複数の態様を含むように構成されることが可能である。
【0529】
1つまたは複数の態様がクラウド・コンピューティングに関連してよい。
【0530】
本開示にはクラウド・コンピューティングに関する詳細な説明が含まれているが、本明細書において列挙された内容の実装は、クラウド・コンピューティング環境に限定されないと理解されるべきである。本発明の実施形態は、現在既知であるか、または今後開発される任意の他の種類のコンピューティング環境と組み合わせて実装され得る。
【0531】
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含んでよい。
【0532】
特徴は、次のとおりである。
【0533】
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間およびネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
【0534】
幅広いネットワーク・アクセス:能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する。
【0535】
リソース・プール:プロバイダの計算リソースは、プールされて、マルチテナント・モデルを使用して複数の利用者に提供され、さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高いレベルの抽象化では、場所(例えば、国、州、またはデータセンター)を指定できることがある。
【0536】
迅速な順応性:能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
【0537】
測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント)に適した抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用状況は、監視、制御、および報告されることが可能であり、利用されるサービスのプロバイダと利用者の両方に透明性を提供する。
【0538】
サービス・モデルは、次のとおりである。
【0539】
SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
【0540】
PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
【0541】
IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、および他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御することができ、場合によっては、選ばれたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御できる。
【0542】
デプロイメント・モデルは、次のとおりである。
【0543】
プライベート・クラウド:このクラウド・インフラストラクチャは、組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【0544】
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【0545】
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
【0546】
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
【0547】
クラウド・コンピューティング環境は、ステートレス性、低結合性、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを含んでいるインフラストラクチャである。
【0548】
ここで図10を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示されているように、クラウド・コンピューティング環境50は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス(例えば、パーソナル・デジタル・アシスタント(PDA:personal digital assistant)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組合せなど)が通信できる1つまたは複数のクラウド・コンピューティング・ノード52を含んでいる。ノード52は、互いに通信してよい。ノード52は、1つまたは複数のネットワーク内で、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはこれらの組合せなどに、物理的または仮想的にグループ化されてよい(図示されていない)。これによって、クラウド・コンピューティング環境50は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはSaaS、あるいはその組合せを提供できる。図10に示されたコンピューティング・デバイス54A~Nの種類は、例示のみが意図されており、コンピューティング・ノード52およびクラウド・コンピューティング環境50は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続(例えば、Webブラウザを使用した接続)あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
【0549】
ここで図11を参照すると、クラウド・コンピューティング環境50(図10)によって提供される機能的抽象レイヤのセットが示されている。図11に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
【0550】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(Reduced Instruction Set Computer)アーキテクチャベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーク・コンポーネント66が挙げられる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0551】
仮想化レイヤ70は、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75などの仮想的実体を提供できる抽象レイヤを備える。
【0552】
一例を挙げると、管理レイヤ80は、以下で説明される機能を提供してよい。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよび他のリソースの動的調達を行う。計測および価格設定82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する請求書またはインボイスの送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。セキュリティは、クラウドの利用者およびタスクの識別情報の検証を行うとともに、データおよび他のリソースの保護を行う。ユーザ・ポータル83は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理84は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当てと管理を行う。サービス水準合意(SLA:Service Level Agreement)計画および実行85は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、SLAに従って行う。
【0553】
ワークロード・レイヤ90は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供されてよいワークロードおよび機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育の配信93、データ解析処理94、トランザクション処理95、およびニューラル・ネットワーク処理支援処理96が挙げられる。
【0554】
本発明の態様は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいる1つまたは複数のコンピュータ可読ストレージ媒体を含んでよい。
【0555】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー(R)・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録されているパンチカードまたは溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組合せを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、電波または他の自由に伝搬する電磁波、導波管または他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの、それ自体が一過性の信号であると解釈されるべきではない。
【0556】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、またはワイヤレス・ネットワーク、あるいはその組合せ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
【0557】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル・ロジック回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行し、電子回路をカスタマイズしてよい。
【0558】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組合せが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【0559】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示できるものであってもよい。
【0560】
コンピュータ可読プログラム命令は、コンピュータ上、他のプログラム可能な装置上、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成する他のデバイス上で実行させる。
【0561】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、1つのステップとして実現されるか、同時に実行されるか、時間的に部分的または完全に重複する方法で実質的に同時に実行されるか、あるいは場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組合せは、規定された機能または動作を実行するか、あるいは専用ハードウェアとコンピュータ命令の組合せを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【0562】
上記に加えて、顧客の環境の管理を提供するサービス・プロバイダによって、1つまたは複数の態様が提供されること、提示されること、デプロイされること、管理されること、サービス提供されることなどが行われてよい。例えば、サービス・プロバイダは、1人または複数の顧客のために1つまたは複数の態様を実行するコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方を作成すること、維持すること、サポートすることなどを行うことができる。その見返りとして、サービス・プロバイダは、例えばサブスクリプションまたは料金契約あるいはその両方に従って、顧客から支払いを受け取ってよい。追加または代替として、サービス・プロバイダは、1つまたは複数のサード・パーティへの広告コンテンツの販売から支払いを受け取ってよい。
【0563】
1つの態様では、1つまたは複数の実施形態を実行するために、アプリケーションがデプロイされてよい。1つの例として、アプリケーションのデプロイは、1つまたは複数の実施形態を実行するよう機能するコンピュータ・インフラストラクチャを提供することを含む。
【0564】
さらなる態様として、コンピュータ可読コードをコンピューティング・システムに統合することを含むコンピューティング・インフラストラクチャがデプロイされてよく、このコンピューティング・インフラストラクチャでは、コンピューティング・システムと組み合わせたコードが、1つまたは複数の実施形態を実行できる。
【0565】
さらに別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含んでいる、コンピューティング・インフラストラクチャを統合するためのプロセスが提供されてよい。コンピュータ・システムは、コンピュータ可読媒体を備え、このコンピュータ可読媒体では、コンピュータ媒体が1つまたは複数の実施形態を含む。コンピュータ・システムと組み合わせたコードは、1つまたは複数の実施形態を実行できる。
【0566】
上ではさまざまな実施形態が説明されたが、それらは単なる例である。例えば、1つまたは複数の態様を組み込むため、または1つまたは複数の態様を使用するため、あるいはその両方のために、他のアーキテクチャのコンピューティング環境が使用され得る。さらに、さまざまな命令または動作が使用されてよい。さらに、異なる種類のレジスタまたは異なるレジスタあるいはその両方が使用されてよい。さらに、他のデータ形式、データ・レイアウト、またはデータ・サイズ、あるいはその組合せがサポートされてよい。1つまたは複数の実施形態では、1つまたは複数の汎用プロセッサ、1つまたは複数の専用プロセッサ、または汎用プロセッサと専用プロセッサの組合せが使用されてよい。多くの変形が可能である。
【0567】
本明細書では、さまざまな態様が説明される。さらに、本発明の態様の思想から逸脱することなく、多くの変形が可能である。本明細書に記載された各態様または特徴およびその変形を、特に矛盾しない限り、任意の他の態様または特徴と組み合わせることができるということに、注意するべきである。
【0568】
さらに、他の種類のコンピューティング環境が、利益を受けることができ、使用され得る。例として、プログラム・コードの格納または実行あるいはその両方を行うのに適した、システム・バスを介して直接的または間接的にメモリ素子に結合された少なくとも2つのプロセッサを含んでいる、データ処理システムを使用できる。これらのメモリ素子は、例えば、プログラム・コードの実際の実行時に使用されるローカル・メモリ、バルク・ストレージ、および実行時にバルク・ストレージからコードが取得されなければならない回数を減らすために少なくとも一部のプログラム・コードを一時的に格納するキャッシュ・メモリを含む。
【0569】
入出力デバイスまたはI/Oデバイス(キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サム・ドライブ、および他の記憶媒体などを含むが、これらに限定されない)は、直接的に、または介在するI/Oコントローラを通じて、システムに結合され得る。ネットワーク・アダプタがシステムに結合され、介在するプライベート・ネットワークまたはパブリック・ネットワークを通じて、データ処理システムを、他のデータ処理システムまたはリモート・プリンタまたはストレージ・デバイスに結合できるようにしてもよい。モデム、ケーブル・モデム、およびイーサネット(R)・カードは、使用可能なネットワーク・アダプタのうちの、ごくわずかの種類にすぎない。
【0570】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、限定することを意図していない。本明細書において使用されるとき、単数形「a」、「an」、および「the」は、文脈で特に明示的に示されない限り、複数形も含むよう意図されている。「備える」または「備えている」あるいはその両方の用語は、本明細書で使用される場合、記載された機能、整数、ステップ、動作、要素、またはコンポーネント、あるいはその組合せの存在を示すが、1つまたは複数の他の機能、整数、ステップ、動作、要素、コンポーネント、またはこれらのグループ、あるいはその組合せの存在または追加を除外していないということが、さらに理解されるであろう。
【0571】
下の特許請求の範囲内のすべての手段またはステップおよび機能要素の対応する構造、材料、動作、および等価なものは、もしあれば、具体的に請求されるとき、他の請求される要素と組み合わせて機能を実行するための任意の構造、材料、または動作を含むことが意図されている。1つまたは複数の実施形態の説明は、例示および説明の目的で提示されているが、網羅的であることは意図されておらず、開示された形態に限定されない。多くの変更および変形が、当業者にとって明らかであろう。さまざまな態様および実際的な適用を最も適切に説明するため、および他の当業者が、企図されている特定の用途に適しているようなさまざまな変更を伴う多様な実施形態を理解できるようにするために、実施形態が選択されて説明された。
図1A
図1B
図2A
図2B
図3A
図3B
図3C
図3D
図3E
図3F
図3G
図4
図5
図6
図7A
図7B
図8A
図8B
図8C
図9A
図9B
図10
図11
【手続補正書】
【提出日】2024-03-26
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラムであって、コンピュータに
第1のプロセッサによって、複数の機能を実行するように構成された命令を処理することであって、前記複数の機能が、1つまたは複数のテンソルに対して動作するための機能を含む、前記処理することと、
実行される前記複数の機能のうちの1つの機能を決定することと、
前記第1のプロセッサによって、前記機能に関連する情報を第2のプロセッサに提供することであって、前記機能が前記第2のプロセッサによって実行され、前記第1のプロセッサおよび前記第2のプロセッサが、メモリを共有し、メモリ一貫性を実現する、前記提供することとを含む方法を実行させる、コンピュータ・プログラム。
【請求項2】
前記方法が、前記第1のプロセッサまたは前記第2のプロセッサのどちらが前記機能を実行するべきかを決定することをさらに含み、前記機能が前記第2のプロセッサによって実行されるべきとの決定に基づいて、前記提供が実行される、請求項1に記載のコンピュータ・プログラム。
【請求項3】
前記第1のプロセッサまたは前記第2のプロセッサのどちらが前記機能を実行するべきかを前記決定することが、前記命令によって指定された前記機能が非照会機能であるか照会機能であるかを決定することを含み、前記機能が照会機能であることに基づいて、前記第1のプロセッサが前記機能を実行することになり、前記機能が非照会機能であることに基づいて、前記第2のプロセッサが前記機能を実行することになる、請求項2に記載のコンピュータ・プログラム。
【請求項4】
前記第1のプロセッサによる前記命令の前記処理が、前記命令の同期実行を含む、請求項1に記載のコンピュータ・プログラム。
【請求項5】
前記方法が、
前記機能の実行が割り込まれたかどうかを判定することと、
前記機能の実行が割り込まれたとの決定に基づいて、前記機能の実行を再開するために、選ばれたバッファ内の情報を取得することとをさらに含む、請求項1に記載のコンピュータ・プログラム。
【請求項6】
前記機能の実行が割り込まれたかどうかの前記判定が、前記命令を再実行することにおいて使用されるパラメータ・ブロックに含まれている継続フラグをチェックすることを含む、請求項5に記載のコンピュータ・プログラム。
【請求項7】
前記選ばれたバッファが、前記命令を再実行することにおいて使用されるパラメータ・ブロック内で示される、請求項5に記載のコンピュータ・プログラム。
【請求項8】
前記1つまたは複数のテンソルが、前記第2のプロセッサ用に最適化された形式である、請求項1に記載のコンピュータ・プログラム。
【請求項9】
前記第2のプロセッサに提供される前記情報が、実行される前記機能によって操作される前記1つまたは複数のテンソルのうちの少なくとも1つのテンソルを取得するために使用される、メモリ・アドレス情報を含む、請求項1に記載のコンピュータ・プログラム。
【請求項10】
前記命令が、実行される前記機能を処理することに関連する情報を提供するパラメータ・ブロックを指定し、前記パラメータ・ブロックが、実行される前記機能に依存する、請求項1に記載のコンピュータ・プログラム。
【請求項11】
コンピューティング環境内の処理を容易にするためのコンピュータ・システムであって、前記コンピュータ・システムが、
メモリと、
前記メモリと通信する少なくとも1つのプロセッサとを備え、前記コンピュータ・システムが方法を実行するように構成されており、前記方法が、
第1のプロセッサによって、複数の機能を実行するように構成された命令を処理することであって、前記複数の機能が、1つまたは複数のテンソルに対して動作するための機能を含む、前記処理することと、
実行される前記複数の機能のうちの1つの機能を決定することと、
前記第1のプロセッサによって、前記機能に関連する情報を第2のプロセッサに提供することであって、前記機能が前記第2のプロセッサによって実行され、前記第1のプロセッサおよび前記第2のプロセッサが、メモリを共有し、メモリ一貫性を実現する、前記提供することとを含む、コンピュータ・システム。
【請求項12】
前記方法が、前記第1のプロセッサまたは前記第2のプロセッサのどちらが前記機能を実行するべきかを決定することをさらに含み、前記機能が前記第2のプロセッサによって実行されるべきとの決定に基づいて、前記提供が実行される、請求項11に記載のコンピュータ・システム。
【請求項13】
前記第1のプロセッサまたは前記第2のプロセッサのどちらが前記機能を実行するべきかを前記決定することが、前記命令によって指定された前記機能が非照会機能であるか照会機能であるかを決定することを含み、前記機能が照会機能であることに基づいて、前記第1のプロセッサが前記機能を実行することになり、前記機能が非照会機能であることに基づいて、前記第2のプロセッサが前記機能を実行することになる、請求項12に記載のコンピュータ・システム。
【請求項14】
前記方法が、
前記機能の実行が割り込まれたかどうかを判定することと、
前記機能の実行が割り込まれたとの決定に基づいて、前記機能の実行を再開するために、選ばれたバッファ内の情報を取得することとをさらに含む、請求項11に記載のコンピュータ・システム。
【請求項15】
前記第1のプロセッサによる前記命令の前記処理が、前記命令の同期実行を含む、請求項11に記載のコンピュータ・システム。
【請求項16】
コンピューティング環境内の処理を容易にするコンピュータ実装方法であって、前記コンピュータ実装方法が、
第1のプロセッサによって、複数の機能を実行するように構成された命令を処理することであって、前記複数の機能が、1つまたは複数のテンソルに対して動作するための機能を含む、前記処理することと、
実行される前記複数の機能のうちの1つの機能を決定することと、
前記機能が前記第2のプロセッサによって実行されるべきとの決定に基づいて、前記第1のプロセッサによって、前記機能に関連する情報を第2のプロセッサに提供することであって、前記第1のプロセッサおよび前記第2のプロセッサが、メモリを共有し、メモリ一貫性を実現する、前記提供することとを含む、コンピュータ実装方法。
【請求項17】
前記第1のプロセッサまたは前記第2のプロセッサのどちらが前記機能を実行するべきかを決定することをさらに含み、前記機能が前記第2のプロセッサによって実行されるべきとの決定に基づいて、前記提供が実行される、請求項16に記載のコンピュータ実装方法。
【請求項18】
前記第1のプロセッサまたは前記第2のプロセッサのどちらが前記機能を実行するべきかを前記決定することが、前記命令によって指定された前記機能が非照会機能であるか照会機能であるかを決定することを含み、前記機能が照会機能であることに基づいて、前記第1のプロセッサが前記機能を実行することになり、前記機能が非照会機能であることに基づいて、前記第2のプロセッサが前記機能を実行することになる、請求項17に記載のコンピュータ実装方法。
【請求項19】
前記機能の実行が割り込まれたかどうかを判定することと、
前記機能の実行が割り込まれたとの決定に基づいて、前記機能の実行を再開するために、選ばれたバッファ内の情報を取得することとをさらに含む、請求項16に記載のコンピュータ実装方法。
【請求項20】
前記第1のプロセッサによる前記命令の前記処理が、前記命令の同期実行を含む、請求項16に記載のコンピュータ実装方法。
【請求項21】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラムであって、コンピュータに
複数の機能を実行するように構成された命令を処理することであって、前記複数の機能が、1つまたは複数の入力テンソルに対して動作するための機能を含み、前記1つまたは複数の入力テンソルが、前記複数の機能のうちの1つまたは複数の機能を実行するために使用される選ばれたプロセッサ用に最適化された形式を有する、前記処理することと、
前記複数の機能から、実行される特定の機能を決定することと、
前記特定の機能の実行を開始することとを含む方法を実行させる、コンピュータ・プログラム。
【国際調査報告】