JP2023534242A - ネットワーク上におけるホストとアクセラレータとの間の通信 - Google Patents

ネットワーク上におけるホストとアクセラレータとの間の通信 Download PDF

Info

Publication number
JP2023534242A
JP2023534242A JP2023502602A JP2023502602A JP2023534242A JP 2023534242 A JP2023534242 A JP 2023534242A JP 2023502602 A JP2023502602 A JP 2023502602A JP 2023502602 A JP2023502602 A JP 2023502602A JP 2023534242 A JP2023534242 A JP 2023534242A
Authority
JP
Japan
Prior art keywords
subsystem
host system
host
synchronization
subsystems
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2023502602A
Other languages
English (en)
Inventor
トルドゥバッケン オラ
リン グウェイ ウェイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Graphcore Ltd
Original Assignee
Graphcore Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Graphcore Ltd filed Critical Graphcore Ltd
Publication of JP2023534242A publication Critical patent/JP2023534242A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17325Synchronisation; Hardware support therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)

Abstract

ホストシステムは、ネットワーク上で多数のサブシステムに提供されるローカルプログラムのセットをコンパイルする。ホスト上で同期動作を定義し、次いで、その情報をサブシステムに提供することにより、ホストは、大多数のサブシステムへのサービス提供を行うことができる。同期動作の定義は、同期バリアが生じる同期グループの定義と、プログラム実行の間のホストとのデータ交換が起こる時点の定義とを含む。サブシステム間の同期動作を定義することにより、ホストとの必要な交換を最小限に抑えながら、大多数のサブシステムを接続することができる。

Description

本出願は、ネットワーク上で通信するホストシステムと処理ユニットに関する。
複雑な又は大量のアプリケーションに対するデータ処理の文脈では、ワークアクセラレータは、あるデータの処理がホストシステムからオフロードされたサブシステムであり得る。そのようなワークアクセラレータは、特定のタイプの処理の実行に特化したハードウェアを有し得る。
例として、そのような特化したアクセラレータサブシステムが有用であり得るコンピューティングの一分野は、機械知能において見られる。機械知能の分野の当業者によく知られているように、機械知能アルゴリズムは、複数の相互接続ノードのグラフによって表すことができる「知識モデル」の反復更新の実行を中心とする。各ノードの実装は、データの処理を伴い、グラフの相互接続は、ノード間で交換されるデータに相当する。典型的には、各ノードの処理の少なくともいくつかは、グラフの他のノードのいくつか又はすべてから独立して行うことができ、従って、大規模なグラフは、マルチスレッディングの絶好の機会に触れる。従って、機械知能アプリケーションに特化したワークアクセラレータは、膨大なマルチスレッディングを含み得る。並列処理の一形態は、同じチップ(すなわち、同じダイ)上に複数のタイルの配列を含むプロセッサによって達成することができ、各タイルは、別個の処理ユニット並びにメモリ(プログラムメモリ及びデータメモリを含む)を含む。従って、プログラムコードの別個の部分は、異なるタイル上で並列に実行できる。タイルは、オンチップ相互接続部を介して互いに接続され、それにより、タイル間でのデータの交換が可能になる。そのようなアクセラレータは、提供されるデータセットの並列処理を実行するために、ホストシステム用のサブシステムとして機能し得る。
一般に、異なるタイル上で実行されているプログラムの部分間の依存性が存在し得る。従って、先に実行されているあるタイル上のコード片の依存データが、別のタイル上の別のコード片によって利用できるようになるのを防ぐための技法が必要とされる。これを達成するための可能なスキームが多く存在し、本明細書では、その1つであるバルク同期並列(「BSP」)が例として説明される。BSPによれば、各タイルは、交互サイクルで演算フェーズと交換フェーズを実行する。演算フェーズの間、各タイルは、タイル上で局所的に1つ又は複数の演算タスクを実行するが、他のいかなるタイルともその演算の結果を通信することはない。交換フェーズでは、各タイルは、先行する演算フェーズからの演算の1つ又は複数の結果をグループの1つ又は複数の他のタイルと交換できるが、次の演算フェーズには未だ進まない。さらに、BSP原理によれば、バリア同期は、演算フェーズから交換フェーズに移行する接合点、交換フェーズから演算フェーズに移行する接合点又はその両方に配置される。すなわち、(a)グループのいずれかのタイルが次の交換フェーズに進めるようになる前に、すべてのタイルがそれらのそれぞれの演算フェーズを完了する必要があるか、(b)グループのいずれかのタイルが次の演算フェーズに進めるようになる前に、グループのすべてのタイルがそれらのそれぞれの交換フェーズを完了する必要があるか、又は、(c)その両方であるかのいずれかである。いくつかのシナリオでは、演算を実行しているタイルは、グループの他のタイルとの通信を伴わない限り、ネットワークカード又は記憶ディスクなどの他のシステム資源と通信することができる。
交換フェーズの間、データ交換は、アクセラレータ内で内部的に(すなわち、タイル間で)起こるのみならず、いくつかの状況では、アクセラレータとさらなるアクセラレータとの間又はアクセラレータとホストシステムとの間で起こる必要もあり得る。サブシステムがワークアクセラレータとしての働きをする際、サブシステムは、(例えば、ホストシステムから又は拡張システムの記憶装置の別の形態から)提供されるデータセットを処理するように構成される。
ホストから1つ又は複数のサブシステムに作業負荷を提供するため、ホストは、PCIeインタフェース上でそれらのサブシステムにローカル接続することができる。これにより、低いレイテンシでのホストと1つ又は複数のサブシステムとの間のデータ転送が可能になる。しかし、問題の1つは、PCIe接続上でホストが直接接続することができるサブシステムの数が限られるということである。従って、より大規模なアプリケーションを実行するためにサブシステムの数の拡大を試みる上で、それらのサブシステムとホストとの間のデータ交換を達成する方法に問題があるため、いくつかの課題が提示される。
より大規模なアプリケーションを処理するには、ワークアクセラレータとしての働きをすることができるさらに多くのアクセラレータサブシステムをホストに互いに接続することが望ましい。これを達成するための提案の1つは、ネットワーク上でホストをアクセラレータサブシステムに接続することである。ホストデバイスがサブシステムによって実行された演算からの結果を受信する動作と、それに応答して、さらなる作業負荷をサブシステムに提供する動作との間には遅延がある。これは特に、それらの作業負荷が他のサブシステムによって出力された結果に依存し得る際に当てはまる。いくつかの事例では、ホストは、あるサブシステムから結果を受信し、別のサブシステムに結果を提供しなければならない。
第1の態様によれば、1つ又は複数のサブシステムの各々において実行されるローカルプログラムに従ってホストシステムに対するワークアクセラレータとして動作する複数のサブシステムとネットワークを介して接続されるように構成されたホストシステムであって、ホストシステムは、少なくとも1つのプロセッサと、コンピュータ可読命令を格納する少なくとも1つのメモリとを含み、ホストシステムの少なくとも1つのプロセッサは、ローカルプログラムのセットをコンパイルするためにコンピュータ可読命令を実行するように構成され、各ローカルプログラムは、1つ又は複数のサブシステムの各々において実行されるものであり、ソースコードをコンパイルするステップは、同期グループのセットを定義することを含み、各同期グループは、サブシステムの少なくともいくつかを含み、各ローカルプログラムは、それぞれのサブシステムの少なくとも1つのプロセッサによって実行される際に、サブシステムの複数の演算フェーズのうちの1つ又は複数の間に演算動作を実行するための演算命令セットと、サブシステムの少なくとも1つのプロセッサによって実行される際に、ローカルプログラムの実行における事前に定義された時点において複数のバリア同期を実行するためのデータ転送命令セットを含み、バリア同期の少なくともいくつかの各々は、同期グループのうちの1つの間で定義され、バリア同期の少なくとも1つは、ホストの関与を必要とする同期であり、ホストの関与を必要とする同期に続いて、データ転送の開始プログラムがそれぞれのサブシステムによってホストシステムに提供されることに応答して、それぞれのサブシステムとホストシステムとの間でデータ交換が実行され、ホストシステムの少なくとも1つのプロセッサは、データ転送の受信された開始プログラムの各々に応答して、識別子の受信元であるサブシステムのうちの1つとネットワーク上でデータを交換するように構成される、ホストシステムが提供される。
ホスト上で同期動作を定義し、次いで、その情報をサブシステムに提供することにより、ホストは、大多数のサブシステムへのサービス提供を行うことができる。同期動作の定義は、同期バリアが生じる同期グループの定義と、プログラム実行の間のホストとのデータ交換が起こる時点の定義とを含む。サブシステム間の同期動作を定義することにより、ホストとの必要な交換を最小限に抑えながら、大多数のサブシステムを接続することができる。
いくつかの実施形態では、識別子の受信元であるサブシステムのうちの1つとのネットワーク上でのデータの交換は、リモートダイレクトメモリアクセスを使用して行われる。
いくつかの実施形態では、ネットワークは、イーサネット(登録商標)ネットワークである。
いくつかの実施形態では、識別子の受信元であるサブシステムのうちの1つとネットワーク上でデータを交換するステップは、ホストシステムのバッファの少なくとも一部を、識別子の受信元であるサブシステムのうちの1つがアクセスすることができるネットワークインタフェースデバイスのバッファの少なくとも一部と同期させることを含む。
いくつかの実施形態では、データ転送の受信された開始プログラムの各々は、ホストサブシステムと識別子の受信元であるサブシステムのうちの1つとの間のストリームの識別子を含み、識別子の受信元であるサブシステムのうちの1つとネットワーク上でデータを交換するステップは、それぞれの識別されたストリームに属するデータを送信する及び/又は受信することを含む。
いくつかの実施形態では、ホストシステムのバッファの少なくとも一部は、識別されたストリームと関連付けられたバッファの一部を含み、識別子の受信元であるサブシステムのうちの1つがアクセスすることができるネットワークインタフェースデバイスのバッファの少なくとも一部は、識別されたストリームと関連付けられたバッファの一部を含む。
いくつかの実施形態では、識別子の受信元であるサブシステムのうちの1つとネットワーク上でデータを交換するステップは、識別子の受信元であるサブシステムのローカルプログラムにおいて定義される複数のバリア同期のうちの1つの前に、そのサブシステムがアクセスすることができるネットワークインタフェースデバイスにデータを送信することと、識別子の受信元であるサブシステムのローカルプログラムにおいて定義される複数のバリア同期のうちの1つに続いて、そのサブシステムがアクセスすることができるネットワークインタフェースデバイスからデータを受信することを含む。
いくつかの実施形態では、ホストシステムの少なくとも1つのプロセッサは、ローカルプログラムの各々をネットワーク上でそれぞれのサブシステムに発送することを行わせるように構成される。
第2の態様によれば、ホストシステムとネットワークを介して接続されるように構成されたサブシステムであって、サブシステムの少なくとも1つのプロセッサ上で実行されるローカルプログラムに従ってホストシステムに対するワークアクセラレータとして動作するように構成され、ネットワーク上でホストシステムからローカルプログラムを受信するように構成されたインタフェースを含み、ローカルプログラムは、同期グループのセットの表示であって、同期グループの少なくともいくつかが、サブシステム及びホストに対するアクセラレータとして動作するための1つ又は複数のさらなるサブシステムを含む、同期グループのセットの表示と、少なくとも1つのプロセッサによって実行される際に、サブシステムの複数の演算フェーズのうちの1つ又は複数の間に複数の演算動作を実行するための演算命令セットと、少なくとも1つのプロセッサによって実行される際に、それぞれのローカルプログラムの実行における事前に定義された時点において複数のバリア同期を実行するためのデータ転送命令セットと、を含み、バリア同期の少なくともいくつかは、同期グループのうちの1つのサブシステム間で定義され、バリア同期の少なくとも1つは、ホストの関与を必要とする同期であり、ホストの関与を必要とする同期に続いて、サブシステムによってホストシステムにデータ転送の開始プログラムを送信することに続いて、ネットワーク上でサブシステムとホストシステムとの間でデータ交換が実行される、サブシステムが提供される。
いくつかの実施形態では、サブシステムとホストシステムとの間のデータ交換は、リモートダイレクトメモリアクセスを使用して行われる。
いくつかの実施形態では、ネットワークは、イーサネット(登録商標)ネットワークである。
いくつかの実施形態では、サブシステムとホストシステムとの間のデータ交換は、少なくとも1つのプロセッサがサブシステム用のネットワークインタフェースデバイスのバッファとのデータ交換を行わせることを含み、バッファの少なくとも一部は、ホストシステムのバッファの少なくとも一部と同期される。
いくつかの実施形態では、データ転送の開始プログラムは、サブシステムとホストサブシステムとの間のストリームの識別子を含み、サブシステムとホストシステムとの間のデータ交換は、それぞれの識別されたストリームに属するデータを交換することを含む。
いくつかの実施形態では、ネットワークインタフェースデバイスのバッファの少なくとも一部は、識別されたストリームと関連付けられたバッファの一部を含む。
いくつかの実施形態では、サブシステムとホストシステムとの間のデータ交換は、識別子の受信元であるサブシステムのローカルプログラムにおいて定義される複数のバリア同期のうちの1つの前に、そのサブシステムがアクセスすることができるネットワークインタフェースデバイスにデータを送信することと、識別子の受信元であるサブシステムのローカルプログラムにおいて定義される複数のバリア同期のうちの1つに続いて、そのサブシステムがアクセスすることができるネットワークインタフェースデバイスからデータを受信することとを含む。
いくつかの実施形態では、インタフェースは、ネットワーク上でホストシステムからローカルプログラムを受信するように構成される。
第3の態様によれば、ホストシステムにおいて実施される方法であって、1つ又は複数のサブシステムの各々において実行されるローカルプログラムに従ってホストシステムに対するワークアクセラレータとして動作する複数のサブシステムとネットワークを介して接続することを含み、1つ又は複数のサブシステムの各々において実行されるローカルプログラムセットをコンパイルすることを含み、ソースコードをコンパイルするステップは、少なくともいくつかのサブシステムを含む同期グループのセットを定義することを含み、各ローカルプログラムは、サブシステムの少なくとも1つのプロセッサによって実行される際に、サブシステムの複数の演算フェーズのうちの1つ又は複数の間に演算動作を実行するための演算命令セットと、サブシステムの少なくとも1つのプロセッサによって実行される際に、ローカルプログラムの実行における事前に定義された時点において複数のバリア同期を実行するためのデータ転送命令セットと、を含み、バリア同期の少なくともいくつかは、同期グループのうちの1つのサブシステム間で定義され、バリア同期の少なくとも1つは、ホストの関与を必要とする同期であり、ホストの関与を必要とする同期に続いて、データ転送の開始プログラムがそれぞれのサブシステムによってホストシステムに提供されることに応答して、それぞれのサブシステムとホストシステムとの間でデータ交換が実行され、データ転送の受信された開始プログラムの各々に応答して、識別子の受信元であるサブシステムのうちの1つとネットワーク上でデータを交換することを含む、方法が提供される。
第4の態様によれば、ホストシステムの少なくとも1つのプロセッサに第3の態様による方法を実行させるコンピュータプログラムが提供される。
第5の態様によれば、第4の態様によるコンピュータプログラムを格納する非一時的なコンピュータ可読媒体が提供される。
第6の態様によれば、ホストシステム用のサブシステムにおいて実施される方法であって、ホストシステムとネットワークを介して接続することと、ネットワーク上でホストシステムからローカルプログラムを受信することと、サブシステムの少なくとも1つのプロセッサ上で実行され、サブシステム及びホストに対するアクセラレータとして動作するための1つ又は複数のさらなるサブシステムを含む同期グループのセットの表示を含むローカルプログラムに従って、ホストシステムに対するワークアクセラレータとして動作することと、サブシステムの複数の演算フェーズのうちの1つ又は複数の間に演算動作を実行するためにローカルプログラムの演算命令を実行することと、ローカルプログラムの実行における事前に定義された時点において、同期グループのうちの1つのサブシステム間で定義されホストの関与を必要とする同期である複数のバリア同期を実行するために、ローカルプログラムのデータ転送命令を実行することとを含み、ホストの関与を必要とする同期に続いて、サブシステムによってホストシステムにデータ転送の開始プログラムを送信することに続いて、ネットワーク上でそれぞれのサブシステムとホストシステムとの間でデータ交換が実行される、方法が提供される。
第7の態様によれば、サブシステムの少なくとも1つのプロセッサに第6の態様による方法を実行させるコンピュータプログラムが提供される。
第8の態様によれば、第7の態様によるコンピュータプログラムを格納する非一時的なコンピュータ可読媒体が提供される。
本発明をより良く理解するため及び本発明をどのように実施できるかを示すため、ここでは、例として、添付の図を参照する。
複数のタイルを含むプロセッサチップの概略ブロック図である。 バルク同期並列(BSP)演算モデルの概略図である。 BSPモデルの別の概略図である。 多段BSPスキームの概略図である。 外部同期のための同期要求及び確認応答の交換の概略図である。 異なる同期グループの別の概略図である。 ホスト同期プロキシを伴うプログラムフローを概略的に示す。 ネットワークを介してホストシステムと通信する2つのアクセラレータ及び1つのゲートウェイの概略図である。 ネットワークを介してホストシステムと通信するさらに多くのアクセラレータ及びゲートウェイの概略図である。 アクセラレータサブシステムとホストとの間でデータ交換が実行されるシステムのさらなる概略図である。 ゲートウェイを介するホストとアクセラレータとの間のメッセージの交換を示すメッセージシーケンス図である。 本出願の実施形態による方法を示す。
この出願は、処理ユニット上での実行のためにホストシステムがローカルプログラムセットのコンパイル及び転送を行う方法及びシステムに関する。処理ユニットは、互いに同期し、コンパイル済みのコードに挿入された事前に定義された時点において、ホストとデータを交換する。実施形態が実装される処理ユニットの例を最初に説明する。
図1を参照すると、図1は、例示的な処理ユニット2を示している。この例示的な処理ユニット2は、マルチタイル処理ユニット2である。処理ユニット2は、その内容が参照により組み込まれる、我々の先の米国特許出願第16/538980号明細書で説明されている知能処理ユニット(IPU)であり得る。IPUの各々は、別個の集積回路上に形成される。
処理ユニット2は、複数のプロセッサタイル4のアレイ6と、タイル4間を接続する相互接続部34とを含む。処理ユニット2は、同じICパッケージにパッケージ化された複数のダイのうちの1つとして単独で実装することができる。相互接続部34は、本明細書では、タイル4がデータを交換できるようにするためのものであるため、「交換ファブリック」34と呼ぶこともできる。各タイル4は、実行ユニット及びメモリのそれぞれのインスタンスを含む。例えば、例示として、処理ユニット2は、何百ものタイル4又は千をも超えるタイル4を含み得る。完全を期すため、本明細書で言及される「アレイ」は、必ずしも特定の次元数又は物理的なレイアウトのタイル4を含意するとは限らないことも留意されたい。
実施形態では、各処理ユニット2は、1つ又は複数の外部のリンク8も含み、処理ユニット2を1つ又は複数の他の処理ユニット(例えば、同じ処理ユニット2の1つ又は複数の他のインスタンス)に接続できるようにする。これらの外部のリンク8は、処理ユニット2をホストシステムに接続するための1つ又は複数の処理ユニット・ホスト間リンク、並びに/或いは、同じICパッケージ若しくはカード上の又は異なるカード上の処理ユニット2の1つ又は複数の他のインスタンスとまとめて接続するための1つ又は複数の処理ユニット間リンクのうちの1つ又は複数を含み得る。処理ユニット2は、処理ユニット2が処理するアプリケーションデータという形態で、ホストからワークを受信する。
相互接続部34は、アレイ6の異なるタイル4が互いに通信できるように構成される。しかし、同じタイル4上のスレッド間の依存性が潜在的に存在するのと同様に、アレイ6の異なるタイル4上で実行されるプログラムの部分間の依存性も存在し得る。従って、先に実行されているあるタイル4上のコード片の依存データが、別のタイル4上の別のコード片によって利用できるようになるのを防ぐための技法が必要とされる。これは、データ一貫性モデルを使用して達成される。
AI及びデータ科学の並列プログラミングモデルは、通常、演算、バリア及び交換の3フェーズの反復実行モデルに従う。その意味は、プロセッサへの及びプロセッサからのデータ転送が、通常、プロセッサ間及び各プロセッサと外部の記憶装置との間のデータ一貫性を提供するためにバリア依存性を有するというものである。典型的に使用されるデータ一貫性モデルは、バルク同期並列(BSP)、ステイル同期並列(SSP)及び非同期である。本明細書で説明される処理ユニット2はBSPモデルを使用するが、代替の形態として他の同期モデルを利用できることが明らかであろう。
図2及び3を参照すると、図2及び3は、BSP交換スキームの実装形態を示しており、各タイル4は、交互サイクルで演算フェーズ33と交換フェーズ32を実行し、演算フェーズ33と交換フェーズ32は、タイル間でバリア同期30によって相互に分離される。図2及び3によって示される事例では、バリア同期は、各演算フェーズ33とそれに続く交換フェーズ32との間に配置される。演算フェーズ33の間、各タイル4は、タイル上で局所的に1つ又は複数の演算タスクを実行するが、他のいかなるタイル4ともこれらの演算の結果を通信することはない。交換フェーズ32では、各タイル4は、先行する演算フェーズからの演算の1つ又は複数の結果を1つ又は複数の他のタイル4と交換できるが、そのタスクが依存性を有するデータを他のタイル4から受信するまで、新しい演算を実行することはない。また、先行する演算フェーズにおいて演算されたもの以外のデータを他のタイル4に送信することもない。交換フェーズ32において内部制御関連動作などの他の動作を実行できることも除外されない。タイルグループの外部との通信は、BSPメカニズムを任意に利用できるが、代替として、BSPを利用せずに、それ自体の他の何らかの同期メカニズムを代わりに使用することができる。
BSP原理によれば、バリア同期30は、演算フェーズ33から交換フェーズ32に移行する接合点、交換フェーズ32から演算フェーズ33に移行する接合点又はその両方に配置される。すなわち、(a)グループのいずれかのタイルが次の交換フェーズ32に進めるようになる前に、すべてのタイル4がそれらのそれぞれの演算フェーズ33を完了する必要があるか、(b)グループのいずれかのタイルが次の演算フェーズ33に進めるようになる前に、グループのすべてのタイル4がそれらのそれぞれの交換フェーズ32を完了する必要があるか、又は、(c)これらの条件の両方が実施されるかのいずれかである。3つのすべての変形形態では、フェーズを交互に行うのは個々のタイルであり、同期するのはアセンブリ全体である。次いで、交換フェーズと演算フェーズのシーケンスは、複数の繰り返しにわたって繰り返すことができる。BSPの専門用語では、交換フェーズ及び演算フェーズの各繰り返しは、「スーパーステップ」と呼ばれる場合がある(ただし、文献上では、専門用語が常に一貫して使用されるとは限らないことに留意されたい。すなわち、個々の交換フェーズ及び演算フェーズの各々が個別にスーパーステップと呼ばれる場合があるのに対して、本明細書で採用される専門用語のように、交換フェーズ及び演算フェーズが合わせてスーパーステップと呼ばれる場合もある)。
また、同じ処理ユニット2又は異なる処理ユニット上のタイル4の複数の異なる独立したグループの各々は、互いに非同期的に動作する別個のそれぞれのBSPグループを形成することができ、演算、同期及び交換のBSPサイクルは所定の各グループ内でのみ課されるが、各グループは他のグループから独立してそれを行うことは除外されないことにも留意されたい。すなわち、マルチタイルアレイ6は、複数の内部同期グループを含み得、各々は、他のそのようなグループから独立して及び非同期的に動作する(後にさらに詳細に論じられる)。いくつかの実施形態では、後にさらに詳細に論じられるように、同期及び交換の階層的分類がある。
図3は、(a)演算フェーズ33から交換フェーズ32へのバリア同期(上記を参照)が課される事例における、アレイ6のタイルのいくつか又はすべてのグループ4i、4ii、4iiiの間で実装されるようなBSP原理を示す。この配列では、いくつかの他のタイルが依然として交換を行っている間に、いくつかのタイル4が演算33を開始できることに留意されたい。
BSPモデルは、処理ユニット2上のタイル4間でのデータの交換のために使用される。我々の先の出願である米国特許出願第16/538980号明細書に示されるように、処理ユニット2のタイル4間の通信は時間決定論的に起こり、データパケットはヘッダなしで送信される。それに加えて、BSPモデルは、処理ユニット2間のデータの交換のために使用することもできる。
実施形態では、処理ユニット2の複数のインスタンスは、互いに接続して、複数の処理ユニット2に広がるさらに大きなタイル4のアレイを形成することができる。このように互いに接続された処理ユニット2は、データを交換するために、互いのバリア同期に参加することができる。単一の処理ユニット2上のタイル4間でのみ起こるバリア同期は、内部(チップ上)同期と呼ばれる。他方では、処理ユニット2間で起こるバリア同期は、外部(チップ間)同期と呼ばれる。
図4を参照すると、図4は、内部同期と外部同期の両方を伴う例示的なBSPプログラムフローを示している。示されるように、フローは、(同じチップ2上のタイル4間のデータの)内部交換50及び(異なるチップ2上のタイル4間のデータの)外部交換50’を含む。図4のプログラムフローは、第1の処理ユニット2i及び第2の処理ユニット2iiに対するプログラムフローを示す。
図4に示されるように、(同じチップ2上のタイル4間のデータの内部交換50を含む)内部BSPスーパーステップは、(異なるチップ2上のタイル4間のデータの外部交換50’を含む)外部同期及び交換から分離しておく。
プログラムは、(i)第1の演算フェーズ、次いで、(ii)内部バリア同期30、次いで、(iii)内部交換フェーズ50、次いで、(iv)外部バリア同期80、次いで、(v)外部交換フェーズ50’の順番で含む、同期、交換フェーズ及び演算フェーズのシーケンスを実行するように配列することができる。外部バリア80は、内部交換フェーズ50の後に課され、その結果、プログラムは、内部交換50の後にのみ外部交換50’に進む。また、図4のチップ2Iに関して示されるように、内部交換(iii)と外部バリア(iv)との間に演算フェーズを任意に含めることができることにも留意されたい。
このシーケンス全体は、(例えば、コンパイラによってそのように生成されている)プログラムによって実施される。実施形態では、プログラムは、タイル4によって実行されるSYNC命令によってこのような働きをするようにプログラムされる。内部同期及び交換は、別のチップ2上の任意のタイル又は他のエンティティまで及ぶことはない。(iiiとivとの間の前述の任意の演算フェーズを伴う)シーケンス(i)~(v)は、一連の全反復において繰り返すことができる。反復ごとに、外部同期及び交換の前に、内部演算、同期及び交換(i)~(iii)の複数のインスタンスが存在し得る。すなわち、(i)~(iii)の複数のインスタンス(その順番を保って)、すなわち、複数の内部BSPスーパーステップは、(iv)~(v)、すなわち、外部同期及び交換の前に実施することができる。また、いずれのタイル4もその各々は内部同期及び交換(ii)~(iii)のそれら自体のインスタンスを他のタイル4と並行して実行できることにも留意されたい。
従って、BSPサイクル全体(i)~(v)につき、サイクル(ii)~(iii)の少なくとも一部が存在し得、同期は、内部でのみ(すなわち、チップ上でのみ)実行されるという制約を受ける。
外部交換50の間、通信は外部のみに限られないことに留意されたい。すなわち、いくつかのタイルは、単に、内部交換を実行することができ、いくつかのタイルは、外部交換のみを実行することができ、いくつかのタイルは、それらを混ぜ合わせて実行することができる。
また、図4に示されるように、いくつかのタイル4は、演算フェーズの間、ローカル入力/出力を実行することができる。例えば、それらのタイル4は、ホスト又は他のタイプの外部の記憶装置とデータを交換することができる。
また、図4に示されるように、一般に、任意の又はすべてのタイルが任意の所定のBSPスーパーステップにおいてヌル演算フェーズ52又はヌル交換フェーズ50を有することが可能であることにも留意されたい。
図4に示される同期バリアの各々は、同期要求及び確認応答の伝送の交換が完了した時点で、タイル4によって通過される。内部バリア同期の場合、処理ユニット2の各タイル4は、内部バリア同期に達した時点で、相互接続部34の内部同期コントローラ36(図1を参照)に内部同期要求を送信する。内部同期コントローラ36が、処理ユニット2の一部であるタイル4のすべてから同期要求を受信すると、同期コントローラ36は、タイル4の各々に同期確認応答を返す。同期確認応答を受信次第、タイル4の各々は、交換フェーズに入り、タイル4間のデータ交換が起こる。この技法は、タイルのいずれかが交換フェーズに進めるようになる前に、各タイル4がバリアに達しなければならないことを保証する。
外部バリア同期の場合、同期要求及び確認応答の交換は、同期グループと呼ばれる処理ユニット2のグループ間で行われる。外部バリア同期に対する同期要求及び確認応答の交換に続いて、処理ユニット2は、交換フェーズの間、データを交換する。
処理ユニット2上のタイル4の各々は、外部バリア同期に達した時点で、処理ユニット2と関連付けられた外部同期ロジック(図1では図示せず)に外部同期要求を発行する。外部同期ロジックが処理ユニット2上のタイル4のすべてから同期要求を受信した時点で、外部同期ロジックは、それらの同期要求の確認応答を行うか、又は、別の処理ユニット2と関連付けられた外部同期ロジックに同期要求を伝播する。同期要求に応答して別の処理ユニット2の外部同期ロジックによって取られる措置は、論理が同期グループのマスタとして定義されるか又はそのグループの伝播ノードとして定義されるかに依存する。伝播ノードは、受信したそれらの同期要求を同期グループに対して定義されたマスタに向けて伝播する。同期マスタは、同期グループの一部である処理ユニット2の各々に対する外部同期要求を受信した時点で、同期グループの他の処理ユニット2の各々と関連付けられた外部同期ロジックに同期確認応答を返す。また、同期マスタは、それ自体の処理ユニット2のタイル4の各々にも同期確認応答を返す。同期グループの他の処理ユニット2の各外部同期ロジック(すなわち、伝播ノード)は、同期確認応答を受信次第、その処理ユニット2のタイル4に同期確認応答を返す。
図5を参照すると、図5は、処理ユニット2間のデータの交換のために外部バリア同期に対して実行される同期要求の交換の例を示している。示されるシステム500は、同期グループの一部である3つの処理ユニット2a、2b、2c(総称で処理ユニット2と呼ばれる)を含む。3つの処理ユニット2の各々は、別個の集積回路510a、510b、510c(総称でチップ510と呼ばれる)に属する。チップ510の各々は、グローバル同期周辺機器(GSP)520と呼ばれる外部同期ロジック520を含む。いくつかの事例では、外部同期ロジック520は、チップ外(例えば、ゲートウェイデバイス上)に位置し得る。
タイル4の各々がバリアに達すると、タイル4は、関連付けられたGSP 520に同期要求を発行する。図5では、簡単にするため、関連付けられたGSP 520に同期要求を送信するものとして、各処理ユニット2のタイル4は1つしか示されていないが、実践では、チップ上のすべてのタイル4がGSP 520に同期要求を発行することになる。いくつかの実施形態では、各同期要求は、バリア同期のために使用される同期グループの表示を含み、GSP 520は、要求の表示に従って、受信した同期要求の伝播及び/又は確認応答を行う。他の実施形態では、GSP 520への同期要求の書き込みに先行して、近々行われるバリア同期のために使用される同期グループの関連付けられた処理ユニット2のノミネートされたタイル4からの書き込みが起こる。同期グループの表示は、GSP 520の構成設定を選択するために使用される。GSP 520は、バリア同期に達すると、選択された構成設定に従って、受信した同期要求の伝播及び/又は確認応答を行う。
この例では、GSP 520a、520cは、伝播ノードとして構成される。処理ユニット2のすべてのタイル4から同期要求を受信した後、GSP 520a、520cの各々は、同期グループに対して定義された同期マスタ(すなわち、GSP 520b)に向けて上流に同期要求を伝播する。GSP 520bは、GSP 520a、520cから及び関連付けられた処理ユニット2bのすべてのタイル4から同期要求を受信した後、処理ユニット2bのタイル4に向けて及びGSP 520a、520cに向けて下流に同期確認応答を発行する。GSP 520a、520cは、それぞれの処理ユニット2a、2cのタイル4に同期確認応答を発行することによって、受信した確認応答に応答する。
同期確認応答を受信することに応答して、タイル4は、バリア同期を通過し、交換フェーズの間に同期グループの他の処理ユニット2とデータを交換する。この異なる処理ユニット2間のデータの交換は、我々の先の出願である米国特許出願第15/886065号明細書で説明されるように、非時間決定論的に行われる。
各外部バリア同期におけるデータの交換に対しては、異なる同期グループを定義することができる。これらの同期グループは、処理ユニット上で実行するローカルプログラムにプログラムされる。タイル4は、バリア同期において同期要求を生成するために同期命令を実行する。同期命令は、オペランドとして同期グループを取り入れ、どの処理ユニット2間で各同期が起こるかを制御する。
図6Aを参照すると、図6Aは、複数の異なる可能な外部同期グループ(例えば、グループ_1又はグループ_2)を示している。実施形態では、これらは、異なる階層レベルに相当する。すなわち、より高い階層レベル92(例えば、グループ2)の各々は、少なくとも1つ低い階層レベルの2つ以上のグループ91A、91Bを包含する。実施形態では、2つの階層レベルしか存在しないが、より多くの入れ子レベルが存在することは除外されない。バリア同期を開始するため、処理ユニット2のタイル4の実行ユニットは、SYNC命令を実行する。SYNC命令のオペランドは、同期グループを示す。SYNC命令のオペランドが外部同期グループのより低い階層レベル(SYNCグループ_1)に設定される場合は、SYNCが実行されたタイルと同じ低いレベルの外部同期グループにおいてのみ、チップ2上のタイル4に関連して、上記で説明される同期及び集計動作が実行される。他方では、SYNC命令のオペランドが外部同期グループのより高い階層レベル(SYNCグループ_2)に設定される場合は、SYNCが実行されたタイルと同じ高いレベルの外部同期グループにおいて、すべてのチップ2上のすべてのタイル4に関連して、上記で説明される同期及び集計動作が自動的に実行される。
オペランドとして外部同期グループを有するSYNC命令のオペコードに応答して、その同期グループの各タイル4は、オペランドによって指定された同期レベルを関連付けられたGSP 520に信号伝達することを行わせる。これに応答して、GSP 520は、信号伝達されたグループのタイル4の間でのみ実行するように、同期要求(sync_req)及び確認応答(sync_ack)のプロセスを行う。
他の実施形態では、SYNC命令のモードによって指定することができる同期グループは、本質的に階層的であるとは限らないことに留意されたい。一般に、SYNC命令には、いかなる種類のグループにも対応するモードを提供することができる。例えば、モードは、非階層的なグループの中からのみ又は階層的なグループと1つ又は複数の非階層的なグループとを混ぜ合わせたもの(少なくとも1つのグループは、別のものの中に完全にネストされるというわけではない)から、選択を可能にすることができる。これにより、有利には、プログラマ又はコンパイラが、最小コード密度で、互いに非同期である内部同期グループの異なるレイアウト間で選択する上での柔軟性が可能になる。
処理ユニット2間での交換のために提供される外部バリア同期に加えて、外部バリア同期は、処理ユニット2とホストシステムとの間でデータを交換するために実行することができる。そのようなデータは、処理ユニット2による処理のためにホストシステムによって提供されるアプリケーションデータを含み得る。データは、ホストシステムに提供される処理ユニット2による処理の結果を含み得る。このタイプのバリア同期は、ホストの関与を伴うバリア同期と呼ばれる。
ホストの関与を伴うバリア同期と他のバリア同期との関係は、図6Bに示されている。この図は、例示的な処理ユニット2が参加したバリア同期を示す。処理ユニット2は、ホストからの同期確認応答を必要とするバリア90が課される前に、P個のバリア同期80に参加することができる。P個のバリア同期は、関連同期グループのすべての(休止していない)タイル4からの同期要求を必要とする。後続のバリア同期90は、処理ユニット2のすべての(休止していない)タイル4からの同期要求を必要とし、特定のバリアを通過する許可をホストが以前に示していることを必要とする。バリア90の後、ホストと処理ユニット2の1つ又は複数のタイル4(例えば、演算結果をホストに報告するための1つ又は複数のタイル4)との間で交換50”を実行することができる。
このバリア同期及び関連付けられたデータ交換は、処理ユニット2とホストシステムとの間を接続するためのネットワークインタフェースデバイスを使用して行われる。ネットワークインタフェースデバイスは、ゲートウェイデバイスであると説明されているが、別のタイプのネットワークインタフェースデバイスでもあり得る。ゲートウェイデバイスは、参照により組み込まれる、先の米国特許出願第16/235109号明細書で詳細に説明されている。
図7を参照すると、図7は、データ処理システム700の例を示しており、処理ユニット2は、ゲートウェイ720を介してホストシステム710と通信するように構成される。この例では、単一のゲートウェイ720が2つの処理ユニット2とネットワーク740を介して接続するように構成される。しかし、他の実施形態では、そのようなゲートウェイ720の各々は、異なる数(例えば、1つ)の処理ユニット2とネットワーク740を介して接続することができる。
ホストシステム720は、各処理ユニット2と関連付けられたバッファ725を含む。バッファ725の各々は、ゲートウェイ710上に関連付けられたバッファ730を有する。ゲートウェイ710上のバッファ730は、ホスト720上の関連付けられたバッファ725のミラーである。読み取り及び書き込み要求は、ホストバッファ725のデータをゲートウェイバッファ730のデータと同期させるために、ネットワーク740上で発行される。読み取り及び書き込み要求は、RDMA読み取り及び書き込み要求であり得る。1つ又は複数のRDMAコントローラ735は、RDMA読み取り/書き込みをゲートウェイ710に発行してバッファ725とバッファ730との間のデータ転送を行うために、ホスト720に存在する。同様に、RDMAコントローラ736は、バッファ730とバッファ725との間のデータ転送を行うために、ゲートウェイ710に存在する。RDMA交換は、ネットワーク740上で起こる。実施形態では、ネットワーク740は、イーサネット(登録商標)ネットワーク740である。この事例では、データは、RDMAオーバーコンバージドイーサネット(RoCE:RDMA over Converged Ethernet)を介してネットワーク740上で送信される。
本明細書で論じられる主要な例はRoCEを介してデータを送信するものであるが、他の例では、異なるネットワーク化技術を使用することができる。例えば、データは、通常のイーサネット(登録商標)上でデータプレーン開発キット(DPDK)を使用して、ネットワーク740上で送信することができる。しかし、RDMAの使用は、低レイテンシという利点を有する。RDMA以外の異なるプロトコルが使用される実施形態では、図7及び9に示されるRDMAコントローラ725、735、736、740は、説明されるデータ転送動作を実行するために使用される他のタイプの処理回路であり得る。
処理ユニット2は、それらの割り当てられたプログラムの事前に定義された時点において、ゲートウェイ710上のそれらの関連付けられたメモリ730とデータを交換するために、バリア同期を開始するように構成される。そのような事前に定義されたバリア同期では、処理ユニット2の一方又は両方は、ゲートウェイ710の関連付けられた外部同期ロジック745に同期要求を送信する。外部同期ロジック745は、ローカル同期伝播モジュール(LSPM)745として示されている。同期要求を受信次第、各LSPM 745は、同期要求の確認応答を行うように構成される。処理ユニット2は、そのような同期確認応答を受信次第、ゲートウェイ710上のその関連付けられたメモリ730とのデータ交換を実行する。メモリ730は、処理ユニット2のメモリにマッピングされたメモリであり得る。この事例では、処理ユニット2は、メモリ730からのデータの送信及び受信を行うために、メモリマップドI/O(MMIO)読み取り/書き込みを発行する。交換フェーズの間、処理ユニット2は、先行する演算フェーズにおいて生成されたその処理の結果をメモリ730に送信したり、後続の演算フェーズで処理するためにメモリ730から作業負荷を受信したりすることができる。同期要求、確認応答及びデータ交換は、処理ユニット2とゲートウェイ710との間のPCIeリンク上で行われる。
図7では、ホスト720と通信するものとして、処理ユニット2は2つしか示されていないが、本発明の実施形態は、大多数の処理ユニットがホスト720と通信することを可能にする。図8を参照すると、図8は、単一のホスト720と通信する多数の処理ユニット2を含むシステム800の例を示している。処理ユニット2は、各々がホスト720によって提供されるローカルプログラムを実行することによって、共に、分散型アプリケーションを実行するように構成される。処理ユニットは、バッファ730を介してホストとデータを交換し、ローカルプログラムの事前に定義された同期時点において他の処理ユニットとデータを交換する。処理ユニット2間のデータ交換は、処理ユニット2間のPCIeリンクを介して又はゲートウェイ710間のPCIeリンクを介して起こり得る。ゲートウェイ710とホスト720との間のデータ交換は、ネットワーク740上の接続を介して起こる。各処理ユニット2に対して、別個の接続が存在する。これらの接続の各々は、RDMA接続であり得る。
図9を参照すると、図9は、ホストシステム720と処理ユニット2のうちの1つとの間の対話をさらに詳細に示している。ここでは、プログラムのコンパイル及び処理ユニット2への提供並びにプログラムの実行から生じる後続のデータ交換について説明する。
示されるように、ホスト720は、処理ユニット2上で実行させるためにプログラムのセットをコンパイルするように構成された少なくとも1つのプロセッサ810を含む。アプリケーションに対してソースコードから生成されたローカルプログラムを合わせて、コンパイル済みのアプリケーションとなる。プログラムの各々は、実行可能なイメージの形態を取る。少なくとも1つのプロセッサ810は、ソースコードセットを受信し、コンパイラプログラムに基づいて、ソースコードからローカルプログラムのセットを生成する。コンパイルプロセスは、別個のローカルプログラムを生成し、処理ユニット2にわたってそれらを割り当てることを含む。ローカルプログラムを生成するためのコンパイルプロセスの一部として、少なくとも1つのプロセッサ810は、交換同期時点のセットを各ローカルプログラムに挿入する。ローカルプログラムの実行におけるこれらの時点の各々では、それぞれの処理ユニット2は、バリア同期に参加するように構成される。バリア同期のいくつかは、上記で説明されるような内部バリア同期である。バリア同期のいくつかは、アプリケーションを実行することに関与する1つ又は複数の他の処理ユニット2とデータを交換するための外部バリア同期である。バリア同期のいくつかは、付属のゲートウェイ710を介してホスト720とデータを交換するための外部バリア同期である。
ホスト720が処理ユニット2用にローカルプログラムをコンパイルした後、プログラムは、制御プログラムバッファ920に格納される。ホストは、各処理ユニット2に対してそのような制御プログラムバッファを個別に有する。制御プログラムバッファ920に関するコメントは、これらの他の制御プログラムバッファに等しくうまく当てはまる。ホスト720とゲートウェイ710との間でデータを交換するために使用されるバッファ725、730と同様に、バッファ920及びバッファ930は、互いのミラーである。ローカルプログラムは、ネットワーク740上で、1つ又は複数の書き込みにおいて、バッファ920からバッファ930に転送される。この転送は、ネットワーク740上で、1つ又は複数のRDMA書き込みにおいて、バッファ920からバッファ930にローカルプログラムを転送するように構成された1つ又は複数のRDMAコントローラ736によって、行うことができる。処理ユニット2は、制御プログラムバッファ930からプログラムを読み取るために、ゲートウェイ710に読み取りを発行するように構成される。処理ユニット2は、そのような読み取りを実行するための少量の二次ブートローダコードを含む。読み取りは、MMIO読み取りである。
処理ユニット2がバッファ930からローカルプログラムをロードした時点で、処理ユニット2は、プログラムを実行する。作業負荷を処理するため、プログラムは、最初に、それらの作業負荷をホスト720から受信しなければならない。ホスト720は、その実行の間、プログラムによって必要とされる作業負荷を格納する。ホスト720は、処理ユニット2が利用できるようになる前に、これらの作業負荷をバッファ725に格納する。データ(作業負荷を含む)は、異なるストリームに分割され、処理ユニット2は、そのローカルプログラムの実行における異なる条件の結果に応じて、読み取り及び書き込み対象のストリームを選択することができる。
各ストリームは、例えば、処理ユニット2が多数の処理ユニット2上で実行されている機械学習又は機械知能アルゴリズムへの入力として使用するためにホストサブシステム720から処理ユニット2に送信されている、画像シーケンス(個々の静止画像若しくは映像フレーム)、1つ若しくは複数の音声サンプルの音声ストリーム又は他の任意の経験データシーケンス(例えば、オンラインショッピング習慣など)を含み得る。例えば、これは、ストリーミングデータに基づいてニューラルネットワークを訓練するため、又は、既に訓練済みのニューラルネットに基づくデータから推論するためのものであり得る。例では、ストリームが処理ユニット2からホストサブシステム720への方向である場合、ストリームは、処理ユニット2上で実行されている訓練済みのニューラルネットなどの機械知能アルゴリズムから生じた推論のストリームを含み得る。
バッファ725、730は、複数の異なるストリームのデータの転送に備えて格納するために使用されるマルチストリームバッファ725、730である。また、バッファ725、730は、双方向性でもあり、各ストリームのデータは、各バッファ725、730からの書き込みと読み取りの両方を行うことができる。処理ユニット2は、ストリームの識別子をゲートウェイに供給することによって、異なるストリームから選択的に読み取り/書き込みを行うことができる。ローカルプログラムが処理ユニット2にロードされた後、処理ユニット2は、このプログラムを実行して、処理ユニット2への読み取り対象のストリームの識別子の書き込みを発行する。ストリームの識別子は、バッファ725、730のインデックス又はアドレスのうちの1つ又は複数を含む。ストリームの識別子は、ストリームを明示的に識別するというよりむしろ、図9に示されるバッファ725、730のメモリ領域(その各々は、ストリームのうちの1つと関連付けられる)のうちの1つを識別することができる。ゲートウェイ710は、ストリームの識別子を受信し、その識別子は、ストリームIDストア940に一時的に格納される。ゲートウェイ710は、ストリームの識別子を受信することに応答して、ネットワーク740上で、その識別子をホスト720に書き込む。識別子の受信に応答して、ホスト720は、ネットワーク740上で、バッファ725から識別されたストリームのデータをバッファ730に書き込む。次いで、処理ユニット2は、そのデータをバッファ730から読み取る。
バッファ730から作業負荷を得た後、処理ユニット2は、そのローカルプログラムに従ってその作業負荷を処理する。その実行の間のある時点において、処理ユニット2は、ストリームの表示を書き込み、その表示は、近々行われるバリア同期に続く交換フェーズにおいて読み取り又は書き込みが行われる。この書き込みは、処理ユニット2の演算フェーズの間又は先の交換フェーズの間に行うことができる。その後、プログラムの実行の間に、同期バリアに達する。この時点では、処理ユニット2は、図7に関して上記で説明される同期要求/確認応答手順を実行する。この手順に続いて、処理ユニット2は、バッファ730からの読み取り及び書き込みを行う。その際、処理ユニット730は、提供されたストリームの表示によって識別されたストリームに対応するバッファのメモリ領域からの読み取り及び書き込みを行う。そのストリームへのデータ書き込みに応答して、ゲートウェイ710は、バッファ725にデータを書き込む。従って、交換フェーズの間、ホスト720は、処理ユニット2から作業負荷データの処理の結果を受信し、処理ユニット2は、ホスト720からさらなる作業負荷データを受信する。
図10を参照すると、図10は、ホスト720とゲートウェイ710と処理ユニット2との間のメッセージの交換を示すメッセージシーケンス図を示している。図10に示されるように、ステップ1では、処理ユニット2は、ストリームの識別子をゲートウェイに書き込む。ゲートウェイは、このストリーム識別子を受信し、それをホスト720に書き込む。ステップ2では、ストリームIDの受信に応答して、ホスト720は、作業負荷をゲートウェイ710に書き込む。示されるように、バリア同期は、処理ユニット2によって達する。バリア同期に続いて、処理ユニット2は、ステップ2においてホスト720から提供された作業負荷をゲートウェイ710から読み取る。また、ステップ3では、処理ユニット2は、先の作業負荷の処理から得られた結果を書き込む。
ステップ4では、処理ユニット2は、ステップ3において処理ユニット2によって書き込まれたストリームの識別子をゲートウェイ710に書き込む。ストリーム識別子の受信に応答して、ゲートウェイ710は、ステップ3において処理ユニット2によって書き込まれたデータをホストに書き込む。
そのデータ交換に続いて、処理ユニット2は、さらなる演算フェーズに進む。図10に示されるデータ交換のためのプロセスは、多数回実行することができる。
図10では、ゲートウェイ720とホスト710との間のデータ転送を開始するために処理ユニット2が制御メッセージMemWrを送信しているが、他の実施形態では、ホスト710が、バッファ725とバッファ730を定期的に同期させることによって、このデータ転送を開始することができる。
図11を参照すると、図11は、本出願の実施形態による例示的な方法1100を示している。この図は、ホストと、ネットワークインタフェースデバイス(すなわち、上記の実施形態で説明されるゲートウェイ)と、各々がローカルプログラムを実行することによってアプリケーションを走らせるように構成された処理ユニットとを含むシステムによって実行される方法1100の概要を提供する。
S1110では、ホストは、ローカルプログラムを処理ユニットに転送する。
S1120では、各処理ユニットは、指定ストリームからの作業負荷データの要求を発行する。各処理ユニットによって指定されるストリームは、その処理ユニットに割り当てられたローカルプログラムに依存する。要求は、指定ストリームと共に、ネットワークインタフェースデバイスを介してホストに提供される。
S1130では、要求の各々の受信に応答して、ホストは、識別されたストリームからのデータを書き込む。ホストは、処理ユニットへの伝達のために、このデータをネットワークインタフェースデバイスに書き込む。処理ユニットは、ネットワークインタフェースデバイスメモリからデータを読み取る。
S1140では、処理ユニットは、S1130において受信した作業負荷データを使用して計算を実行するために、演算フェーズの間、演算を実行する。実行される計算は、各処理ユニットに提供されるローカルプログラムで指定されている。
S1150では、処理ユニットは、S1140の間のそれらのデータ処理の結果を交換し合う。このステップは、処理ユニットの同期グループ間でバリア同期を使用して実行される。そのようなバリア同期の時間及び同期グループの定義は、処理ユニットの各々に提供されるローカルプログラムで指定されている。
S1150におけるそのような外部バリア同期の各々に続いて、方法は、S1140に戻り、さらなるコンピュータフェーズの間にさらなる計算が実行される。
ローカルプログラムの実行における後の時点では、処理ユニットは、S1160に進み、ホストとデータ転送を開始するためのプロセスが始まる。このステップは、S1140又はS1150とオーバーラップし得る。
S1160では、処理ユニットは、ネットワークインタフェースデバイスを介して、ストリーム識別子をホストに提供する。
S1170では、ホストは、識別されたストリームのデータをネットワークインタフェースデバイスに書き込む。
S1180では、事前にコンパイル済みの同期バリアに続いて、処理ユニットは、ネットワークインタフェースデバイスから/への、識別されたストリームのデータの読み取り及び書き込みを行う。ネットワークインタフェースデバイスは、データをホストに書き込む。
各処理ユニットがステップS1140~S1180を同時に実行する必要はなく、1つ又は複数の他処理ユニット2がS1180のホストとのデータの交換を行っている間に、いくつかの処理ユニット2は、S1140の演算又はS1150のデータの交換を行うことができる。S1150においてバリア同期が処理ユニット2のグループ間で行われる時以外は、処理ユニットは、互いに非同期的に動作する。各処理ユニットによって実行されるようなステップの順序及びタイミングは、ホストによって処理ユニットに割り当てられているローカルプログラムに依存する。
外部交換50’の間、通信は外部のみに限られないことに留意されたい。すなわち、いくつかのタイルは、単に、内部交換を実行することができ、いくつかのタイルは、外部交換のみを実行することができ、いくつかのタイルは、それらを混ぜ合わせて実行することができる。
図7を参照すると、図7は、データ処理システム700の例を示しており、処理ユニット2は、ゲートウェイ710を介してホストシステム720と通信するように構成される。この例では、単一のゲートウェイ710が2つの処理ユニット2とネットワーク740を介して接続するように構成される。しかし、他の実施形態では、そのようなゲートウェイ710の各々は、異なる数(例えば、1つ)の処理ユニット2とネットワーク740を介して接続することができる。
本明細書で論じられる主要な例はRoCEを介してデータを送信するものであるが、他の例では、異なるネットワーク化技術を使用することができる。例えば、データは、通常のイーサネット(登録商標)上でデータプレーン開発キット(DPDK)を使用して、ネットワーク740上で送信することができる。しかし、RDMAの使用は、低レイテンシという利点を有する。RDMA以外の異なるプロトコルが使用される実施形態では、図7及び9に示されるRDMAコントローラ735、736は、説明されるデータ転送動作を実行するために使用される他のタイプの処理回路であり得る。
示されるように、ホスト720は、処理ユニット2上で実行させるためにプログラムのセットをコンパイルするように構成された少なくとも1つのプロセッサ910を含む。アプリケーションに対してソースコードから生成されたローカルプログラムを合わせて、コンパイル済みのアプリケーションとなる。プログラムの各々は、実行可能なイメージの形態を取る。少なくとも1つのプロセッサ910は、ソースコードセットを受信し、コンパイラプログラムに基づいて、ソースコードからローカルプログラムのセットを生成する。コンパイルプロセスは、別個のローカルプログラムを生成し、処理ユニット2にわたってそれらを割り当てることを含む。ローカルプログラムを生成するためのコンパイルプロセスの一部として、少なくとも1つのプロセッサ910は、交換同期時点のセットを各ローカルプログラムに挿入する。ローカルプログラムの実行におけるこれらの時点の各々では、それぞれの処理ユニット2は、バリア同期に参加するように構成される。バリア同期のいくつかは、上記で説明されるような内部バリア同期である。バリア同期のいくつかは、アプリケーションを実行することに関与する1つ又は複数の他の処理ユニット2とデータを交換するための外部バリア同期である。バリア同期のいくつかは、付属のゲートウェイ710を介してホスト720とデータを交換するための外部バリア同期である。
バッファ730から作業負荷を得た後、処理ユニット2は、そのローカルプログラムに従ってその作業負荷を処理する。その実行の間のある時点において、処理ユニット2は、ストリームの表示を書き込み、その表示は、近々行われるバリア同期に続く交換フェーズにおいて読み取り又は書き込みが行われる。この書き込みは、処理ユニット2の演算フェーズの間又は先の交換フェーズの間に行うことができる。その後、プログラムの実行の間に、同期バリアに達する。この時点では、処理ユニット2は、図7に関して上記で説明される同期要求/確認応答手順を実行する。この手順に続いて、処理ユニット2は、バッファ730からの読み取り及び書き込みを行う。その際、処理ユニット2は、提供されたストリームの表示によって識別されたストリームに対応するバッファのメモリ領域からの読み取り及び書き込みを行う。そのストリームへのデータ書き込みに応答して、ゲートウェイ710は、バッファ725にデータを書き込む。従って、交換フェーズの間、ホスト720は、処理ユニット2から作業負荷データの処理の結果を受信し、処理ユニット2は、ホスト720からさらなる作業負荷データを受信する。
図10では、ゲートウェイ710ホストシステム720との間のデータ転送を開始するために処理ユニット2が制御メッセージMemWrを送信しているが、他の実施形態では、ホストシステム720が、バッファ725とバッファ730を定期的に同期させることによって、このデータ転送を開始することができる。

Claims (20)

  1. 複数のサブシステムの各々において実行されるローカルプログラムに従ってホストシステムに対するワークアクセラレータとして動作するする複数のサブシステムとネットワークを介して接続されるように構成されたホストシステムであって、
    前記ホストシステムは、少なくとも1つのプロセッサと、コンピュータ可読命令を格納する少なくとも1つのメモリとを含み、
    前記ホストシステムの少なくとも1つのプロセッサは、ローカルプログラムのセットをコンパイルするために前記コンピュータ可読命令を実行するように構成され、各ローカルプログラムは、複数のサブシステムのうちの1つにおいて実行されるものであり、ソースコードをコンパイルするステップは、同期グループのセットを定義することを含み、各同期グループは、前記サブシステムの少なくともいくつかを含み、
    各ローカルプログラムは、
    前記サブシステムの少なくとも1つのプロセッサによって実行される際に、前記サブシステムの複数の演算フェーズのうちの1つ又は複数の間に演算動作を実行するための演算命令セットと、
    前記サブシステムの少なくとも1つのプロセッサによって実行される際に、前記ローカルプログラムの実行における事前に定義された時点において複数のバリア同期を実行するためのデータ転送命令セットを含み、前記バリア同期の少なくともいくつかは、前記同期グループのうちの1つの間で定義され、前記バリア同期の少なくとも1つは、ホストの関与を必要とする同期であり、ホストの関与を必要とする同期に続いて、データ転送の開始プログラムが前記サブシステムによってホストシステムに提供されることに応答して、前記サブシステムと前記ホストシステムとの間でデータ交換が実行され、
    ホストシステムの少なくとも1つのプロセッサは、データ転送の受信された開始プログラムの各々に応答して、前記開始プログラムの受信元である前記サブシステムのうちの1つと前記ネットワーク上でデータを交換するように構成される、
    ホストシステム。
  2. 前記開始プログラムの受信元である前記サブシステムのうちの1つとの前記ネットワーク上でのデータの交換が、リモートダイレクトメモリアクセスを使用して行われる、請求項1に記載のホストシステム。
  3. 前記ネットワークが、イーサネット(登録商標)ネットワークである、請求項1又は2に記載のホストシステム。
  4. 前記開始プログラムの受信元である前記サブシステムのうちの1つと前記ネットワーク上でデータを交換するステップは、
    ホストシステムのバッファの少なくとも一部を、前記開始プログラムの受信元である前記サブシステムのうちの1つがアクセスすることができるネットワークインタフェースデバイスのバッファの少なくとも一部と同期させることを含む、請求項1~3のいずれか一項に記載のホストシステム。
  5. データ転送の受信された開始プログラムの各々は、ホストサブシステムと識別子の受信元である前記サブシステムのうちの前記1つとの間のストリームの識別子を含み、
    前記識別子の受信元である前記サブシステムのうちの1つと前記ネットワーク上でデータを交換する前記ステップは、それぞれの識別されたストリームに属するデータを送信する及び/又は受信することを含む、請求項1~4のいずれか一項に記載のホストシステム。
  6. 前記ホストシステムのバッファの少なくとも一部は、識別されたストリームと関連付けられたバッファの一部を含み、
    前記識別子の受信元である前記サブシステムのうちの1つがアクセスすることができるネットワークインタフェースデバイスのバッファの少なくとも一部が、識別されたストリームと関連付けられたバッファの一部を含む、請求項4に従属する請求項5に記載のホストシステム。
  7. 前記開始プログラムの受信元である前記サブシステムのうちの1つと前記ネットワーク上でデータを交換する前記ステップは、
    前記開始プログラムの受信元である前記サブシステムの前記ローカルプログラムにおいて定義される複数のバリア同期のうちの1つの前に、そのサブシステムがアクセスすることができるネットワークインタフェースデバイスにデータを送信することと、
    前記開始プログラムの受信元である前記サブシステムの前記ローカルプログラムにおいて定義される複数のバリア同期のうちの前記1つに続いて、そのサブシステムがアクセスすることができる前記ネットワークインタフェースデバイスからデータを受信することと、
    を含む、請求項1~6のいずれか一項に記載のホストシステム。
  8. 前記ホストシステムの少なくとも1つのプロセッサは、前記ローカルプログラムの各々を前記ネットワーク上でそれぞれのサブシステムに発送することを行わせるように構成される、請求項1~7のいずれか一項に記載のホストシステム。
  9. ホストシステムとネットワークを介して接続されるように構成されたサブシステムであって、
    前記サブシステムの少なくとも1つのプロセッサ上で実行されるローカルプログラムに従って前記ホストシステムに対するワークアクセラレータとして動作するように構成され、
    前記ネットワーク上で前記ホストシステムから前記ローカルプログラムを受信するように構成されたインタフェースを含み、
    前記ローカルプログラムは、
    同期グループのセットの表示であって、前記同期グループの少なくともいくつかが、前記サブシステム及びホストに対するアクセラレータとして動作するための1つ又は複数のさらなるサブシステムを含む、同期グループのセットの表示と、
    少なくとも1つのプロセッサによって実行される際に、前記サブシステムの複数の演算フェーズのうちの1つ又は複数の間に複数の演算動作を実行するための演算命令セットと、
    少なくとも1つのプロセッサによって実行される際に、それぞれのローカルプログラムの実行における事前に定義された時点において複数のバリア同期を実行するためのデータ転送命令セットと、を含み、
    前記バリア同期の少なくともいくつかは、前記同期グループのうちの1つのサブシステム間で定義され、前記バリア同期の少なくとも1つが、ホストの関与を必要とする同期であり、ホストの関与を必要とする同期に続いて、前記サブシステムによって前記ホストシステムにデータ転送の開始プログラムを送信することに続いて、前記ネットワーク上で前記サブシステムと前記ホストシステムとの間でデータ交換が実行される、
    サブシステム。
  10. 前記サブシステムと前記ホストシステムとの間の前記データ交換は、リモートダイレクトメモリアクセスを使用して行われる、請求項9に記載のサブシステム。
  11. 前記ネットワークが、イーサネット(登録商標)ネットワークである、請求項9又は10に記載のサブシステム。
  12. 前記サブシステムと前記ホストシステムとの間のデータ交換は、
    少なくとも1つのプロセッサがサブシステム用のネットワークインタフェースデバイスのバッファとのデータ交換を行わせることを含み、
    前記バッファの少なくとも一部は、前記ホストシステムの前記バッファの少なくとも一部と同期される、請求項9~11のいずれか一項に記載のサブシステム。
  13. データ転送の前記開始プログラムは、前記サブシステムとホストサブシステムとの間のストリームの識別子を含み、
    前記サブシステムと前記ホストシステムとの間のデータ交換は、それぞれの識別されたストリームに属するデータを交換することを含む、請求項9~12のいずれか一項に記載のサブシステム。
  14. ネットワークインタフェースデバイスのバッファの少なくとも一部が、識別されたストリームと関連付けられたバッファの一部を含む、請求項12に従属する時に請求項13に記載のサブシステム。
  15. 前記サブシステムと前記ホストシステムとの間のデータ交換が、
    前記開始プログラムの受信元である前記サブシステムの前記ローカルプログラムにおいて定義される複数のバリア同期のうちの1つの前に、そのサブシステムがアクセスすることができるネットワークインタフェースデバイスにデータを送信することと、
    前記開始プログラムの受信元である前記サブシステムの前記ローカルプログラムにおいて定義される複数のバリア同期のうちの1つに続いて、そのサブシステムがアクセスすることができる前記ネットワークインタフェースデバイスからデータを受信することと、
    を含む、請求項9~14のいずれか一項に記載のサブシステム。
  16. 前記インタフェースは、前記ネットワーク上で前記ホストシステムから前記ローカルプログラムを受信するように構成される、請求項9~15のいずれか一項に記載のサブシステム。
  17. ホストシステムにおいて実施される方法であって、
    複数のサブシステムの各々において実行されるローカルプログラムに従って前記ホストシステムに対するワークアクセラレータとして動作する複数のサブシステムとネットワークを介して接続することを含み、
    複数のサブシステムのうちの1つにおいて実行されるローカルプログラムのセットをコンパイルすることを含み、
    ソースコードをコンパイルするステップは、少なくともいくつかのサブシステムを含む同期グループのセットを定義することを含み、
    各ローカルプログラムは、
    前記サブシステムの少なくとも1つのプロセッサによって実行される際に、前記サブシステムの複数の演算フェーズのうちの1つ又は複数の間に演算動作を実行するための演算命令セットと、
    前記サブシステムの少なくとも1つのプロセッサによって実行される際に、前記ローカルプログラムの実行における事前に定義された時点において複数のバリア同期を実行するためのデータ転送命令セットを含み、前記バリア同期の少なくともいくつかは、前記同期グループのうちの1つのサブシステム間で定義され、前記バリア同期の少なくとも1つは、ホストの関与を必要とする同期であり、ホストの関与を必要とする同期に続いて、データ転送の開始プログラムが前記サブシステムによって前記ホストシステムに提供されることに応答して、前記サブシステムと前記ホストシステムとの間でデータ交換が実行され、
    データ転送の前記受信された開始プログラムの各々に応答して、前記開始プログラムの受信元である前記サブシステムのうちの1つと前記ネットワーク上でデータを交換することを含む、
    方法。
  18. ホストシステムの少なくとも1つのプロセッサに請求項17に記載の方法を実行させるコンピュータプログラム。
  19. ホストシステム用のサブシステムにおいて実施される方法であって、
    ホストシステムとネットワークを介して接続することと、
    前記ネットワーク上で前記ホストシステムからローカルプログラムを受信することと、
    前記サブシステムの少なくとも1つのプロセッサ上で実行され、前記サブシステム及びホストに対するアクセラレータとして動作するための1つ又は複数のさらなるサブシステムを含む同期グループのセットの表示を含むローカルプログラムに従って、前記ホストシステムに対するワークアクセラレータとして動作することと、
    前記サブシステムの複数の演算フェーズのうちの1つ又は複数の間に演算動作を実行するために前記ローカルプログラムの演算命令を実行することと、
    前記ローカルプログラムの実行における事前に定義された時点において、前記同期グループのうちの1つのサブシステム間で定義されホストの関与を必要とする同期である複数のバリア同期を実行するために、前記ローカルプログラムのデータ転送命令を実行することと、
    ホストの関与を必要とする同期に続いて、前記サブシステムによって前記ホストシステムにデータ転送の開始プログラムを送信することに続いて、前記ネットワーク上で前記ホストシステムとデータ交換を実行することと、
    を含む、方法。
  20. サブシステムの少なくとも1つのプロセッサに請求項19に記載の方法を実行させるコンピュータプログラム。
JP2023502602A 2020-07-14 2020-12-22 ネットワーク上におけるホストとアクセラレータとの間の通信 Pending JP2023534242A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB2010810.6A GB2597078B (en) 2020-07-14 2020-07-14 Communication between host and accelerator over network
GB2010810.6 2020-07-14
PCT/EP2020/087563 WO2022012770A1 (en) 2020-07-14 2020-12-22 Communication between host and accelerator over network

Publications (1)

Publication Number Publication Date
JP2023534242A true JP2023534242A (ja) 2023-08-08

Family

ID=72086890

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023502602A Pending JP2023534242A (ja) 2020-07-14 2020-12-22 ネットワーク上におけるホストとアクセラレータとの間の通信

Country Status (7)

Country Link
US (1) US20220019487A1 (ja)
EP (1) EP4182793A1 (ja)
JP (1) JP2023534242A (ja)
KR (1) KR20230035416A (ja)
CN (1) CN116137907A (ja)
GB (1) GB2597078B (ja)
WO (1) WO2022012770A1 (ja)

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3636871B2 (ja) * 1997-09-16 2005-04-06 株式会社日立製作所 並列プロセッサシステム
US7647475B2 (en) * 2006-09-06 2010-01-12 Mips Technologies, Inc. System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue
US20080109569A1 (en) * 2006-11-08 2008-05-08 Sicortex, Inc Remote DMA systems and methods for supporting synchronization of distributed processes in a multi-processor system using collective operations
WO2008155806A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited バリア同期方法、装置、及びマルチコアプロセッサ
US7929557B2 (en) * 2008-11-14 2011-04-19 Juniper Networks, Inc. Summarization and longest-prefix match within MPLS networks
US20120179896A1 (en) * 2011-01-10 2012-07-12 International Business Machines Corporation Method and apparatus for a hierarchical synchronization barrier in a multi-node system
EP2929434B1 (en) * 2012-12-06 2019-01-16 Coherent Logix Incorporated Processing system with synchronization instruction
CN108733506B (zh) * 2017-04-17 2022-04-12 伊姆西Ip控股有限责任公司 用于数据同步的方法、设备和计算机可读介质
US11353868B2 (en) * 2017-04-24 2022-06-07 Intel Corporation Barriers and synchronization for machine learning at autonomous machines
US10922610B2 (en) * 2017-09-14 2021-02-16 Intel Corporation Synchronization scheduler of distributed neural network training
US11360934B1 (en) * 2017-09-15 2022-06-14 Groq, Inc. Tensor streaming processor architecture
GB2569271B (en) * 2017-10-20 2020-05-13 Graphcore Ltd Synchronization with a host processor
GB2569775B (en) * 2017-10-20 2020-02-26 Graphcore Ltd Synchronization in a multi-tile, multi-chip processing arrangement
GB201717303D0 (en) * 2017-10-20 2017-12-06 Graphcore Ltd Scheduling tasks in a multi-threaded processor
GB2575294B8 (en) * 2018-07-04 2022-07-20 Graphcore Ltd Host Proxy On Gateway

Also Published As

Publication number Publication date
GB202010810D0 (en) 2020-08-26
CN116137907A (zh) 2023-05-19
EP4182793A1 (en) 2023-05-24
KR20230035416A (ko) 2023-03-13
GB2597078B (en) 2022-07-13
US20220019487A1 (en) 2022-01-20
GB2597078A (en) 2022-01-19
WO2022012770A1 (en) 2022-01-20

Similar Documents

Publication Publication Date Title
JP6797880B2 (ja) マルチタイル、マルチチップ処理構成における同期
KR102190879B1 (ko) 프로세서 타일들 간의 동기화
JP7426979B2 (ja) ゲートウェイ上のホストプロキシ
KR102262483B1 (ko) 복수-타일 프로세싱 구성에서의 동기화
JP6698784B2 (ja) マルチスレッドプロセッサにおけるマルチスレッドの結合状態
CN111630505A (zh) 深度学习加速器系统及其方法
KR20190044566A (ko) 복수-타일 프로세싱 구성에서의 동기화
JP2023534242A (ja) ネットワーク上におけるホストとアクセラレータとの間の通信
US11841732B2 (en) Predictive clock control
US11726937B2 (en) Control of data sending from a multi-processor device
JP7357767B2 (ja) 複数のプロセッサを有するコンピュータにおける通信
US20230281144A1 (en) External Exchange Connectivity
JP7487334B2 (ja) 処理ノード動作の制御
US11449254B1 (en) Managed bulk memory
WO2023285113A1 (en) Synchronisation for a multi-tile processing unit
CN115698995A (zh) 硬件自动加载器
Isakovic et al. Georgiou, K., Eder, K., Druml, N., Tadros, L., Christensen, F., Wheatley, E., Farkas, B., Meyer, R., & Berekovic, M.(2017). A survey of hardware technologies for mixed-critical integration explored in the project EMC2. In Computer Safety, Reliability, and Security-SAFECOMP 2017 Workshops
Koch Strategies for Realistic and E cient Static Scheduling of Data Independent Algorithms onto Multiple Digital Signal Processors.
Isakovic et al. Artificial Intelligence and Lecture Notes in Bioinformatics); Vol. 10489 LNCS). Springer-Verlag Berlin. https://doi. org/10.1007/978-3-319-66284

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230310

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230310

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231226