(57)【要約】      （修正有）【課題】プロセッサは複数のメモリ装置を含み、複数のメモリ装置の各々がＤＲＡＭ基盤プロセシング装置を形成する、プロセッサ拡張アーキテクチャを提供する。【解決手段】プロセッサは複数のメモリ装置を含み、複数のメモリ装置の各々は複数のメモリセルを含み、複数のメモリ装置の各々はメモリとして、計算装置として、又はハイブリッドメモリ計算装置として動作するように構成可能である。また、複数のメモリ装置を含む分散された計算システム内のワークフローを制御する方法は、複数のメモリ装置の中で１つ以上が遂行するべき作業を含むワークフローを受信する段階と、ワークフローに応じて作業又は作業の一部を遂行する段階と、作業又は作業の一部の完了の後にワークフローの中で残りを複数のメモリ装置の中で他の１つに送る段階と、を含む。【選択図】図６
2018073414.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリ装置を含み、
前記複数のメモリ装置の各々は、複数のメモリセルを含み、
前記複数のメモリ装置の各々は、メモリとして、計算装置として、又はハイブリッドメモリ計算装置（ｈｙｂｒｉｄ  ｍｅｍｏｒｙ−ｃｏｍｐｕｔａｔｉｏｎ  ｕｎｉｔ）として動作するように構成可能であるプロセッサ。
【請求項２】
前記複数のメモリ装置の少なくとも１つは、ホストから作業（ｊｏｂ）を受信するように構成される請求項１に記載のプロセッサ。
【請求項３】
前記複数のメモリ装置は、前記複数のメモリ装置に対する作業分割、前記複数のメモリ装置へのデータ分配、前記複数のメモリ装置からのデータ収集、又は前記複数のデータ装置への作業分配の中で少なくとも１つを遂行するように構成されるホストによって制御されるように構成される請求項１に記載のプロセッサ。
【請求項４】
メモリ装置作業マッピング（ｍｅｍｏｒｙ  ｕｎｉｔ−ｊｏｂ  ｍａｐｐｉｎｇ）情報を格納するように構成される格納装置をさらに含む請求項１に記載のプロセッサ。
【請求項５】
前記複数のメモリ装置の各々は、ＤＲＡＭを含む請求項１に記載のプロセッサ。
【請求項６】
計算装置として構成される前記複数のメモリ装置は、作業を全体として遂行するのに使用されるか、又は遂行する計算装置が無ければ、前記作業の一部を各々遂行するように構成可能である請求項１に記載のプロセッサ。
【請求項７】
前記複数のメモリ装置は、拡張可能なクラスタアーキテクチャ内に配置される請求項１に記載のプロセッサ。
【請求項８】
複数のメモリコントローラをさらに含み、
前記複数のメモリコントローラの各々は、前記複数のメモリ装置の中で１つ以上を制御するように構成される請求項１に記載のプロセッサ。
【請求項９】
前記複数のメモリ装置間のワークフロー（ｗｏｒｋ  ｆｌｏｗ）をルーティング（ｒｏｕｔｉｎｇ）するための複数のルータ（ｒｏｕｔｅｒ）をさらに含む請求項８に記載のプロセッサ。
【請求項１０】
前記複数のルータの中で少なくとも１つは、前記複数のメモリコントローラの中で該当するメモリコントローラに埋め込まれる請求項９に記載のプロセッサ。
【請求項１１】
複数のメモリ装置を含む分散された計算システム内のワークフロー（ｗｏｒｋ  ｆｌｏｗ）を制御する方法において、
前記複数のメモリ装置の中で１つ以上によって遂行される作業（ｊｏｂ）を含む前記ワークフローを受信する段階と、
前記複数のメモリ装置の中で１つによって前記ワークフローに応じて前記作業又は前記作業の一部を遂行する段階と、
前記複数のメモリ装置の中で前記１つによって前記作業又は前記作業の前記一部の完了後に前記ワークフローの中で残りを前記複数のメモリ装置の中で他の１つに送る段階と、を含む方法。
【請求項１２】
前記ワークフローは、作業要請を受信するホストによって生成され、そして前記複数のメモリ装置の中で少なくとも１つに提供される請求項１１に記載の方法。
【請求項１３】
前記ワークフローは、前記複数のメモリ装置の中で１つ以上によって生成される請求項１１に記載の方法。
【請求項１４】
資源の可用性に応じて計算装置として又はメモリとして前記複数のメモリ装置の中で１つ以上を再構成する段階をさらに含む請求項１１に記載の方法。
【請求項１５】
非同期式通信プロトコルが前記複数のメモリ装置の間の通信に使用される請求項１１に記載の方法。
【請求項１６】
前記ワークフローの前記残りは、前記ワークフロー内の全ての作業が完了されるか、或いは失敗に終了される時まで前記複数のメモリ装置の中でその次の装置に送信される請求項１１に記載の方法。
【請求項１７】
複数のメモリ装置の中で１つが前記作業を全体的に完了できなければ、前記作業は、分割される請求項１１に記載の方法。
【請求項１８】
複数のメモリ装置を含む分散された計算システム内のワークフロー（ｗｏｒｋ  ｆｌｏｗ）を制御する方法において、
第１作業を遂行するために前記複数のメモリ装置の中で１つによってホストから第１要請を受信する段階と、
前記複数のメモリ装置の中で前記１つによって前記第１作業を遂行する段階と、
前記第１作業の結果を前記複数の装置の中で前記１つから前記ホストに提供する段階と、
第２作業を遂行するために前記複数のメモリ装置の中で他の１つによって前記ホストから第２要請を受信する段階と、を含む方法。
【請求項１９】
前記複数のメモリ装置の中で前記他の１つは、前記ホストから前記第１作業の前記結果をさらに受信する請求項１８に記載の方法。
【請求項２０】
前記分散された計算システムは、前記第１作業及び第２作業を送信し、そして前記第１作業及び前記第２作業の結果を読み出すように構成されるホストをさらに含む請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明に係る実施形態の１つの側面は、複数のメモリ装置を含むプロセッサに係り、特に、複数のメモリ装置の各々がＤＲＡＭ基盤プロセシング装置（ＤＰＵ、ＤＲＡＭ−ｂａｓｅｄ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）を形成するＤＰＵクラスタの拡張アーキテクチャを具現するプロセッサに係る。
【０００２】
本発明の実施形態の他の１つの側面は、分散計算システム内のワークフローを制御する方法に係り、特に、複数のメモリ装置の各々がＤＰＵを形成するＤＰＵクラスタの拡張アーキテクチャにおける分散計算システム内のワークフローを制御する方法に係る。
【背景技術】
【０００３】
ＤＰＵ（ＤＲＡＭ基盤プロセシング装置）は、例えばＧＰＵ（ｇｒａｐｈｉｃｓ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）及びＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）のような他のプロセッサ（ｐｒｏｃｅｓｓｏｒ）及び／又はグラフィック加速器（ｇｒａｐｈｉｃｓ  ａｃｃｅｌｅｒａｔｏｒｓ）に対する代替加速器として使用され得る。ＤＰＵに対応する新しいエコシステム（ｅｃｏｓｙｓｔｅｍ）には、ＤＰＵのための向上された又は最適のマッピング（ｍａｐｐｉｎｇ）及びスケジューリング（ｓｃｈｅｄｕｌｉｎｇ）を達成するために設計されたドライバ（ｄｒｉｖｅｒ）及びライブラリ（ｌｉｂｒａｒｙ）が提供される必要がある。
【０００４】
ＤＰＵは再構成可能（ｒｅｃｏｎｆｉｇｕｒａｂｌｅ）であり、プログラム可能（ｐｒｏｇｒａｍｍａｂｌｅ）である。例えば、ＤＲＡＭセルによって提供されるロジックは、例えば加算器、乗算器等の相異なる演算を提供するように構成（又は再構成）され得る。例えば、ＤＰＵは若干の変更を伴うが、「３Ｔ１Ｃ」（セル当たり、３つのトランジスタと１つのキャパシタ）型、又は、「１Ｔ１Ｃ」（セル当たり、１つのトランジスタ、１つのキャパシタ）型の）ＤＲＡＭプロセス及び構造に基づく。ＤＰＵは普通、特定の計算（コンピューティング）ロジック（例えば、加算器）を含まないので、その代わりにメモリセルが計算のために使用される。
【０００５】
現在の各ＤＰＵは、例えば１６ＧＢ（ｇｉｇａ−ｂｙｔｅ）容量を有し、チップ上に８Ｍ（８百万）個のコンピューティング装置を有するが、それでも、例えば各ＤＰＵは１０億個のニューロンを含む人間の脳にはるかに及ばない。例えば、人間の脳と類似なニューラルネットワーク（ＮＮ：ｎｅｕｒａｌ  ｎｅｔｗｏｒｋ）を具現するためには数百から数千個のＤＰＵが必要とする。
しかし、このような膨大なＤＰＵを駆使して人間の脳と類似なニューラルネットワークを可能にする多重ＤＰＵ拡張アーキテクチャは従来、実現していなかった。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は上述した技術的課題を解決するためのものであって、本発明の目的は、人間の脳と類似なニューラルネットワークの具現に向けた、多重ＤＰＵ（ＤＲＡＭ基盤プロセシング装置）のための拡張アーキテクチャを具現するプロセッサと、その際の分散計算システム内のワークフローを制御する方法を提供することにある。
【課題を解決するための手段】
【０００７】
ＣＰＵ／ＧＰＵの拡張と比較して、ＤＰＵの拡張はメモリ（例えば、ＤＩＭＭ）の拡張とより類似し、より多数の集積（統合）の支援が可能である。また、通信オーバヘッドが削減されるか、或いは最小化される。
【０００８】
本発明の例示的な実施形態に係るプロセッサは、複数のメモリ装置（ユニット，ｕｎｉｔ）を含み、複数のメモリ装置の各々は複数のメモリセルを含み、複数のメモリ装置の各々は、メモリ（即ち、従来のメモリ装置）として、計算装置として、又はハイブリッドメモリ計算装置（ｈｙｂｒｉｄ  ｍｅｍｏｒｙ−ｃｏｍｐｕｔａｔｉｏｎ  ｕｎｉｔ、メモリと計算装置のハイブリッド型装置）として動作するように構成可能である。
【０００９】
複数のメモリ装置の少なくとも１つはホストから作業を受信するように構成されることができる。
複数のメモリ装置は複数のメモリ装置に対する作業分割、複数のメモリ装置へのデータ分配、複数のメモリ装置からのデータ収集、又は複数のデータ装置への作業分配の中で少なくとも１つを遂行するように構成されるホストによって制御されるように構成されることができる。
プロセッサはメモリ装置作業マッピング情報を格納するように構成される格納装置をさらに含むことができる。
複数のメモリ装置の各々はＤＲＡＭを含むことができる。
計算装置として構成された複数のメモリ装置は作業を全体的に遂行するのに使用できる又は遂行できる計算装置が無ければ、該当作業の一部を各々遂行するように構成されることができる。
複数のメモリ装置は拡張可能なクラスタアーキテクチャ内に配置されることができる。
プロセッサは複数のメモリコントローラをさらに含み、複数のメモリコントローラの各々は複数のメモリ装置の中で１つ以上を制御するように構成されることができる。
プロセッサは複数のメモリ装置の間のワークフローをルーティングするための複数のルータをさらに含むことができる。
複数のルータの中で少なくとも１つは複数のメモリコントローラの中で対応するメモリコントローラに埋め込まれることができる。
【００１０】
本発明の例示的な実施形態に係って、複数のメモリ装置を含む分散された計算システム内のワークフローを制御する方法が提供される。方法は複数のメモリ装置の中で１つ以上によって遂行される作業を含むワークフローを受信する段階と、複数のメモリ装置の中で１つによってワークフローに応じて作業又は作業の一部を遂行する段階と、複数のメモリ装置の中で１つによって作業又は作業の一部の完了の後にワークフローの中で残りを複数のメモリ装置の中で他の１つに送る段階と、を含む。
【００１１】
ワークフローは作業要請を受信するホストによって生成され、そして複数のメモリ装置の中で少なくとも１つに提供されることができる。
ワークフローは複数のメモリ装置の中で１つ以上によって生成されることができる。
方法は資源の可用性に応じて計算装置として又はメモリとして複数のメモリ装置の中で１つ以上を再構成する段階をさらに含むことができる。
非同期式通信プロトコルが複数のメモリ装置の間の通信に使用されることができる。
ワークフローの残りはワークフロー内の全ての作業が完了されるか、或いは失敗で終わる時まで複数のメモリ装置の中でその次のものに送信されることができる。
複数のメモリ装置の中で１つが作業を全体的に完了できなければ、作業は分割されることができる。
【００１２】
本発明の例示的な実施形態に係って、複数のメモリ装置を含む分散された計算システム内のワークフローを制御する方法が提供される。方法は第１作業を遂行するために複数のメモリ装置の中で１つによってホストから第１要請を受信する段階と、複数のメモリ装置の中で１つによって第１作業を遂行する段階と、第１作業の結果を複数の装置の中で１つからホストに提供する段階と、第２作業を遂行するために複数のメモリ装置の中で他の１つによってホストから第２要請を受信する段階と、を含む。
【００１３】
複数のメモリ装置の中で他の１つはホストから第１作業の結果をさらに受信することができる。
分散された計算システムは第１作業及び第２作業を送信し、そして第１作業及び第２作業の結果を読み出すように構成されるホストをさらに含むことができる。
【発明の効果】
【００１４】
本発明の実施形態に係るプロセッサは、含まれる複数のメモリ装置の各々が、メモリ（即ち、従来のメモリ装置）として、計算装置として、又はハイブリッドメモリ計算装置として動作するように構成可能である。
また、本発明の実施形態に係る複数のメモリ装置を含む分散された計算システム内のワークフローを制御する方法は、複数のメモリ装置の中で１つ以上が遂行するべき作業を含むワークフローを受信する段階と、ワークフローに応じて作業又は作業の一部を遂行する段階と、作業又は作業の一部の完了の後にワークフローの中で残りを複数のメモリ装置の中で他の１つに送る段階と、を含む。
従って、人間の脳と類似なニューラルネットワーク能力を提供できる、多重ＤＰＵのための拡張アーキテクチャを具現するプロセッサと、その際の分散計算システム内のワークフローを制御する方法が提供される。
【図面の簡単な説明】
【００１５】
本発明のこれら及び他の特徴及び側面は明細書、請求項、及び添付図面を参照して認識され、理解されるべきである。
【図１】本発明の例示的な実施形態に係るコンピュータプロセシングアーキテクチャの概略ブロック図である。
【図２】本発明の例示的な実施形態に係る分散されたＤＰＵクラスタアーキテクチャの図式のブロック図である。
【図３】本発明の例示的な実施形態に係って埋め込まれたルータを有する分散されたＤＰＵクラスタアーキテクチャの図式のブロック図である。
【図４】ホストによる中央集中式制御が具現された本発明の例示的な実施形態に係ってホストによる分散されたＤＰＵクラスタ制御の順序図である。
【図５】ホストが各計算段階で積極的な役割を果たす本発明の例示的な実施形態に係る分散されたＤＰＵクラスタ制御の順序図である。
【図６】アドホック制御が具現された本発明の例示的な実施形態に係る分散されたＤＰＵクラスタ制御の順序図である。
【発明を実施するための形態】
【００１６】
本発明の実施形態は複数のＤＰＵ（ＤＲＡＭ−ｂａｓｅｄ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ（ＤＲＡＭ基盤プロセシング装置））のための方法及び連関された構造に係り、複数のＤＰＵの各々はＤＰＵクラスタアーキテクチャ（ｃｌｕｓｔｅｒ  ａｒｃｈｉｔｅｃｔｕｒｅ）内のノード（ｎｏｄｅ）として構成される。本発明の多様な実施形態に係って、各ＤＰＵはノードとして言及されるか、又は（複数のＤＰＵを含む）各ＤＰＵモジュールがノードとして言及される。例示的な実施形態で、各ノードは多重ＤＰＵモジュールの集合を含む。例えば、ノードは複数のＤＰＵモジュールを有するサーバを含み、ここで、各ＤＰＵモジュールは多重ＤＰＵ（又はＤＰＵ装置）を有する。ＤＰＵは一般的な大規模並列プロセッサ（ｍａｓｓｉｖｅｌｙ  ｐａｒａｌｌｅｌ  ｐｒｏｃｅｓｓｏｒｓ）又はプロセシングを提供できる均一に融合（ｍｅｒｇｅｄ）されたメモリ及び加速器プール（ｐｏｏｌ）を構成する。各ノード内の資源はハードウェア（例えば、算術演算・論理装置（Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃ  Ｕｎｉｔ；ＡＬＵ）の数）によって制限される。
【００１７】
本発明の例示的な実施形態に係るコンピュータプロセシングアーキテクチャ（又はシステム）は複数のメモリ装置（例えば、ＤＰＵ）を含むプロセッサとして言及され、ここでメモリ装置の各々は３Ｔ１Ｃ型メモリセル及び／又は１Ｔ１Ｃ型メモリセルを含む複数のメモリセルを含む。例示的な実施形態に係って、システムの資源要求に基づいて及び／又はユーザー設計／嗜好に基づいて、メモリとして、計算装置として、又はハイブリッドメモリ計算装置として動作するように、実質的に同一の構造を有するメモリ装置を用いて構成（及び／又は、再構成）できるという柔軟性が提供される。
【００１８】
図１は本発明の例示的な実施形態に係るコンピュータプロセシングアーキテクチャ１００（又はシステムアーキテクチャ）の概略ブロック図である。
【００１９】
コンピュータプロセシングアーキテクチャ１００はソフトウェアスタック（ｓｏｆｔｗａｒｅ  ｓｔａｃｋ）がその上で動作するように生成されるハードウェア１５０（又はハードウェアレイヤ（ｌａｙｅｒ））を含む。コンピュータプロセシングアーキテクチャ１００はディープラーニング（ｄｅｅｐ  ｌｅａｒｎｉｎｇ）を加速するように構成可能であり，ニューラルネットワーク（ｎｅｕｒａｌ  ｎｅｔｗｏｒｋ、ＮＮ）をエミュレート（ｅｍｕｌａｔｅ）、或いは、シミュレート（ｓｉｍｕｌａｔｅ）可能である。
【００２０】
ハードウェア１５０は、例えばＧＰＵモジュール（ＧＰＵ  ｍｏｄｕｌｅ）１５２、ＴＰＵモジュール（ｔｅｎｓｏｒ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ  ｍｏｄｕｌｅ；ＴＰＵ  ｍｏｄｕｌｅ）１５４、ＤＰＵモジュール１５６、及び多重ＤＰＵモジュール１５８を含む。ＧＰＵモジュール１５２及びＴＰＵモジュール１５４の各々は、ＧＰＵ又はＴＰＵを各々含み、複数の支援チップを含む。ＴＰＵは、例えばＡＳＩＣ上で具現され、マシンラーニング（ｍａｃｈｉｎｅ  ｌｅａｒｎｉｎｇ）向けに構成されるか、或いは最適化される。例示的な実施形態に係って、ＤＰＵは当業者に公知されたＴＰＵ又はＧＰＵのような他の加速器と同様に作動する。
【００２１】
図１に示されたＤＰＵモジュールは２つの形態因子（ｆｏｒｍ  ｆａｃｔｏｒ）を有する。第１因子はＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）バス上のＤＰＵモジュール１５６であり、第２因子はＤＩＭＭ（Ｄｕａｌ  Ｉｎ−ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）バス上の多重ＤＰＵモジュール１５８である。図１では、ＤＰＵモジュール１５６が単一のＤＰＵ装置を有する場合が示されたが、ＤＰＵモジュール１５６は一般に１つ以上の埋込形ＤＰＵを含むＰＣＩｅ装置である。同じく図１では、多重ＤＰＵモジュール１５８が多重のＤＰＵ装置を有する場合が示されたが、多重ＤＰＵモジュール１５８は１つ以上の埋込形ＤＰＵを含むＤＩＭＭである。
コンピュータプロセシングアーキテクチャ１００のハードウェア１５０内のＤＰＵモジュールはＰＣＩｅ装置及び／又はＤＩＭＭに制限されず、ＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）装置又はＤＰＵを含む他の類型のメモリ装置を含む場合があることが理解されなければならない。ＤＰＵのコンピューティングセルアレイ（ｃｏｍｐｕｔｉｎｇ  ｃｅｌｌ  ａｒｒａｙｓ）は、「３Ｔ１Ｃ）」（３つのトランジスタと、１つのキャパシタ）型ＤＲＡＭコンピューティングセルトポグラフィ（ｔｏｐｏｇｒａｐｈｙ）、及び／又は、「１Ｔ１Ｃ」（１つのトランジスタと、１つのキャパシタ）型ＤＲＡＭコンピューティングセルポグラフィを含んで構成され得る。
【００２２】
図１に示されたハードウェア１５０はＧＰＵモジュール１５２、ＴＰＵモジュール１５４、ＤＰＵモジュール１５６、及び多重ＤＰＵモジュール１５８の各々を１つずつ有するが、他の実施形態において、ハードウェアはＧＰＵモジュール、ＴＰＵモジュール、ＤＰＵモジュール、及び／又は多重ＤＰＵモジュールの任意の他の適切な組合せを含む。例えば、一実施形態において、ハードウェアはＤＰＵモジュール及び／又は多重ＤＰＵモジュールのみを含む。
【００２３】
ソフトウェアスタック１１０は「１つ以上のライブラリ及びドライバ」１４０（例えば、「ライブラリ及びドライバ」レイヤ）、１つ以上のフレームワーク（ｆｒａｍｅｗｏｒｋ）１３０（例えば、フレームワークレイヤ）、及び１つ以上のアプリケーション（ａｐｐｌｉｃａｔｉｏｎ）１２０（例えば、アプリケーションレイヤ）を含む。ここで１つ以上のライブラリは、例えばＣＵＤＡ（登録商標）ディープニューラルネットワークライブラリ（ＣＵＤＡ（登録商標）  Ｄｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ  ｌｉｂｒａｒｙ；ｃｕＤＮＮ）のような、ＮＶＩＤＩＡ（登録商標）社から供給され利用可能であるニューラルネットワークライブラリ（Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ  Ｌｉｂｒａｒｙ；ＮＮＬ）１４２を含む。このＮＭＬ（１４２）は、ディープニューラルネットワーク（ＤＮＮ）に対するプリミティブ（ｐｒｉｍｉｔｉｖｅｓ）のＧＰＵ加速ライブラリ（ＧＰＵ−ａｃｃｅｌｅｒａｔｅｄ  ｌｉｂｒａｒｙ）であり、ＧＰＵモジュール１５２を動作させるために使用される。
ＣＵＤＡ（登録商標）及びＮＶＩＤＩＡ（登録商標）は、ＮＶｉｄｉａ社（ＮＶｉｄｉａ  Ｃｏｒｐｏｒａｔｉｏｎ、Ｓａｎｔａ  Ｃｌａｒａ、ＣＡ）の登録商標である。もちろん、本発明の実施形態に係って、任意の他の適切、且つ商業的に利用可能な、及び／又は、注文製作した（ｃｕｓｔｏｍ−ｍａｄｅ）ＮＮＬ（ニューラルネットワークライブラリ）がＣＵＤＡ（登録商標）ディープＮＮＬの代わりに、又はＣＵＤＡ（登録商標）ディープＮＮＬに加えて使用される。また１つ以上のドライバはＴＰＵモジュール１５４を駆動するためのＴＰＵドライバ１４４を含む。
【００２４】
１つ以上の実施形態に係る１つ以上の「ライブラリ及びドライバ」１４０はＤＰＵハードウェア（例えば、ＤＰＵモジュール１５６、及び／又は多重ＤＰＵモジュール１５８）を支援するためのＤＰＵライブラリ１４５及びＤＰＵドライバ１４７を含む。ＤＰＵコンパイラ（ＤＰＵ  ｃｏｍｐｉｌｅｒ）１４９はＤＰＵモジュール１５６及び／又は多重ＤＰＵモジュール１５８を動作させるためのＤＰＵライブラリ１４５及びＤＰＵドライバ１４７を利用して生成されたルーチン（ｒｏｕｔｉｎｅｓ）をコンパイルするのに使用される。本発明の例示的な実施形態に係って、１つ以上のＤＰＵ装置を含む加速器を活性化するために、ＤＰＵドライバ１４７はＴＰＵドライバ１４４と非常に類似している。ＤＰＵライブラリ１４５は、例えばアプリケーションレイヤ１２０で動作する相異なる（複数の）アプリケーションに対してハードウェア１５０内のＤＰＵ内の各サブアレイに対する最適のマッピング機能、資源割当機能、及びスケジューリング機能を提供するように構成される。
【００２５】
一実施形態において、ＤＰＵライブラリ１４５は移動、加算、乗算等のような演算を含むフレームワークレイヤ１３０のための高級の（ｈｉｇｈ−ｌｅｖｅｌ）アプリケーションプログラミングインタフェイス（ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ；ＡＰＩ）を提供する。例えば、ＤＰＵライブラリ１４５は、また加速化されたディープラーニングプロセスのために適用できるフォワード（ｆｏｒｗａｒｄ）及びバックワード（ｂａｃｋｗａｒｄ）コンヴォリューション（ｃｏｎｖｏｌｕｔｉｏｎ、畳み込み）、プーリング（ｐｏｏｌｉｎｇ）、正規化（ｎｏｒｍａｌｉｚａｔｉｏｎ）、及び活性レイヤのような、しかし、これに制限されない、標準型ルーチンの具現を含む。一実施形態において、ＤＰＵライブラリ１４５はコンヴォリューションニューラルネットワーク（ｃｏｎｖｏｌｕｔｉｏｎ  ｎｅｕｒａｌ  ｎｅｔｗｏｒｋ；ＣＮＮ）の全体コンヴォリューションレイヤに対する計算をマッピングするＡＰＩ類似機能を含む。また、ＤＰＵライブラリ１４５はコンヴォリューションレイヤ計算の、ＤＰＵへのマッピングを最適化するためにＡＰＩ類似機能を含む。
【００２６】
ＤＰＵライブラリ１４５は、またタスク（ｔａｓｋ）、バッチ（ｂａｔｃｈ）、出力チャネル、ピクセル（ｐｉｘｅｌ）、入力チャネル、コンヴォリューション（畳み込み）カーネル（ｋｅｒｎｅｌ））内の任意の個別の又は多重の並列処理（ｐａｒａｌｌｅｌｉｓｍ）を、チップ、バンク（ｂａｎｋ）、サブアレイ（ｓｕｂ−ａｒｒａｙ）及び／又はマット（ｍａｔ）レベルで対応するＤＰＵ並列処理にマッピングすることによって、資源割当を改善するか、或いは最適化するためのＡＰＩ類似機能を含む。また、ＤＰＵライブラリ１４５は、初期化段階及び／又はランタイムにおいて性能（即ち、データ移動フロー（ｆｌｏｗ））とパワー消費の間のトレードオフを図る最適のＤＰＵ構成を提供するＡＰＩ類似機能を含む。
ＤＰＵライブラリ１４５によって提供される他のＡＰＩ類似機能は、バンク当たり活性サブアレイの数、及び活性サブアレイ当たりの入力特徴マップの数の設定、特徴マップの分割、及び／又はコンヴォリューションカーネルの再使用方式、等のデザインノブ類型（ｄｅｓｉｇｎ−ｋｎｏｂ−ｔｙｐｅ）の機能を含む。続いて、他のＡＰＩ類似機能は各サブアレイに対してコンヴォリューションコンピューティング（ｃｏｎｖｏｌｕｔｉｏｎ  ｃｏｍｐｕｔｉｎｇ）、チャネル要約（ｃｈａｎｎｅｌ  ｓｕｍ  ｕｐ）、及び／又はデータディスパッチ（ｄａｔａ  ｄｉｓｐａｔｃｈｉｎｇ）のような特定タスクを割当することによって追加的な資源割当最適化を提供する。オペランドが整数と確率的な数の間で変換されれば、ＤＰＵライブラリ１４５は精度の制約を充足させながら、オーバヘッド（ｏｖｅｒｈｅａｄ）を減少させるか、或いは最小化するＡＰＩ類似機能を含む。精度が予想より低い場合、ＤＰＵライブラリ１４５は確率的な表現のための追加ビットを利用して値を再び計算するか、又はＣＰＵのような他のハードウェアにそのタスクをオフロード（ｏｆｆｌｏａｄ、委託）するＡＰＩ類似機能を含む。
【００２７】
ＤＰＵライブラリ１４５は、またＤＰＵ内の活性化されたサブアレイを同時に（又は一斉に）スケジューリングし、そしてコンピューティング演算によってデータ移動が隠されるようにデータ移動をスケジューリングするＡＰＩ類似機能を含む。
【００２８】
ＤＰＵライブラリ１４５の他の側面は、さらなるＤＰＵ開発のための拡張インタフェイスを含む。一実施形態において、ＤＰＵライブラリ１４５は標準類型の演算（即ち、加算、乗算、最大／最小、等）以外のＮＯＲ及びシフト（ｓｈｉｆｔ）ロジック型の演算を利用して機能を直接的にプログラムするためのインタフェイスを提供する。拡張インタフェイスは、またＤＰＵライブラリ１４５によって特別に支援されない動作がライブラリ及びドライバレイヤ１４０でコントローラＳｏＣ、ＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）／ＧＰＵ要素、及び／又はＣＰＵ／ＴＰＵ要素にオフロードされるようにインタフェイスを提供する。ＤＰＵライブラリ１４５のその他の側面はＤＰＵメモリがコンピューティングのために使用されていない時にメモリの拡張としてＤＰＵのメモリを使用するためにＡＰＩ類似機能を提供する。
【００２９】
ＤＰＵドライバ１４７はＤＰＵハードウェアレイヤをシステムに統合するためにハードウェアレイヤ１５０でのＤＰＵ、ＤＰＵライブラリ１４５、及び上位レイヤでのオペレーティングシステム（ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ；ＯＳ）の間のインタフェイス連結を提供するように構成される。即ち、ＤＰＵドライバ１４７はＤＰＵをシステムＯＳ及びＤＰＵライブラリ１４５に露出される。一実施形態において、ＤＰＵドライバ１４７は初期化におけるＤＰＵ制御を提供する。一実施形態において、ＤＰＵドライバ１４７は、ＤＲＡＭ型のアドレス又はＤＲＡＭ型のアドレスシークェンスの形を用いて命令語をＤＰＵに送信し、ＤＰＵへの及びＤＰＵからのデータ移動を制御する。ＤＰＵドライバ１４７はＤＰＵ−ＣＰＵ及び／又はＤＰＵ−ＧＰＵ通信を処理すると共に多重ＤＰＵ通信を提供する。
【００３０】
ＤＰＵコンパイラ１４９はＤＰＵライブラリ１４５からのＤＰＵコードを、ＤＰＵドライバ１４７によって使用されるメモリアドレスの形のＤＰＵ命令語にコンパイルしてＤＰＵを制御する。ＤＰＵコンパイラ１４９によって生成されたＤＰＵ命令語は、ＤＰＵ内の１つ及び／又は２つの行で動作する単一命令語、ベクトル命令語、及び／又は、集合（ｇａｔｈｅｒｅｄ）ベクトル型の動作中読出し（ｒｅａｄ−ｏｎ−ｏｐｅｒａｔｉｏｎ）命令語である。
【００３１】
ＤＰＵモジュール１５６は、例えば通信のためにＰＣＩｅインタフェイス（Ｉ／Ｆ）を使用し、そして多重ＤＰＵモジュール１５８は通信のためにＤＩＭＭインタフェイス（Ｉ／Ｆ）を使用する。ＤＰＵモジュール１５６はＤＰＵに加えてコントローラ及び１つ以上のＤＲＡＭチップ／モジュールを含む。多重ＤＰＵモジュール１５８は２以上のＤＰＵを制御するように構成されたコントローラを含む。
【００３２】
例えば、多重ＤＰＵモジュール１５８内のＤＰＵは分散されたＤＰＵクラスタアーキテクチャを有するように構成され、その場合、プロセシング又は作業（ｊｏｂ）が１つ以上のＤＰＵの間に分散されるか、或いは共有されるようにＤＰＵが配置される。例えば、多重ＤＰＵモジュールは人間の脳と類似なニューラルネットワーク能力（ｃａｐａｃｉｔｙ）を提供できるクラスタアーキテクチャを有する。ニューラルネットワーク能力を提供するために、クラスタアーキテクチャは複数のＤＰＵモジュール、複数の多重ＤＰＵモジュール、及び／又は、複数のＤＰＵノードから構成される。ここで、複数のＤＰＵモジュールの各々は多重ＤＰＵを含み、複数のＤＰＵノードの各々は複数の多重ＤＰＵモジュールを含む。クラスタアーキテクチャ内のＤＰＵの各々は、全部がメモリ（ＤＲＡＭ）として、全部が計算装置として、又はその組み合わせ（例えば、ハイブリッドメモリ計算装置）として、構成される。
よって以下、ＤＰＵ及びメモリ（ＤＲＡＭ）を総称する場合、ＤＰＵ／ＤＲＡＭという。
【００３３】
フレームワーク１３０は第１マシンラーニング・ソフトウェアライブラリ・フレームワーク（ｍａｃｈｉｎｅ  ｌｅａｒｎｉｎｇ  ｓｏｆｔｗａｒｅ  ｌｉｂｒａｒｙ  ｆｒａｍｅｗｏｒｋ）１３２、第２マシンラーニング・ソフトウェアライブラリ・フレームワーク１３４を含み、及び／又は、当業者に公知の、１つ以上の他のＤＰＵを活性化するオープンソースフレームワーク（ｏｐｅｎ  ｓｏｕｒｃｅ  ｆｒａｍｅｗｏｒｋｓ）１３６に拡張できる。例示的な実施形態で、既存のマシンラーニングライブラリはフレームワークに使用される。例えば、フレームワークはタッチ７（Ｔｏｕｃｈ７）及び／又はテンソルフロー（Ｔｅｎｓｏｒ  Ｆｌｏｗ）、又は当業者に公知の任意の他の適切な単数又は複数のフレームワークを含む。
【００３４】
例示的な実施形態で、フレームワークレイヤ１３０は、ライブラリ及びドライバレイヤ１４０及びハードウェアレイヤ１５０に対する使いやすいインタフェイス（ｕｓｅｒ−ｆｒｉｅｎｄｌｙ  ｉｎｔｅｒｆａｃｅ）を提供するように構成される。一実施形態において、フレームワークレイヤ１３０は使いやすいインタフェイスを提供し、アプリケーションレイヤ１２０における広い範囲のアプリケーションと互換性があり、ＤＰＵハードウェアレイヤ１５０をユーザーに対して透明にする。
他の実施形態において、フレームワークレイヤ１３０は、定量化機能（ｑｕａｎｔｉｔａｔｉｏｎ  ｆｕｎｃｔｉｏｎｓ）をタッチ７類型のアプリケーション及びテンソルフロー類型のアプリケーションなどの、しかし、これに制限されない、従来の方法に加えるフレームワーク拡張を含む。一実施形態において、フレームワークレイヤ１３０は定量化機能をトレーニングアルゴリズム（ｔｒａｉｎｉｎｇ  ａｌｇｏｒｉｔｈｍ）に加えることを含む。他の実施形態において、フレームワークレイヤ１３０は、除算、乗算及び平方根の既存のバッチ正規化（ｂａｔｃｈ−ｎｏｒｍａｌｉｚａｔｉｏｎ）方法を無効（ｏｖｅｒｒｉｄｅ）にして、除算、乗算及び平方根のシフト近似方法（ｓｈｉｆｔ  ａｐｐｒｏｘｉｍａｔｅｄ  ｍｅｔｈｏｄｓ）を提供する。
続いて、更に他の実施形態において、フレームワークレイヤ１３０は、ユーザーが計算のために使用されるビット数を設定可能にする拡張を提供する。その他の実施形態において、フレームワークレイヤ１３０は、多重ＤＰＵ向けのＡＰＩをＤＰＵライブラリ及びドライバレイヤ１４０からフレームワークレイヤ１３０に取り込む（ｗｒａｐ）能力を提供し、その結果、ユーザーはハードウェアレイヤにおいて多重ＧＰＵの使用と同様に多重ＤＰＵを使用できる。フレームワーク１３０のその他の特徴はユーザーがハードウェアレイヤ１５０においてＤＰＵ又はＧＰＵの中で何れか１つに機能の割当を可能にする。
【００３５】
フレームワークの上にはイメージタッグ（ｉｍａｇｅ  ｔａｇ）１２２、セルフドライブアルゴリズム（ｓｅｌｆ−ｄｒｉｖｅ  ａｌｇｏｒｉｔｈｍ）１２４、人工知能（ａｒｔｉｆｉｃｉａｌ  ｉｎｔｅｌｌｉｇｅｎｃｅ）１２６、及び／又は音声研究／認識１２８を含む１つ以上のアプリケーション１２０、及び／又は当業者に公知された任意の他の適切、且つ望ましいアプリケーションが具現される。
【００３６】
一部の実施形態において、ホストは作業を分割し、ＤＰＵクラスタアーキテクチャ内の各々の分割区画に対してデータ／作業を分配／収集する。一部の実施形態において、１つ以上のルータ（ｒｏｕｔｅｒ）はＤＩＭＭコントローラの内部に埋め込まれ、非同期式通信プロトコル（ａｓｙｎｃｈｒｏｎｏｕｓ  ｃｏｍｍｕｎｉｃａｔｉｏｎ  ｐｒｏｔｏｃｏｌ）に従って動作する。他の実施形態において、ルータはＤＩＭＭ又は他のメモリコントローラの外部に（又は、ＤＩＭＭ又は他のメモリコントローラから分離して）設置される。
【００３７】
本発明の実施形態が主にＤＲＡＭ（例えば、３Ｔ１Ｃ又は１Ｔ１Ｃ型ＤＲＡＭ）に関して説明されたが、本発明はこれに制限されない。例えば、一部の実施形態において、任意の他の適切なメモリがメモリ基盤プロセシング装置（例えば、メモリ装置）を生成するためにＤＲＡＭの代わりに使用される。
【００３８】
加速器のプール及びメモリのプールを含む従来一般的なアーキテクチャにおいて、ホストが普通加速器及びメモリの間にインタフェイスを提供する。ホストが加速器及びメモリの間に介在するこのようなアーキテクチャでは、それ故、ホストが加速器及びメモリの間の隘路（ｂｏｔｔｌｅｎｅｃｋ）となる場合がある。
【００３９】
このような隘路現象を減少させ、防止するために、本発明に係る例示的な実施形態において、ホストは加速器及びメモリの間に位置しない。代わりに、加速器は複数のＤＰＵを利用して具現される。例えば、各、多重ＤＰＵモジュールは複数のＤＰＵ及びＳｏＣとして具現されるＤＰＵコントローラを含む。また、複数の（多重）ＤＰＵモジュールは一緒にＤＰＵルータに連結される。ＤＰＵルータはＤＰＵコントローラと同一のＳｏＣにより具現される。しかし、本発明はこれに制限されず、コントローラ兼ルータはＤＰＵコントローラを含むＳｏＣの外部に具現され得る。また、（多重）ＤＰＵモジュールの各々はＤＰＵルータを含むか、又は１つのＤＰＵルータは２つ以上の（多重）ＤＰＵモジュールによって共有され得る。
【００４０】
図２は本発明の例示的な実施形態に係る分散されたＤＰＵクラスタアーキテクチャ２００の図式のブロック図である。
【００４１】
図２の分散されたＤＰＵクラスタアーキテクチャ２００で、複数の多重ＤＰＵモジュール２０２、２０４、２０８及びＤＲＡＭモジュール２０６はコントローラ及びルータ２１０、２１２、２１４、２１６を通じて互いに連結される。本実施形態ではＤＲＡＭモジュール２０６のみがメモリとして構成された場合が示されたが、本発明はこれに制限されず、任意のＤＰＵ／ＤＲＡＭモジュールがメモリとして、計算装置として（又は、プロセシング装置／プロセッサ）、又はハイブリッド格納／計算装置として具現可能である。ＤＰＵモジュール及びＤＲＡＭモジュールは、機能的には各々、加速器（計算装置）及びメモリモジュール（メモリ）とも言及するけれども、それらは実質的に互いに同一のハードウェア構造を有し、多重ＤＰＵモジュール及びＤＲＡＭモジュールは計算及び格納のために各々異なって構成されたＤＰＵ（又はメモリ装置）として看做される。また、例示的な実施形態に係って、ＤＰＵの各々は加速器としての（計算のために）又はメモリとして（格納のために）機能をするように再構成されるか、又は加速器及びメモリの機能の双方を有するように再構成される。
よって以下、多重ＤＰＵモジュール及びＤＲＡＭモジュールを総称する場合、煩雑さを避けて、ＤＰＵ／ＤＲＡＭモジュールという。
【００４２】
ホスト２２０は、またコントローラ及びルータ２１４の中で１つを通じて全ＤＰＵ／ＤＲＡＭモジュールと連結される。アーキテクチャ２００は、全てのワーク（ｗｏｒｋ、例えば作業）がホスト２２０によって生成される、ホスト中心アーキテクチャ（ｈｏｓｔ  ｃｅｎｔｒｉｃ  ａｒｃｈｉｔｅｃｔｕｒｅ）と称する。ここで、ホスト２２０はどの資源がネットワーク上にあるかが分かり、そして特定命令又は命令及びワークロード（ｗｏｒｋｌｏａｄ）を１つ以上のコントローラ及びルータ２１０、２１２、２１４、２１６を通じて特定ＤＰＵに送信する。例示的な実施形態において、各ＤＰＵは計算及び格納の何れかのみを遂行するが、スケジューリング及びマッピングと関連された全てのタスク（ｔａｓｋ）を遂行するのはホストの責任であるので、性能はホスト２２０に制限される可能性がある。
【００４３】
例えば、多重の、ＤＰＵ／ＤＲＡＭモジュールが１つのサーバ／コンピュータ／ノード（以下、これらを総称してノードという）内に位置すれば、ＤＰＵ／ＤＲＡＭモジュールは直接的に互いに通信できる。同一のサーバ／コンピュータ／ノード内に位置しないＤＰＵ／ＤＲＡＭモジュールに対して、それは１つ以上のルータ及び／又はスイッチ（例えば、コントローラ及びルータ２１０、２１２、２１４、２１６を通じて互いに通信し、これはインタネットのような、１つ以上の通信経路を通じて遂行される。
【００４４】
ＤＰＵ／ＤＲＡＭモジュールの各々は、例えば多重ＤＰＵモジュール２０２−１は同一のＤＰＵコントローラ（例えば、コントローラＳｏＣ）に連結された複数のＤＰＵを含む。同一のＤＰＵモジュール上のＤＰＵはバス（ｂｕｓ）基盤の連結（例えば、階層バス基盤の連結）であるＤＩＭＭ内部連結を通じてＤＰＵコントローラに連結される。このような理由で、同一の多重ＤＰＵモジュール上のこれらのＤＰＵは、該同一の多重ＤＰＵモジュールに搭載されたＤＩＭＭ上コントローラＳｏＣによって制御される。ここで、ＤＰＵ内のコントローラＳｏＣは命令／データを受信し、ＤＰＵモジュール内のＤＰＵを管理する責任がある。
【００４５】
ＤＰＵモジュールは、該ＤＰＵモジュールがメモリコントローラに連結されるＤＩＭＭ相互間の連結を通じて互いに連結され、前記メモリコントローラは何れかのコントローラ及びルータ中のルータに連結される。ルータはＤＰＵ／ＤＲＡＭモジュールをメモリ／加速器ネットワークに連結する。
【００４６】
図２の分散されたＤＰＵクラスタアーキテクチャで、例えばメモリと加速器との間のインタフェイスにおける隘路現象は、このような、均一に融合されたメモリ及び加速器のプールを提供することによって防止される。例えば、ホスト２２０がネットワークのエッジでコントローラ及びルータ２１４に連結されることによって、メモリと加速器との間の、ホスト２２０に起因する隘路現象はほとんど又は全くない。
例えば、メモリ（格納装置）及び加速器（計算装置）のプールは柔軟なネットワーク連結を有する。また、各ノードは加速器（ＤＰＵ）又はメモリ（ＤＲＡＭ）の中で何れか１種類を含んで構成される。一部の実施形態において、各ノードは加速器及びメモリの特徴の双方を含む加速器とメモリのハイブリッド（ａｃｃｅｌｅｒａｔｏｒ−ｍｅｍｏｒｙ  ｈｙｂｒｉｄ）として動作する。例えば、各ノードは多重のＤＰＵモジュールの集合であり、複数の多重ＤＰＵモジュールを有するサーバを含み、ここで各多重ＤＰＵモジュールは多重のＤＰＵを含む。
以下、これらの、単数又は複数の多重ＤＰＵモジュール、及び／又は単数又は複数のＤＲＡＭモジュールを含むノードを、ＤＰＵ／ＤＲＡＭノードと総称する。
【００４７】
このような理由で、本発明の１つ以上の例示的な実施形態に係る分散されたＤＰＵクラスタアーキテクチャで、均一に融合されたメモリ兼加速器のプールが、一般的な大規模並列（ｍａｓｓｉｖｅｌｙ  ｐａｒａｌｌｅｌ）プロセッサを生成するために提供される。ここで、各ＤＰＵ／ＤＲＡＭノードの資源はハードウェア（例えば、ＡＬＵの数等）によって制限される。即ち、ＡＬＵの制限された数は、そのＤＰＵ／ＤＲＡＭノードが提供できる最大メモリ容量又は最大計算容量（能力）を決定する。
【００４８】
ＤＰＵクラスタアーキテクチャは再構成可能なメモリ／計算資源を提供し、そして各ＤＰＵ／ＤＲＡＭノード内の全ての資源は、その全てをメモリ（格納装置）として、その全てを計算装置として、又はその全てをメモリ及び計算装置の組み合せ（即ち、ハイブリッド）として構成される。この方法によれば、各ＤＰＵ／ＤＲＡＭノードにおける格納及び／又は計算要求に応じて各ＤＰＵ／ＤＲＡＭノード内の全ての資源が構成に寄与するので、格納及び／又は計算資源の浪費は防止されるか、又は減少される。これはＤＰＵ／ＤＲＡＭノードの各々がその使用中に、より多い格納資源又はより多い計算資源の提供を必要とするか、又はユーザーが望むか、に応じて構成されるか、或いは再構成できるからある。
【００４９】
図３は本発明の例示的な実施形態に係って、コントローラＳｏＣ内に埋め込まれたルータを有する、分散されたＤＰＵクラスタアーキテクチャ３００の図式のブロック図である。図３のアーキテクチャ３００はルータ（図示せず）が各ＤＰＵ／ＤＲＡＭモジュール内のコントローラＳｏＣに結合されており、各ＤＰＵ／ＤＲＡＭモジュールがそのままノードを形成し、格別なコントローラ及びルータを要しない点で図２のアーキテクチャ２００と異なる。分散されたＤＰＵクラスタアーキテクチャ３００も、またホスト中心アーキテクチャであると称し得る。
【００５０】
図２のＤＰＵクラスタアーキテクチャと類似に、図３においても、加速器プール及びメモリプールの間のインタフェイスに位置するホストがないので、加速器プール及びメモリプールの間のインタフェイスでの隘路現象は減少されるか、或いは防止される。図３の分散されたＤＰＵクラスタアーキテクチャ３００に応じて、複数のＤＰＵ／ＤＲＡＭモジュール３０２、３０４、３０６、３１２、３１４、３１６、３２２、３２４、３２６、３３２、３３４、３３６が行及び列に配置される。ＤＰＵ／ＤＲＡＭモジュールの中で１つ（図では、ＤＰＵモジュール３１２）がネットワークのエッジでホスト３５０と連結されるので、ホスト３５０の介在によって生じる隘路現象は小さいか、或いはない。
【００５１】
本発明の例示的な実施形態に係るホスト中心アーキテクチャで、最初にホストは異なる多重ＤＰＵモジュール（以下、本段落では「ＤＰＵ」と略記する）の各々に対してワーク又はワークの一部を生成する。例えば、第１ワーク（又は第１ワークの一部）は第１「ＤＰＵ」に割当され、そして第２ワーク（又は第２ワークの一部）は第２「ＤＰＵ」に割当される。その次に、ホストはワークフロー（ｗｏｒｋｆｌｏｗ）の第１ワークを第１「ＤＰＵ」に送信する。ワークフローは、また第２「ＤＰＵ」に送信されるべき第２ワークを含む。第１「ＤＰＵ」が自分のワークを終了する時、第１「ＤＰＵ」は（ホストによってマッピングされた／スケジュールされた）次の段階がどこにあるかを知っているので、第１「ＤＰＵ」は結果をホストに再び送信せず、第２「ＤＰＵ」に直接送信する。例えば、第１「ＤＰＵ」がそのワークを終了する時、第１「ＤＰＵ」は中間データ（又は中間結果）を他の計算のために第２「ＤＰＵ」に直接送信する。
それ故、第１「ＤＰＵ」が中間データをホストに再び送信し、ホストが受信された中間データを第２「ＤＰＵ」に送信する必要がない。斯くして、図３のＤＰＵクラスタアーキテクチャにおいては、各「ＤＰＵ」が直接、ＤＰＵ／ＤＲＡＭノードを形成し、ホスト無しで互いに通信できる。例えば、ホストは第１「ＤＰＵ」に対してデータを第２「ＤＰＵ」に転送（ｆｏｒｗａｒｄ）する単数又は複数の命令を送信するだけで良く、データを移動するのはコントローラＳｏＣの責任である。これはホストがネットワーク内の全ての資源を知っているので、例示的な実施形態に係る図２及び図３のホスト中心アーキテクチャ内で可能であり、マッピング及びスケジューリングを遂行するのはホストの責任である。このような理由で、ホストは計算の各段階に関与する必要はない。本発明の一部の他の例示的な実施形態に係って、ネットワーク上のどの装置もネットワークがどのようにして生成されたか、又はネットワーク上のどの資源が利用可能であるかを常に承知する必要が無いようなシステムアーキテクチャが提供される。
【００５２】
図３に示されたように、ＤＰＵ／ＤＲＡＭモジュールの中で１つ（即ち、ＤＲＡＭモジュール３２４）のみがメモリとして構成され、反面に、ＤＰＵ／ＤＲＡＭモジュールの中で残りは多重ＤＰＵモジュール（プロセシング／計算モジュール、又は計算モジュール）として構成される。他の実施形態において、ＤＰＵ／ＤＲＡＭモジュールの中で１つ以上はメモリモジュール又はハイブリッド計算／メモリモジュールとして構成される。ＤＰＵ／ＤＲＡＭモジュールの各々は複数のＤＰＵ及びＤＰＵコントローラ（即ち、コントローラＳｏＣ）を含み、このようにすることによって、ＤＰＵ／ＤＲＡＭモジュールの各々は多重ＤＰＵモジュール又はＤＲＡＭモジュールとして構成又は再構成される。また、同一のＤＰＵ／ＤＲＡＭモジュール内で、全てのＤＰＵ／ＤＲＡＭが実質的に互いに同一であるハードウェアを有しても、ＤＰＵの中で１つ以上はメモリ（格納装置）として構成され、反面に、ＤＰＵの中で他の１つ以上は計算装置（プロセシング／計算装置）として構成される。
【００５３】
例えば、一部の実施形態で、ルータはＤＩＭＭコントローラＳｏＣ内に共に具現される。その場合、適切なＤＩＭＭ相互間の通信を保障するために非同期式通信プロトコルが使用され、ここでは例えばハンドシェーク（ｈａｎｄｓｈａｋｅ）が使用される。他の実施形態においては、ＤＤＲ（ｄｏｕｂｌｅ  ｄａｔａ  ｒａｔｅ）のような、同期式プロトコルが使用される。ホスト３５０がＤＰＵモジュールの間ではなく、ネットワークの一端に位置しているが故に、ホスト帯域幅の使用がより少なくなり、ホストによってもたらされていた如何なる隘路現象も減少されるか、或いは除去される。
【００５４】
一部の例示的な実施形態において、ＤＰＵ／ＤＲＡＭモジュール、即ち、多重ＤＰＵモジュール及び／又はＤＲＡＭモジュールが分散されたＤＰＵクラスタアーキテクチャに配置されるが、それらは依然としてホストにより集中制御される。このような実施形態で、ホストは各ＤＰＵ／ＤＲＡＭモジュールへの作業マッピング情報（ｊｏｂ  ｍａｐｐｉｎｇ  ｉｎｆｏｒｍａｔｉｏｎ）を維持する。作業マッピング情報はソフトウェア及び／又はドライバの形態をとる。ネットワークにおいて、ニューラルネットワーク変数及び他の有用なデータはクラスタ内のノードの中の１つであるＤＲＡＭノードに格納される。
【００５５】
本発明の例示的な実施形態に係って、２つの別々の、ホスト中心アーキテクチャ／構成が提供される。第１ホスト中心アーキテクチャでは、ホストはワークフロー内の全てのワークロードを第１多重ＤＰＵモジュール（以下、本段落でも「ＤＰＵ」と略記する）に送信し、第１「ＤＰＵ」はワークロードの残り及び／又は結果を第２「ＤＰＵ」に送信する。第２「ＤＰＵ」は計算を遂行し、結果及びワークフロー内のワークロードの残りを第３「ＤＰＵ」に送信する。
第２ホスト中心アーキテクチャでは、各段階で、ホストはデータを再び読み出し、次のワークを生成し、次のワークを中間データ（例えば、以前に単数又は複数の「ＤＰＵ」により遂行された計算の結果）と共に次の単数又は複数の「ＤＰＵ」に送信する。他の例示的な実施形態では、１つ以上の「ＤＰＵ」がホストによるマッピング／スケジューリング無しで作業を含むワークフローを生成することが可能であり、そしてホストを甚だしくは必要としないアドホック（ａｄ  ｈｏｃ）制御が提供される。前述した例示的な実施形態の各々は図１、図２、及び図３で説明された適切なシステム／ハードウェアアーキテクチャを利用して具現できる。
【００５６】
図４はホストによる中央集中式制御が具現された本発明の例示的な実施形態に係って、ホストによる分散されたＤＰＵクラスタ制御の順序図である。
【００５７】
図４の段階４００で、ホストは作業要請を受信する。段階４０２で、ホストはメモリに格納されたＤＰＵ／ＤＲＡＭ作業マッピングテーブルを確認する。作業マッピングテーブル確認過程で、ホストはＤＰＵ／ＤＲＡＭ資源の中から、作業の変数を格納するＤＲＡＭを探す。例えば、ニューラルネットワーク（ＮＮ）アプリケーションのために、ホストはＮＮ変数を有するＤＲＡＭを探す。ホストは、また使用可能なＤＰＵ資源を探す。
【００５８】
段階４０４で、ＤＰＵが個別的に作業を終了できない場合、ホストは作業を２つ以上のＤＰＵ資源に割当するように分割する。例えば、作業は第１作業、第２作業等に分割され、それは２つ以上の相異なるＤＰＵ資源に、例えば第１作業は第１ＤＰＵ資源に、第２作業は第２ＤＰＵ資源に、・・・、というように割当される。
【００５９】
段階４０６で、ホストはワークフローを生成する。例えば、ホストは各作業及び／又は作業の各分割された部分に対してＤＰＵ／ＤＲＡＭ資源番号及び作業番号からなるペア（対）情報（例えば、（Ｒｅｓｏｕｒｃｅ＃、Ｊｏｂ＃））を割当する。例えば、ワークフロー（ＷＦ）は次のフォーマットを有する；ＷＦ＝［（Ｒｅｓｏｕｒｃｅ１、Ｊｏｂ１）、（Ｒｅｓｏｕｒｃｅ２、Ｊｏｂ２）、（Ｒｅｓｏｕｒｃｅ３、Ｊｏｂ３）、…、（ＲｅｓｏｕｒｃｅＮ、ＪｏｂＮ）、（Ｈｏｓｔ、Ｄｏｎｅ）］、等。ここで作業は該ＤＰＵ／ＤＲＡＭ資源番号が指定するＤＰＵ／ＤＲＡＭ又はＤＰＵ／ＤＲＡＭモジュールを基準とする。本発明に係る例示的な実施形態において、ワークフローは当業者に公知の任意の他の適切なフォーマットを援用できる。
【００６０】
段階４０８で、ホストはワークフローをホストに連結された、指定されたＤＰＵ／ＤＲＡＭモジュール又は指定されたＤＰＵ／ＤＲＡＭを含むＤＰＵ／ＤＲＡＭモジュールに送信する。
以下では、ＤＰＵ／ＤＲＡＭモジュール（多重ＤＰＵモジュール又はＤＲＡＭモジュール）及びそのＤＰＵ／ＤＲＡＭを一括して、ＤＰＵ資源という。
段階４１０で、ＤＰＵ資源はワークフローパッケージ（ｗｏｒｋ  ｆｌｏｗ  ｐａｃｋａｇｅ）を読み出す。ワークフローの先頭にあるペア情報に指定されたＤＰＵ資源が現在のＤＰＵ資源と一致すれば、それ（現在のＤＰＵ資源）はワークフローの先頭の作業を遂行し、その次にワークフローからペア情報（Ｒｅｓｏｕｒｃｅ＃、Ｊｏｂ＃）を除去する。その次に、ワークフローの残りは１つ以上の他のＤＰＵ資源に送信される。一致しなければ、ＤＰＵ資源はワークフローを次のペア情報（ｒｅｓｏｕｒｃｅ＃、ｊｏｂ＃）に指定された資源である第１のＤＰＵ資源に向かって送る。しかし、本発明は特定の方式に制限されず、当業者に公知された任意の適切な方式が使用ができる。ワークフローが完了されれば、ホストは全ての作業が終了されたか否かを判別し、これは全てのペア（ｒｅｓｏｕｒｃｅ＃、ｊｏｂ＃）が、＃＝０から＃＝Ｎまで、終了されたことを意味する。
【００６１】
図５はホストが各計算段階で積極的な役割を果たす本発明の例示的な実施形態に係る分散されたＤＰＵクラスタ制御の順序図である。
【００６２】
図５の段階５００で、ホストはワーク要請をＤＰＵ資源に送信し、その次に段階５０２で、ホストはＤＰＵ資源から計算の結果を読み出すか、又はＤＰＵ資源は計算の結果をホストに返送する。その次に、段階５０４でホストはワーク要請及び／又はＤＰＵ資源からの結果を次のＤＰＵ資源に送信し、段階５０６で次のＤＰＵ資源から計算の結果を読み出し、段階５０８で全ての作業が完了される時までこのような方式に進行される。このようなホスト中心アーキテクチャで、ホストは各計算段階に関与し、ワークフロー及びＤＰＵの間のデータフローをさらに能動的に制御する。
【００６３】
上記、図４及び図５の順序図で説明されたホスト中心アーキテクチャの中央集中式制御と異なり、本発明の１つ以上の例示的な実施形態に係る分散されたＤＰＵクラスタアーキテクチャは、アドホック方式に制御され、その場合、中央集中式制御は、無いか、若しくは有っても小さいか、又は最小である。
図６はアドホック制御が具現された本発明の例示的な実施形態に係る分散されたＤＰＵクラスタ制御の順序図である。例えば、一部の例示的な実施形態に係るアドホック制御メカニズムにおいては、図６の段階６００に示されたように各ＤＰＵ資源が作業（又は作業のワークフロー）を生成する。また、資源テーブルを必要とせず、ＤＰＵ／ＤＲＡＭ作業マッピング情報をメモリ内に格納する要求はない。
このようなアドホック方式によれば、段階６０２に示されたように作業（又は作業のワークフロー）を生成するＤＰＵ資源（例えば、ＤＰＵ０）は作業又は作業の一部を終了し、その次に段階６０４に示されたように残りの作業及び／又は作業の一部を（例えば、ワークフローの残り）ルーティング情報と共に１つ以上の隣接ＤＰＵ資源（例えば、次のＤＰＵ、又はＤＰＵ１、２、３、等）に送信する。その次に、段階６０６で、次の単数又は複数のＤＰＵは作業及び／又は作業の一部を終了する。段階６０８に示されたように作業（又は作業の一部）を終了し、残りの作業（又は作業の一部）を送信するプロセッサは全ての作業が完了されるか、或いは作業割当が失敗（例えば、ＤＰＵ資源がさらに以上使用可能でない場合）する時まで繰り返される。
【００６４】
アドホック制御の特徴の一つは、ホストサーバが不要で、大きなクラスタ情報を維持する必要がなく、巨大なクラスタ（例えば、人間の脳のニューラルネットワークと類似な大きさのニューラルネットワークを生成するためには、既存のネットワーク内において利用可能なＤＰＵの総能力の１００倍から１０００倍を有するクラスタ）が支援できる、ことである。
しかし、制御が中央集中式ではないならば、資源管理は最適化されない可能性があり、結局失敗する可能性がある。失敗の重要性は概してアプリケーションに依存する。一部のアプリケーションに対して失敗は重大な場合があるが、他のアプリケーションでは重大ではない場合がある。例えば、人間の脳の行動（ｂｅｈａｖｉｏｒ）を模倣する人工知能（ＡＩ）アプリケーションにおいて、それは、何かを記憶しているか、又はそれを記憶していないことがある。また、或る時点ではに何かを記憶するが、他の時点ではそれを記憶できない。本発明の実施形態に係るＤＰＵシステムアーキテクチャは大規模ニューラルネットワークアプリケーションに使用されれば、或る程度の失敗は許容可能であり得る。
【００６５】
その他の実施形態において、分散されたＤＰＵクラスタアーキテクチャはハイブリッド中央集中式及びアドホック制御に従って動作する。例えば、ＤＰＵモジュール及び／又は多重ＤＰＵモジュールの一部はホストによって制御され、反面にＤＰＵモジュール及び／又は多重ＤＰＵモジュールの他のものはアドホック方式に制御される。他の例では、ＤＰＵ及び／又はＤＰＵモジュールの少なくとも一部はそれらの制御が中央集中式制御及びアドホック制御の間を望む通りに、又は必要に応じて切り替わるように再構成されることができる。
【００６６】
従って、本発明の実施形態は複数のＤＲＡＭ基盤プロセシング装置（ＤＰＵｓ）が配置され、人間の脳と類似なニューラルネットワーク能力を提供できる分散されたアーキテクチャを有するクラスタアーキテクチャに係る。ＤＰＵクラスタは再構成可能なメモリ／計算資源を提供し、このようにすることによってＤＰＵノード内の全ての資源は、全てがメモリ（格納器）として、全てが計算器（加速器）として、又は全てが、メモリと計算器の結合された装置（即ち、ハイブリッドメモリ計算装置）として構成される。
【００６７】
ホスト中心アーキテクチャを有する一部の実施形態において、各分割のためにホストは作業を分割するか、及び／又はデータ／作業を分配／収集する。ここで、ホストは作業を終了し、残りの作業及び／又は結果データを他のＤＰＵ資源に送信するためにＤＰＵ資源に対するワークフローを生成し、送信するか、又はホストは受信することによって、各計算段階を制御し、作業と共に結果データを他のＤＰＵ資源に送信することができる。他の実施形態において、クラスタアーキテクチャの制御は１つ以上のＤＰＵ資源が作業／ワークフローを生成し、作業を完了し、及び／又は作業／ワークフローの残りをネットワーク内の他のＤＰＵ資源に送信するアドホックとして提供される。他の実施形態において、中央集中式制御及びアドホック制御のハイブリッドはＤＰＵ／ＤＲＡＭクラスタアーキテクチャを制御するために具現される。ルータは非同期式通信プロトコルに応じて動作し、ＤＩＭＭコントローラの内部に埋め込まれ得る。
【００６８】
たとえここで第１、第２、第３等の用語は多様な要素、成分、領域、層、及び／又はセクションを説明するために使用されるが、このような要素、成分、領域、層、及び／又はセクションはこのような用語によって制限されないことと理解されるべきである。このような用語は他の要素、成分、領域、層、又はセクションから１つの要素、構成、領域、層又はセクションを区別するために使用される。従って、後述する第１要素、成分、領域、層、又はセクションは本発明の思想及び範囲を逸脱しなく、第２要素、成分、領域、層、又はセクションを指称することができる。
【００６９】
例えば、本明細書で説明された本発明の実施形態に係って関連ある装置又は成分（又は関連ある装置又は成分）は任意の適切なハードウェア（例えば、ＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ））、ファームウェア（例えば、ＤＳＰ又はＦＰＧＡ）、ソフトウェア、又はソフトウェア、ファームウェア、及びハードウェアの適切な組合せを利用して具現されることができる。例えば、関連ある装置の多様な成分は１つの集積回路（ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ；ＩＣ）又は分離されたＩＣチップに形成されることができる。また、関連ある装置の多様な成分はフレキシブル印刷回路フィルム（ｆｌｅｘｉｂｌｅ  ｐｒｉｎｔｅｄ  ｃｉｒｃｕｉｔ  ｆｉｌｍ）、ＴＣＰ（ｔａｐｅ  ｃａｒｒｉｅｒ  ｐａｃｋａｇｅ）、ＰＣＢ（ｐｒｉｎｔｅｄ  ｃｉｒｃｕｉｔ  ｂｏａｒｄ）に具現されるか、又は１つ以上の回路及び／又は他の装置として同じ基板上に形成されることができる。また、関連ある装置の多様な成分は１つ以上のプロセッサで実行され、１つ以上のコンピューティング装置で、本明細書で説明された多様な機能を遂行するためにコンピュータプログラム命令語を実行し、他のシステム成分と相互作用するプロセス又はスレッド（ｔｈｒｅａｄ）である。コンピュータプログラム命令語は、例えばＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）のような、標準メモリ装置を利用してコンピューティング装置で具現されることができるメモリに格納される。コンピュータプログラム命令語は、例えばＣＤ−ＲＯＭ、フラッシュドライブ（ｆｌａｓｈ  ｄｒｉｖｅ）等のような他の一時的ではない（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）コンピュータ読出し可能媒体に格納されることができる。また、本発明の当業者は本発明の例示的な実施形態の思想及び範囲を逸脱しなく、多様なコンピューティング装置の機能は１つのコンピューティング装置に統合されるか、集積されるか、又は特定コンピューティング装置の機能は１つ以上の他のコンピューティング装置にわたって分散されることを認識されることができる。
【００７０】
また、１つの要素、構成要素、領域、層、及び／又はセクションが２つの要素、構成要素、領域、層、及び／又はセクションの間であることと言及されれば、２つの要素、構成要素、領域、層、及び／又はセクションの間に単なる要素、構成要素、領域、層、及び／又はセクションがあるか、又は１つ以上の間の要素、構成要素、領域、層、及び／又はセクションがまた存在することができることが理解されるべきである。
【００７１】
本明細書で使用された用語は特定実施形態を説明するためのことであり、本発明を制限しようとすることと意図されない。本明細書で使用されたように、単数形態は文脈の上に明確に異なりに示していない限り、複数形態も含むように意図される。“構成される”、“構成されている”、“含む”、及び“含んでいる”用語が本明細書で使用されれば、記述された特徴、整数、段階、動作、要素、及び／又は構成要素の存在を明示するが、１つ以上の特徴、整数、段階、動作、要素、要素、構成要素、及び／又はこれらのグループの存在を不可にしないこととさらに理解されるべきである。
【００７２】
本明細書で使用されたように、“及び／又は”という用語は１つ以上の連関された列挙された項目の任意のこと又は全ての組み合せを含む。“少なくとも１つ”、“中で１つ”、及び“から選択された”のような表現は要素の全体リストを修正し、そしてリストの個別要素を修正しない。また、本発明の実施形態を記述する時、“することができる”の使用は“本発明の１つ以上の実施形態”を意味する。また、“例示”の用語は例又は図面を意味する。
【００７３】
本明細書で使用されたように、“使用”、“使用される”、及び“使用された”用語は“利用”、“利用される”、及び“利用された”用語と密接なことと各々看做されることができる。
【００７４】
本発明の１つ以上の実施形態に関して説明された特徴は本発明の他の実施形態の特徴と共に使用するために可能することができる。例えば、第３実施形態が本明細書で明確に説明されなくとも、第１実施形態において説明された特徴は第３実施形態を形成するために第２実施形態において説明された特徴と結合されることができる。
【００７５】
当業者ならば、本発明に係る手順がハードウェア、ファームウェア（例えば、ＡＳＩＣを通じて）、又はソフトウェア、ファームウェア、及び／又はハードウェアの任意の組み合せを通じて実行できることをまた認識しなければならない。また、本発明に係る手順の段階のシークェンスは固定されず、当業者によって認識されているように、任意の望むシークェンスに変更され得る。変更されたシークェンスは全ての段階又は段階の部分を含み得る。
【００７６】
特定な具体的な実施形態に関して本発明が説明されたが、当業者は説明された実施形態の変形を考案するのに難しくないことであり、本発明の範囲及び思想から逸脱されることは決していない。また、多様な分野の当業者に、本明細書で説明された発明の自体は他の応用のための他の課題及び適応の解法を提案する。本発明及び本発明の思想及び範囲を逸脱しなく、開示の目的に本明細書で選択された発明の実施形態として作られる本発明の変更及び修正のそのような全ての使用を請求の範囲に含ませることが出願人の意図である。従って、本発明の本実施形態は制限的ではなく、全ての側面を説明するためのものとして看做され、本発明の範囲は添付された請求項及びこれらの等価物によって示される。
【符号の説明】
【００７７】
１００        コンピュータプロセシングアーキテクチャ
１１０      ソフトウェアスタック
１２０      アプリケーション（レイヤ）
１２２      イメージタッグ（ｉｍａｇｅ  ｔａｇ）
１２４      セルフドライブアルゴリズム（ｓｅｌｆ−ｄｒｉｖｅ  ａｌｇｏｒｉｔｈｍ）
１２６      人工知能（ａｒｔｉｆｉｃｉａｌ  ｉｎｔｅｌｌｉｇｅｎｃｅ）
１２８      音声研究／認識
１３０      フレームワーク（レイヤ）
１４０      ライブラリ及びドライバ（レイヤ）
１４２      ＮＮＬ、ニューラルネットワークライブラリ
１４９      ＤＰＵコンパイラ
１５０      ハードウェア（レイヤ）
１５２      ＧＰＵモジュール
１５４      ＴＰＵモジュール
１５６      ＤＰＵモジュール
１５８      多重ＤＰＵモジュール
２００      （分散された）ＤＰＵクラスタアーキテクチャ
２０２、２０４、２０８，２０２−１      ＤＰＵモジュール
２０６      ＤＲＡＭモジュール
２１０、２１２、２１４、２１６      コントローラ及びルータ
２２０      ホスト
３００      コントローラＳｏＣ内に埋め込まれたルータを有する、分散されたＤＰＵクラスタアーキテクチャ
３０２、３０４、３０６，３１２，３１４，３１６，３２２，３２６、３３２、３３４，３３６      ＤＰＵモジュール
３２４      ＤＲＡＭモジュール
３５０      ホスト
４００      ホストによる分散されたＤＰＵクラスタ制御の順序図
５００      ホストがより積極的な役割、ホストによる分散されたＤＰＵクラスタ制御の順序図
６００      アドホック制御が具現された本発明の例示的な実施形態に係る分散されたＤＰＵクラスタ制御の順序図である。
ＡＬＵ      Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃ  Ｕｎｉｔ、算術演算・論理装置
ＡＰＩ      Ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ、アプリケーションプログラミングインタフェイス
ＡＳＩＣ    Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ、専用集積回路
ＣＮＮ      Ｃｏｎｖｏｌｕｔｉｏｎ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ、畳み込み神経ネットワーク
ｃｕＤＮＮ      ＣＵＤＡ（登録商標）  Ｄｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ  ｌｉｂｒａｒｙ
ＤＩＭＭ      Ｄｕａｌ  Ｉｎ−ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ、デュアルインラインメモリモジュール
ＤＰＵ      ＤＲＡＭ−ｂａｓｅｄ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、ＤＲＡＭ基盤プロセッシング装置
ＧＰＵ      Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、グラフィクスプロセッシング装置
ＮＮＬ      Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ  Ｌｉｂｒａｒｙ、ニューラルネットワークライブラリ
ＳｏＣ      Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ、システムオンチップ
【図１】
2018073414.tif 000003
【図２】
2018073414.tif 000004
【図３】
2018073414.tif 000005
【図４】
2018073414.tif 000006
【図５】
2018073414.tif 000007
【図６】
2018073414.tif 000008