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

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

▶ グラフコアー リミテッドの特許一覧

<>
  • 特許-データ通過ゲートウェイ 図1
  • 特許-データ通過ゲートウェイ 図2
  • 特許-データ通過ゲートウェイ 図3
  • 特許-データ通過ゲートウェイ 図4
  • 特許-データ通過ゲートウェイ 図5
  • 特許-データ通過ゲートウェイ 図6
  • 特許-データ通過ゲートウェイ 図7
  • 特許-データ通過ゲートウェイ 図8
  • 特許-データ通過ゲートウェイ 図9
  • 特許-データ通過ゲートウェイ 図10
  • 特許-データ通過ゲートウェイ 図11
  • 特許-データ通過ゲートウェイ 図12
  • 特許-データ通過ゲートウェイ 図13
  • 特許-データ通過ゲートウェイ 図14
  • 特許-データ通過ゲートウェイ 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-07-28
(45)【発行日】2023-08-07
(54)【発明の名称】データ通過ゲートウェイ
(51)【国際特許分類】
   H04L 12/66 20060101AFI20230731BHJP
   H04L 45/00 20220101ALI20230731BHJP
   H04L 47/50 20220101ALI20230731BHJP
【FI】
H04L12/66
H04L45/00
H04L47/50
【請求項の数】 16
(21)【出願番号】P 2021500032
(86)(22)【出願日】2019-06-25
(65)【公表番号】
(43)【公表日】2021-10-21
(86)【国際出願番号】 EP2019066810
(87)【国際公開番号】W WO2020007648
(87)【国際公開日】2020-01-09
【審査請求日】2021-03-31
(31)【優先権主張番号】1811016.3
(32)【優先日】2018-07-04
(33)【優先権主張国・地域又は機関】GB
(31)【優先権主張番号】16/235,612
(32)【優先日】2018-12-28
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】518371892
【氏名又は名称】グラフコアー リミテッド
【氏名又は名称原語表記】Graphcore Limited
【住所又は居所原語表記】11-19 Wine Street,Bristol,BS1 2PH,United Kingdom
(74)【代理人】
【識別番号】100169904
【弁理士】
【氏名又は名称】村井 康司
(74)【代理人】
【識別番号】100221372
【弁理士】
【氏名又は名称】岡崎 信治
(72)【発明者】
【氏名】オーラ トランドバッケン
(72)【発明者】
【氏名】ブライアン マニュラ
(72)【発明者】
【氏名】ハラルド フー
【審査官】中川 幸洋
(56)【参考文献】
【文献】特表2018-502376(JP,A)
【文献】特開2000-215182(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/66
H04L 45/00
H04L 47/50
(57)【特許請求の範囲】
【請求項1】
ホストと、前記ホストに対する作業アクセラレータとして動作するためのサブシステムとのインタフェースを取るためにコンピューティングシステムで使用するためのゲートウェイであって、
前記サブシステムと前記ゲートウェイとの間のデータのバッチの転送を可能にするために前記サブシステムに接続するためのアクセラレータインタフェースと、
前記ゲートウェイと記憶装置との間でデータを交換するために外部記憶装置に接続するためのデータ接続インタフェースと、
少なくとも1つの第2のゲートウェイに接続するためのゲートウェイインタフェースと、
前記ゲートウェイと関連付けられたローカルメモリに接続されたメモリインタフェースと、
前記サブシステムからデータを受信するか又は前記サブシステムから同期要求を受信することにより前記サブシステムが事前コンパイルデータ交換同期点に到達したことを検知すると、前記ゲートウェイへの及び前記ゲートウェイからのデータのバッチのストリーミングを制御するためのストリーミングエンジンと、を有し、
前記データのバッチは、選択的に前記アクセラレータインタフェース、データ接続インタフェース、ゲートウェイインタフェース及びメモリインタフェースの少なくとも1つを介してストリーミングさ
前記データのバッチの1つ又は複数は、前記サブシステムが事前コンパイルデータ交換同期点に到達したことに応答して、前記ローカルメモリから前記サブシステムに転送され、
前記ストリーミングエンジンは、前記サブシステムが前記事前コンパイルデータ交換同期点に到達する前に、前記少なくとも1つの第2のゲートウェイから前記ローカルメモリに前記1つ又は複数のデータのバッチをストリーミングするように構成され、
前記ストリーミングエンジンは、少なくとも1つの外部記憶装置又は少なくとも1つの第2のゲートウェイから前記サブシステムに送信するためのデータを受信したときに生成されるESPクレジットの数が0より大きい場合に、前記ゲートウェイから前記サブシステムに前記1つ又は複数のデータのバッチをストリーミングするように構成される、
ゲートウェイ。
【請求項2】
前記データのバッチの前記1つ又は複数は、前記サブシステムによって前記ローカルメモリからプルされるために、前記ローカルメモリ内の示される記憶場所において利用可能にされる、請求項に記載のゲートウェイ。
【請求項3】
前記ストリーミングエンジンは、前記ローカルメモリから前記サブシステムに前記1つ又は複数のデータのバッチをプッシュするための命令を実行するように構成される、請求項に記載のゲートウェイ。
【請求項4】
前記ストリーミングエンジンは、データムーバエンジン及びメモリ管理エンジンを含み、前記データムーバエンジン及びメモリ管理エンジンは、作業記述子からの命令を協調して実行するように構成され、
前記メモリ管理エンジンは、前記サブシステムが前記事前コンパイルデータ交換同期点に到達する前に、前記ローカルメモリに前記1つ又は複数のデータのバッチをストリーミングするための、作業記述子からの命令を実行するように構成され、
前記データムーバエンジンは、前記サブシステムが事前コンパイルデータ交換同期点に
到達したことに応答して、前記ローカルメモリから前記サブシステムに前記1つ又は複数のデータのバッチをプッシュするための、前記作業記述子からの命令を実行するように構成される、請求項に記載のゲートウェイ。
【請求項5】
前記アクセラレータインタフェースにおいて、前記サブシステムが事前コンパイルデータ交換同期点に到達したことに応答して、さらなる1つ又は複数のデータのバッチを受信することと、
前記さらなる1つ又は複数のデータのバッチを前記ローカルメモリに格納することと、
を実行するように構成され、
前記ストリーミングエンジンは、その後、前記ローカルメモリから前記外部記憶装置に前記さらなる1つ又は複数のデータのバッチをストリーミングするように構成される、請求項1~のいずれか一項に記載のゲートウェイ。
【請求項6】
前記アクセラレータインタフェースにおいて、前記サブシステムが事前コンパイルデータ交換同期点に到達したことに応答して、さらなる1つ又は複数のデータのバッチを受信することと、
前記さらなる1つ又は複数のデータのバッチを前記ローカルメモリに格納することと、
を実行するように構成され、
前記ストリーミングエンジンは、その後、前記ローカルメモリから前記外部記憶装置に前記さらなる1つ又は複数のデータのバッチをストリーミングするように構成され、
前記メモリ管理エンジンは、前記外部記憶装置に前記さらなる1つ又は複数のデータのバッチをストリーミングするための、前記作業記述子からの命令を実行するように構成される、請求項に記載のゲートウェイ。
【請求項7】
前記サブシステムが事前コンパイルデータ交換同期点に到達したことに応答して、前記サブシステムからデータパケットを受信するように構成される、請求項1~のいずれか一項に記載のゲートウェイ。
【請求項8】
前記データパケットが、前記ゲートウェイと関連付けられたリソースにアドレスされているかどうかを判断するために、前記データパケットのアドレスを検査することと、
前記データパケットが、前記ゲートウェイと関連付けられたリソースにアドレスされていると判断したことに応答して、前記データパケットを前記リソースに転送することと、
を実行するように構成され、
前記ゲートウェイと関連付けられた前記リソースは、前記ホストに対する作業アクセラレータとして動作するための第2のサブシステム、及び、前記ゲートウェイのメモリのうちの1つ又は複数を含む、請求項に記載のゲートウェイ。
【請求項9】
前記データパケットにおいて示されるアドレスに対応する前記ゲートウェイインタフェースのポートをルーティングテーブルで調べることと、
前記ゲートウェイの前記ポート上で前記データパケットを転送することと、
を実行するように構成される、請求項に記載のゲートウェイ。
【請求項10】
前記アドレスは、前記第2のゲートウェイと関連付けられたアクセラレータのアドレスを示し、前記ゲートウェイは、前記ゲートウェイインタフェース上で前記データパケットを前記第2のゲートウェイに転送するように構成される、請求項に記載のゲートウェイ。
【請求項11】
前記アドレスは、拡大システムの複数のアクセラレータ及びゲートウェイを包含するグローバルアドレス空間のアドレスである、請求項8~10のいずれか一項に記載のゲートウェイ。
【請求項12】
前記外部記憶装置は、前記ホストの記憶装置、ローカル記憶装置及びネットワーク接続記憶装置の少なくとも1つを含む、請求項1~11のいずれか一項に記載のゲートウェイ。
【請求項13】
前記ゲートウェイインタフェースは、複数のポートを含み、各ポートは、複数のゲートウェイの対応する第2のゲートウェイに接続される、請求項に記載のゲートウェイ。
【請求項14】
前記アクセラレータ及びゲートウェイは、共通の同期ゾーンの一部を形成し、所定の条件が満たされるとき、事前コンパイルデータ同期点であることの通知を受信することに応答して、同期確認応答を生成するようにそれぞれ構成される、請求項11に記載のゲートウェイ。
【請求項15】
請求項1~14のいずれか一項に記載の1つ又は複数のゲートウェイと、前記アクセラレータインタフェースにおいて接続された少なくとも1つのアクセラレータとを含むシステムオンチップ。
【請求項16】
請求項1~14のいずれか一項に記載のゲートウェイを動作させる方法であって、前記ストリーミングエンジンが、複数のインタフェースのうち選択された1つのインタフェースを介して、前記ゲートウェイに及び前記ゲートウェイから前記データのバッチを選択的に転送するための命令を実行することを含む方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ホストと、作業アクセラレータとして動作するためのサブシステムとのインタフェースを取るためにコンピュータシステムで使用するためのゲートウェイに関し、特に、そのような作業アクセラレータの拡大可能なシステムを提供するためのゲートウェイの使用に関する。
【背景技術】
【0002】
複雑な又は高ボリュームのアプリケーションに対するデータ処理に関連して、作業アクセラレータは、一定のデータの処理がホストシステムからオフロードされるサブシステムであり得る。そのような作業アクセラレータは、特定のタイプの処理を実行するための専用ハードウェアを有し得る。
【0003】
例として、そのような専用アクセラレータサブシステムを役立てることができるコンピューティングの分野の1つは、機械知能において見いだされる。機械知能分野の当業者によく知られるように、機械知能アルゴリズムは、複数の相互接続ノードのグラフによって表すことができる「知識モデル」への反復更新の実行に基づく。各ノードの実装は、データの処理を伴い、グラフの相互接続は、ノード間で交換されるデータに対応する。典型的には、各ノードの処理の少なくともいくつかは、グラフの他のノードのいくつか又はすべてから独立して行うことができ、従って、グラフが大きければ、マルチスレッディングが実行される機会が大きくなる。従って、機械知能アプリケーション専用の作業アクセラレータは、大規模なマルチスレッディングを含み得る。並列処理の一形態は、同じチップ(すなわち同じダイ)上の複数のタイルの配列を含むプロセッサによって達成することができ、各タイルは、それ自体の別個のそれぞれの処理ユニット及びメモリ(プログラムメモリ及びデータメモリを含む)を含む。従って、プログラムコードの別個の部分を異なるタイル上で並列動作させることができる。タイルは、オンチップ相互接続を介して共に接続され、それによりタイル間でのデータの交換が可能になる。そのようなアクセラレータは、提供されるデータセットの並列処理を実行するために、ホストシステムに対するサブシステムとして機能することができる。
【0004】
一般に、異なるタイル上で動作しているプログラムの部分間に依存性が存在し得る。従って、依存するデータの前に動作している1つのタイル上のコードの断片が別のタイル上のコードの別の断片によって利用可能になることを防ぐための技法が必要とされる。これを達成するための多くの可能なスキームが存在し、それらのスキームの1つは、本明細書では例として「BSP(bulk synchronous parallel、バルク同期並列)」として説明されている。BSPによれば、各タイルは、演算段階と交換段階とを交互サイクルで実行する。演算段階中、各タイルは、タイル上で局所的に1つ又は複数の演算タスクを実行するが、他のいかなるタイルともその演算の結果を通信しない。交換段階では、各タイルは、グループ内の1つ若しくは複数の他のタイルに、及び/又はグループ内の1つ若しくは複数の他のタイルから、先行する演算段階からの演算の1つ又は複数の結果を交換することが認められているが、次の演算段階に進むことはない。さらに、BSP原理によれば、バリア同期は、演算段階から交換段階に移行するか若しくは交換段階から演算段階に移行するか又はその両方の接合点に設けられる。すなわち、(a)グループ内のいずれかのタイルが次の交換段階に進むことを認める前に、すべてのタイルがそれらのそれぞれの演算段階を完了する必要があるか、(b)グループ内のいずれかのタイルが次の演算段階に進むことを認める前に、グループ内のすべてのタイルがそれらのそれぞれの交換段階を完了する必要があるか、又は(c)その両方のいずれかである。いくつかのシナリオでは、グループ内の他のタイルとの通信を伴わない限り、演算を実行しているタイルは、他のシステムリソース(ネットワークカード又は記憶ディスクなど)と通信することができる。
【0005】
これらの処理を実行するためのシステムの処理能力を増大するため、作業アクセラレータとして動作する複数のサブシステムを組み込むシステムを提供することは有利となるであろう。上記で説明されるモードでは、各アクセラレータのタイルは、演算段階中にデータを並列処理し、次いで交換段階中にデータを交換するように構成される。複数のアクセラレータを組み合わせることにより、複数の別個のアクセラレータのタイルは、アクセラレータ内のタイル間のみならず、異なるアクセラレータに属するタイル間でもデータを並列処理し、次いでデータを交換することができる。そのような方法では、複数のアクセラレータを、並列処理を実行するための処理能力の大幅な改善をもたらすために結合できる。
【0006】
アクセラレータの拡大可能なシステムを提供する際に提起される課題の1つは、正しい時点で処理するために適切なアクセラレータにデータが伝達されるように、アクセラレータとシステムの他のデータ源(1つ又は複数のホストなど)との間でデータが転送されることをどのように保証するかということである。第1のアクセラレータは、第1の演算段階中にホストから受信されたデータセットを処理する必要があり得る。次いで、第2のアクセラレータは、第2の演算段階中にこの処理の結果を処理することができる。連携するサブシステムを含む拡大されたアクセラレータシステムを提供するための異なるエンティティ(例えば、ホストと異なるアクセラレータ)間のデータの伝達は、技術的な課題をもたらす。
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明は、外部記憶装置からアクセラレータにデータを提供し、それらを相互接続して作業アクセラレータとして動作するサブシステムを拡大するために使用できるゲートウェイの概念を使用するものである。アクセラレータは、交換段階においてゲートウェイからデータを受信し、それに続く演算段階においてデータを演算する。ゲートウェイのいくつかの形態では、ゲートウェイ自体がデータのアクティブプロセッサであり、そのデータフローを自律的に管理する。ゲートウェイは、外部記憶装置と1つ又は複数のアクセラレータとの間の仲介装置として動作する。ゲートウェイは、外部記憶装置からアクセラレータに伝達するためにデータを一時的に格納するためのローカルメモリを有する。これにより、近く実行される演算段階においてアクセラレータが処理する必要があるデータを提供する際にゲートウェイがアクセラレータより遅れないことをどのように保証するかという課題が提起される。
【課題を解決するための手段】
【0008】
第1の態様によれば、ホストと、ホストに対する作業アクセラレータとして動作するためのサブシステムとのインタフェースを取るためにコンピューティングシステムで使用するためのゲートウェイであって、サブシステムとゲートウェイとの間のデータのバッチの転送を可能にするためにサブシステムに接続するためのアクセラレータインタフェースと、ゲートウェイと記憶装置との間でデータを交換するために外部記憶装置に接続するためのデータ接続インタフェースと、少なくとも1つの第2のゲートウェイに接続するためのゲートウェイインタフェースと、ゲートウェイと関連付けられたローカルメモリに接続されたメモリインタフェースと、サブシステムが事前コンパイルデータ交換同期点に到達したことに応答して、ゲートウェイへの及びゲートウェイからのデータのバッチのストリーミングを制御するためのストリーミングエンジンと、を有するゲートウェイが提供される。データのバッチは、選択的にアクセラレータインタフェース、データ接続インタフェース、ゲートウェイインタフェース及びメモリインタフェースの少なくとも1つを介してストリーミングされる。
【0009】
いくつかの実施形態では、データのバッチの1つ又は複数は、サブシステムが事前コンパイルデータ交換同期点に到達したことに応答して、ローカルメモリからサブシステムに転送される。
【0010】
いくつかの実施形態では、データのバッチの1つ又は複数は、サブシステムによってローカルメモリからプルされるために、ローカルメモリ内の示される記憶場所において利用可能にされる。
【0011】
いくつかの実施形態では、ストリーミングエンジンは、ローカルメモリからサブシステムに1つ又は複数のデータのバッチをプッシュするための命令を実行するように構成される。
【0012】
いくつかの実施形態では、ストリーミングエンジンは、サブシステムが事前コンパイルデータ交換同期点に到達する前に、少なくとも1つの第2のゲートウェイからローカルメモリに1つ又は複数のデータのバッチをストリーミングするように構成される。
【0013】
いくつかの実施形態では、ストリーミングエンジンは、サブシステムが事前コンパイルデータ交換同期点に到達する前に、外部記憶装置からローカルメモリに1つ又は複数のデータのバッチをストリーミングするように構成される。
【0014】
いくつかの実施形態では、ストリーミングエンジンは、データムーバエンジン及びメモリ管理エンジンを含み、データムーバエンジン及びメモリ管理エンジンは、作業記述子からの命令を協調して実行するように構成され、メモリ管理エンジンは、サブシステムが事前コンパイルデータ交換同期点に到達する前に、ローカルメモリに1つ又は複数のデータのバッチをストリーミングするための、作業記述子からの命令を実行するように構成され、データムーバエンジンは、サブシステムが事前コンパイルデータ交換同期点に到達したことに応答して、ローカルメモリからサブシステムに1つ又は複数のデータのバッチをプッシュするための、作業記述子からの命令を実行するように構成される。
【0015】
いくつかの実施形態では、ゲートウェイは、アクセラレータインタフェースにおいて、サブシステムが事前コンパイルデータ交換同期点に到達したことに応答して、さらなる1つ又は複数のデータのバッチを受信することと、前記さらなる1つ又は複数のデータのバッチをローカルメモリに格納することとを実行ように構成され、ストリーミングエンジンは、その後、ローカルメモリから外部記憶装置にさらなる1つ又は複数のデータのバッチをストリーミングするように構成される。
【0016】
いくつかの実施形態では、メモリ管理エンジンは、外部記憶装置にさらなる1つ又は複数のデータのバッチをストリーミングするための、作業記述子からの命令を実行するように構成される。
【0017】
いくつかの実施形態では、ゲートウェイは、サブシステムが事前コンパイルデータ交換同期点に到達したことに応答して、サブシステムからデータパケットを受信するように構成される。
【0018】
いくつかの実施形態では、ゲートウェイは、データパケットが、ゲートウェイと関連付けられたリソースにアドレスされているかどうかを判断するために、データパケットのアドレスを検査することと、データパケットが、ゲートウェイと関連付けられたリソースにアドレスされていると判断したことに応答して、データパケットを前記リソースに転送することとを行うように構成され、ゲートウェイと関連付けられたリソースは、ホストに対する作業アクセラレータとして動作するための第2のサブシステム及びゲートウェイのメモリの1つ又は複数を含む。
【0019】
いくつかの実施形態では、ゲートウェイは、データパケットにおいて示されるアドレスに対応するゲートウェイインタフェースのポートをルーティングテーブルで調べることと、ゲートウェイのポート上でデータパケットを転送することとを実行するように構成される。
【0020】
いくつかの実施形態では、アドレスは、第2のゲートウェイと関連付けられたアクセラレータのアドレスを示し、ゲートウェイは、ゲートウェイインタフェース上でデータパケットを第2のゲートウェイに転送するように構成される。
【0021】
いくつかの実施形態では、アドレスは、拡大システムの複数のアクセラレータ及びゲートウェイを包含するグローバルアドレス空間のアドレスである。
【0022】
いくつかの実施形態では、外部記憶装置は、ホストの記憶装置及びネットワーク接続記憶装置の少なくとも1つを含む。
【0023】
いくつかの実施形態では、ゲートウェイインタフェースは、複数のポートを含み、各ポートは、複数のゲートウェイの対応する第2のゲートウェイに接続される。
【0024】
いくつかの実施形態では、アクセラレータ及びゲートウェイは、共通の同期ゾーンの一部を形成し、所定の条件が満たされるとき、事前コンパイルデータ同期点であることの通知を受信することに応答して、同期確認応答を生成するように構成される。
【0025】
第2の態様によれば、第1の態様による1つ又は複数のゲートウェイと、アクセラレータインタフェースにおいて接続された少なくとも1つのアクセラレータとを含むシステムオンチップが提供される。
【0026】
第3の態様によれば、第1の態様によるゲートウェイを動作させる方法であって、ストリーミングエンジンが、複数のインタフェースのうち選択された1つのゲートウェイを介して、ゲートウェイに及びゲートウェイからデータのバッチを選択的に転送するための命令を実行することを含む方法が提供される。
【0027】
本発明をよりよく理解するため及び本発明がどのようにしてその効果を発揮できるかを示すため、ここで、例示として添付の図を参照する。
【図面の簡単な説明】
【0028】
図1】複数のタイルを含むプロセッサチップの概略ブロック図である。
図2】バルク同期並列(BSP)演算モデルの概略図である。
図3】BSPモデルの別の概略図である。
図4】アクセラレータとゲートウェイとの間の同期要求/確認応答の交換の概略図である。
図5】複数のプロセッサチップのシステムの別の概略図である。
図6】ホストとの同期を伴うプログラムフローを概略的に示す。
図7】アクセラレータ、ゲートウェイ及びホストを含むシステムを概略的に示す。
図8】ゲートウェイを通した異なるデータ経路の概略図である。
図9】ゲートウェイを使用するアクセラレータ及びホストの集合体を概略的に示す。
図10】ゲートウェイを通したデータフローの概略図である。
図11】アクセラレータ、ゲートウェイ及びホストを含むシステムの概略図である。
図12】複数のアクセラレータ及びゲートウェイを含むマシンの概略図である。
図13】複数のマシンを含むポッドの概略図である。
図14】データの配備及び演算を行う方法の例を示す。
図15】3つのゲートウェイ間の同期要求及び確認応答の交換の概略図である。
【発明を実施するための形態】
【0029】
本出願の実施形態は、ホストと、ホストに対する作業アクセラレータとして動作するためのサブシステムとのインタフェースを取るためにコンピュータシステムで使用するためのゲートウェイに関する。ゲートウェイは、サブシステムとゲートウェイとの間のデータのバッチの転送を可能にするためにサブシステムに接続するためのアクセラレータインタフェースを有する。ゲートウェイは、ゲートウェイと外部記憶装置との間でデータを交換するために外部記憶装置(ホスト又はネットワーク接続記憶装置など)に接続するためのデータ接続インタフェースも有する。ゲートウェイは、少なくとも1つの第2のゲートウェイに接続するためのゲートウェイインタフェースも有する。ゲートウェイは、ゲートウェイと結合したローカルメモリに接続されたメモリインタフェースも有する。ゲートウェイは、サブシステムが事前コンパイルデータ交換同期点に到達したことに応答して、ゲートウェイへの及びゲートウェイからのデータのバッチのストリーミングを制御するためのストリーミングエンジンであって、データのバッチのストリーミングは、選択的にアクセラレータインタフェース、データ接続インタフェース、ゲートウェイインタフェース及びメモリインタフェースの少なくとも1つを介するものである、ストリーミングエンジンも有する。
【0030】
例えば、ストリーミングエンジンは、ゲートウェイとサブシステムとの間でデータの転送が行われるように(例えば、アクセラレータによって処理されるデータを転送し、結果を受信するように)することができる。ストリーミングエンジンは、例えば、ホストから、処理されるデータを受信するために、ゲートウェイと外部記憶装置との間でデータの転送が行われるようにすることができる。ストリーミングエンジンは、ゲートウェイと第2のゲートウェイとの間でデータの転送が行われるようにすることができる。2つのゲートウェイ間のデータの転送は、アクセラレータ間のデータ転送又はシステムの他の要素へのデータ転送のために使用することができる。
【0031】
ストリーミングエンジンは、アクセラレータによって処理されるデータ、外部記憶装置に送信される結果又は別のゲートウェイに送信されるデータの格納又は回収のために、ゲートウェイとローカルメモリとの間でデータの転送が行われるようにすることができる。
【0032】
システムの異なるエンティティ間でデータのバッチをストリーミングするためのストリーミングエンジンを有するそのようなゲートウェイを提供することにより、適切な時点においてサブシステムの異なる要素が互いにデータのバッチを通信できるようにすることにより、アクセラレータシステムの拡大が可能になる。例えば、2つのゲートウェイ間の通信は、異なるアクセラレータ間のデータの転送を可能にすることができ、その結果、データは、事前コンパイルデータ交換同期点においてアクセラレータに到達する。これらのアクセラレータ間のストリーミングを制御するための事前コンパイルデータ交換同期点の使用により、アクセラレータによって予期される正しい時点において関連アクセラレータにデータが伝達されることが保証される。
【0033】
本出願の実施形態では、完全なAIクラスタの拡大のために、アクセラレータとして動作する128個のサブシステムが共に接続される。各サブシステムは120TFを提供するので、結果として得られる連携するサブシステムの組合せにより、16PFlopsを有するシステムを製造できる。従って、システムの拡大を可能にするゲートウェイは、処理能力の大幅な改善を可能にする。
【0034】
以下の説明は、本出願の様々な実施形態をさらに詳細に説明する。本出願は、ホストシステムに対する作業アクセラレータとして動作するためのサブシステム及び複数のそのようなサブシステムの組合せに関する。サブシステムは、主に繰り返し処理を対象とする大量のデータを必要とするプロセスを動作させているホストによって割り当てられたデータセット(作業)において、既定の処理ステップを実行するためにアクセラレータとして動作する。各サブシステムは、いわゆる知能処理ユニット(IPU)又は任意のクラスのアクセラレータ(XPU)であり得る。本明細書で説明される技術は、その内容が参照により本明細書に組み込まれる、本発明者らの先行する米国特許出願公開第15/885925号明細書で説明されるIPUで使用することができるが、いかなるアクセラレータにも適用することができる。より詳細に説明されるように、いくつかのアクセラレータは、アクセラレータマシン又は設備を形成するために組み合わせることができる。いくつかのアクセラレータ設備は、筐体内で組み合わせることができる。複数の筐体はグループにまとめられてもよいし、ラックに配置されていてもよい。結果として得られるアクセラレータの組合せは、並列処理を実行するための大量の処理能力を有するシステムをもたらし得る。これは、特に、人工知能応用におけるニューラルネットワーク処理の実装に有益である。本明細書で提示される原理は、潜在的に単一のラックを超えて拡大するために使用することもできる。
【0035】
本出願は、そのようなアクセラレータの有効性を高める上で多くの利点を有する新規のゲートウェイに関する。ゲートウェイは、アクセラレータによる処理のためのデータセットを提供する1つ又は複数のホストシステムからのアクセラレータの分解を可能にする。これは、いくつかの利点を有する。第1に、1つのホストあたりのアクセラレータの数をユーザ設定できるようにすることができ、ホストの物理的容量を超えて増やすことができる。第2に、アクセラレータI/Oをホストから分離することができ、それによりアクセラレータの数の関数としてI/O容量を拡大することができる。第3に、分解により、複数のホストは、アクセラレータリソースセットを使用することができ、アクセラレータリソースセットは、これらのリソース及び関連ホストのライフサイクル管理をサポートする明確に定義されたAPIを通して、ホストへの要望に応じて、割り当てられ且つグループにまとめられる。
【0036】
各アクセラレータは、単一チッププロセッサであり得る。図1は、単一チッププロセッサ2(すなわち単一のダイ)を示し、単一チッププロセッサ2は、複数のプロセッサタイル4のアレイ6と、タイル4間を接続するオンチップ相互接続34とを含む。チップ2は、それ自体の単一チップ集積回路パッケージ上に単独で実装することも、同じICパッケージにおいてパッケージ化された複数のダイの1つとして実装することもできる。また、オンチップ相互接続は、タイル4が互いにデータを交換できるようにするため、本明細書では「交換ファブリック」34と呼ぶこともできる。各タイル4は、ローカル命令メモリから命令(コード)を実行し、ローカルデータメモリのデータを取り扱うことができる処理ユニットである。タイル4は、バレルスレッド処理ユニット10及びメモリ11のそれぞれの例を含み得る。例えば、例示として、チップ2は、数百程度のタイル4又はさらに1000を超えるタイル4を含み得る。完全を期すため、「アレイ」は、本明細書で言及される場合、必ずしもタイル4の特定の次元数又は物理的なレイアウトを意図するとは限らないことも留意されたい。
【0037】
各チップ2は、1つ又は複数の外部リンク8も含み、それにより、チップ2は、異なるチップ上の1つ又は複数の他の外部のプロセッサ(例えば、同じチップ2の1つ又は複数の他の例)に接続することができる。これらの外部リンク8は、同じICパッケージ若しくはカード上又は異なるカード上のチップ2の1つ又は複数の他の例に共に接続するためのチップ間リンクとして動作することができる。チップ2の複数の例は、チップ間リンクによってカードに共に接続することができる(後に説明される図12に示されるように)。また、チップは、チップをゲートウェイに接続するコネクタ9も有し、それについては、後に詳細に説明する。すべてのアクセラレータがゲートウェイコネクタ9を有する必要はないが、少なくともいくつかは、本明細書で説明される目的のためにゲートウェイコネクタ9を有する必要があることに留意されたい。構成の一例では、チップ2は、チップ2によって処理される入力データの形態において、ホストによって割り当てられたゲートウェイから作業を受信する。ホストへの言及は、代わりに、ネットワーク接続記憶装置(NAS)などのオフチップ記憶システムへの言及を意図し得ることに留意されたい。ゲートウェイは、ホスト又はNASからのデータを1つ又は複数のアクセラレータに提供できるようにし、1つ又は複数のアクセラレータは、単一チッププロセッサ2として又は複数の単一チッププロセッサ2として設計され、複数の相互接続カード上に配列される可能性がある。ゲートウェイは、後に詳述されるように、アクセラレータとホストとの間の中継及び分解を可能にする。
【0038】
相互接続34は、アレイ6の異なるプロセッサタイル4がチップ2上で互いに通信することを可能にするように構成される。本発明者らの先行する特許出願で説明されるIPUでは、アクセラレータ2上のタイル4間の通信は、時間決定論的に起こる。しかし、他の形態のタイル間交換も可能である。アレイ6の異なるタイル4上で動作するプログラムの部分間に依存性が存在し得る。すなわち、1つのタイル上の処理データは、別のタイルからの結果に依存し得る(例えば、別のタイルが依存する結果を提供することができる)。従って、依存するデータの前に動作している1つのタイル4上のコードの断片が別のタイル4上のコードの別の断片によって利用可能になることを防ぐための技術が必要とされる。
【0039】
AI及びデータサイエンスの並列プログラミングモデルは、通常、3段階(演算、バリア及び交換)反復実行モデルに従う。すなわち、それは、アクセラレータ間及び各アクセラレータとホストとの間のデータ整合性を提供するため、アクセラレータへの及びアクセラレータからのデータ転送が、通常、バリア依存であることを示している。典型的に使用されるデータ整合性モデルは、バルク同期並列(BSP)、ステイル同期並列(SSP)及び非同期である。
【0040】
SSPでは、複数のワーカースレッドのうち比較的速いワーカースレッドは、最も遅いワーカースレッドよりクロックサイクル数の分だけ先行して動作することができる。ワーカースレッドは、様々なタイムスタンプを有する共有パラメータに対して行われた更新を見ることができる。例えば、クロックtのワーカーは、t-Δのタイムスタンプを有するそれらの更新に至るまでのワーカーからのすべての更新を見ることができる。BSPは、Δ=0の特別な事例であるため、ワーカーは、互いに先に動作を行うことができない。
【0041】
非同期データ整合性モデルでは、共有パラメータは、いかなるときでも読み取ること及び/又は書き込むことができる。
【0042】
本明細書で説明される本発明の実施形態は、BSPモデルを使用するが、代替として他の同期モデルを利用できることが明らかであろう。
【0043】
図2及び3を参照すると、BSP交換スキームの実装形態が示されており、各タイル4は、演算段階33と交換段階32とを交互サイクルで実行し、演算段階33と交換段階32とは、タイル間において、バリア同期30によって一方の側と他方の側が分離されている。図2及び3によって示される例では、バリア同期は、各演算段階33とそれに続く交換段階32との間に設けられる。演算段階33中、各タイル4は、タイル上で局所的に1つ又は複数の演算タスクを実行するが、他のいかなるタイル4ともこれらの演算の結果を通信しない。交換段階32では、各タイル4は、1つ若しくは複数の他のタイルに、且つ/又は1つ若しくは複数の他のタイルから、先行する演算段階からの演算の1つ又は複数の結果を交換することが認められているが、そのタスクが依存性を有するデータを他のタイル4から受信するまで新しい演算を実行しない。また、先行する演算段階において演算されたもの以外、いかなるデータも他のタイルに送信しない。交換段階において内部の制御関連処理などの他の処理を実行できることは、除外されない。また、演算を実行しているタイル4は、演算段階33中、同期しているグループ内の他のタイル4との通信を伴わない限り、同期しているタイル4のアレイの外部のゲートウェイと通信できることにも留意されたい。タイルグループの外部の通信は、BSPメカニズムを任意に利用することができるが、代替として、BSPを利用せずに、それ自体の他の何らかの同期メカニズムを代わりに使用することができる。
【0044】
BSP原理によれば、バリア同期30は、演算段階33から交換段階32に移行する接合点若しくは交換段階32から演算段階33に移行する接合点又はその両方に設けられる。すなわち、(a)グループ内のいずれかのタイルが次の交換段階32に進むことを認める前に、すべてのタイル4がそれぞれの演算段階33を完了する必要があるか、(b)グループ内のいずれかのタイルが次の演算段階33に進むことを認める前に、グループ内のすべてのタイル4がそれぞれの交換段階32を完了する必要があるか、又は(c)これらの両方の条件が実施されるかのいずれかである。3つのすべての変形形態では、段階を交互に行うのは、個々のプロセッサであり、同期を行うのは、アセンブリ全体である。次いで、一続きの交換及び演算段階は、複数の繰り返しにわたって繰り返すことができる。BSP用語では、交換段階と演算段階との各繰り返しは、「スーパーステップ」と呼ばれる場合がある(ただし、文献上、必ずしも用語が一貫して使用されるわけではなく、個々の交換段階及び演算段階の各々が個別にスーパーステップと呼ばれる場合がある一方、本明細書で採用される用語のように、交換段階と演算段階とが共にスーパーステップと呼ばれる場合があることに留意されたい)。
【0045】
また、同じチップ2又は異なるチップ上のタイル4の複数の異なる独立したグループの各々は、互いに非同期的に動作する別個のBSPグループを形成することができ、演算、同期及び交換のBSPサイクルは、所定の各グループ内でのみ課された状態であり、各グループが他のグループから独立して動作を行う(すなわち、マルチタイルアレイ6は、各々が他のグループから独立して非同期的に動作する複数の内部同期するグループを含み得る(後により詳細に論じる))ことは、除外されないことにも留意されたい。いくつかの実施形態では、後により詳細に論じるように、同期と交換との階層的分類がある。
【0046】
図3は、(a)演算段階33から交換段階32へのバリア同期(上記を参照されたい)を課す例において、アレイ6のタイルのいくつか又はすべてのグループ4i、4ii、4iii間で実施されるようなBSP原理を示す。この構成では、一部のタイル4は、演算33を開始できるのに対して、他のタイルは、依然として交換している状態であることに留意されたい。
【0047】
本明細書で開示される実施形態によれば、このタイプのBSPは、バリア同期を実行するための機械語命令に追加の特別な専用の機能(すなわち同期(sync)命令)を組み込むことによって容易にすることができる。同期命令は、タイルのメモリに格納されたデータを同期させるためにデータを交換する交換段階を始めるために、タイルのプロセッサ上で実行することができる。
【0048】
同期命令は、同期モードを定義するオペランドを有する。そのようなモードの1つは、タイル間モード同期チップであり、データ交換のためにチップ上のすべてのタイルが同期バリアに達するようにするものである。各タイルは、事前決定論的時間に基づくコンパイルプロトコルに従って実行されるため、これは、各タイルに対する命令がコンパイルされる際にコンパイラによって管理される。
【0049】
既に述べたように、単一のアクセラレータと比べて改善された処理能力を有するアクセラレータマシン161を生成するために、いくつかのアクセラレータ(例えば、IPU)を組み合わせることが可能である。そのようなアクセラレータマシン161は、図12に示されている。アクセラレータマシン161は、アレイ状に接続された複数の(この例では4つの)アクセラレータ162を含み、各アクセラレータは、リンク8によってその近隣のアクセラレータに接続される。また、マシン161は、マシン161を1つ又は複数のホスト(図示せず)に接続するように構成された2つのゲートウェイ163も含む。各ゲートウェイ163は、ゲートウェイリンク9を介して4つのアクセラレータ162の2つに接続される。
【0050】
さらに詳細に説明されるように、ゲートウェイ163は、データ交換同期点に続く交換段階において、それらの接続されたアクセラレータ162とデータを交換することができる。データ交換同期点は、アクセラレータ上で動作している事前コンパイルされたコードの一部である同期命令の実行の結果としてトリガされる。データ交換同期点が始まった時点で、タイルのプロセッサ上で同期命令を実行することができる。アクセラレータ162の1つ又は複数のタイルによる1つ又は複数の同期命令の実行により、1つ又は複数のタイルによって1つ又は複数の同期要求が発行される。これらの同期要求は、アクセラレータ162によって集約され、次いで、アクセラレータ162は、集約した同期要求をその関連ゲートウェイ163に発行する。ゲートウェイは、複数のゲートウェイ及びアクセラレータから同期ゾーンを形成できるように、ゲートウェイとアクセラレータとの間で同期信号を送信するために接続することができる。同期信号の機能の1つは、BSPモデルの交換段階におけるゲートウェイ163と関連アクセラレータ162との間のデータ交換を容易にすることであるが、他の非データ関連の用途を有する。各ゲートウェイ163は、ローカルメモリを有し、データ交換同期点においてアクセラレータに送信されるデータを得て(ホスト、リモート記憶装置又は別のゲートウェイから)、格納するように構成される。データは、アクセラレータ162からの同期要求前にローカルメモリに格納され、その結果、アクセラレータにいつでも転送できる状態にある。ゲートウェイの機能の1つは、アクセラレータがそれを必要とするときに、要求されたデータをアクセラレータに供給することである。データは、ゲートウェイにより、後に論じるような異なるメカニズムによってホスト又はリモート記憶装置から得ることができる。
【0051】
また、各ゲートウェイ163は、他のゲートウェイとデータを交換するようにも構成される。ゲートウェイ163は、アクセラレータ162に送信されるデータのコピーを他のゲートウェイに分配することができる。次いで、これらの他のゲートウェイ162は、接続されているアクセラレータ162にデータを分配することができる。従って、データのコピーを受信する他のゲートウェイ162は、記憶装置(例えば、ホスト又はリモート記憶装置)からデータを独立して得る必要がなく、それにより複数のゲートウェイによる記憶装置からの冗長データの回収を防ぐことができる。これについては、後により詳細に説明する。その上、後により詳細に説明されるように、ゲートウェイ163は、複数の異なるタイプのデータ転送を可能にするように構成される。ゲートウェイ163は、他のゲートウェイとデータを交換するように構成される。ゲートウェイ163は、結合されている1つ又は複数のアクセラレータ162とデータを交換するように構成される。ゲートウェイ163は、1つ又は複数のホスト(図示せず)とデータを交換するように構成される。
【0052】
図4を参照すると、アクセラレータ51の1つ又は複数のタイル53が同期要求をゲートウェイ52に発行する例において、同期要求/確認応答メカニズムがどのように機能するかの例が示されている。
【0053】
ゲートウェイ52は、近々行われる同期に対する同期ゾーンを表すレジスタ59を含む。レジスタ59は、ゲートウェイ52の共有レジスタブロック(SRB)において実装することができる。バリア同期前に、アクセラレータ51のタイル53は、近々行われる同期に対してアクセラレータ51のタイル53が属する同期ゾーンの通知32を送信するように構成される。アクセラレータ51のタイル53の多くは同じ同期ゾーンに属することができるため、アクセラレータ51は、通知32を書き込むために特定の同期ゾーンに属するタイルを指名する。同期ゾーンは、いずれのタイルが同期に共に関与するかを示す。いくつかの例では、同期ゾーンは、同じチップ上のタイル53のみを含み得、その例では、ゲートウェイは関与しないことが理解できる。他の例では、同期ゾーンは、異なるチップ上のタイル53を含む外部の同期であり得る。いくつかの例では、同期ゾーンは、異なるアクセラレータ上のタイルを含む。いくつかの例では、同期ゾーンは、ゲートウェイ、ホスト及び/又はリモート記憶装置を含む。
【0054】
本明細書では、同期ゾーンの通知はアクセラレータ51からゲートウェイ52に送信されるものとして提示されているが、他のいくつかの実施形態では、通知は、ゲートウェイ52によって決定され、レジスタ59に格納されるものであり得る。ゲートウェイ52は、その事前コンパイルされたコードに基づいて、この決定を自律的に行うことができる。他のいくつかの実施形態では、通知は、アクセラレータ51から受信される同期要求56の一部として提供することも、同期要求がアサート(assert)される前に提供される帯域外(例えば、PCIe書き込み)同期情報の一部として提供することもできる。
【0055】
データ交換同期点は、アクセラレータ51のタイル53上で動作しているコードの事前コンパイルされた同期命令の結果としてトリガされる。データ交換同期点が始まった時点で、1つ又は複数のタイル53のプロセッサ上で1つ又は複数の同期命令を実行することができる。同期命令を実行する各タイルは、同期要求を送信し、同期要求は、アクセラレータ51の同期論理54で受信される。同期論理54は、これらの同期要求55を集約し、集約した同期要求56をゲートウェイ52に送信する。
【0056】
ゲートウェイ52は、アクセラレータ51から同期要求56を受信し、同期バリアの通過を認めることができる。これは、同期要求56に応答して、同期確認応答57をアクセラレータ51に送信することを伴う。同期バリアの通過を認めることにより、アクセラレータ51のタイル53は、互いにデータを交換できるようになり、いくつかの状況では、ゲートウェイ52自体とデータを交換できるようになる。ゲートウェイ52とのデータ交換は、ホスト(図示せず)からゲートウェイ52において受信されたデータをアクセラレータ51の1つ又は複数のタイル53に転送することを伴い得る。ゲートウェイ52とのデータ交換は、別のゲートウェイ(図示せず)からゲートウェイ52において受信されたデータをアクセラレータの1つ又は複数のタイル53に転送することを伴い得る。他のゲートウェイから受信されたデータは、別のアクセラレータからのものであり得る。これは、ゲートウェイを介してアクセラレータ間のデータ交換を達成することができるメカニズムの1つである。他のゲートウェイから受信されたデータは、別のホストからのものであり得る。別のメカニズムは、ゲートウェイの設備を通して、ゲートウェイ間のファブリックポートを介して、ゲートウェイに接続されたアクセラレータが別のゲートウェイに接続された別のアクセラレータに直接書き込めるようにするものである。これを達成するため、アクセラレータ/ゲートウェイ(すなわち筐体/グループ/ラックなど)の各分類のすべての記憶場所は、単一のグローバルアドレス空間の一部を形成する。
【0057】
ゲートウェイ52は、(i)ゲートウェイ-アクセラレータ、(ii)ゲートウェイ-外部及び(iii)ゲートウェイ-ゲートウェイの3つのデータ交換境界を有する。これらの境界は、異なる要件を有するので、異なるプロトコルによって管理される。しかし、それらの境界は、アクセラレータ51が要求する(すなわち同期している)際にアクセラレータ51データがゲートウェイメモリにおいて利用可能であるが、ゲートウェイ52に対するデータを格納するゲートウェイメモリがオーバーフローしないように調整しなければならない。
【0058】
既に述べたように、同期前に、アクセラレータのタイル53のグループに対する同期ゾーンに関する通知は、レジスタ59に格納される。いくつかの実施形態では、このレジスタ59への書き込み50は、ゲートウェイ52に同期要求56を発行する前に行われる。タイルは、前の交換段階の終了時又は対応する同期が行われる交換段階に先行する演算ステップの開始時に通知を送信することができる。各同期バリアに対して、レジスタ59への別個の書き込み50が行われる。同期要求56を受信次第、ゲートウェイ52は、同期要求に対応する通知をレジスタ59から消費するように構成される。ゲートウェイ52は、同期要求56に対応する通知がレジスタ59に書き込まれている場合にのみ、同期要求に対する確認応答57をアクセラレータ51に送信するように構成される。換言すれば、ゲートウェイ52は、最後のバリア以降に値がリフレッシュされている場合にのみ、同期要求に対する確認応答57をアクセラレータ51に送信する。
【0059】
例えば、演算段階が終了するまでアクセラレータの1つ又は複数のタイル53がそれらの同期ゾーンを決定できないことを理由に、レジスタ59への同期ゾーンの通知の書き込みの遅延が存在する場合、同期要求は、同期ゾーンの対応する表示でレジスタが更新される前に受信することができる。この例では、ゲートウェイ52は、レジスタが同期ゾーンの対応する表示を受信するまで確認応答57の送信を待つ。従って、システムは、レジスタ59のリフレッシュを待つ間、小さい待機を被ることになり得る。
【0060】
ゲートウェイ52は、レジスタ59に格納された同期ゾーンの通知を使用して、同期確認応答57を生成し、正しいタイル、チップ及び/又はアクセラレータに送信する。例えば、同期ゾーンの表示が、同期ゾーンがアクセラレータ51を含み、加えてさらなるアクセラレータ(図示せず)を含む場合、ゲートウェイ52は、同期要求の受信に応答して同期確認応答をアクセラレータ51及びさらなるアクセラレータに送信する。ゲートウェイ52は、レジスタ59から同期ゾーンの通知を読み取ることができ、この通知に応じて相応に同期確認応答又は要求57を伝播することができる。
【0061】
レジスタ59に格納された同期ゾーンの通知は、ゲートウェイ52自体からのデータ転送が同期の一部として必要であるか否かの通知を含む。この通知は、レジスタ59に格納された同期ゾーンの通知から暗黙的に得ることができる。データ転送が必要であるとゲートウェイ52が決定した場合、ゲートウェイ52は、同期バリアの通過を認めるか否かを決定するためにクレジット(credit)制御メカニズムを適用する。データ転送が必要ないとゲートウェイ52が決定した場合、ゲートウェイ52は、クレジット制御メカニズムを適用することなく、同期確認応答57をアクセラレータ51に送信する。クレジット制御メカニズムに対して、ゲートウェイ52の記憶装置(後に説明するローカル同期バリアモジュール(LSBM))において利用可能な第1のクレジットセット(ESP(交換同期点)クレジットと呼ばれる)の1つ又は複数が存在する場合、ゲートウェイ52は、同期要求56の受信に応答して同期バリアの通過を認めるように構成され、それは、アクセラレータ51に同期確認応答57を送信し、ゲートウェイメモリ(図4には図示せず)からアクセラレータ51に同期のデータを転送することによって行われる。利用可能なESPクレジットがゼロである場合、ゲートウェイ52は、同期要求56に対する確認応答57を行わず、ゲートウェイメモリ(図4には図示せず)からアクセラレータ51にデータを転送しないので同期が停止する。このクレジット制御メカニズム(以下でより詳細に説明する)は、BSPプロトコルでゲートウェイ52とアクセラレータ51とが互いに同期し続けられるようにする。
【0062】
いくつかの実施形態では、ゲートウェイ52及びアクセラレータ51は、各々が事前コンパイルされたコードを含み、それにより、ゲートウェイ52は、正しい時点でアクセラレータ51に必要なデータを提供することができる。
【0063】
アクセラレータ51の同期ロジック54が同期要求56を送信した後、同期ロジック54は、ゲートウェイ52からの同期確認応答(sync_ack)57を待つ。アクセラレータ51の同期ロジック54がゲートウェイ52から同期確認応答57を受信すると、同期ロジック54は、同期要求55を発行したタイル53に同期確認応答信号57(sync_ack)を返信する。同期を要求したすべてのタイル53は、外部の同期ロジック54から同期確認応答58(sync_ack)が返信されるまで自動的に一時停止される。同期確認応答58に応答して、タイル53は、スーパーバイザに対する命令発行を再開する(すなわち、タイル53は、演算段階に再び入る)。
【0064】
実際のデータ(コンテンツ)は、同期要求55/56及び同期確認応答57/58に対する異なるチャネルにより、アクセラレータタイル53とゲートウェイ52との間で送信することができる。さらに、当業者は、本明細書で開示されるその機能の仕様を考慮して、開示される同期及び集約機能を実装するために異なるタイプの回路を構築できることを理解するであろう。例えば、同期ロジック54は、同期要求56及び同期確認応答57/58を送信するための専用配線を使用することができる。代わりに、同期ロジック54は、専用配線の代替として、相互接続上で運ばれるパケットを使用することができる。例えば、同期要求55/56及び/又は同期確認応答57/58の各々は、1つ又は複数のパケットの形態で送信することができる。例えば、同期要求55/56及び/又は同期確認応答57/58の各々は、1つ又は複数のパケットの形態で送信することができる。
【0065】
図5を参照すると、同期ゾーンの概念がより詳細に示されている。図5に示されるように、実施形態では、ゲートウェイ52のレジスタ59に書き込まれる同期ゾーンの通知は、複数の異なる可能な外部の同期ゾーン(例えば、ゾーン1又はゾーン2)の1つを指定するために使用することができる。実施形態では、これらの同期ゾーンは、異なる階層レベルに対応する。すなわち、より高い階層レベル92(例えば、ゾーン2)の各々は、少なくとも1つのより低い階層レベルの2つ以上のゾーン91A、91Bを包含する。例として図9を使用すると、ゲートウェイの一番左の2つのゲートウェイ及びアクセラレータは、2つのゲートウェイの1つがマスタである同期ゾーン0を有し得る。同様に、一番右の2つのゲートウェイ及びアクセラレータは、2つのゲートウェイの1つがマスタである同期ゾーン0を有し得る。次いで、さらに、図全体である同期ゾーン1が存在し得る(次いで、任意のゲートウェイを同期マスタとして指名することができる)。次いで、プログラムにより、同期のいくつかの階層が利用できるようになる。
1.内部アクセラレータのみの同期 - 同じアクセラレータ上のタイルを同期することができる
2.IPU+ゲートウェイのみの(データ)同期 - 単一のアクセラレータがゲートウェイに同期を要求する(例えば、データの交換を調整するため)
3.一番左の同期ゾーン0(各ゲートウェイにおけるクレジットあり/なし)
4.一番右の同期ゾーン0(各ゲートウェイにおけるクレジットあり/なし)
5.同期ゾーン1(各ゲートウェイにおけるクレジットあり/なし)
【0066】
通知は、同期に対するゲートウェイの関与(すなわちデータがゲートウェイ52とアクセラレータ51との間で転送される予定であること)を示すことができる。通知は、ゲートウェイ52以外のさらなるゲートウェイの関与を示すことができ、アクセラレータ51は、ゲートウェイ52を介してさらなるゲートウェイと通信することができる。従って、対応する同期命令が実行されると、この同期命令を実行するタイル53は、ゲートウェイ52とのデータ転送を介してホスト63と同期する。さらなるゲートウェイの関与が示される例では、アクセラレータ51からの同期要求を、上流のさらなるゲートウェイに渡すことができる(ゲートウェイ52において受信された他の同期要求と集約された後)。ゲートウェイ52は、さらなるゲートウェイからの同期確認応答を待ってから、同期確認応答をアクセラレータに提供する。このシナリオについては、後に図8に関してより詳細に説明する。
【0067】
外部の同期ゾーンを示すレジスタ59内の通知に応答して、ゲートウェイ52は、同期確認応答57を外部の同期ゾーンのアクセラレータに送信する。アクセラレータの専用ハードウェアである同期ロジック54は、ゲートウェイから同期確認応答(sync_ack)57を受信し、通知されたグループのタイル4に同期確認応答58を送信する。同期ロジック54は、以前にそのゾーンのすべてのタイル4から同期要求(sync_req)55が受信されている場合にのみ(ただし、グローバル同期でなければ、そのゾーン外の他の任意のタイルを待たない)、信号伝達された同期ゾーンのタイルに同期確認応答信号58(sync_ack)を返信する。
【0068】
他の実施形態では、レジスタ59内の通知によって指定することができる同期ゾーンは、本質的に、階層的なものに限定されないことに留意されたい。一般に、レジスタ59内の通知には、いかなる種類の分類にも対応するモードを提供することができる。例えば、モードは、非階層的グループのみの中からの選択又は階層的分類と1つ又は複数の非階層的グループ(少なくとも1つのグループは、別のグループ内に完全にはネストされていない)とが混じり合ったものの中からの選択を可能にすることができる。これにより、有利には、プログラマ又はコンパイラは、最小コード密度で、より広範な同期が必要とされるまで、互いに非同期動作することができる内部同期グループの異なるレイアウトから選択できるという柔軟性を有し得る。
【0069】
既に説明したように、一部の同期バリアは、アクセラレータのタイルをホストからのデータと同期することを伴うのに対して、他の同期バリアは、そうではない。その例は、グローバル同期ゾーン92に対して、図6に概略的に示されている。システムは、N個の同期バリア80を通過して、N個のスーパーステップを実行することができ、その後、同様にホスト63との同期を必要とするバリア90が課される。ホスト63との同期バリア90では、ホスト63からゲートウェイ52に転送されているデータは、ゲートウェイ52からアクセラレータ51に転送される。N個の同期バリアは、関連同期グループ92のすべての(休止していない)タイル4から同期要求を必要とするが、ホスト63からは必要としない。後続の同期バリア80は、同期グループ92のすべての(休止していない)タイル4から同期要求を必要とする。その上、同期バリア80を通過するには、ゲートウェイは、特定のバリアを通過するために十分な数のESPクレジットを格納する必要がある。このバリア90後、ゲートウェイと1つ又は複数のタイル4との間で交換50”を実行することができる(例えば、1つ又は複数のタイル4が演算結果をホスト63に報告するため)。
【0070】
ここで、図7を参照すると、ホスト63がどのようにアクセラレータ51との相互作用及びデータ交換を行うかがさらに詳細に示されている。ホスト63は、アクセラレータ51が処理するためのデータを提供するように構成される。アクセラレータ51は、データを処理し、処理の結果をホスト63に伝達するように構成される。ゲートウェイ52は、データ交換のためのホスト63とアクセラレータ51との間の管理形式でのデータのストリーミングを担う。例では、アクセラレータ51は、先行図を参照して上記で説明されるようなIPUであり得る。しかし、ゲートウェイ52は、ホスト63と他のタイプのアクセラレータ51とのインタフェースを取るために使用可能であり得る。
【0071】
交換同期点を通じたホスト63とゲートウェイ52とアクセラレータ51との間のデータ同期により、ゲートウェイデータ整合性及びI/O処理の即応性が保証される。ゲートウェイ52とアクセラレータ51との間のデータの利用可能性は、ESPクレジットのクレジットメカニズムを介して取り扱われる。1つのクレジットは、1つのESPの通過を可能にする。ESP前のゲートウェイメモリ114の準備は、「事前作業」命令を実行しているゲートウェイ52によって取り扱われる。ESP後のデータの取り扱いは、「事後作業」命令を実行することによって実行される。後に説明するPPE実行エンジン123は、事前及び事後作業命令を実行する。
【0072】
図7に示されるように(また図5も参照すると)、ゲートウェイ52は、少なくとも1つの「ローカル同期伝播モジュール」(LSPM)117及び少なくとも1つの「ローカル同期バリアモジュール」(LSBM)118を含む。LSBM 118は、PPEに対するある種のプロキシと考えることができ、データのバッチを処理するためにアクセラレータ上で動作しているプログラムをホストから分離できるようにする。アクセラレータ51/ゲートウェイ52同期は、ゲートウェイ52にデータを提供する際、ホスト63活動と非同期で動作することができる。LSBM 118は、上記で論じられるESPクレジットを格納するように構成される。LSBMは、LSPM 117にアクセス可能である。
【0073】
LSBM 118は、LSBM 118がPPEに対するプロキシとして動作するように配列されたそれぞれの同期グループ92にホスト63が参加できるように構成されたハードウェア回路を含む。ゲートウェイの関与を伴う同期である場合、タイル4によって出力された同期要求56は、ゲートウェイ52のLSPM 117とLSBM 118の両方を使用するのに対して、ゲートウェイ52とアクセラレータ51との間のデータ転送を伴わない同期に対する同期要求56は、LSPM 117によって受信され、LSBM 118が関与することなく要求側のタイルに返信される。従って、タイル4は、実行するプログラムにより、いつ(あるとすれば)アクセラレータ51がLSBM 118を介してゲートウェイと相互作用する必要があるかを決定する。
【0074】
アクセラレータ51がゲートウェイと相互作用する必要がある場合、LSBM 118は、同期要求56を受信した際に同期バリアの通過を認めるように構成され、ゼロより大きいESPクレジットの数が提供される。同期バリアの通過を認めることは、同期確認応答(図示せず)を生成し、この同期確認応答をアクセラレータ51に送信することを伴う。
【0075】
上記で説明されるように、ゲートウェイ52は、自身とアクセラレータ51との間のインタフェースと関連付けられたクレジットセットを格納する。これらのクレジットは、本説明では交換同期点(ESP)クレジットと呼ばれる。しかし、当業者であれば、この名称は、便宜上、クレジットを識別するためにのみ使用され、クレジットの本質に関する制限を含意しないことを理解するであろう。また、ESPクレジットは、1つのバリアに対してデータ交換処理を実行するか否かを制御するため、バリアクレジットとも呼ぶことができる。
【0076】
同期要求56が受信され、レジスタ59内の対応する表示が、ゲートウェイとのデータ転送が必要とされるようなものであるとき、LSBM 118のESPクレジットの数がゼロである場合、LSPM 117は、同期バリアの通過を認めず、従って、ESPクレジットの数がゼロより大きくなるまで、グループ92のタイル4が再び動作を続行することを認めない。ESPクレジットの生成は、交換同期点においてアクセラレータ51に転送するためのデータがゲートウェイ52で利用可能になった際に達成することができる。いくつかの例では、このデータは、ホスト63又はネットワーク接続若しくは他の外部記憶装置から転送された結果として利用可能になり得る。他の例では、このデータは、別のゲートウェイから転送された結果として利用可能になり得る。他のゲートウェイから受信されたデータは、別のアクセラレータ又は別のホスト若しくはリモート記憶装置からのデータであり得る。
【0077】
いくつかの実施形態では、ゲートウェイ52によって保持される複数のESPクレジットセットが存在し得る。異なる同期グループに対して、異なるクレジットセットが存在し得る。この例では、ある同期グループに対応する同期要求56は、ゲートウェイ52に要求の確認応答を行わせるのに対して(そのグループに対するESPクレジットの数がゼロではない場合)、別の同期グループに対応する同期要求56は、ゲートウェイ52に要求の確認応答を行わせないことがある(そのグループに対するESPクレジットの数がゼロである場合)。また、ゲートウェイ52と通信するように構成された異なるアクセラレータに対しても、異なるクレジットセットが存在し得る。図12に示されるように、各ゲートウェイ163は、2つのアクセラレータ162と通信するように構成され、従って、ゲートウェイ52は、各アクセラレータ162に対する2つのESPクレジットセットを格納することができる。各アクセラレータ162がゲートウェイデータ転送を必要とする2つの可能な同期グループを有する場合、合計で4つのクレジットセットが各ゲートウェイ163によって保持されることになる。
【0078】
同期グループのタイル4は、ゲートウェイに全く従うことなく(同期要求がLSPM 117に転送され、LSPM 117によって確認応答が行われて)同期されたN個のバリアを通して動作を続行することができ、その後、タイル4は、LSBM 118を介してゲートウェイと同期しなければならない(次いで、ゲートウェイに及び/又はゲートウェイからデータを交換することができる)。例えば、図6を参照されたい。
【0079】
上記で説明されるように、タイル4上で動作しているソフトウェアは、同期に対してゲートウェイの関与が必要であるか否かに関する通知を送信することにより(通知は、同期要求に含めることも、別々に送信することもできる)、ゲートウェイとの同期を要求するようにプログラムされる。この通知は、ゲートウェイ52のレジスタ59に格納される。そのような実施形態では、上記で説明されるクレジット制御メカニズムは、LSBM 118のみにより、ゲートウェイの関与(ホストの代わりにLSPM 118による同期確認応答のプロキシ付与(LSBM)であるか、又は場合によりLSPM 118へのより多くのESPクレジットの明示的な付与である任意の所定のバリアに対するゲートウェイの「関与」)を必要とするものとしてマークされた同期に対応するバリアに対して適用される。実施形態では、ゲートウェイの関与は、レジスタ59に格納された同期ゾーン表示の異なる変形形態ごとに選択される。すなわち、各同期グループ91、92に対して、同期ゾーン表示が取り入れることができる2つの変形形態(zone_1_host、zone_1_no_host及びzone_2_host、zone_2_no_host)が効果的に存在する。タイルの実行単位は、ゲートウェイ関与マーカーの信号伝達を同期ロジック54に相応に行わせるように構成される。しかし、他の実施形態では、ゲートウェイの関与を要求するために他のメカニズムを実装できることは、除外されず、さらにゲートウェイの関与が配線接続される(従って常に課される)ことも除外されない。
【0080】
実施形態では、ゲートウェイによって実行されるバリアの準備は、モデル学習における次の段階のためにアクセラレータ51によって必要とされる経験データセットなど、アクセラレータ51によってフェッチされるデータの準備を含み得る。これに関連して、準備は、記憶ディスク又は他の媒体からのデータのフェッチ、アクセラレータ51上で動作している訓練アルゴリズムによって必要とされる形態でのデータのフォーマット又は画像データの解凍を含み得る。加えて、バリアの準備は、アクセラレータ51によって生成された出力データを消費することを含み得る。後に論じるように、この準備のいくつか又はすべては、ゲートウェイ52で実施することができる。最低でも、ゲートウェイ52は、記憶ディスク又は他の媒体とアクセラレータ51との間の通路にある。
【0081】
LSBM 118への同期要求56を処理要素からネットワーク(若しくはPCIe)パケットとして伝達すること及び/又は同期確認応答57をネットワーク(若しくはPCIe)パケットとして返信することができる。一般に、ゲートウェイは、同期の階層レベルのいずれか1つ又は複数に関与し得る。
【0082】
一般に、ESPクレジットの概念は、本明細書で開示される例示的なアーキテクチャのみならず、いかなるマルチタイルアーキテクチャにも適用可能であり得る。また、それは、必ずしもBSP用途の関連に限定されるわけではない。開示される技術は、BSPなどの単一のランデブーポイントを採用するシステムとの特定の相乗効果を有するか、又はホスト若しくは他の外部世界のシステムと対象のマシンとの間の別個のランデブーポイントの数が1つのみ若しくは非常に少ない数(例えば、CSPとは対照的に)のランデブーに限定される場合、システムとの特定の相乗効果を有する。それにもかかわらず、本開示の適用性は、この点において絶対的に制限されるものではない。いかなるシステム又は用途においても、レイテンシの節約は、ゲートウェイの関与なしでタイルが指定の数の同期バリアを通過できるようにすることによって達成することができ、従ってマルチタイルサブシステムがゲートウェイと相互作用しなければならない回数が低減され、従ってそうすることに対する遅延ペナルティを招く回数が低減される。
【0083】
その上、カード間又はホスト63とのPCIeインタフェースの観点から実施形態を例示してきたが、これは、限定されず、他のタイプのインタフェース(例えば、イーサネット)を使用することができる。
【0084】
その上、実装形態は、ホストシステム63とアクセラレータ51との間の通信を同期する(そうでなければ非同期動作することになる)ことに限定されない。実施形態では、ゲートウェイ52は、2つの独立したBSP間又は他の並列処理サブシステム間(内部同期動作するが、互いに対して非同期動作するもの)の同期に対して採用することができる。ゲートウェイ52は、同期グループのサイズをはるかに大きいサイズに増大することができ、それらのより大きいグループに対するより効率的なツリー構造を可能にする。
【0085】
ゲートウェイ52で受信されたデータのバッチは、メモリ114に格納される。メモリ114は、ゲートウェイ52による使用のために確保されるローカルメモリ(例えば、DRAM)である。同期要求56に応答して、データは、ゲートウェイ52によってメモリ114から回収され、アクセラレータ51に転送することができる。経路116は、データの各バッチのフローを示す。データの各バッチは、一定の期間(バッチごとに異なり得る)中、メモリ114に保持されることに留意されたい。その期間は、バッチがゲートウェイ52に入る時点及びバッチがアクセラレータ51にプッシュされる時点に依存し、これらの時点は、必ずしも関連するとは限らない。
【0086】
LSPM 117は、メモリ114からアクセラレータ51への又はアクセラレータ51からメモリ114へのデータの転送のタイミングをゲートウェイ52に示すように構成することができる。これにより、LSPM 117は、ゲートウェイメモリ114のオーバーフローを防ぐために、アクセラレータ61からメモリ114へのデータの転送に対する適切なタイミングを決定付けることができる。
【0087】
その上、ゲートウェイメモリ114のオーバーフローを回避するため、ホスト/リモート記憶装置からゲートウェイメモリ114へのデータのフローが管理される。
【0088】
図7では、アクセラレータ51によって処理するためのデータは、ホスト63からゲートウェイ52に転送され、ゲートウェイ52は、そのデータをローカルメモリ114に格納する。データは、ゲートウェイ52によってRDMAリードを介してプルすることも、ホスト63によって行われるRDMAライトを介してゲートウェイ52に書き込むこともできる。
【0089】
図11を参照すると、ゲートウェイ52によってネットワーク接続記憶装置151からデータ116が回収される代替のスキームが示されている。ネットワーク接続記憶装置151は、本明細書ではリモート記憶装置とも呼ばれる。図11では、図11の要素と同様の要素は、同様の参照番号で示している。
【0090】
図11では、ホスト63は、記述子119をゲートウェイ52に送信する。記述子119は、ゲートウェイ52がアクセス可能なネットワーク接続記憶装置151の場所を特定する。ゲートウェイ52は、記述子119を参照してデータフェッチ命令を実行する際、ネットワーク接続記憶装置151からデータ116を回収する。次いで、ゲートウェイ52は、アクセラレータ51にデータを転送する前にメモリ114にデータ116を格納する。
【0091】
いくつかの実施形態では、ホスト63からゲートウェイ52に記述子119を転送する代わりに、ゲートウェイ52によって格納される事前コンパイルされたコードが記述子を含む。この例では、ゲートウェイ52は、ホストが介入することなくリモート記憶装置151からデータを自律的に回収する。その用途のいくつかの例では、ゲートウェイ52は、外部のホスト63が不要となるようにスタンドアロン設備として機能するシステムオンチップ(SoC)を含む。アプリケーションスタック全体は、SoC上又はより広範なシステムのSoCの1つにおいて直接動作する。ゲートウェイ52は、外部のホスト63プロセッサと相互作用する第1のモードと、そのような外部のホスト63が不要である第2のモードとで動作するように構成可能である。ゲートウェイ52の残りの部分(例えば、図8に関して説明されるストリーミングエンジン)は、これらのモードのいずれのモードでゲートウェイ52が動作するように構成されているにかかわらず、同じ機能を実行する。
【0092】
図8を参照すると、ゲートウェイ52がより詳細に示されている。図8は、ゲートウェイ52を通してデータが取る様々な経路を示す。
【0093】
図8は、アクセラレータ51によって処理するためのデータ120がどのようにホスト63又はリモート記憶装置151からメモリ114に転送されるかを示す。既に述べたように、いくつかの例では、データ120は、ホスト63からゲートウェイ52に転送される。他の例では、データ120は、ゲートウェイ52によって行われたリモート記憶装置151からの読み取り要求に応答して、ローカル又はリモート記憶装置151(例えば、ネットワーク接続記憶装置)から受信される。ゲートウェイ52は、RDMAを介してリモート記憶装置151からデータ120を回収する。データ120は、データセンタポートを介して受信される。加えて、ゲートウェイ52は、データの回収のみならず、ホスト63/リモート記憶装置151へのデータの書き込み(図示せず)も行う。データの書き込みは、データセンタポートを介して行われる。交換段階中、データは、ゲートウェイメモリ114からアクセラレータ51に転送することができる。
【0094】
交換段階中にゲートウェイメモリ114からアクセラレータ51にデータを転送する代わりに又はそれに加えて、データは、アクセラレータ51からゲートウェイ52に転送することができる。アクセラレータ51は、データパケットの形態でデータをゲートウェイ52に送信するように構成され、各データパケットは、アドレスを示すヘッダを含む。ゲートウェイ52は、データパケットのアドレスを使用して、それらのデータパケットをどこに送信するかを決定する。例えば、データパケットは、ローカルメモリ114に格納することができる。データパケットは、さらなるゲートウェイ128に送信することができる。データパケットは、さらなるゲートウェイ128に接続されたアクセラレータに発送することができる。データパケットは、ホスト63/リモート記憶装置151に送信することができる。
【0095】
データ120は、ストリーミングエンジン124(アクセラレータ51に伝達するためにメモリ114からのデータ121の回収も担う)の制御下において、ゲートウェイ52をトラバースしてメモリ114に到達する。ストリーミングエンジン124は、データストリーミング処理の実行を行う。データのバッチに対するこれらの処理は、作業記述子(WD)によって指定することができる。ストリーミングエンジン124は、2つの実行エンジン及びコードメモリ(図示せず)を含む。実行エンジンの一方は、データムーバエンジン(DME)122であり、他方は、事前/事後作業エンジン(PPE)123である。それらのエンジンは、コンパイラによって生成される実行可能イメージとしてコードメモリにロードされた命令を実行する。ストリーミングエンジン124は、DME 122による実行のための作業命令のセット及びPPE 123による実行のための作業命令のセットを有する。DME及びPPEに対する命令のセットは、コンパイル時のセットアップとしてWDによって調整される。単一のデータ交換同期点に対するこれらの命令は、単一のWDにまとめることができる。DME 124は、実行可能イメージのDMEセクションに見られる特定のDME命令によって実行される。DME 124は、所定のESPに関連するデータムーバ(DMOV)命令のセットにナビゲートするためにWDを使用する。PPE 123は、実行可能イメージのPPEセクションに見られる特定のPPE命令によって実行される。PPE 123は、所定のESPに関連する事前/事後作業命令のセットにナビゲートするためにWDを使用する。
【0096】
PPEの事前作業は、アクセラレータ51とのデータ交換前に準備が整っていなければならない。WDのPPEの事後作業は、交換が完了した後にのみ開始することができる。データ交換は、同期要求56の確認応答が行われ、アクセラレータ51とストリーミングエンジン124との両方に信号伝達された直後に起こる。この要求/確認応答は、「交換同期点」(ESP)を信号伝達する。
【0097】
ストリーミングエンジン124は、異なるデータストリーミングモデルをサポートする。
【0098】
すべてのモデルは、ホストがESPクレジットの消費を厳重に制御することができる構成をサポートする。この構成は、ホスト63と、ゲートウェイ52と、アクセラレータ51との間のI/O処理の調整及びゲートウェイメモリ114を利用しない他のアクセラレータレベルのI/Oメカニズムのためにこれが必要な場合にアクセラレータ51を停止するためのメカニズムをサポートする。それは、ブレークポイントの設定又はアクセラレータの完全なファブリックのシングルステッピングのために使用されるメカニズムでもあり得る。ホスト63からの厳重なフロー制御下で任意のモデルを起動する際、ホスト63によって付与されたESPクレジットは、PPEスケジューラにより、「ESPクレジットレジスタ」(LSBM 118の一部)に転送される。ESPクレジットレジスタは、ゲートウェイ52ハードウェア及びファームウェアによって読み取ること/書き込むことができる。
【0099】
ストリーミングエンジン124によってサポートされる第1のストリーミングモデルは、「アドバンスドゲートウェイ(GW)プッシュ」と呼ばれる。アドバンスドGWプッシュでは、PPE 123は、外部記憶装置及びゲートウェイ(GW)メモリ114から/外部記憶装置及びゲートウェイ(GW)メモリ114にデータをストリーミングする一方、DME 122は、アクセラレータ51にデータをプッシュする。その実行は、ゲートウェイによって保持されるコンパイルされた実行可能イメージからの命令に基づく。ストリーミングエンジン124に対する実行可能イメージの生成は、アクセラレータコンパイラと統合される。コンパイラは、2つの関連するコンパイルされたコードシーケンス又は実行可能イメージを生成する。これらの第1のものは、アクセラレータ51上で実行される一方、第2のものは、ゲートウェイ上で実行される。いくつかの実施形態では、ホスト63は、コンパイルされたコードシーケンスをアクセラレータ51及びゲートウェイ52に提供することができる。
【0100】
「ゲートウェイプッシュモデル」は、ゲートウェイ52がデータをプッシュする際に使用されるモデルである。このモデルは、ゲートウェイが合意時点において(合意ESPにおいて)アクセラレータ51にデータをプッシュする点で「ゲートウェイプルモデル」(以下で論じる)と異なる。この一般的なプッシュモデルは、並列プログラミングのための異なるタイプのメモリコンシステンシプロトコル又はブリッジングモデルをサポートすることができる。その例は、バルク同期並列(BSP)、ステイル同期並列(SSP)及び非同期並列を含む。
【0101】
アドバンスドゲートウェイ(GW)プッシュモデルは、プッシュされるデータ入力(アクセラレータに対する)の利用可能性及びアクセラレータ51にデータを出力するためのゲートウェイ52のデータバッファの利用可能性を制御するためのクレジットメカニズムを使用する。ゲートウェイ52は、データムーバ命令(DME 122がアクセラレータ51にデータをプッシュする)と、外部ノード(ホスト、NAS又は他のゲートウェイ)によってデータを転送するための事前/事後作業エンジン命令との両方を実行する。PPE 123は、外部のI/Oボトルネックが原因でアクセラレータ入力データが利用可能ではない場合、ESPクレジットの欠如を通してDME 122を効果的に停止することを担う。また、外部のI/Oボトルネックが原因でアクセラレータ出力データ(リモートホスト/記憶装置向けの)がゲートウェイ52メモリ114に蓄積している際にも同様の停止が必要である。
【0102】
このモデルにより、アクセラレータ51へのプッシュが起こる前に、GWメモリ114から高速ゲートウェイ転送メモリ127(例えば、SRAM)へのデータのプリフェッチが可能になるため、このモデルにより、ゲートウェイ52は、より低い遅延でデータを伝達することができる。また、プルは、往復移動を必要とする(すなわち、プルは、読み取り要求に応答して読み取り要求を実施した後、データ返信を行う必要がある)ため、プッシュは、本質的に、プルより低い遅延の処理である。他方では、プッシュは、単にデータの転送を伴う。
【0103】
アドバンスドゲートウェイプッシュモデルの別の利点は、アクセラレータ51が、データのプルに対して貴重な演算リソースを投入せず、代わりにゲートウェイDME 122にデータ移動をオフロードすることで利益を得ることである。
【0104】
上記で説明されるメモリコンシステンシモデル(BSP、SSP、非同期など)は、プッシュモデルと組み合わせることができる。次いで、アクセラレータ51のランタイムは、外部のバリアがDME 122及びPPE 123データ移動をトリガすることを確認しなければならなくなる。プッシュ処理の例では、ESPクレジットは、ゲートウェイ52によって1つずつデクリメントされる。
【0105】
第2のストリーミングモデルは、アドバンスドアクセラレータプルと呼ばれる。このストリーミングモデルでは、PPE 123は、外部記憶装置から/外部記憶装置にゲートウェイメモリ114にデータをストリーミングする。次いで、アクセラレータ51は、PCIe読み取り処理を介してゲートウェイ52からデータをプルする。PPE 123実行は、コードメモリ内の実行可能イメージからの命令に基づく。
【0106】
このモデルでは、DME 122は、使用不能になり、上記で説明される処理を実行しない。他方では、PPE 123は、アクティブ状態であり、外部記憶装置から「プル要求」(すなわち読み取り要求)を発行することにより、データを得てメモリ114に格納する。次いで、アクセラレータ51は、事前に定義されたESPにおいてメモリ114からデータをプルする。アドバンスドアクセラレータプルモデルは、DMOV命令なしで、事前/事後作業命令を含む実行可能イメージを利用する。ホスト63は、ESPクレジットメカニズムを介してアクセラレータ51を同期させ、その結果、アクセラレータ51は、予期されるESPにおいて、ゲートウェイメモリ114で準備された有効データをプルする。
【0107】
また、このモデルの場合、PPE 123は、外部のI/Oボトルネックが原因でアクセラレータ51入力データが利用可能ではない場合、LSPMの停止(クレジットメカニズムを介して)を担う。また、外部のI/Oボトルネックが原因でアクセラレータ51の出力データ(リモートホスト/記憶装置向けの)がゲートウェイメモリ114に蓄積している際にも同様の停止を実行することができる。
【0108】
第3のストリーミングモデルは、単純アクセラレータプルと呼ばれる。このストリーミングモデルでは、ホスト63は、ゲートウェイメモリ114に/ゲートウェイメモリ114からデータをストリーミングする。アクセラレータ51は、PCIe読み取り処理を介してゲートウェイ52からデータをプルする。ゲートウェイ52は、この例では、PPE命令を実行せず、代わりにホスト63又はNASとゲートウェイ52との間の事前に定義されたI/Oスキームのスレーブである。
【0109】
このモデルでは、ゲートウェイメモリ114は、メモリ領域として機能し、ホスト63は、そのコンテンツを制御する。メモリ114にデータをロードするためにゲートウェイ52で実行される命令は、存在しない。その上、DME 122は、使用不能になり、命令を実行しない。PPE 123は、命令を実行しないが、依然としてデータがいつ利用可能であるかをアクセラレータ51が見出せるように、ホスト63によって与えられたESPクレジットを更新するためにプロキシとして機能している。
【0110】
データのストリーミングのために割り当てられたゲートウェイメモリ114は、あたかもそれがPCIe接続メモリであるかのようにホスト63によって維持され、その唯一の違いは、PCIeの代わりにRDMAが使用されることである。
【0111】
上記で説明されるストリーミングプッシュモデルでは、ゲートウェイ52は、オンチップストリーミングバッファとしてゲートウェイメモリ114を使用することによってアクセラレータメモリアクセス遅延を隠す。ストリーミングエンジン124の全体的な利益は、データ移動をアクセラレータ演算とオーバーラップさせ、タイミングを合わせたプッシュ処理前にゲートウェイ52のメモリ114にプリロードできることである。アドバンスドGWプッシュモデルは、アクセラレータリソースを確保する(そうでなければDMA処理のために使用される)という追加の利益を有する。
【0112】
ゲートウェイ52におけるデータストリーミング処理の実行は、ストリーミングエンジン124によって行われ、ストリーミングエンジン124は、処理モデルに応じて、ゲートウェイ52命令セットのすべて又はサブセットを動作させる。命令は、実行可能イメージとしてゲートウェイメモリ114にロードされる。ストリーミングエンジン124に対する実行可能イメージの生成は、コンパイラがアクセラレータ51及びゲートウェイ52上で起動するための関連コードを生成する特定のアクセラレータ/ゲートウェイコンパイラ環境と統合される。
【0113】
ストリーミングエンジン124は、最適な性能を提供する方法でデータI/Oがアクセラレータに供給されることを保証するために協働するハードウェアコンポーネントとソフトウェアコンポーネントとのセットを含むように見える。ゲートウェイ52又はストリーミングエンジン124の処理モデルに応じて、ストリーミングエンジン124は、「ちょうどよい時間」に(すなわち次のアクセラレータ演算ステップへの条件付きのエントリポイントを表す計画されたデータ交換段階で)データをプッシュすることも、アクセラレータ51が同じ「ちょうどよい時間」にプルできるようにゲートウェイメモリ114においてデータを利用可能にすることもできる。データ交換段階前のゲートウェイメモリ114における関連データの準備は、ゲートウェイストリーミングエンジン124によって実行される事前にスケジューリングされたデータストリーミング命令を介して行われる。加えて、プッシュモデルは、データ交換段階中の遅延低減のために、ゲートウェイメモリ114からゲートウェイ転送メモリ127(例えば、SRAM)にデータをプリフェッチすることができる。「ちょうどよい時間」にゲートウェイメモリ114にデータをもたらすという概念は、ゲートウェイメモリ114が、アクセラレータ演算アルゴリズムによって必要とされるすべてのデータを保持できるほど十分に大きくない例に対して役立つ。
【0114】
PPEエンジンは、所定のESPに関連する事前作業(PRE)及び事後作業(POW)命令のセットにナビゲートするためにWDを使用する。「事前」及び「事後」という用語は、アクセラレータ若しくは他のターゲットとのWDのデータ交換段階前に処理が発生するか、又はアクセラレータ若しくは他のターゲットとのWDのデータ交換段階後に処理が発生するかを示す。PRW命令は、ホスト63からゲートウェイメモリ114にデータをもたらすか(例えば、ホスト63、リモート記憶装置151又はさらなるゲートウェイ128から)又は1つ若しくは複数のDMOVプッシュ命令に対する準備としてゲートウェイメモリ114にデータをもたらすというその主要な役割を有する。「事後作業」は、GWメモリ114からデータを出す(例えば、ホスト63又はリモート記憶装置151に)というその主要な役割を有する。PPE命令は、PPE特有のイメージのセクションに位置する。
【0115】
DME 122は、上記で説明されるように、「ゲートウェイプッシュ」処理モデルではアクティブ状態である。プッシュモデルでは、DME 122は、所定のESPに関連するデータムーバ(DMOV)命令のセットにナビゲートするためにWDを使用する。DMOV命令は、アクセラレータに向けてデータをプッシュする。WD及びDME関連命令は、DME特有のイメージのセクションに位置する。ゲートウェイ52の物理的なDDRメモリ内のイメージから得られるDME命令は、DMOV命令の一部としてDMEのDMAマシンによって実行されるDMA記述子リストに変換される。DME 122は、アクセラレータ51とのデータの各バッチの交換サイズの完全な制御を可能にする中断基準によって制御される、いくつかの計画されたデータ交換に対してDMA記述子を準備する。
【0116】
DME 122は、アクセラレータメモリに及びアクセラレータメモリからデータをストリーミングするように設計された高レベルのプログラマブルマルチチャネルDMAマシンを使用する。DME 122は、ロード分散を使用して1つ又は2つの高速データバス上で単一のアクセラレータ51へのデータのストリーミングをサポートする。アクセラレータ51がデータロードシーケンスにとらわれない場合、ロード分散は、ローカルDME決定によって達成され、実行可能イメージに見られる情報によって制御されない。
【0117】
WDに対するすべての事前作業関連命令及びこのWDに対する終了基準を有するすべての事後作業命令が完了すると、WDは、「いつでも実行できる状態にある」(又は準備が十分整った)と考えられる。その時点で初めて、WDに対するESPクレジットがLSBM 118内のESPクレジットセットに追加される。
【0118】
「交換の終了」基準が満たされると、WDは、「完了した」とみなされる。すべての配備オペレーション(DMOV)が完了し、アクセラレータ51から受信されたすべての出力データが、予期される出力サイズと等しいと決定されるのはこのときである。予期される出力サイズは、WDに示される。
【0119】
ゲートウェイ52には、WDの準備が十分整った際にPPE 123がDME 122に信号伝達する方法が必要であり、これは、ESPクレジットをDME 122に追加することによって行われる(これは、WDクレジット又は交換クレジットと呼ぶこともできる)。DME 122前にいくつかのWDを動作させているPPE 123エンジンは、いくつかのESPクレジットを追加することができる。これにより、アクセラレータは、各ESPにおいてPPE作業の完了を待つ必要がなくなる。最適には、アクセラレータを停止することなく、バリアを通過できるように、各ESP移行時、ESPクレジットは、既に利用可能であるべきである。
【0120】
1つのクレジットは、アクセラレータ52との第1のデータ交換のためにすべてのデータを転送するDME 122の能力を表す。PPE 123は、PPEが次の順次ESPに対してデータプリフェッチを完了する(すなわち事前作業を完了する)度に新しいクレジットを追加することにより、ESPクレジットをインクリメントする。PPE 123による外部ノードからのデータのプリロードがESPまでに完了しなかった場合、DME 122は、そのESPクレジットがゼロであることを見出し、PPE 123がクレジットカウントをインクリメントするまで実行が停止される。データの欠如による1つのアクセラレータ51の停止は、同期起動している(すなわち同じバリア同期ネットワークを共有している)連携するアクセラレータの完全なセットを効果的に停止することになる。
【0121】
各DMOV命令は、DME 122により、DMA処理としてハードウェアにおいて実行される。これらのDMOV命令は、ゲートウェイプッシュモデルが適用される際に実行される。DMOV命令は、参照データバッファ(ゲートウェイメモリ114内の)に存在するデータをその送信先に移動する。その送信先は、通常、アクセラレータ51のメモリ場所であるが、他の送信先もサポートされる。
【0122】
データのストリーミングは、ESPごとに一括されるため、DME 122は、ゲートウェイメモリ114から必要な数のバッファが転送されると、データ転送を中断する。1つのESPバッチあたりで交換されるバイト数は、1)ストリーミングエンジン124のプッシュ処理と、2)ゲートウェイメモリ114への書き込みとの両方に対するパラメータフィールドにより、WDに示される。プッシュすべきバイト数は、同じWDに対してスケジューリングされたすべてのバッファのバイト数と等しいことが予期される。不一致があれば、これは、例外状況を招く。
【0123】
DME 122は、メモリ管理ユニット(MMU)のサポートなしでメモリ114からデータを回収するために物理メモリアドレスを使用するように構成される。
【0124】
ゲートウェイ52にデュアルバスを介して接続されるアクセラレータ51の場合、いずれのバスにデータを向けるべきかを示すための情報は、DMOVにない。DME 122は、2つのバス上で送信されるトラフィックの均衡を保つためにバスの選択を制御する。
【0125】
DMOVは、ゲートウェイメモリ114内の事前に初期化されたデータバッファにリンクすることができ、従って、この事例では、関連事前作業命令をバッファに充填する必要はない。
【0126】
代わりに、単一のDMOV(メモリ114内の単一のメモリデータバッファを用いる)は、データ収集処理のために事前作業命令のセットにリンクすることができる。そのような参照事前作業命令の各々は、異なるオフセットで特定の送信元及び場所から同じデータバッファにデータをもたらし、それにより収集処理が形成される。事前作業命令は、データを準備する対象となるDMOVと同じWDでスケジューリングされる。単一の事前作業処理は、いくつかのDMOVオペレーションによってプッシュされるデータを提供することができる。
【0127】
事前/事後作業エンジン命令セットは、ソフトウェアにおいて実装される事前/事後作業エンジンによって実行される。所定のESPに関連する「事前作業」を実行する必要があり、所定のESPに関連する「事後作業」を実行する必要がある。
【0128】
PPEによる命令の自律的実行は、「ゲートウェイプッシュ」及び「アドバンスドアクセラレータプル」処理モデルで実施することができる。PPE 123は、ゲートウェイ外部メモリ/記憶装置114に/ゲートウェイ外部メモリ/記憶装置114からデータを移動するために、RDMA、NFS、NVMoF、iSCSI又は他の任意のサポートされたファイルアクセスプロトコルを使用する。ストリーミング処理の実行は、実行可能イメージの「事後/事前作業セクション」に見られるPPE命令によって直接制御される。PPE 123は、イメージファイルから命令を取り入れて、これらの命令をローカル/リモート記憶装置の処理に変換するソフトウェアベースのストリーミングプロセッサと見なすことができる。これらの転送は、ゲートウェイメモリ114と外部メモリ/記憶装置との間のものである。
【0129】
PPE 123は、DME 122と並列実行され、DME 122は、PPE 123の結果に依存するため、PPE 123は、DME 122によって実行されるデータムーバ処理がスケジューリングされる前にその作業を終わらせなければならない。これは、実行可能イメージにおいて、作業記述子を使用して、同じデータ交換同期点に属するDME 122及びPPE 123命令をまとめることによって対処される。
【0130】
各PRW命令は、外部記憶装置からデータを回収し、PRW命令が指し示す(ゲートウェイメモリ114内の)事前コンパイルされたデータバッファにデータを格納する。PRW命令は、データの送信元に応じて異なる変数に入る。これらの変数は、外部のI/Oオペレーションを詳述する異なるパラメータセットを必要とする。これらの詳細は、実行開始前に、ゲートウェイ制御チャネルを介して制御プレーンによってセットアップされた参照I/Oテンプレートにおいて調べられる。
【0131】
コンパイラは、PRW命令によって参照されるバッファのためのメモリ114の領域を事前に割り当てる。これらのバッファは、PRW命令が実行される際に外部記憶装置から回収されたデータを格納するために使用される。
【0132】
ESPクレジットセットは、PPE 123により、各WDに対して、このWDに対してスケジューリングされたすべての事前作業関連命令が完了した際、以前のすべてのWDに対してスケジューリングされたすべての事前作業関連命令も完了しており、且つこのWDに対する終了基準を有するすべての事後作業関連命令も完了している場合にのみインクリメントされる。
【0133】
PRW命令は、データの送信元/送信先に応じて異なる変数に入る。
【0134】
PRW命令の実行順番は、実行可能イメージにおいて示される順番である。しかし、PRW命令のより小さいバッチは、リモート場所からのI/O性能を最適化するために並列処理される。1つ又は複数のWDからの1つ又は複数のPRW命令は、データが必要な際にWD前に実行される。これは、WDによって消費されるデータ「パイプライン」を充填するために必要である。ゲートウェイ52は、事前作業のための並列実行エンジンを有し、それによりデータ「パイプライン」を充填するこの事前作業を行うことができる。
【0135】
PRW命令に対する完了順番は、実行可能イメージの命令の順番と同じでない場合がある。しかし、データは、最終的に順序要件なしでゲートウェイメモリ114に行き着くため、そのような順不同の完了は、問題ではない。アクセラレータ51へのこのデータの配備順序に関して言えば、DME 122は、命令順番が実行可能イメージによって表現されているものであることを保証する。
【0136】
PRW命令は、常に終了基準を有する。PRW命令は、GW 52により、アクセラレータ51によって供給データが必要とされる所定のWD前に、ときが来れば完了するようにスケジューリングされる。終了基準は、PRW命令が含まれるWDによって表される。WDまでにデータを供給することができない事例では、データ交換段階は、データが利用可能になるまで遅延される。これにより、データが利用可能になるまでアクセラレータ51の演算段階が効果的に停止される。そのような停止の発生は、カウントされ、そのようなモニタリングからのフィードバックは、ゲートウェイ及び/又はコンパイラを最適化する上で役立つ。
【0137】
POW命令は、所定のESPに関連する「事後作業」を行う。その主要な機能は、ゲートウェイメモリ114から外部記憶装置(例えば、ホスト63又はリモート記憶装置151)にデータを移動することである。ゲートウェイメモリ114に格納されるデータは、アクセラレータ51から受信したデータである。POW命令は、データの送信先に応じて異なる変数に入る。これらの変数は、外部のI/Oオペレーションを詳述する異なるパラメータセットを必要とする。
【0138】
POW命令を動作対象のメモリ114内のデータバッファにリンクするかどうかは、コンパイラ次第である。
【0139】
事後作業の場合、結果は、アクセラレータ51に伝達されず、代わりにホスト63、リモート記憶装置151又はゲートウェイメモリ114に格納されるため、命令は、順不同に実行することができ、純データの書き込み順番に関連する暗黙の意味は存在しない。
【0140】
POW命令は、常に必須開始基準を有し、必須開始基準は、命令を実行できる最も早い時点を表す。必須開始点より後に命令を実行することはできるが、必須開始点より前に実行することはできない。従って、POW命令は、所定のWDで開始するためにトリガされる。このトリガWDは、POW命令が含まれるWDとして表される。前のWDの完了時、アクセラレータ51は、POW命令のバッファへの書き込みを終えていなければならない。
【0141】
異なるタイプのPOW命令が存在する。第1のタイプのPOW命令は、ローカルGWメモリ114からリモート記憶装置151にデータを移動することを伴う。これは、ホスト63により、制御チャネルを介して送信された命令(例えば、記述子119)によって構成することができる。第2のタイプのPOW命令は、ローカルゲートウェイメモリ114からホスト63にデータを移動することを伴う。これも、ホスト63により、制御チャネルを介して送信された命令によって構成することができる。第3のタイプのPOW命令は、ゲートウェイメモリ114に格納されたデータの操作を伴う。
【0142】
また、POW命令は、POW命令のパラメータによって表される任意の終了基準も有し得る。この任意の終了基準は、以下の用途を有し得る。第1に、この任意の終了基準は、事前作業命令が、その一部であるWDによって暗黙的に与えられたその終了基準を有するのとほぼ同じ方法で、POW命令が特定のWDに対するデータを準備できるようにすることができる。第2に、ゲートウェイコンパイラが、外部ノードにエクスポートするためにPOW命令によって使用された「出力」バッファを再利用している例では、未保存のデータを依然として保持しているバッファをアクセラレータ51による上書きから保護することが重要である。この例では、プログラムは、すべてのPOWがバッファのフラッシュを完了するまで、中断点としてDME命令ストリームにおけるいわゆる指定実行バリア(NEB)命令を出すことにより、バッファを保護することができ、従って再利用のため及びより多くのアクセラレータ51出力オペレーションのためにバッファを確保することができる。これらのNEB命令については、後に説明する。
【0143】
POW命令がその終了基準を満たすことができない場合、PPE 123は、ローカルDME 122を一時停止し、結果的に、すべてのアクセラレータは、同じ同期レベルで同期することになる。PPE 123は、POW命令を構文解析し、終了基準を見出す。同じ中断基準を有するか、異なる中断基準を有するか又は中断基準を有さないPOW命令がいくつかあり得る。
【0144】
上記で述べたように、コンパイラは、所定の実行時点に中断/通過「実行バリア」を設けることができる。(NEB)命令は、完了時にNEBCに信号伝達するように指示されたオブジェクトから多くの完了レポートを収集する指定「実行バリア」完了(NEBC)オブジェクトを指す(例えば、POW命令)。
【0145】
NEB命令は、常にWDに属している(すなわちWDに包含されている)。NEB命令は、3つのすべての命令ストリーム(DME、PPE_PRE及びPPE_POST)に挿入することができる。
【0146】
「中断」状態は、WDの命令の実行を進行させないためのDME/PPEへの中断信号を表す。他の可能な状態は、「通過」であり、それにより、DME/PPEは、WDのそれらの命令の実行を進行させることができ、従ってNEB命令を通過させる。状態は、この終了基準にリンクされたすべての命令がNEBCオブジェクトの「completions_seen」カウンタをインクリメントすることによって完了を報告すると、「中断」から「通過」に変化する。
【0147】
「実行バリア」の概念は、バルク同期並列(BSP)メモリコンシステンシモデルにおいてバリアを制御するために使用することができるESP同期プリミティブと混同してはならない。いくつかの例では、NEB命令挿入点は、アクセラレータプログラムに対する特定のESPと相関性があるが、そのような直接的な要件はない。NEBは、すべての種類の同期に対する一般的な中断点として使用することができる。
【0148】
NEB命令の使用の第1の例を提供することができ、第1の例では、NEB命令は、DME命令ストリームの開始時にWDに挿入される。NEBは、DME命令を実行するための前提条件を表す。前提条件は、POW命令を介して外部ノード(例えば、ホスト63又はリモート記憶装置151)へのアクセラレータ出力バッファ(又はリングバッファ充填閾値)のフラッシュを制御するために使用される。ESPクレジットセットは、NEB前提条件が満たされるまで且つPRW命令が完了するまでインクリメントされない。これは、利用可能なESPクレジットが存在しなければ、DMEによってWDをキャッシュすることはできるが、さらなる実行が行われないことを意味する。PPE 122がPRW命令の実行を完了すると、PPE 122は、最初に、WD内のすべてのNEB命令が「通過」状態であるかどうかをチェックする。すべてのNEB命令が「通過」状態であり、且つクレジットを与えるための他のすべての前提条件が満たされている場合、クレジットは、インクリメントされる。DME実行エンジンは、NEB命令が中断状態であることを認識した場合、例外を発生させる。この例外は、「中断」状態であるにもかかわらず、PPEが間違ってクレジットを追加したか、又はDME/PPE実装において何らかの発生条件があることを示す。
【0149】
NEB命令の使用の第2の例を提供することができ、第2の例では、NEB命令は、ゲートウェイ52からホスト63へのデータエクスポートのフロー制御を行うために事後作業命令ストリームに挿入される。この事例では、ホスト63は、NEBCの状態を制御する。このモデルでは、ホストは、PPE 123がホスト63にデータを転送するためにPOW命令を実行できるか否かを制御し、従ってNEB命令を通過させる。これは、状態を「通過」状態に設定するために、「リンクされた」NEBCオブジェクトの状態に対する更新を提供するホストによって制御される。ホストは、リンクされたすべてのPOW命令が完了した場合にのみ、「通過」状態に設定することができる。
【0150】
終了基準は、常に命令ストリームのNEBの「次の発生」時に設けられる。「次の発生」は、POWの実行に関連するものであると理解されたい。
【0151】
NEB命令の使用の第3の例を提供することができ、第3の例では、NEB命令は、ホスト63から供給されるデータインポートのフロー制御を行うために事前作業命令ストリームに挿入される。この例では、ホスト63は、NEBCの状態を制御する。このモデルでは、ホストは、PPE 123がホスト63又はリモート記憶装置151からメモリ114にデータを転送するためにPRW命令を実行できるか否かを制御し、従ってNEB命令を通過させる。これは、状態を「通過」状態に設定するために、「リンクされた」NEBCオブジェクトの状態に対する更新を提供するホスト63によって制御される。
【0152】
NEBCオブジェクトは、常に、プログラム実行の開始時に中断状態に初期化される。NEB後に次の命令を開始する際にも同じ再初期化が実行される。状態を「中断」に設定すると、「completions_seen」もゼロに設定される。
【0153】
DMEの例では、DME 122自体は、NEBが依然として見られないその実行にこれまで入ったことがなく、NEB命令が見られるまでに、リンクされたすべての命令が完了した場合、「completions_seen」は、「expected_completions」と同一であり、状態は、「通過」とみなされ、従って待つことなく実行が続行される。そうでなければ、DME 122は、リンクされたすべての命令が完了するまで待つ。
【0154】
ゲートウェイ52には、1つのアクセラレータ51に対してストリーミングエンジン124が1つあり、各ストリーミングエンジン124は、説明してきた様々なモードで起動することができる。
【0155】
ファブリックにわたって利用可能となるいくつかのストリーミングエンジンの例がある。1つのアクセラレータ51に対してストリーミングエンジン124が1つあり、各ストリーミングエンジン124は、イメージを実行している。各ストリーミングエンジン124は、1つ又は複数の高速バス(例えば、PCIe Gen4)を介してアクセラレータ51にデータを供給する。
【0156】
ストリーミングエンジン124を使用して実装することができる複数の異なる可能なストリーミングフローがある。例えば、第1の可能なストリーミングフローでは、ゲートウェイ52は、アクセラレータ51へのデータのストリーミングを可能にすることができる。このデータのストリーミングは、データを提供するように構成されたさらなるアクセラレータによって開始することができる。代わりに、データのストリーミングは、ゲートウェイ52のDME 122によって開始することができ、DME 122は、メモリ114からアクセラレータ51にデータを転送するための命令を実行する。そのようなデータは、ホスト63又はリモート記憶装置151からゲートウェイ52において受信されたものであり得る。
【0157】
第2の可能なストリーミングフローでは、ゲートウェイ52は、リモートアクセラレータへのデータのストリーミングを可能にすることができる。アクセラレータ51は、グローバルアドレス空間においてリモートアクセラレータを識別するアドレスを有するパケットをゲートウェイ52に提供することができる。ゲートウェイ52は、リモートアクセラレータに伝達するために、このアドレスを使用してデータパケットをさらなるゲートウェイ128に転送するように構成される。
【0158】
第3の可能なストリーミングフローでは、ゲートウェイ52は、ローカルゲートウェイメモリ114へのデータのストリーミングを可能にすることができる。これは、ローカルゲートウェイオフロードの結果であり得る。メモリ114へのデータの転送は、ESPにおけるアクセラレータ51からのものであり得る。メモリ114へのデータの転送は、ローカルRDMA又はホストRDMAの結果であり得る。データは、外部記憶装置(ホスト63、NAS 151又はさらなるゲートウェイ128など)からメモリ114に転送することができる。そのような外部記憶装置からのメモリ114へのデータの転送は、PPE 123によって行われる事前作業の一部である。
【0159】
第4の可能なストリーミングフローでは、ゲートウェイ52は、さらなるゲートウェイ128のメモリへのデータのストリーミングを可能にすることができる。データ転送は、ゲートウェイ52自体によって開始することができる。データ転送は、アクセラレータ51によって開始することができ、アクセラレータ51は、グローバルアドレス空間においてさらなるゲートウェイ128を識別するアドレスを有するパケットをゲートウェイ52に提供する。さらなるゲートウェイ128へのデータの転送は、ゲートウェイメモリ114からデータをプルするためにさらなるゲートウェイ128によって実行された事前作業命令の結果であり得る。
【0160】
第5の可能なストリーミングフローでは、ゲートウェイ52は、リモート記憶装置151へのデータのストリーミングを可能にすることができる。データは、RDMA、ネットワークファイルシステム(NFS)プロトコル、ファブリック上の不揮発性メモリ(NVMoF)及びインターネットスモールコンピュータシステムインタフェース(iSCSI)プロトコルの1つ又は複数によってゲートウェイメモリ114からリモート記憶装置151に転送される。データ転送は、ゲートウェイによって開始される。リモート記憶装置151へのこの転送は、PPE 123による事後作業命令の実行から生じ得る。
【0161】
第6の可能なストリーミングフローでは、ゲートウェイ52は、ホスト63へのデータのストリーミングを可能にすることができる。データは、ゲートウェイメモリ114からピンホストメモリ又はRDMAアクセス可能ホストメモリに転送される。ホスト63へのこの転送は、PPE 123による事後作業命令の実行から生じ得る。
【0162】
第7の可能なストリーミングフローでは、ゲートウェイ52は、1つ又は複数のリモートNFSサーバからのデータのストリーミングを可能にすることができる。これらのサーバからのデータ転送は、ゲートウェイ52によって送信された要求に応答して起こり得る。
【0163】
先に述べたように、AI及びHPCに対する並列プログラミングモデルは、通常、3段階(演算、バリア及び交換(データ転送、収集及びブロードキャスト))反復実行モデルに従う。すなわち、それは、アクセラレータが、通常、事前コンパイル済みデータ交換同期点におけるアクセラレータへの/アクセラレータからのデータ転送及び/又はアクセラレータの要求時に実行される収集を必要とすることを示唆している。要求は、同期点を表し、同期点は、アクセラレータ51が利用可能なデータの処理を完了し、いくつかのデータのエクスポート及びいくつかのデータのインポートを必要としている時点である。ゲートウェイ52は、アクセラレータ交換要求の確認応答の直後にそのデータ移動をスケジューリングする。
【0164】
ゲートウェイストリーミングエンジン124は、データ移動を最適化し、従って、データバッファ「オブジェクト」が、データ保持における重要な役割を果たす。実行中に(ゲートウェイメモリ114内の)バッファにポインタを渡すことにより、システムは、処理中にゼロコピーセマンティックを実装する。データバッファは、ロードされたイメージにおいて事前に初期化されるか又はPPE 123によって充填される。両方の例では、メモリ114内のバッファへの参照は、DME 122により、ESPにおいてアクセラレータ51にデータを転送するために使用することができる。
【0165】
データが既に準備されており、且つロードされた実行可能イメージに埋め込まれている際など、アクセラレータデータを準備するために必要な事前作業が存在しない例があり得る。そのような例では、PPE 123は、DME 122にESPクレジットをポストすることを担う。
【0166】
アクセラレータ51に向かうデータ移動がない(例えば、アクセラレータ出力データのみである)ESPも存在し得、そのような例でも、PPE 123は、DME 122にESPクレジットをポストすることを担う。この例では、PPE 123は、近々到来するESP中にアクセラレータ51に向かうデータ移動がないと決定することに応答して、近々到来するESPに対してESPクレジットをインクリメントする。
【0167】
ESPクレジットを追加するのは、常にPPE 123である。
【0168】
事前作業命令に対してのみの場合:WDの事前作業が、前に発行されたWDの事前作業と比べて、定刻前に完了した場合、WDの事前作業が完了した際、事前作業完了情報をキューイングし、前のすべてのWDの取り扱いが終わった後にESPクレジットの数を増加する設計が必要である。
【0169】
アクセラレータデータインポート(すなわちゲートウェイ52からアクセラレータ51へのデータ転送)の場合、WDは、交換中にどの程度のバイト数を両方向において(すなわちアクセラレータ51とゲートウェイ52との間で)転送するかを記述する。プッシュモデルのアクセラレータ51は、同じ情報でコンパイルされており、従ってこの交換に対してすべての予期データがいつ受信されるかを知っており、すべてのデータが受信された直後に演算段階を開始する。プルモデルでは、アクセラレータ51は、ゲートウェイ52からのデータの読み取りを中断することにより、交換をいつ終えるかを制御する。
【0170】
アクセラレータデータエクスポートの場合:アクセラレータ51は、そのコンパイルされたコードから、所定のESPに対してどの程度のデータをゲートウェイ52に送信するかを知っており、ゲートウェイ52は、WDからこの情報を読み取ることによってどの程度の数が予期されるかを知っている。
【0171】
ゲートウェイ52がアクセラレータ51から予期されたバイト数を受信すると、ゲートウェイ52は、次のWDの実行に移る。次のWDを実行する際、ゲートウェイ52は、ゲートウェイメモリ114内のデータに対するローカルオペレーションを含む事後作業を実行することができる。加えて又は代替として、ゲートウェイ52は、その最終的な送信先にデータを転送するために事後作業を実行することができる。代わりに、ゲートウェイ52は、事後作業を実行しなくともよい。例えば、ゲートウェイ52は、ゲートウェイメモリ114にデータをとどまらせ、メモリ114が後のリードバックのためのアクセラレータ外データキャッシュとして機能するようにすることができる。次のWDを実行する際、ゲートウェイ52は、次のESP前に完了する必要がある事前作業を実行することができる。加えて又は代替として、ゲートウェイ52は、次のESP後に実行すべきDMOV命令を実行することができる。利用可能なESPクレジットが存在する場合、DMOV命令は、ESP前にゲートウェイ転送メモリ127にデータをプリロードするために使用される。ESPクレジットが存在しない場合、DME 122は、ESPクレジットを待ち、ESPクレジットが利用可能になると、プリロードを実行する。
【0172】
PPE命令(すなわち事後作業(POW)及び事前作業(PRW)命令)が、記憶装置ノード上で既に利用可能であると知られている静的データのターゲットとしてリモート記憶装置114を捉えている場合、ゲートウェイがデータに直接アクセスするための記憶装置プロトコルをサポートしている限り、そのノードとのデータ同期は、不要である。
【0173】
ホスト63のメモリは、ゲートウェイ52及びアクセラレータ51に転送しているデータ量と比べて小さく、従って、ホスト63は、データを「断片ずつ」そのメモリに持っていく必要がある。この「断片ずつ」という本質により、RDMA読み取りを開始したゲートウェイ52(ゲートウェイデータインポート)に対してデータがいつ利用可能になるかを制御するゲートウェイ52とホスト63との間の同期メカニズムが必要とされる。同様に、RDMA書き込みを開始したゲートウェイ52(ゲートウェイデータエクスポート)に対して、同様の同期が必要である。全AI設備に対する課題は、ゲートウェイ/アクセラレータへの及びゲートウェイ/アクセラレータからのデータストリーミングを継続的に有することであり、従って、そのような同期メカニズムは、AI性能にとって不可欠である。システムには、これを大規模なAIファブリックに拡大するために、最小オーバーヘッドを有するよく設計されたソリューションが必要である。
【0174】
ストリーミングエンジン123は、ゲートウェイとホストとの間でデータを移動するためのいくつかのオペレーションモードを有する。
【0175】
第1のオペレーションモードでは、ストリーミングエンジン124は、ホスト63からのコマンドの下でホスト63のスレーブとして起動する。第2のオペレーションモードでは、ストリーミングエンジン124は、そのコードメモリに格納された事前コンパイルされた命令に基づいて実行する。
【0176】
第1のオペレーションモードでは、ストリーミングエンジン124は、ホスト63のスレーブとして動作し、ホスト63の制御下でデータをメモリ114に格納するオペレーション及びアクセラレータ51に伝達するために前記データをメモリ114から回収する処理を実行する。
【0177】
第2のオペレーションモードでは、ストリーミングエンジン124は、アクセラレータ及びゲートウェイから構成される完全なシステムのコードを生成するために使用されるコンパイラから得られた事前コンパイルされた実行可能ファイルに応じて、ホスト63又はリモート記憶装置151からデータをプリフェッチする。コンパイラは、(アクセラレータ51に伝達されるデータをフェッチする)ゲートウェイ52及び(データを処理する)アクセラレータ51に対するコードを生成するために使用されるため、ホスト63、ゲートウェイ52及びアクセラレータ51は、互いに同期して動作することができる。ゲートウェイ52のファイルは、アクセラレータ51によって必要とされるデータを予測し、そのデータをメモリ114に格納することにより、関連する演算段階前に配備するためにそのデータを準備する。ゲートウェイ52は、コンパイラによって生成されたコードに応じて、適切な時点において、アクセラレータ51に転送するためのデータを準備する。DME 122は、アクセラレータ51からの同期要求56に応答して、アクセラレータ51にとって完全に正確な時点において、遅延が最適化された方法でそのデータをアクセラレータ51に転送する。DME 122は、遅延を最適化して伝達するために、アクセラレータ51の近くに位置する。
【0178】
第3のオペレーションモードでは、アクセラレータ51は、次のN個のバリア前に、対応するN個のバリアに対してメモリ114からアクセラレータ51に転送するためにどのようなデータを準備するかをゲートウェイ52に知らせる。このオペレーションモードでは、アクセラレータコンパイラは、将来的なI/Oオペレーションを予見することができ、従ってゲートウェイ52がデータ伝達のための十分な時間を有するように、ゲートウェイ52へのそのようなコマンドをスケジューリングすることができる。
【0179】
コンパイラは、アクセラレータ51によって実行されるコンピュータコード命令のセットを生成する。これらのコンピュータコード命令のセットは、実行可能イメージと呼ぶことができる。いくつかの実施形態では(例えば、上記で説明される第2のオペレーションモードでは)、コンパイラは、ゲートウェイ52によって遂行されるストリーミングエンジンデータ移動/処理コマンドの関連セットを生成することもできる。
【0180】
コンパイラは、1つのストリーミングエンジンあたり1つの実行可能イメージを生成する。実行可能イメージは、アクセラレータから見えるような平坦な連続するXPU仮想アドレス(XVA)空間を参照する。このXVA空間は、内部アクセラレータメモリのみならず、同じXVA空間にメモリ管理ユニット(MMU)マッピングを介してマッピングされた「ストリーミングエンジンサンドボックス」メモリもカバーする。また、実行イメージは、ストリーミングエンジン122がアクセス可能な必要なホストメモリをカバーする「ホストサンドボックス」仮想アドレス(HSVA)空間も参照する。このHSVA空間は、GW処理モデル(「GWプッシュモデル」及び「アドバンスドXPUプルモデル」)に関連する。
【0181】
これらの2つの仮想アドレス空間(XVA及びHSVA)内では、コンパイラは、ストリーミングエンジン122、アクセラレータ51及びホスト63によって必要とされるバッファリソース及びアドレス可能な要素の存在を定義することを担う。
【0182】
また、コンパイラは、適切と思われる際及び限られたゲートウェイメモリ114が原因で必要とされる際のWDの反復間及びシーケンス間のメモリ114内のゲートウェイバッファの再利用を定義することも担う。バッファ再利用最適化は、十分なメモリがゲートウェイ52に割り当てられている限り不要である。
【0183】
2つ以上のアクセラレータと通信するように構成されたゲートウェイ52の場合、アクセラレータが、他のアクセラレータに割り当てられたストリーミングエンジンサンドボックス(sandbox)にアクセスすることは、現在可能ではない。これは、各アクセラレータ内部にセットアップされたMMU又はアクセラレータサポートチップによって強制される。異なるアクセラレータのXVA空間は、物理的なゲートウェイメモリではオーバーラップしない。ストリーミングエンジンは、それらの別個の「XPUサンドボックス」において動作し、すべてのアクセスは、それ自体のサンドボックス内にとどまるよう強制するランタイムである。アクセラレータのオンボードMMUにより、これらのストリーミングエンジン間で共有される共通のメモリ領域を構築することが可能であり得る。
【0184】
図7に示されるアクセラレータへのデータの転送を再び参照すると、いくつかの例では、ゲートウェイ52は、ホスト63又はリモート記憶装置151からデータを受信し、アクセラレータ51に転送するために高速ゲートウェイ転送メモリ127において利用可能にする前に、そのデータをメモリ114に格納する。DME 122は、DME命令に応じて、メモリ114から高速ゲートウェイ転送メモリ127にプリロードする。ゲートウェイ転送メモリ127のコンテンツは、ハンドシェイク要求の完了に応答して、アクセラレータ51に転送される。このゲートウェイ転送メモリ127へのプリロードは、上記で説明されるプッシュモデルにおいて使用される。いくつかの例では、ゲートウェイ転送メモリ127のプリロードは、ESPクレジットの数がゼロより大きい場合にのみ行われる。
【0185】
図14を参照すると、データの準備と、ゲートウェイ52とアクセラレータ51との間でのそのデータの交換と、このデータの処理とがどのように関連するかが示されている。準備及び配備段階は、ゲートウェイ52によって実行され、演算段階は、アクセラレータ51によって実行される。データは、関連演算段階前にゲートウェイ52によって準備される。データは、アクセラレータ51のできる限り近くに格納される。アクセラレータ51がデータを受け入れることができ、同期要求56をゲートウェイ52に送信することによってそれを示すと、ゲートウェイ52は、外部への依存性なしで、アクセラレータ51にリンクされたポートの全容量を使用してデータを配備する。配備されたデータがアクセラレータ51によって処理されるにつれて、ゲートウェイ52は、次のデータ配備段階を準備する。エンジンは、すべての利用可能なゲートウェイデータセンタポートにわたってその処理を拡大する。
【0186】
ゲートウェイ52は、ホスト63又はリモート記憶装置151からデータを受信し、追加のゲートウェイによって必要とされるデータの格納及び拡張を実行することができる。このデータは、追加のゲートウェイに転送することができる。次いで、追加のゲートウェイに転送されたデータは、それらの追加のゲートウェイと関連付けられたアクセラレータに提供することができる。これは、ボトルネックの回避に役立てることができる。例えば、各ゲートウェイが独立してリモート記憶装置151からデータを回収する代わりに、またそれによりリモート記憶装置151へのアクセス時にボトルネックが生じるため、1つのゲートウェイ52がリモート記憶装置151からデータを回収し、前記データを複数のゲートウェイに提供することができる。これにより、リモート記憶装置151にアクセスする際のボトルネックの問題に対処することができる。
【0187】
ゲートウェイ52がホスト63又はリモート記憶装置151からデータを受信すると、アクセラレータ51にこのデータを提供する前に、ゲートウェイ52は、データを処理する。この処理は、ストリーミングエンジン124によって行うことができる。処理は、データ増大(ノイズ注入)、解凍、復号(例えば、JPEGフォーマット画像及びH264フォーマット映像などの画像及び映像データの復号)の1つ又は複数を含み得る。この処理は、上記で論じられる単純アクセラレータプルモデルでは行われない。
【0188】
メモリ使用量を最小限に維持するため、データは、ゲートウェイ52にロードする際に圧縮され、アクセラレータ51に伝達する前の可能な最も遅い時点で解凍される。ゲートウェイ52は、特定のタイプの圧縮のための遅延最適化ハードウェア解凍エンジン(図示せず)を提供することができる。加えて、解凍は、任意の圧縮アルゴリズムに対するサポートを広げるために、ゲートウェイソフトウェアにおいて実施することができる。
【0189】
ゲートウェイ52においてデータ増大(例えば、ノイズ注入)を実行することにより、オリジナルのデータは、そのオリジナルのフォーマットで一度格納し、一度フェッチすることができる。次いで、そのデータは、ゲートウェイ52により、各複製コピーに異なる増大設定を適用して複数のアクセラレータに対して複製することができる。ゲートウェイ52は、ハードウェアにおいて増大方法のセットを提供し、ゲートウェイソフトウェアが前記増大に対する異なるアルゴリズムを実施する能力を提供する。
【0190】
一実施形態では、ストリーミングエンジン124は、2つのデータ加速機能を提供する。ストリーミング機能は、複製機能と、複製及び転置機能とを提供する。これにより、訓練データを1つのゲートウェイから他の多くのゲートウェイに対して複製することができ、従ってI/O接続性のニーズが低減される。
【0191】
データは、ホスト63又はリモート記憶装置151からゲートウェイ52において受信され、PPE 123によってメモリ114に格納される(経路120をトラバースした後)。DME 122は、メモリ114から経路121に沿って送信される予定のデータを回収し、データをアクセラレータ51に送信する。データは、メモリ114から示されるアクセラレータポートを介してアクセラレータ51に送信される。経路121に沿ったデータ転送は、既に説明したように、同期信号によってトリガされる。
【0192】
ゲートウェイ52は、アクセラレータ51へのデータの提供(経路121上でのデータの転送を伴う)をホスト63又はリモート記憶装置151からのデータの回収と分離できるようにする。換言すれば、ゲートウェイ52は、アクセラレータ51によって実行される演算前に、ホスト63又はリモート記憶装置151からのデータの転送を進められるようにする。
【0193】
図8は、ゲートウェイ52とさらなるゲートウェイとの間のデータの交換を可能にする2つのさらなるデータ経路を示す。ゲートウェイ52は、さらなるゲートウェイ128(示されるファブリックポートによってゲートウェイ52に結合される)を介してアクセラレータ51(示されるアクセラレータポートによってゲートウェイ52に結合される)とさらなるアクセラレータ(図示せず)との間でデータを転送することができる経路125を含む。ゲートウェイ52及びさらなるゲートウェイ128は、この経路125上のスイッチとして動作し、アクセラレータ間のデータ交換ファブリックの拡張を可能にする。さらなるゲートウェイ128は、接続されるさらなるホストに/ホストからデータを転送するように構成することができる。この経路125に沿ったデータ転送は、ユニキャスト(すなわち、データは、単一のアクセラレータに向けられる)、ブロードキャスト(データは、指定されたアクセラレータに向けられることなく送信される)及びマルチキャスト(データは、複数の指定されたアクセラレータに向けられる)であり得る。ブロードキャストモードでは、ファブリックポート上で送信されるパケットは、マルチキャストグループIDを含む。各ゲートウェイは、各マルチキャストグループIDに対する送信先のリストを含む表を有する。ゲートウェイがそのようなパケットを受信すると、ゲートウェイは、パケットに含まれるマルチキャストグループIDに対応する送信先のリストを表で調べ、それらの送信先にパケットを送信する。
【0194】
一実施形態では、XPUポートは、特殊なデータ移動能力を提供するカスタムルートコンプレックス実装形態である。ゲートウェイメモリ114に/ゲートウェイメモリ114からパケットを転送することに加えて、XPUポートは、ファブリックポートへの/ファブリックポートからのピアツーピア能力も提供する。リモートアクセラレータへのメモリ空間マッピングをターゲットとするパケットは、XPUポートで検出され、適切なファブリックポートに向けられる。受信側のファブリックポートは、正しい送信先のアクセラレータポートにパケットを向ける。また、ゲートウェイは、1つのファブリックポートから別のファブリックポートにパケットを転送することもできる。これにより、任意の大規模なファブリックのトラバースが可能になる。この方法では、ゲートウェイファブリックを通して、完全なアクセラレータ間交換が可能になる。
【0195】
また、図8は、ゲートウェイ52とさらなるゲートウェイとの間でデータを交換するためのデータ経路126も示す。データ経路126は、ゲートウェイ52とさらなるゲートウェイ128との間の同期及び管理メッセージの交換のために使用される。加えて、データ経路126は、ゲートウェイ52と関連付けられたメモリ114と、さらなるゲートウェイ128と関連付けられたメモリとの間でデータを交換するために使用される。データ経路126を介して交換されるデータは、事前作業命令がPPE 123によって実行される際、事前作業の一部として交換される。
【0196】
データは、PPE 123による事前作業命令の実行に応答して、さらなるゲートウェイ128のメモリからメモリ114に転送することができる。次いで、このデータは、(例えば、アクセラレータからのPCIe読み取り処理による又はDME 122によるDMOV命令の実行による)近々到来するESPにおけるアクセラレータ52への転送のために、メモリ114において利用可能になる。PPE 123がそのメモリ114へのデータ転送のための事前作業命令の実行を完了すると、PPE 123は、そのESPクレジットセットをインクリメントする。
【0197】
先に述べたように、同期ゾーン/グループは、複数のゲートウェイを含み得る。そのような例では、関連アクセラレータ51から受信される同期要求の代わりに又は同期要求のみならず、ゲートウェイ52において、さらなるゲートウェイ128からの同期要求も受信することができる。この例では、この他のゲートウェイ128は、「下流ゲートウェイ」と呼ぶことができる。
【0198】
ここで、図15を参照すると、さらなるゲートウェイ128と連通するゲートウェイ52に加えて、第3のゲートウェイ152が示されている。さらなるゲートウェイ128から同期要求129が受信されると、ゲートウェイ52が同期マスタではない(すなわち、ゲートウェイ52は、同期スレーブである)例では、ゲートウェイ52は、上流の第3のゲートウェイに同期要求153を送信することにより、同期バリアの通過を認めることができる。同期要求129は、最初に、ローカルアクセラレータ(例えば、アクセラレータ51)から受信された1つ又は複数の同期要求(例えば、同期要求56)と集約することができる。この例では、上流の第3のゲートウェイに送信されるのは、この集約された同期要求153である。
【0199】
代わりに、例えば他のゲートウェイ128から同期要求129が受信したときにゲートウェイ152がゲートウェイ52の同期ゾーンに接続されていない場合、ゲートウェイ52がマスタゲートウェイである場合には、ゲートウェイ52は、さらなるゲートウェイ128に同期確認応答154を送信することにより、同期バリアの通過を認めることができる。ゲートウェイ128がマスタゲートウェイである例では、構成された下流のすべてのゲートウェイから同期要求が受信された場合に、ローカルアクセラレータ(例えば、アクセラレータ51)から受信された同期要求の確認応答も(例えば、確認応答155を送信することによって)行われる。
【0200】
ゲートウェイ52によって保持されるLSBM 118内のESPクレジットは、ゲートウェイ52とさらなるゲートウェイ128との間で転送する同期要求を制御するために使用することができる。同期要求155をゲートウェイ52に送信するローカルアクセラレータ(例えば、アクセラレータ51)によってゲートウェイの関与が通知されている例では、アクセラレータ51とゲートウェイ52との間のバリアと同様に、ESPクレジットは、ゲートウェイ52とさらなるゲートウェイ128との間で転送する同期要求を制御するためにのみ使用される。この通知は、先に説明したように、レジスタ59に格納することができる。同期要求129を受信した際、ゲートウェイの関与が示されていない場合、同期要求153が上流に送信され、同期確認応答154が返信されると、同期バリアを通過したことになる。
【0201】
アクセラレータ51によるゲートウェイの関与が通知されていると仮定すると、ゲートウェイ52が同期マスタゲートウェイではない(すなわち同期スレーブゲートウェイである)場合、アクセラレータ51と関連付けられたESPクレジットの数がゼロではなくゲートウェイ52が下流のゲートウェイ128から同期要求129を受信した場合、上流へのバリアを通過する。同期要求129は、アクセラレータ51からの同期要求56と集約され、上流のゲートウェイ152に送信される同期要求153を形成する。同期チェーンの各LSBM 118内のESPクレジットは、ゲートウェイの関与を必要とする同期のために同期要求153に対応する同期確認応答156を受信次第、デクリメントされる。
【0202】
アクセラレータ51によるゲートウェイの関与が示されていると仮定すると、ゲートウェイ52が同期マスタゲートウェイである場合、アクセラレータ51と関連付けられたESPクレジットの数がゼロではなく、ゲートウェイ52が下流のゲートウェイから同期要求129を受信した場合、ゲートウェイ52は、下流のゲートウェイ128及びそれ自体のストリーミングエンジン124に同期確認応答154を送信する。同期確認応答が受信され次第、ストリーミングエンジン124は、LSBM 118によって保持されるESPクレジットの数をデクリメントする。
【0203】
このように、ゲートウェイ52のLSPM 117は、LSBM 118内にESPクレジットがない場合、他のゲートウェイ(すなわちLSPM)への同期要求の伝播を阻止することができる。これにより、同期マスタによって確認応答が最終的に生成された際、すべてのアクセラレータがそれらのスーパーステップの実行を同時に開始することが保証される。
【0204】
ゲートウェイ52は、複数のインタフェース(例えば、アクセラレータ51とのインタフェース、さらなるゲートウェイ128とのインタフェース、第3のゲートウェイ152とのインタフェース)を含む。ゲートウェイ52は、同期目的のためにこれらのインタフェースの各々の方向性(すなわちさらなるゲートウェイ128などのエンティティがゲートウェイ52の上流にあるか又は下流にあるか)を示すレジスタを含む。従って、レジスタは、ゲートウェイ52が下流のエンティティから同期要求を受信することに応答して、ゲートウェイ52によっていずれのインタフェースに同期要求を送信するかを示す。いずれのインタフェースも同期要求を送信するためのものではないことをレジスタが示す例では、これは、ゲートウェイ52が同期マスタであることを示す。この例では、ゲートウェイ52は、同期要求を受信したすべてのインタフェース上において同期確認応答を送信する。
【0205】
ゲートウェイ52がスレーブゲートウェイとして機能する例では、ゲートウェイ52は、関連付けられたアクセラレータ(例えば、アクセラレータ51)から1つ又は複数の同期要求を受信することができる。これらの同期要求は、ゲートウェイ52によって集約され、次いで、ゲートウェイ52は、それらの同期要求を上流のさらなるゲートウェイ128に渡す(同期要求の受信源であるゲートウェイの関与を通知する各ローカルアクセラレータに対してESPクレジットが利用可能であると仮定する)。さらなるゲートウェイ128もスレーブであると仮定すると、そのさらなるゲートウェイは、その要求と、それ自体のローカルアクセラレータからのすべての同期要求とを収集し、次いで新しい集約された同期要求を次のゲートウェイに転送する(同期要求の受信源であるゲートウェイの関与を通知する各ローカルアクセラレータに対してESPクレジットが利用可能であると仮定する)。これは、同期ネットワークにわたって並列に起こる。最終的に、マスタゲートウェイは、すべての下流のゲートウェイ及びそれ自体の関連アクセラレータから同期要求を受信する。次いで、その時点で初めて同期が完了し、マスタゲートウェイによって同期確認応答が生成され(同期要求の受信源であるゲートウェイの関与を通知する各ローカルアクセラレータに対してESPクレジットが利用可能であると仮定する)、同期要求の受信源である下流のエンティティ(すなわちローカルアクセラレータ又は下流のゲートウェイ)に送信される。同期確認応答を受信する下流の各ゲートウェイは、同期要求の受信源であるエンティティに同期確認応答を送信する。
【0206】
既に述べたように、同期要求は、複数のローカルアクセラレータ(例示的なアクセラレータ51のみならず)からゲートウェイ52において受信することができる。各アクセラレータは、異なるESPクレジットセットと関連付けられる。同期要求の受信源である各アクセラレータに対するすべてのESPクレジットがゼロではない(及びゲートウェイ関与を示す)場合にのみ、ゲートウェイ52は、集約された同期要求を上流に渡すか(スレーブである場合)又は同期要求の確認応答を行う(マスタである場合)。
【0207】
以前に述べたように、アクセラレータ51への同期確認応答の送信に続いて、ゲートウェイ52は、アクセラレータ51とデータを交換するように構成される。
【0208】
図10を参照すると、ストリーミングエンジン124によって実装されるゲートウェイ機能が示されている。PPE 123は、DME 122と並列実行するが、DME 122は、PPE 123の結果に依存するため、PPE 123は、DME処理がスケジューリングされる前にその結果を提供する必要がある。これは、事前コンパイルされた実行可能イメージにおいて又はアクセラレータ51からゲートウェイ52に伝達されたコマンドのユーザプログラムシーケンシングを通して取り扱われる。
【0209】
図10に示されるように、PPE 123とネットワークスタック141との間に位置するモジュール142(GDxSMモジュールとして示される)がある。GDxSMモジュール142は、2つのモジュール(すなわちGWデータインポート同期モジュール(GDISM)及びGWデータエクスポート同期モジュール(GDESM))を含む。両方のモジュールは、ゲートウェイとホストとの間のI/Oバッファ要素の同期を取り扱う。
【0210】
同期は、フロー制御され、GWデータ整合性及び交換同期点(ESP)におけるI/O処理の即応性を保証する。
【0211】
第1のクレジットセット(既に詳細に論じている)は、ESPクレジットである。ESPクレジットは、アクセラレータ51とゲートウェイ52との間又はゲートウェイ52とさらなるゲートウェイ128との間の同期バリアの通過を管理する。ESPクレジットを使用すると、バリアクレジットメカニズムは、ゲートウェイ52とアクセラレータ51との間のデータの転送を制御するために使用される。1つのESPクレジットの利用可能性は、1つのバリアに対してデータ交換処理を実行できることを含意する。
【0212】
第2のクレジットセットは、(ホスト63、リモート記憶装置151又はさらなるゲートウェイ128から)ゲートウェイ52へのデータの転送を管理する。これらのクレジットは、GDxSM 142によって格納される。より具体的には、これらのクレジットは、GBxSM 142のGDISMに格納される。第2のクレジットセットは、GDISMクレジットと呼ぶことができる。当業者であれば、「GDISMクレジット」という用語が単なる名称であり、クレジットがそれらの本質においてこの名称によって制限されないことを理解するであろう。
【0213】
ゲートウェイ52は、利用可能なGDISMクレジットの数がゼロではないことを決定することに応答して、ホスト63、リモート記憶装置151又はさらなるゲートウェイ128からデータを回収するために事前作業命令を実行する。利用可能なGDISMクレジットがゼロであるとゲートウェイ52が決定した場合、ゲートウェイ52は、データを回収しない。ホスト63は、命令を送信するためのRDMAを使用してGDISMクレジットを更新/インクリメントするための命令を送信する。ストリーミングエンジン124がRDMA書き込みを介してホスト63からGDISMクレジットレジスタへの更新に関する通知を受けると、ストリーミングエンジン124は、クレジットレジスタを相応に更新する。ゲートウェイ52は、PPE 123によって事前作業を完了することに応答して、格納されたGDISMクレジットの数をデクリメントする。事前作業は、外部記憶装置からゲートウェイ52にデータを転送することである。
【0214】
GDISMクレジット制御メカニズムは、事前作業(PRW)命令の実行が早過ぎないようにすることができる。GDISMは、現在実行しているESP前に事前作業(PRW)エンジンがどの程度の数のWDの作業を行うことができるかを制御する。
【0215】
ホスト63は、ゲートウェイのグループのGDISMクレジットに対して同じクレジット更新を実行するように構成することができる。クレジット更新は、信頼できるブロードキャストを行うために、RDMAを使用して及びRDMAの上でプロトコルを使用して実行される。これは、同期グループが複数のゲートウェイを含む事例において必要であり得る。この事例では、ゲートウェイのグループは、同じ数の利用可能なGDISMクレジットを有する必要があり得、そうでなければアクセラレータの1つが停止し、それによって他のすべてのアクセラレータが停止される。
【0216】
いくつかの例では、GDISMクレジットは、ゲートウェイからホストへのデータの転送を制御するためにも使用される。ゲートウェイ52から外部記憶装置(例えば、ホスト63、リモート記憶装置151)へのデータの転送を制御するため、外部記憶装置からゲートウェイ52へのデータの転送のために使用されるものと同じGDISMクレジットセット(すなわち上記で説明される第2のセット)を使用することができる。ゲートウェイ52が外部記憶装置にデータを送信することに応答して、インポートクレジットとエクスポートクレジットとの両方を表すこれらのGDISMクレジットは、PPE 123がWD内のそのコマンドを完了するとデクリメントされる。ゲートウェイ128は、GDISMクレジットの数がゼロではない場合にのみ、外部記憶装置にデータを送信する。
【0217】
この方法では、GDISMクレジットは、PRW命令のみならずPOW命令をも抑制するために使用することができる。GDISMクレジットの数がゼロではない場合、POW命令を実行することはできない。GDISMクレジットが外部記憶装置へのデータの転送と、外部記憶装置からのデータの転送との両方を制御する例では、所定のESPに対してすべてのPOW命令及びPRW命令が完了した際にのみ、単一のGDISMクレジットが消費される。
【0218】
いくつかの例では、第3のクレジットセットは、ゲートウェイ52からホスト63又はリモート記憶装置151へのデータの転送を管理する。これらのクレジットは、GDxSM 142によって格納される。より具体的には、これらのクレジットは、GBxSM 142のGDESMに格納される。第3のクレジットセットは、GDESMクレジットと呼ぶことができる。当業者であれば、「GDESMクレジット」という用語が単なる名称であり、クレジットがそれらの本質においてこの名称によって制限されないことを理解するであろう。
【0219】
ゲートウェイ128は、GDESMクレジットの数がゼロではない場合にのみ、外部記憶装置にデータを送信する。ゲートウェイ52が外部記憶装置にデータを送信することに応答して、GDESMクレジットは、デクリメントされる。この方法では、GDESMクレジットは、POW命令を抑制するために使用することができる。GDESMクレジットの数がゼロではない場合、POW命令を実行することはできない。ゲートウェイ52は、POW命令の完了に応答して、GDESMクレジットの数をデクリメントする。
【0220】
ホスト63は、命令を送信するためのRDMAを使用してGDISMクレジットを更新/インクリメントするための命令を送信する。ストリーミングエンジン124がRDMAライトを介してホスト63からGDISMクレジットレジスタへの更新に関する通知を受けると、それに従って、ストリーミングエンジン124はクレジットレジスタを更新する。
【0221】
GDISMクレジットとESPクレジットとの間に関係がある。GDISMクレジットは、1つのスーパーステップに対してホストメモリからゲートウェイメモリ114にデータを転送する許可をゲートウェイ52に与える。ゲートウェイ52がこのスーパーステップに対するデータをそのメモリ114にロードすると、ゲートウェイ52は、GDISMクレジットをデクリメントし、ESPクレジットに1つのクレジットを追加する。ここで、LSPM 117及び/又はLSBM 118はESPクレジットの数>0の場合に同期要求の確認応答を行うため、アクセラレータ51がこのデータに対してプル(任意のプルモデルによるプルを含む)を実行するか、又はゲートウェイ52がアクセラレータ51へのデータのプッシュ(任意のプッシュモデルによるプッシュ)を行うことができる。
【0222】
図9を参照すると、複数のアクセラレータ131、複数のゲートウェイ132及び複数のホスト133を含むシステム130の例が示されている。ゲートウェイ132は、互いに通信し合うため、ゲートウェイ132は、集合的にイーサネットネットワーク134を形成する。ゲートウェイ132間の通信は、アクセラレータとホストとの分解を可能にする。換言すれば、システム130内のホスト133のすべては、いずれのアクセラレータ131とも通信することができる。
【0223】
図9では、各ゲートウェイ132がそれぞれの通信対象のホスト133と関連付けられることが示されているが、いくつかの実施形態では、1つのゲートウェイに対して1つのホストが関連付けられるとは限らない。いくつかの実施形態では、図9に示されるゲートウェイ132の1つのみがホスト133と直接通信することができる。その1つのホスト133は、複数のゲートウェイ134を制御することができる。ホストに結合されたゲートウェイは、ホストから残りのゲートウェイ134にデータを分配することができる。代わりに、複数のゲートウェイ134は、リモート記憶装置151からデータを回収することができる。
【0224】
1つのゲートウェイ134のみがホスト133と通信する例では、その1つのゲートウェイ134は、複数のゲートウェイ134のうち、ネットワークインタフェースデバイスを含む唯一のゲートウェイ134であり得る。これは、残りのゲートウェイを構築するために必要なコンポーネントの数を低減することにより、コストを低減するという利点を有する。残りのゲートウェイがホストにデータを提供する際、残りのゲートウェイは、ホストと通信するためのネットワークインタフェースデバイスを含むゲートウェイにそのデータを提供する前に、最初にデータに対するデータ拡張オペレーションを実行することができる。
【0225】
いくつかの実施形態では、システム130に外部のホスト133が存在せず、むしろ、ホストシステムは、1つ又は複数のゲートウェイ134上で起動する。この事例では、コンパイラは、ゲートウェイ134上で起動する。
【0226】
いくつかの例では、ゲートウェイ132は、ホスト133からデータを受信し、このデータを1つ又は複数の他のゲートウェイ132に分配する。他の例では、ゲートウェイ132のサブセットは、1つ又は複数のホスト133からデータを受信し、受信データを1つ又は複数の他のゲートウェイに分配する。1つ又は複数の他のゲートウェイ132の各々は、分配データをその関連アクセラレータ131に提供することができる。そうすることにより、すべてのゲートウェイ132がホスト133からデータを受信する必要がなくなる。この事例では、すべてのゲートウェイに全帯域幅を提供する必要がなくなるため、この方法は、コストを低減することができる。また、この方法は、効率を高めることもできる。いくつかの例では、アクセラレータのグループ内の各アクセラレータ131は、同一のデータを受信して処理する。この例では、データは、ホスト133から一度フェッチするのみでよい。従って、ゲートウェイ132は、ホスト133から前記データを受信し、このデータのコピーを1つ又は複数のゲートウェイ132に分配し、1つ又は複数のゲートウェイ132の各々は、それらの関連アクセラレータ131にデータを分配するように構成される。従って、ホスト133から同じデータを複数回フェッチする必要がないため、効率に対する利得が実現される。加えて、これは、ゲートウェイによるデータ回収のためのリモート記憶装置151の使用と組み合わせることができる。回収のためのリモート記憶装置151の使用は、コスト低減を達成できること及びゲートウェイが全帯域幅を有し得ることを意味する。ホストは、記憶装置記述子を多くのゲートウェイに送信することができ、多くのゲートウェイは、これらの記述子に基づいて並列に動作し、1つのゲートウェイに対して独立したネットワーク接続上でリモート記憶装置151からデータをプル/プッシュすることができる。この技術は、ゲートウェイの数の関数としてI/Oを拡大する。
【0227】
いくつかの例では、ゲートウェイ132から1つ又は複数の他のゲートウェイ132に分配されたデータは、1つ又は複数の他のゲートウェイ132において修正される。例えば、1つ又は複数の他のゲートウェイ132は、1つ又は複数の他のゲートウェイ132に対するデータ拡張を適用する。このデータ拡張は、それぞれのゲートウェイにおいてDMEによって実行される。1つ又は複数の他のゲートウェイ132の各々が受信したデータを修正すると、1つ又は複数の他のゲートウェイ132の各々は、修正データをその関連アクセラレータ131にプッシュする。
【0228】
事前コンパイルされたゲートウェイソフトウェアは、いずれのアクセラレータ52が、いずれのホストから、ゲートウェイ132によってメモリ114に保持されたいずれのデータを得るかを指定する。アクセラレータコードのコンパイラは、アクセラレータ間で作業を配分するためにアクセラレータ間でどのようにデータを配分するかを決定する。ゲートウェイ132は、各アクセラレータに向けて有する2つのPCIeポートにわたるI/Oトラフィックの負荷平衡を保つ。
【0229】
システムのゲートウェイ層及びアクセラレータ層は、システムの拡大が可能な方法で複製される。図12を参照すると、複数のアクセラレータ162及び複数のゲートウェイ163を含む装置161の例が示されている。装置161は、マシン161と呼ばれる。マシン161は、4つのアクセラレータ162及び2つのゲートウェイ163を含む。また、ゲートウェイ163の各々は、1つ又は複数のホスト(図示せず)にも結合される。
【0230】
図13を参照すると、図12に示されるような複数のマシン161を含む装置170の例が示されている。複数のマシン161は、クラスタ171と呼ばれる装置171を形成するように配列される。各クラスタ171は、最大で4つのマシン161を含む。複数のクラスタ171は、ポッド171と呼ばれる装置170を形成するように配列される。各ポッド171は、最大で32個のマシン161を含む。この方法でシステムを拡大することにより、結果として得られるポッド171は、128個のアクセラレータを含み、16PFLops及び8TBのDRAMを有するシステムが生じる。
【0231】
図12及び13によって示されるこのモデルでは、各ゲートウェイ163は、アクセラレータ162の2つ以上のグループ間の低遅延ブリッジを提供し、それにより、アクセラレータ162は、あたかも同じ内部ファブリック上で接続されるかのように異なるゲートウェイ163に取り付けて、互いに通信することができる。パケットは、アクセラレータ162からゲートウェイ163のXPUポート(図8に示される)において受信される。リモートアクセラレータにマッピングするメモリ空間をターゲットとするパケットは、XPUポートで検出され、ゲートウェイ163の適切なファブリックポート(図8に示される)に向けられる。適切なアクセラレータポートで受信されたパケットは、適切なゲートウェイに転送される。そこから、ゲートウェイは、パケットによってターゲットとされたメモリ空間によって示されるリモートアクセラレータにパケットを転送する。
【0232】
各ゲートウェイ163は、PCIeポートを含む。これらのPCIeポートの4つは、アクセラレータ162に及びアクセラレータ162からパケットを渡すように構成される。各PCIeポート(図12に示される)は、異なるアクセラレータ特有のプロトコルを使用するように構成することができる。次いで、カスタムゲートウェイトランザクション層は、そのプロトコルとゲートウェイ内部プロトコルの変換を行う。カスタムゲートウェイ層は、アドレスマップを実装しており、収集及びブロードキャスト/マルチキャストオフロードサポートを提供する。各ゲートウェイ163は、アドレスマッピングスキームを提供し、すべての参加アクセラレータ162をグローバルアドレス空間に開放する。アクセラレータ162からゲートウェイ163において受信されたパケットは、ゲートウェイIDを含み、それによりパケットがルーティングされる送信先ゲートウェイが識別される。
【0233】
グローバルアドレス空間は、ポッド170に属するすべてのアクセラレータ162及びすべてのゲートウェイ163のメモリリソースを包含する。アクセラレータは、グローバルアドレス空間のアドレスを指定するパケットを発送することができる。アドレスの一部は、ターゲットゲートウェイのリソースを選択するために使用される。アドレスの一部は、アドレスされているゲートウェイを識別するために使用される。他の一部は、ゲートウェイメモリ又は関連アクセラレータのタイルメモリのメモリのアドレスを識別するために使用される。アクセラレータのタイルメモリは、タイルインデックス及びメモリオフセットによってアドレス可能である。アドレスは、データパケットのデータが格納されるアクセラレータ内の場所を識別するために、このタイルインデックス及びメモリオフセットを含み得る。
【0234】
パケットが受信されると、アドレスにおけるゲートウェイの識別は、このゲートウェイのグローバルIDと比較される。マッチすれば、要求は、このゲートウェイに属するリソース(ローカルアクセラレータ又はローカルメモリ)をターゲットとする。そうでなければ、アドレスの一部は、ルーティングテーブルにインデックスを付けるために使用される。ルーティングテーブルのコンテンツは、システムのターゲットポートを示す。パケットをどこにルーティングするかを決定するため、アドレスの一部のビットは、ゲートウェイルーティングテーブルと照合させる。
【0235】
進入パケットパイプラインは、必要な機能を実装するために必要なパイプライン段階以外にはバッファリングなしのカットスルーパイプラインであることが意図される。パケットは、最初に、マルチキャスト/ブロードキャスト、収集及びユニキャスト/メモリ書き込みなど、タイプ別に分類される。次いで、これらのパケットは、処理のために個々のブロックに分けられる。ゲートウェイ52は、ユニキャストパケットを処理するためのユニキャストモジュールと、マルチキャスト分類テーブルとを含み得る。ユニキャストパケットルーティングテーブルは、ゲートウェイ52により、ユニキャストパケット(すなわち単一のアクセラレータに向けられたもの)のルーティングを実行するために使用される。受信アドレスは、復号され、選択されたビットは、送信先を決定するために使用される。これは、2ステッププロセスであり、最初にゲートウェイIDビットを使用して、このパケットがこのゲートウェイをターゲットとするかどうかを判断する。このパケットがこのゲートウェイをターゲットとしない場合、ゲートウェイIDビットを使用して、ルーティングテーブル(このパケットに対する出力ファブリックポートを返すもの)にインデックスを付ける。
【0236】
パケットがゲートウェイ52をターゲットとしている場合、パケットアドレスのローカルアドレスビットを使用して、複数の領域からなるローカルゲートウェイベースアドレスレジスタ(BAR)のセット(すなわちゲートウェイメモリに対して1つのBAR及び各アクセラレータポートに対して1つのBAR)を調べる。パケットがゲートウェイメモリ(例えば、メモリ114)に格納するためのものであることをローカルアドレスビットが示す場合、パケットは、ゲートウェイメモリに対するBARのアドレスに従ってゲートウェイメモリに格納される。パケットがアクセラレータに伝達するためのものであることをローカルアドレスビットが示す場合、パケットは、ゲートウェイ52のDME 122に転送される。そこから、データパケットは、関連アクセラレータポートに対するBARのアドレスに従ってアクセラレータに転送することができる。
【0237】
マルチキャスト/ブロードキャストサービスを指定するパケットは、マルチキャストグループテーブルで処理される。各ファブリックポートは、各グループに対するコピーを得るポート(ブロードキャストを含む)のリストを伴うそれ自体の表を有する。送信先の3つのセットがある。第1に、パケットがゲートウェイと同じvFabricに属する場合且つその場合に限り、パケットは、ローカルアクセラレータに送信される。第2に、すべての受信ブロードキャスト/マルチキャストパケットは、転送しなければならないかどうかを確かめるために、ファブリックテーブルと照合してチェックされる。第3に、コピーがローカルDRAMに送信される。送信先ポートベクトルが構築された時点で、ベクトル及びパケットは、スイッチ相互接続に転送され、スイッチ相互接続は、複製サービスを提供する。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15