(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-06
(45)【発行日】2024-09-17
(54)【発明の名称】2つの組み込みリングを有するネットワークコンピュータ
(51)【国際特許分類】
G06F 15/173 20060101AFI20240909BHJP
【FI】
G06F15/173 660C
G06F15/173 683
(21)【出願番号】P 2022507331
(86)(22)【出願日】2021-03-24
(86)【国際出願番号】 EP2021057558
(87)【国際公開番号】W WO2021191271
(87)【国際公開日】2021-09-30
【審査請求日】2022-02-04
(32)【優先日】2020-03-26
(33)【優先権主張国・地域又は機関】GB
(32)【優先日】2020-04-30
(33)【優先権主張国・地域又は機関】GB
【前置審査】
(73)【特許権者】
【識別番号】518371892
【氏名又は名称】グラフコアー リミテッド
【氏名又は名称原語表記】Graphcore Limited
【住所又は居所原語表記】11-19 Wine Street,Bristol,BS1 2PH,United Kingdom
(74)【代理人】
【識別番号】100169904
【氏名又は名称】村井 康司
(74)【代理人】
【識別番号】100221372
【氏名又は名称】岡崎 信治
(72)【発明者】
【氏名】サイモン ノウルズ
【審査官】三坂 敏夫
(56)【参考文献】
【文献】米国特許出願公開第2019/0045003(US,A1)
【文献】特開2004-118855(JP,A)
【文献】特開2006-215816(JP,A)
【文献】特開平06-290158(JP,A)
【文献】国際公開第2012/042658(WO,A1)
【文献】CARLO H. SEQUIN,Doubly twisted torus networks for VLSI processor arrays,ISCA'81:Proceedings of the 8th annual symposium on Computer Architecture,米国,ACM,1981年05月12日,Pages 471-480
(58)【調査した分野】(Int.Cl.,DB名)
G06F 15/16-15/177
(57)【特許請求の範囲】
【請求項1】
相互接続されたノードの複数の層が軸に沿って配置される構成で配置された複数の相互接続された処理ノードを含むコンピュータであって、
各層は、隣接する処理ノードの各ペア間の少なくともそれぞれの層内リンクにより非軸方向リング状に接続された少なくとも4つの処理ノードを含み、
各層内の前記少なくとも4つの処理ノードの各々は、層間リンクにより、1つ以上の隣接する層内の対応するノードに接続され、
前記コンピュータは、前記構成において、2つの組み込み1次元経路を提供し、前記2つの組み込み1次元経路の各々を周回してデータを送信するようにプログラムされ、各組み込み1次元経路は、前記2つの組み込み1次元経路がリンクを共有することなく同時に動作するように、前記コンピュータの全ての処理ノードを使用
し、
各層内の処理ノードの数よりも多い数の、前記軸に沿って配置された層を含む、
コンピュータ。
【請求項2】
相互接続されたノードの複数の層が軸に沿って配置される構成で配置された複数の相互接続された処理ノードを含むコンピュータであって、
各層は、隣接する処理ノードの各ペア間の少なくともそれぞれの層内リンクにより非軸方向リング状に接続された少なくとも4つの処理ノードを含み、
各層内の前記少なくとも4つの処理ノードの各々は、層間リンクにより、1つ以上の隣接する層内の対応するノードに接続され、
前記コンピュータは、前記構成において、2つの組み込み1次元経路を提供し、前記2つの組み込み1次元経路の各々を周回してデータを送信するようにプログラムされ、各組み込み1次元経路は、前記2つの組み込み1次元経路がリンクを共有することなく同時に動作するように、前記コンピュータの全ての処理ノードを使用し、
各層内のノードの数と同じ数の、前記軸に沿って配置された層を含む、
コンピュータ。
【請求項3】
前記構成は、前記複数の層の接続された対応するノードが少なくとも4つの軸方向リングを形成する環状構成である、請求項
1又は2に記載のコンピュータ。
【請求項4】
前記複数の層は、第1及び第2の末端層と、前記第1及び第2の末端層間の少なくとも1つの中間層とを含み、
前記第1の末端層内の各処理ノードは、前記第1の末端層内において、隣接するノードに加えて非隣接ノードに接続され、
前記第2の末端層内の各処理ノードは、前記第2の末端層内において、隣接するノードに加えて非隣接ノードに接続される、請求項
1又は2に記載のコンピュータ。
【請求項5】
各処理ノードは、それぞれの層内及び層間リンクにおいて、前記処理ノードの前記層内及び層間リンクの各々で同じ帯域幅にてデータを出力するように構成される、請求項1~
4のいずれか一項に記載のコンピュータ。
【請求項6】
前記複数の層の各層は、4つのノードを有する、請求項1~
5のいずれか一項に記載のコンピュータ。
【請求項7】
前記層内及び層間リンクは、前記処理ノード間の固定接続を含む、請求項1~
6のいずれか一項に記載のコンピュータ。
【請求項8】
前記層間及び層内リンクの少なくとも1つは、前記処理ノードの1つを複数の他の処理ノードの1つに選択的に接続するように動作可能なスイッチング回路を含む、請求項1~
6のいずれか一項に記載のコンピュータ。
【請求項9】
前記第1の末端層内の処理ノードの前記層間及び層内リンクの少なくとも1つは、前記処理ノードを前記第2の末端層内のその対応するノードから切り離し、それを前記第1の末端層内の非隣接ノードに接続するように動作可能なスイッチング回路を含む、請求項
4に記載のコンピュータ。
【請求項10】
前記第1の末端層内の処理ノードの前記層間リンクの少なくとも1つは、前記処理ノードを前記第1の末端層内の隣接するノードから切り離し、それを前記第2の末端層内の対応するノードに接続するように動作可能なスイッチング回路を含む、請求項
4に記載のコンピュータ。
【請求項11】
各組み込み1次元経路は、前記層間リンクの1つと前記層内リンクの1つとの交互のシーケンスを含む、請求項1~
10のいずれか一項に記載のコンピュータ。
【請求項12】
各1次元組み込み経路は、各1次元経路内の全ての層で同じである方向において各層内で辿られる処理ノードのシーケンスを含む、請求項1~
11のいずれか一項に記載のコンピュータ。
【請求項13】
各1次元組み込み経路は、各1次元経路内の連続的な層で異なる方向において各層内で辿られる処理ノードのシーケンスを含む、請求項1~
11のいずれか一項に記載のコンピュータ。
【請求項14】
非軸方向リング状に接続された4つの処理ノードをそれぞれ有する6つの層を含む、請求項
1又は請求項1に従属する請求項3~13のいずれか一項に記載のコンピュータ。
【請求項15】
非軸方向リング状に接続された8つの処理ノードをそれぞれ有する8つの層を含む、請求項
2又は請求項2に従属する請求項3~13のいずれか一項に記載のコンピュータ。
【請求項16】
リング状に接続された4つの処理ノードをそれぞれ有する8つの層を含む、請求項
1又は請求項1に従属する請求項3~13のいずれか一項に記載のコンピュータ。
【請求項17】
リング状に接続された4つの処理ノードをそれぞれ有する4つの層を含む、請求項
2又は請求項2に従属する請求項3~13のいずれか一項に記載のコンピュータ。
【請求項18】
各処理ノードは、前記処理ノードの対応する部分ベクトルをフラグメントに分割し、前記データを、連続的なフラグメントの形式で各組み込み1次元経路を周回して送信するようにプログラムされる、請求項1~
17のいずれか一項に記載のコンピュータ。
【請求項19】
各経路を論理リングの組として動作させるようにプログラムされ、前記連続的なフラグメントは、同時送信ステップで各論理リングを周回して送信される、請求項
18に記載のコンピュータ。
【請求項20】
各処理ノードは、2つのリンクの各々でそれぞれのフラグメントを同時に出力するように構成され、前記リンクの各々で出力される前記フラグメントは同じサイズを有する、請求項
18又は19に記載のコンピュータ。
【請求項21】
各処理ノードは、複数の入力フラグメントを複数の局所的に保存されたフラグメントと共に集約するように構成される、請求項
18~20のいずれか一項に記載のコンピュータ。
【請求項22】
各処理ノードは、その層内及び層間リンクの各々において、完全に集約されたフラグメントをAllreduceコレクティブのAllgatherフェーズで同時に送信するように構成される、請求項
21に記載のコンピュータ。
【請求項23】
軸に沿って配置された複数の層を有する構成で接続された複数の処理ノードを含むコンピュータで並列に実行されるプログラムの組を生成する方法であって、
各層は、隣接する処理ノードの各ペア間のそれぞれの層内リンクにより、非軸方向リング状に接続された少なくとも4つの処理ノードを含み、
各層内の処理ノードは、層間リンクにより、隣接する層内の対応するノードに接続され、
各層内の処理ノードの数よりも多い数の、前記軸に沿って配置された層を含み、前記方法は、
各プログラムについて、前記プログラムを実行する前記処理ノードからデータが送信されるデータ送信段階を定義するための少なくとも1つのデータ送信命令を生成するステップであって、前記データ送信命令は、前記データ送信段階で前記処理ノードからデータが送信される出力リンクを定義するリンク識別子を含む、ステップと、
前記構成によって提供される2つの組み込み1次元経路の各々を周回してデータを送信するために前記リンク識別子を決定するステップであって、各組み込み1次元経路は、前記組み込み1次元論理経路がリンクを共有することなく同時に動作するように、前記コンピュータの全ての処理ノードを使用する、ステップと、
を含む、方法。
【請求項24】
軸に沿って配置された複数の層を有する構成で接続された複数の処理ノードを含むコンピュータで並列に実行されるプログラムの組を生成する方法であって、
各層は、隣接する処理ノードの各ペア間のそれぞれの層内リンクにより、非軸方向リング状に接続された少なくとも4つの処理ノードを含み、
各層内の処理ノードは、層間リンクにより、隣接する層内の対応するノードに接続され、各層内のノードの数と同じ数の、前記軸に沿って配置された層を含み、前記方法は、
各プログラムについて、前記プログラムを実行する前記処理ノードからデータが送信されるデータ送信段階を定義するための少なくとも1つのデータ送信命令を生成するステップであって、前記データ送信命令は、前記データ送信段階で前記処理ノードからデータが送信される出力リンクを定義するリンク識別子を含む、ステップと、
前記構成によって提供される2つの組み込み1次元経路の各々を周回してデータを送信するために前記リンク識別子を決定するステップであって、各組み込み1次元経路は、前記組み込み1次元論理経路がリンクを共有することなく同時に動作するように、前記コンピュータの全ての処理ノードを使用する、ステップと、
を含む、方法。
【請求項25】
各プログラムは、前記データの送信ステップで使用されない層間及び層内リンクのいずれも無効化するための1つ以上の命令を含む、請求項
23又は24に記載の方法。
【請求項26】
各プログラムは、前記プログラムが実行される前記処理ノードのそれぞれの部分ベクトルをフラグメントに分割し、それぞれに定義されたリンクを介して連続的なフラグメントの形式で前記データを送信するための1つ以上の命令を含む、請求項
23~25のいずれかに記載の方法。
【請求項27】
軸に沿って配置された複数の層を有する構成で接続された複数の処理ノードを含むコンピュータでプログラムの組を並列に実行する方法であって、
各層は、隣接する処理ノードの各ペア間の層内リンクにより、非軸方向リング状に接続された少なくとも4つの処理ノードを含み、
各層内の処理ノードは、層間リンクにより、それぞれの隣接する層内のそれぞれの対応するノードに接続され、
各層内の処理ノードの数よりも多い数の、前記軸に沿って配置された層を含み、前記方法は、
各プログラムにおいて、前記プログラムを実行する前記処理ノードからデータが送信されるデータ送信段階を定義するための少なくとも1つのデータ送信命令を実行するステップであって、前記データ送信命令は、前記データ送信段階でデータが送信される出力リンクを定義するリンク識別子を含む、ステップを含み、
前記リンク識別子は、2つの組み込み1次元経路の各々を周回してデータを送信するために決定されており、各論理リングは、前記組み込み1次元経路がリンクを共有することなく同時に動作するように、前記コンピュータの全ての処理ノードを使用する、
方法。
【請求項28】
軸に沿って配置された複数の層を有する構成で接続された複数の処理ノードを含むコンピュータでプログラムの組を並列に実行する方法であって、
各層は、隣接する処理ノードの各ペア間の層内リンクにより、非軸方向リング状に接続された少なくとも4つの処理ノードを含み、
各層内の処理ノードは、層間リンクにより、それぞれの隣接する層内のそれぞれの対応するノードに接続され、各層内のノードの数と同じ数の、前記軸に沿って配置された層を含み、前記方法は、
各プログラムにおいて、前記プログラムを実行する前記処理ノードからデータが送信されるデータ送信段階を定義するための少なくとも1つのデータ送信命令を実行するステップであって、前記データ送信命令は、前記データ送信段階でデータが送信される出力リンクを定義するリンク識別子を含む、ステップを含み、
前記リンク識別子は、2つの組み込み1次元経路の各々を周回してデータを送信するために決定されており、各論理リングは、前記組み込み1次元経路がリンクを共有することなく同時に動作するように、前記コンピュータの全ての処理ノードを使用する、
方法。
【請求項29】
データ送信ステップで前記データを送信するステップを含み、処理ノードの各リンクは、各データ送信ステップにおいて、前記処理ノードの他のリンクと同じ帯域幅を有する、請求項
23~28のいずれか一項に記載の方法。
【請求項30】
データ送信ステップでデータを送信するようにプログラムされ、それにより、処理ノードの各リンクは、各データ送信ステップにおいて前記処理ノードの他のリンクと同じ帯域幅を有する、請求項1~
22のいずれか一項に記載のコンピュータ。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、特に、但し非限定的に、データ交換及び機械学習/人工知能用途を最適化するための、コンピュータ内で接続された処理ノード間のデータの交換に関する。
【背景技術】
【0002】
コレクティブとは、コンピュータ内でデータを処理する際に共通して使用されるルーチンである。これらは、複数の異なる処理間でのデータの共有及び処理を可能にするルーチンであり、処理は、同じ処理ノード又は異なる処理ノードで動作し得る。例えば、ある処理がデータ記憶装置からデータを読み出す場合、「ブロードキャスト」処理を用いてそのデータを他の処理と共有することができる。別の例は、特定の機能の結果を複数の処理で必要とする場合である。「集約(reduction)」は、複数の処理の各々からのデータ値に計算機能の適用を要求した結果である。「Gather」及び「scatter」コレクティブは、複数のデータ項目を扱う。特定のコレクティブは、機械学習処理用途で一層重要になっている。
【0003】
MPI(メッセージ通信インターフェース)は、多くの並列コンピューティングアーキテクチャに適用可能なメッセージ通信標準である。MPIは、機械学習に適用可能な多くのコレクティブを定義する。2つのそのようなコレクティブは、「Reduce」及び「Allreduce」と称される。reduce動作は、異なるソース処理からの複数のデータ値に作用する計算機能の結果が単一の受信処理で提供されることを可能にする。受信処理は、ソース処理の1つであり得ることに留意されたい。Allreduceコレクティブは、複数のソース処理からのデータ値を集約して、(集約(reduce)された結果の受信処理として動作する)全てのソース処理に結果を配信する。Reduce又はAllreduce動作のいずれかについて、集約機能は、最大値又は最小値をとる任意の所望の組み合わせ機能、例えば合算などであり得る。MPI標準によれば、Allreduceコレクティブは、全てのソース処理からのデータ値をreduceコレクティブで(例えば、複数の処理の1つにおいて)集約し、次いで各ソース処理に結果をブロードキャストすることにより実行され得る。
【0004】
図1は、ニューラルネットワークを訓練する分散アーキテクチャの概略ブロック図である。訓練データのソース100が提供される。これは、訓練データを、訓練されているニューラルネットワークモデルに適用可能な状態に維持することができるデータベース又は他の任意の種類のデータ記憶装置であり得る。ニューラルネットワークモデルによる処理自体が複数の処理ユニット110a、110b、110c等にわたり分散される。
図1には、3つのユニットのみを示しているが、任意の数の処理ユニットが使用され得ることが容易に認識されるであろう。各処理ユニット110a、110b、110cが訓練データソース100から訓練データのバッチを受信する。各処理ユニット100a、100b、100cは、モデルを定義するパラメータの組112a、112b、112cを保持する。訓練データの入力バッチは、計算機能114のパラメータの現在の組を用いて処理され、計算機能の結果を用いて、元のパラメータと、訓練データのバッチ及びパラメータの現在の組に対して計算機能を適用した結果としての新たなパラメータとの差違を表すいわゆるデルタを生成する。多くのニューラルネットワークにおいて、これらのパラメータは、「重み」と呼ばれ、そのため、デルタ値は、「デルタ重み」と称される。
図1において、重みは、112a、112b、112cと表示され、デルタ重みは、116a、116b、116cと表示される。実際には、重み及びデルタ重みは、処理ユニットからアクセス可能な適当な記憶装置に保存されることが認識されるであろう。重み及びデルタ重みをローカルメモリに保持することができる場合、訓練処理の効率が向上する。
【0005】
図1のアーキテクチャの目的は、3つの別々のモデルを訓練するのではなく、単一のモデルを分散的に訓練することである。従って、目的は、モデルパラメータ(又は重み)を各処理ユニット内の単一の共通の組に収束させることである。任意の特定の重みの組から始まり、各処理ユニットで受信された訓練データのバッチが同じでないと仮定すると、各処理ユニットの各計算機能により生成されるデルタ重みに変動があろうことは、明らかである。従って、必要とされるのは、バッチ化された訓練データの各反復後に複数の処理ユニットにわたりデルタ重みを組み合わせ且つ分散させる方法である。これは、
図1に概略的に示されており、組み合わせ関数118は、各処理ユニットからデルタ重みを受信しており、デルタ重みを集約する平均化関数等の数学関数を実行する。組み合わせ関数118の出力は、次いで、各処理ユニット内の結合回路120a、120b及び120cにそれぞれフィードバックされる。従って、新たな重みの組は、元の重みと、組み合わせ関数118からの組み合わされた出力との組み合わせとして生成され、新たな重み118a、118b、118cは、局所メモリに戻されて保存される。次いで、訓練データの次のバッチが各処理ユニットに供給され、処理が複数回反復される。処理ユニットの開始重みが同じである場合、各反復後に同じ新たな値に再びリセットされることが明らかである。上記は、Allreduce機能が特に有用な例であることが容易に分かるであろう。デルタ重みは、組み合わせ関数118aに供給され、そこで集約され、次いで集約された形式で各処理ユニットに戻されて、元の重みと組み合わされ得る。
【0006】
図1Aは、Allreduceコレクティブが6つの処理ノードN
0・・・N
5の直線的に接続されたトポロジとしてどのように実装され得るかを示す概略図である。これらの処理ノードは、
図1の処理ユニットに対応し得、組み合わせ関数がノード間で分散されるため、
図1のような共通の組み合わせノードがなくなる。処理ノードは、各処理ノードが「順方向」リンクL
F及び「逆方向」リンクL
Bによって隣接ノードに接続されるライン構成で接続されて示されている。この図に示すように、方向語句が示唆するように、順方向リンクは、処理ノードを
図1Aの左から右に接続し、逆方向リンクは、処理ノードを
図1Aの右から左に接続する。各処理ノードは、200として指定された処理能力及び202として指定された記憶能力を有する。処理能力及び記憶能力は、非常に多くの方法のいずれかで実装され得る。1つの特定の具体例において、処理ノードは、個々のタイルがその処理能力及び付随するメモリ機能を有する複数のタイルを含み得る。各処理ノードは、それがリンクL
F/L
Bを介して隣接するものに接続されることを可能にする1つ以上のリンクインターフェースも有する。
【0007】
Allreduceコレクティブの実装を理解するために、第1のノードN
0が、Δ0と表示された「部分」ベクトルを生成していると仮定する。「部分」とは、デルタ重みの配列、例えばベクトル又はテンソルを含むデータ構造であり得る。部分ベクトルは、各々が処理ノードに対する計算に対応する複数の部分の配列である。各「部分」は、デルタ重みの組であり得る。部分は、Allreduceコレクティブ内で直ちに交換可能であるように記憶能力202に保存される。単純な「ストリーミング」ラインAllreduceアルゴリズムにおいて、順方向リンクは、「集約(reduce)」に使用され、逆方向リンクは、「ブロードキャスト」に使用される。アルゴリズムは、一端の処理ノードN
0(
図1Aの左側ノード)において、その隣接するノードN
1にその部分Δ0を送信することから始まる。ノードにおいて、入力部分(この場合にはΔ0)は、処理ノードN
1における計算機能200により生成された対応する部分Δ1だけ集約される。次いで、この集約(
図1AではADD機能として示す)の結果は、処理ノードN
1から次の接続ノードN
2に送られる。以下に詳述するように、ADD機能は、部分の集約に使用され得る任意の組み合わせ機能で代替することができる。処理は、
図1AにN
5で示す最後の処理ノードにおいて部分の集約が完了するまで各処理ノードで行われる。この時点において、集約結果(Δの和)は、逆方向リンクL
Bを介して各処理ノードに返送される。集約結果は、各ノードで受信され、そのノードのメモリ機能に保存され、その後、次のノードにも送信される。このように、各処理ノードは、集約結果で終了する。
【0008】
図1Bは、集約及びブロードキャストフェーズのタイミング図を示す。処理ノードは、1つ前のノードから入力データを受信するまで、集約結果を次のノードに送信できないことに留意されたい。従って、順方向リンクの各出力送信のために、Δ
Rと表記する固有の待ち時間が存在する。
【0009】
更に、逆方向リンクは、完全に集約された結果が終点ノードで取得されるまでブロードキャストに使用されない。しかし、パイプライン効果に起因して部分ベクトルが大きい場合、そのノードがその部分のデータ項目の送信を終了するよりもかなり前に、各ノードでの部分ベクトルからの第1の部分の集約である結果の先頭データ項目が始点ノードに戻るため、全ての順方向及び逆方向リンクで動作が相当重なり合う可能性がある。
【0010】
若干の改良であるこのアルゴリズムの変更形態では、線の各終端の処理ノードは、集約が中央ノードで完了した状態で自らの部分の中央ノードに送信を開始することができる。その場合、結果は、ブロードキャストされて終点ノードに戻される。このシナリオでは、順方向及び逆方向リンクの両方において、例えばノードN
2で移動方向が反転されることに留意されたい。(順方向及び逆方向リンクの両方において最終ノードN
5を第1のノードN
0に接続することにより)線が閉じてリングとした場合、パイプラインアルゴリズムは、集約及びブロードキャストを同じ方向に直列化できるため、双方向リンクによって形成された2つの論理リングは、それぞれ独立して、データの半分に対して作用することができる。すなわち、各部分ベクトルは、二分割され、第1の半分ΔAは、順方向リンクで集約され(
図1Aのように)、N
5とN
0との間で接続レッグにブロードキャストされる。ベクトルΔBの他の半分は、逆方向リンクで集約され、次いで逆方向リンクの接続リングにブロードキャストされ、それにより、各ノードがAllreduce結果のコピーを受信する。
【0011】
図1Dは、順方向及び逆方向リンクに対応するタイミング図を示す。
【0012】
図1C及び1Dに示す1次元リングの原理は、円環(torus or troid)接続されたコンピュータのような2次元リングに拡張可能である。
【0013】
2次元でリングを用いる代替方式は、reduce-scatterコレクティブを用いて、Allreduceに続いてAllgatherコレクティブを実行することである。Nikhil Jain及びYogish Sabharwalによる論文「Optimal Bucket Algorithms for Large MPI Collecives on Torus Interconnects」(ICS’,June 2-4,Tsukuba)は、円環相互接続プロセッサ内の処理ノード間の双方向リンクを仮定した、Allgather、reduce-scatter及びAllreduceコレクティブのためのバケットに基づくアルゴリズムを提示している。このアプローチは、各ステップで扱われる複数のデータ値(フラグメント)が存在することに基づいて動作する。これらのフラグメントは、上述のように部分ベクトル内の部分であり得る。reduce-scatterコレクティブにおいて、各処理は、初期部分ベクトルから開始される。ここでの処理への言及は、処理ノードで実行される処理への言及であると仮定する。部分ベクトルは、複数の要素又はフラグメントに分割することができる。全ての処理の対応する要素が集約され、これらの集約要素は、次いで、複数の処理にわたり分散される。Allgatherコレクティブにおいて、他の処理が他の全ての処理から全ての要素を受信する。reduce-scatterコレクティブは、全ての部分を集約し、各集約を各ノードに保存する(
図2を参照されたい)。Allreduceコレクティブは、reduce-scatterコレクティブに続いて、Allgatherコレクティブ動作を実行することにより実行され得る。
【0014】
Jainの論文で議論されているように、円環相互接続は、分散メモリスーパーコンピュータのための魅力的な相互接続アーキテクチャである。上記の議論において、コレクティブを処理間通信に関連して説明してきた。分散スーパーコンピュータにおいて、処理ノードは、相互接続され、各処理ノードは、コレクティブに関する1つ以上の処理に対して応答的であり得る。円環相互接続は、N次元配列に構成された処理ノードを有する一種のメッシュ相互接続であり、各ノードは、最も近い隣接ノードに接続され、配列の両端縁の対応するノードも接続される。双方向通信リンクは、相互接続された処理ノード間に存在し得る。
【0015】
Jain及びSabharwalによる上述の論文で議論されたコレクティブを実行するアルゴリズムは、円環接続されたアーキテクチャに適用される。これにより、コレクティブは、異なる次元のリング内でベクトルの異なるフラグメントを同時に処理することができるため、処理帯域幅が効率的になる。しかし、本発明者は、この分野で肯定されている見解にもかかわらず、Jain及びSabharwalが提示した技術が対称又は非対称の円環に最適でないと判断した。対称な円環は、非軸方向リング内のノードの数が円環の軸方向リング内のノードの数に一致する円環であることが理解される。非対称の円環は、非軸方向リング内のノードの数が軸方向リング内のノードの数に一致しない円環であることが理解される。いずれの場合にも、軸方向リングの数が非軸方向リング内のノードの数に等しいことに留意されたい。
【発明の概要】
【発明が解決しようとする課題】
【0016】
本開示の目的は、特に、但し非限定的に、機械学習における処理機能に用いるための、Allreduce機能などのコレクティブを実行するための改良されたトポロジ及び方法を提示することである。
【課題を解決するための手段】
【0017】
本発明の実施形態がAllreduce機能等のコレクティブの観点から記述されるが、本明細書に記述する改良されたトポロジ及び方法は、より広い応用を有することが認識されるであろう。
【0018】
本発明の一態様によれば、軸に沿って配置された複数の層を有する構成で配置された複数の相互接続された処理ノードを含むコンピュータであって、各層は、隣接する処理ノードの各ペア間のそれぞれの層内リンクによりリング状に接続された少なくとも4つの処理ノードを含み、各層内の処理ノードは、層間リンクにより、1つ以上の隣接する層内の対応するノードに接続され、コンピュータは、2つの組み込み1次元経路を周回してデータを送信するようにプログラムされ、各論理経路は、組み込み1次元経路がリンクを共有することなく同時に動作するように、コンピュータの全ての処理ノードを使用する、コンピュータが提供される。
【0019】
本発明の別の態様によれば、相互接続されたノードの複数の層が軸に沿って配置される構成で配置された複数の相互接続された処理ノードを含むコンピュータであって、各層は、隣接する処理ノードの各ペア間の少なくともそれぞれの層内リンクにより、非軸方向リング状に接続された少なくとも4つの処理ノードを含み、各層内の少なくとも4つの処理ノードの各々は、それぞれの層間リンクにより、1つ以上の隣接する層内のそれぞれの対応するノードに接続され、コンピュータは、その構成において、2つの組み込み1次元経路を提供し、且つ2つの組み込み1次元経路の各々を周回してデータを送信するようにプログラムされ、各組み込み1次元経路は、2つの組み込み1次元経路がリンクを共有することなく同時に動作するように、コンピュータの全ての処理ノードを使用する、コンピュータが提供される。
【0020】
本発明の複数の実施形態は、単独で又は組み合わせて以下の1つ以上を提供することができる。
複数の層は、第1及び第2の末端層と、第1及び第2の末端層間の少なくとも1つの中間層とを含み、第1の末端層の各処理ノードは、第2の末端層内の処理ノードの対応する1つに接続される、コンピュータ。
構成は、複数の層の対応するノードが少なくとも4つの軸方向リングを形成する円環構成である、請求項1に記載のコンピュータ。
複数の層は、第1及び第2の末端層と、第1及び第2の末端層間の少なくとも1つの中間層とを含み、第1の末端層内の各処理ノードは、第1の末端層内において、隣接するノードに加えて非隣接ノードに接続され、第2の末端層内の各処理ノードは、第2の末端層内において、隣接するノードに加えて非隣接ノードに接続される、コンピュータ。
各処理ノードは、それぞれの層内及び層間リンクにおいて、処理ノードの層内及び層間リンクの各々で同じ帯域幅にてデータを出力するように構成される、コンピュータ。
複数の層の各層は、正確に4つのノードを有する、コンピュータ。
各層内の処理ノードの数よりも多い数の、軸に沿って配置された層を含むコンピュータ。
各層内のノードの数と同じ数の、軸に沿って配置された層を含むコンピュータ。
層内及び層間リンクは、処理ノード間の固定接続を含む、コンピュータ。
層間及び層内リンクの少なくとも1つは、処理ノードの1つを複数の他の処理ノードの1つに選択的に接続するように動作可能なスイッチング回路を含む、コンピュータ。
第1の末端層内の処理ノードの層間及び層内リンクの少なくとも1つは、処理ノードを第2の末端層内のその対応するノードから切り離し、それを第1の末端層内の非隣接ノードに接続するように動作可能なスイッチング回路を含む、コンピュータ。
第1の末端層内の処理ノードの層間リンクの少なくとも1つは、処理ノードを第1の末端層内の隣接するノードから切り離し、それを第2の末端層内の対応するノードに接続するように動作可能なスイッチング回路を含む、コンピュータ。
各組み込み1次元経路は、層間リンクの1つと層内リンクの1つとの交互のシーケンスを含む、コンピュータ。
各1次元経路内の全ての層で同じである送信方向において各層でデータを送信するようにプログラムされるコンピュータ。
各1次元組み込み経路は、各1次元経路内の全ての層で同じである各層内で辿られる処理ノードのシーケンスを含む、いずれかの先行する請求項に記載のコンピュータ。
各1次元経路を周回する連続的な送信層で異なる送信方向において各層でデータを送信するようにプログラムされるコンピュータ。
各1次元組み込み経路は、各1次元経路内の連続的な層で異なる方向において各層内で辿られる処理ノードのシーケンスを含む、請求項1~12のいずれか一項に記載のコンピュータ。
リング状に接続された4つの処理ノードをそれぞれ有する6つの層を含むコンピュータ。
リング状に接続された8つの処理ノードをそれぞれ有する8つの層を含むコンピュータ。
リング状に接続された4つの処理ノードをそれぞれ有する8つの層を含むコンピュータ。
リング状に接続された4つの処理ノードをそれぞれ有する4つの層を含むコンピュータ。
処理ノードが接続される各層のリングは、非軸方向である、コンピュータ。
各処理ノードは、処理ノードの対応する部分ベクトルをフラグメントに分割し、データを、連続的なフラグメントの形式で各1次元経路を周回して送信するようにプログラムされる、コンピュータ。
各経路を論理リングの組として動作させるようにプログラムされ、連続的なフラグメントは、同時送信ステップで各論理リングを周回して送信される、コンピュータ。
処理ノードの各リンクは、各データの送信ステップにおいて他のリンクと同じ帯域幅を有し、すなわち対称な帯域幅を有する、コンピュータ。
各処理ノードは、2つのリンクの各々でそれぞれのフラグメントを同時に出力するように構成され、リンクの各々で出力されるフラグメントは、同じ又はほぼ同じサイズを有する、コンピュータ。
各処理ノードは、複数の入力フラグメントを複数の局所的に保存されたフラグメントと共に集約するように構成される、コンピュータ。
各処理ノードは、その層内及び層間リンクの各々において、完全に集約されたフラグメントをAllreduceコレクティブのAllgatherフェーズで同時に送信するように構成される、コンピュータ。
【0021】
本発明の別の態様は、軸に沿って配置された複数の層を有する構成で接続された複数の処理ノードを含むコンピュータで並列に実行されるプログラムの組を生成する方法であって、各層は、隣接する処理ノードの各ペア間のそれぞれの層内リンクにより、非軸方向リング状に接続された少なくとも4つの処理ノードを含み、各層内の処理ノードは、層間リンクにより、隣接する層内の対応するノードに接続され、本方法は、
各プログラムについて、そのプログラムを実行する処理ノードからデータが送信されるデータ送信段階を定義するための少なくとも1つのデータ送信命令を生成するステップであって、データ送信命令は、そのデータ送信段階でその処理ノードからデータが送信される出力リンクを定義するリンク識別子を含む、ステップと、
構成によって提供される2つの組み込み1次元経路の各々を周回してデータを送信するためにリンク識別子を決定するステップであって、各経路は、組み込み1次元論理経路がリンクを共有することなく同時に動作するように、コンピュータの全ての処理ノードを使用する、ステップと、
を含む、方法を提供する。
【0022】
方法のいくつかの実施形態において、各プログラムは、データの送信ステップで使用されないその層間及び層内リンクのいずれも無効化するための1つ以上の命令を含む。
【0023】
方法のいくつかの実施形態において、各プログラムは、そのプログラムが実行される処理ノードのそれぞれの部分ベクトルをフラグメントに分割し、それぞれに定義されたリンクを介して連続的なフラグメントの形式でデータを送信するための1つ以上の命令を含む。
【0024】
いくつかの実施形態において、処理ノードの各リンクは、各データ送信ステップにおいて、その処理ノードの他のリンクと同じ帯域幅を有し、すなわち、構成は、対称な帯域幅にて動作する。
【0025】
本発明の更なる態様は、軸に沿って配置された複数の層を有する構成で接続された複数の処理ノードを含むコンピュータでプログラムの組を並列に実行する方法であって、各層は、隣接する処理ノードの各ペア間の層内リンクにより、リング状に接続された少なくとも4つの処理ノードを含み、各層内の処理ノードは、層間リンクにより、隣接する層内の対応するノードに接続され、本方法は、
各プログラムにおいて、そのプログラムを実行する処理ノードからデータが送信されるデータ送信段階を定義するための少なくとも1つのデータ送信命令を実行するステップであって、データ送信命令は、そのデータ送信段階でデータが送信される出力リンクを定義するリンク識別子を含む、ステップを含み、
リンク識別子は、2つの組み込み1次元経路の各々を周回してデータを送信するために決定されており、各論理リングは、組み込み1次元経路がリンクを共有することなく同時に動作するように、コンピュータの全ての処理ノードを使用する、方法を提供する。
【0026】
ここで、本発明のよりよい理解のため、本発明がどのように実施されるかを示すために添付の図面を例として参照する。
【図面の簡単な説明】
【0027】
【
図1】ニューラルネットの分散訓練を示す概略図である。
【
図1A】簡単な「ストリーミング」ラインAllreduceアルゴリズムを実行する一連の処理ノードを示す概略図である。
【
図1B】「ストリーミング」ラインAllreduceアルゴリズムのタイミング図である。
【
図1C】リングに接続された終点ノードを有するラインの概略図である。
【
図1D】リングAllreduceアルゴリズムのタイミング図である。
【
図2】reduce-scatterステップに続いて、AllgatherステップによるAllreduce関数の実行を示す概略図である。
【
図3A】バケットに基づくAllreduceアルゴリズムを示す。
【
図3B】バケットに基づくAllreduceアルゴリズムを示す。
【
図4A】2つの同型リングが組み込まれた4×6トロイド形式のコンピュータネットワークを示す。
【
図4B】一実施形態による同型組み込みリングを示す。
【
図4C】一実施形態による同型組み込みリングを示す。
【
図4D】
図4Aのコンピュータネットワークの2つの組み込みリングの一方を示す3次元図である。
【
図4E】
図4Aのコンピュータネットワークの2つの組み込みリングのもう一方を示す3D概略図である。
【
図5A】円環状に接続された4×4コンピュータネットワークに組み込み可能な2つの同型組み込みリングを示す。
【
図5B】円環状に接続された4×4コンピュータネットワークに組み込み可能な2つの同型組み込みリングを示す。
【
図6A】円環状に接続された4×8コンピュータネットワークの2つの同型組み込みリングの各々を示す。
【
図6B】円環状に接続された4×8コンピュータネットワークの2つの同型組み込みリングを示す。
【
図7A】円環状に接続された8×8コンピュータネットワークに組み込み可能な2つの同型リングの各々を示す。
【
図7B】円環状に接続された8×8コンピュータネットワークに組み込み可能な2つの同型リングを示す。
【
図8A】4×6斜め閉角柱形式のコンピュータネットワークを示す。
【
図8B】
図8Aのネットワークに組み込まれた2つの同型リングを示す。
【
図8C】
図8Aのネットワークに組み込まれた2つの同型リングを示す。
【
図8D】
図8Aのコンピュータネットワークの2つの組み込みリングの一方を示す3次元図である。
【発明を実施するための形態】
【0028】
本発明の態様は、学習機械の動作負荷のアクセラレータとして機能するように設計されたマルチタイルプロセッサに関連して開発された。アクセラレータは、複数の相互接続された処理ノードを含む。各処理ノードは、単一のマルチタイルチップ、複数のチップのパッケージ又は複数のパッケージのラックであり得る。本明細書における目的は、決定論的(反復可能)な計算で極めて効率的な機械を考案することである。処理ノードは、コレクティブ、特に、但し非限定的にブロードキャスト(broadcast)及びAllreduceを効率的に実行可能にするように相互接続される。しかし、本明細書に記述する本発明の実施形態は、他の用途を有し得ることに留意されたい。
【0029】
分散処理を用いてニューラルネットワークを訓練する際の1つの特定の応用は、モデルを更新することである。これに関連して、分散処理は、チップ若しくはパッケージ又はラック等の異なる物理的実体である複数の処理ノードを利用する。すなわち、処理ノード間のデータの送信では、物理リンクを介してメッセージを交換する必要がある。
【0030】
機械学習専用のトポロジを開発する際の課題は、高性能コンピューティング(HPC)ネットワークの一般的な分野の課題と異なる。HPCネットワークは、通常、オンデマンド非同期全対全個人向け通信に重点が置かれ、そのため、動的ルーティング及び帯域幅の過剰供給が通常行われる。帯域幅の提供よりも待ち時間を短縮する目的のため、余剰帯域幅がHPCネットワークに供給される場合がある。動作中の通信リンクの過剰な供給は、電力を浪費して計算性能に影響する恐れがある。今日計算に用いられる最も一般的な種類のリンクは、データ送信に使用されるか否かに関わらず、動作中に電力を消費する。
【0031】
本発明者は、特にML作業負荷に適合され、ML作業負荷の以下の属性に対処する機械トポロジを開発した。本実施形態は、m×nコンピュータネットワークに2つのリングが組み込まれる異なる構造を提供し、ここで、mは、ネットワークの複数の層の各々におけるノードの数であり、nは、層の数であり、各リングは、ネットワーク内の全てのノードを辿る。
【0032】
ML動作負荷において、チップ間通信は、現在、ブロードキャスト及びAllreduceコレクティブが主流となっている。ブロードキャストコレクティブは、scatterコレクティブに続いてAllgatherコレクティブにより実行可能であり、Allreduceコレクティブは、reduce-scatterコレクティブに続いてAllgatherコレクティブにより実行可能である。この前提において、チップ間という用語は、外部通信リンクを介して接続された処理ノード間のあらゆる通信を指す。上述のように、これらの処理ノードは、チップ、パッケージ又はラックであり得る。
【0033】
通信リンクは、印刷回路基板のチップ間又は異なる印刷回路基板のチップ間であり得ることに留意されたい。
【0034】
動作負荷は、個々の知能処理装置(IPU)機械内で全対全通信が基本的にチップ間であるようにコンパイル可能である。
【0035】
Allreduceコレクティブは、上述の通りであり、
図2に示されている。
図2は、開始状態S1における4つのノードの各々の部分値の組、すなわち「部分」ベクトルP
0、P
1、P
2、P
3を示す。これに関連して、ノードとは、複数の処理ノードのネットワークにおける処理ノードである。各ノードN
0、N
1、N
2、N
3は、対応してマークされた(大きいひし形格子、幅広の下向き斜め縞、大きい正方形格子、幅広の上向き斜め縞)4つの「対応する」部分を有することに留意されたい。すなわち、各部分は、例えば、P
0(n)のベクトルにおけるノードnが、P
0(n+1)のベクトルにおけるノードn+1と同じ位置を有するように、自らの部分ベクトルに位置を有する。添え字(n)は、部分が存在するノードを示すために使用され、従って、P
0(0)は、ノードN0の部分P
0である。reduce-scatterパスにおいて、対応する部分は、集約され、集約は、複数ノードの1つに施される。例えば、部分P
0(0)、P
0(1)、P
0(2)、P
0(3)は、(r
0に)集約されてノードN
0に置かれる。同様に、部分P
1(0)、P
1(1)、P
1(2)及びP
1(3)は、(r
1に)集約されてノードN
1に置かれる。以下同様であり、中間状態S2において、各ノードは、複数の集約r
0、r
1、r
2及びr
3の1つを施される。説明したように、集約は、任意の組み合わせ関数f(Pi0)であり得、これは、独立演算子(例えば、最大化)又は関連演算子=P1(0)*P1(1)*P1(2)*P1(3)を含み得る。
【0036】
次いで、Allgatherパスにおいて、各集約が全てのノードに施されて状態S3を起動させ、ここで、各ノードに4つの集約の全てが施される。S1において、「対応する」部分、例えばP0(0)、P0(1)、P0(2)及びP0(3)が全て異なり得るのに対し、状態S3では、各集約、例えばr0が全てのノードに対して同じであるが、但しri=f{(Pi(0)、Pi(1)、Pi(2)及びPi(3))}であることに留意されたい。機械学習において、部分P0、P1、P2、P3の組は、ベクトルである。部分(例えば、更新された重み)のベクトルが訓練中にモデルの各パスに生成される。状態S3における各ノード上のひし形格子、下向き斜め縞、正方形格子、上向き斜め縞によって示される集約r0、r1、r2、r3は、完全集約ベクトル、すなわち「結果」又は完全に集約された部分のベクトルである。機械学習に関連して、各部分は、モデルのパラメータに対する更新デルタであり得る。代替的に、各部分は、(本明細書で詳述しない構成での)更新されたパラメータであり得る。
【0037】
図3A及び3Bは、6つの「仮想」リングを仮定するreduce-scatter/Allgatherのための、バケットに基づくアルゴリズムを示す。これらは、本明細書において「論理」リングとも称される。
図3Aは、複数の仮想リングにおける部分の集約を示す概略図である。各部分は、6つのフラグメントに分割される。
図3Aにおいて、大文字R、Y、G、B、P、Lは、それぞれハッチングされたひし形格子、上向き斜め縞、正方形格子、水平縞、下向き斜め縞、垂直縞で示す各ノードで保存された部分の異なるフラグメントを指す。文字は、互いに集約対象であり、フラグメントの「仮想」又は「論理」リングを定義する対応するフラグメントを示す。
図3Aを参照すると、各々の部分P
0、P
1、P
2、P
3及びP4における「R」フラグメントは、結果ベクトル(RΣ)の単一のフラグメントに集約される。Y、G、B、P及びLフラグメントも同様である。
【0038】
図3Bは、Allreduce処理の各ステップにおけるデータ交換及び計算を示す、横軸に時間を取ったタイミング図を示す。
図3A及びBにおいて、Allreduce処理は、reduce-scatterフェーズに続いてAllgatherフェーズにより実現される。
【0039】
図3Bにおいて、各フラグメントを以下のように異なるハッチングで示している:R - ひし形格子、Y - 上向き斜め縞、G - 正方形格子、B - 水平縞、P - 下向き斜め縞、L - 縦縞。
【0040】
図3A及び3Bにおける表記は、以下の通りである。部分は、それぞれP
0、P
1、P
2、P
3、P
4、P
5として示される。処理の開始時点において、各部分は、各ノードN
0、N
1、N
2、N
3、N
4、N
5に保存される。各フラグメントは、各々が集約されると考えられる仮想リング内でのフラグメントの定義及び位置に応じて表示される。例えば、RA
0は、ノードN
0-N
1-N
2-N
3-N
4-N
0によって形成された仮想リングの先頭フラグメントであるため、部分P
0のRフラグメントを示す。
【0041】
RA
1は、その仮想リングで2番目の位置にあるノードN
1のRフラグメントを示す。YA
0は、ノードN
1のYフラグメントを示す。添え字「0」は、その仮想リングの先頭フラグメントであることを示し、Y-リングは、N
1-N
2-N
3-N
4-N
0-N
1である。特に、Aの添え字が仮想リングを反映し、物理ノード(又は部分)に対応しないことに留意されたい。
図3Aは、順方向リンクの仮想リングのみを示すことに留意されたい。
図3Bは、逆方向リンクで均等な処理が行われることを示し、フラグメントをBで示す。
【0042】
ステップ1において、各仮想リングの先頭フラグメント(A0)がそのノードから次の隣接ノードに移送され、そのノードで対応するフラグメントにより集約される。すなわち、RA
0は、N0からN1まで移動して、R(A0+A1)に集約される。再び、ここでは記号「+」は、任意の組み合わせ関数の省略形として使用される。同じステップで各仮想リングの10のA0フラグメントが同時に送信されることに留意されたい。すなわち、N
1とN
2との間のリンクは、YA
0の送信に使用され、N
2とN
3との間のリンクは、GA
0の送信に使用され、以下同様である。次のステップでは、対応する集約フラグメントが順方向リンクを介して次の隣接ノードに送信される。例えば、R(A0+A1)がN
1からN
2に送信され、Y(A0+A1)がN
2からN
3に送信される。明快さのため、
図3Aで15の全てのフラグメントに番号が付与されておらず、全ての送信に番号が付与されていないことに留意されたい。フラグメント及び数の完全な組を
図3Bに示す。本処理は、5ステップで実行される。5ステップ後、各ノードで全てのフラグメントが集約される。第5のステップの終了時点において、集約は、そのフラグメントの対応する各リングの最後のノードで行われる。例えば、R集約は、ノードN
5で行われる。
【0043】
Allgatherフェーズの開始は、各仮想リングの最後から最初のノードへの送信により始まる。従って、Rフラグメントの最後の集約は、Allgatherフェーズの第1のステップの準備ができているノードN5で終了する。Yフラグメントの最後の集約は、対応してノードN0で終了する。Allgatherフェーズの次のステップでは、集約されたフラグメントは、自らの次の隣接ノードに再び送信される。従って、完全に集約されたRフラグメントは、現在、N2にも存在し、完全に集約されたYフラグメントは、現在、N3にも存在し、以下同様である。このように、各ノードは、Allgatherフェーズの終了時点において、部分ベクトルの全てのフラグメントR、Y、G、B、P、Lが完全に集約された状態となって終了する。
【0044】
アルゴリズムの実行が効果的であるのは、集約に必要な計算をパイプライン待ち時間に覆い隠すことができる場合である。本発明者は、Allreduceの実行のためにコンピュータ内に適当なリングを形成する際、リングの循環がリング内の各ノードを1回のみ辿る場合に最も効率的であることを認識している。
【0045】
従って、双方向リンク(
図1A)を有するラインによって形成された自然のリングは、最も効率的なリングではない。
【0046】
ここで、Allreduceコレクティブを実行するために、処理ノード間で部分及び結果の効率的な受け渡しを可能にする処理ノードの相互接続されたネットワークの改良されたトポロジについて記述する。
【0047】
図4Aは、複数の処理ノードが接続されたトポロジを示す概略図である。
図4Aでは、円環状に接続される24の処理ノードがあるが、本原理は、いくつかが以下の記述で例示される異なる数のノードに拡張され得ることが理解されるであろう。更に、本明細書に記述する原理は、後述するように、斜め閉正方形角柱の異なるトポロジに拡張できる。これらの原理を採用する他の構成も想到される。各処理ノードは、参照が容易であるように番号でラベル付けされる。以下の記述において、ノードを指す際に添え字Nが付される。例えば、N0は、左上の処理ノードを表す。処理ノードは、後述する方法でリンクによって接続される。各リンクは、双方向、すなわちリンクを介して両方向にデータを伝送することができる。リンクは、この双方向機能が同時に行われる(すなわち、リンクが両方向に同時に利用され得る)ように動作することができる。物理的相互接続性及び論理的接続性があることに留意されたい。論理的接続性は、2つの連続的な組み込みリングの形成に用いられる。本明細書において、組み込みリングは、「経路」とも称されることに留意されたい。これらの用語は、交換可能であるが、用語「仮想リング」は、複数のフラグメントが各組み込みリング又は経路上の仮想リングで動作し得る、既に上で概説したシナリオのために準備されることを認識することが重要である。いくつかの実施形態において、各組み込みリング(又は経路)は、2つの方向に動作することができる。最初に、物理的接続性について記述する。処理ノードは、円環構成で接続される。y軸に沿った処理ノードは、単一の双方向リンクによってその隣接するノードにそれぞれ接続される。明快さのため、
図4Aで全てのリンクがラベル付けされるわけではない。しかし、ノードN0からのリンクを示す。リンクL04は、処理ノードN0をy軸方向においてその下にある処理ノードN4に結合する。「下」とは、コンピュータネットワークの特定の向きを意味することに留意されたい。実際には、コンピュータネットワークでは、向きが示唆されず、いかなる向きの記述も、図面を参照する際の説明のために過ぎない。ネットワークは、y軸に沿って編成された複数の層を含む。各層には、各々の双方向リンクによってリング状に接続された4つの処理ノードがある。各層のリングは、y軸に沿って延びないため、非軸方向と考えられる。例えば、処理ノードN0は、その層内で自らを一方の隣接するノードに接続するリンクL01を有する。ノードN0は、層内で自らを他方の隣接するノードN3に接続するリンクL03も有する。円環構造は、「末端」層内の対応する処理ノードが双方向リンクにより接続されることで完成する。用語「末端」は、図面の参照に便利であることに留意されたい。実際、トロイドにおいて、隣接する層の対応する接続されたノードは、連続的な軸方向リングを形成する。例えば、第1の末端層内のノードN0は、リンクL020により第2の末端層内のノードN20に接続される。図面において、末端層は、中間層(ノードN4~N7、N8~N11、N12~N15及びN16~N19により形成されたものと(これらが対応する処理ノードと共に接続されることにより)区別されることに留意されたい。実際には、これらは、連続的なリングの一部であろう。
【0048】
図4Aに示すリンクは、異なる方法で実装され得る。いくつかの特定の例について以下に述べる。しかし、各リンクが単一の物理リンク構造であり、その物理リンク構造を介して双方向通信経路を提供できることに特に留意されたい。代替的に、リンク構造の各方向は、別々の物理的実装であり得る。リンクが固定リンクであり得ることにも留意されたい。すなわち、リンクは、2つの処理ノードを互いに接続する場合、ネットワークが構築及び設定された後に所定位置に固定される。代替的に、リンクは、ネットワークが構築された後、その接続性を変更可能にするスイッチング回路に装着されるか又はそれを含み得る。
【0049】
本明細書に記述する新たな原理によれば、
図4Aに示す物理的接続性により、2つの論理的組み込みリング(各リングは双方向性を有してもよい)をネットワークに組み込むことが可能になる。
図4Bは、そのような第1のリングR1を示す。明快さのため、
図4Bで全てのノードに参照番号を付すわけではないが、これらは、
図4Aに示すものと同じノードであることが認識されるであろう。
図4BのリングR1は、データが送信され得る1つの連続的な経路内の以下のノードを通して延びる。リングR1は、ノードN0→N1→N5→N6→N10→N11→N15→N12→N16→N17→N21→N22→N2→N3→N7→N4→N8→N9→N13→N14→N18→N19→N23→N20→N0に戻るノードのシーケンスを通して延びる。リングR2は、N0→N3→N23→N22→N18→N17→N13→N12→N8→N11→N7→N6→N2→N1→N21→N20→N16→N19→N15→N14→N10→N9→N5→N4で各ノードを順次辿ってN0に戻るように延びる。
【0050】
各リングは、全て24の処理ノードを含む。同じリングで使用されるリンクがないため、2つのリングが同時に使用できることにも留意されたい。従って、処理ノード間のいずれの単独の経路でも衝突がない。これは、本明細書では、リング間で共有された接続がないと言われる。これらのリングは、それぞれ同じ長さを有し、同じ数の処理ノードを通過するため、同型リングと称される。
【0051】
図4Dは、リングR1を示す3次元概略図を示す。他方のリングもy軸の周りで90度回転すれば同じであることに留意されたい。先に述べたAllreduceリングアルゴリズムをプログラムが実行する際の、
図4Dに示す構造の使用を考える。各ノードは、
【数1】
サイズのフラグメントを出力し、ここで、nは、ノードの数であり、vは、特定のフェーズでreduce-scatter又はAllgatherされるデータ構造のサイズである。開始時点において、vは、部分ベクトルのサイズである。フラグメントの数は、リングを周回する各ステップの実行前のリング内のノードの数に等しい。ほとんどの実施形態では、各フラグメントは、同じサイズを有する。しかし、例えば、ベクトルの成分の数が均一に割り切れない、フラグメントのサイズが僅かに異なるシナリオもあり得る。その場合、これらは、ほぼ同じサイズ、すなわち除数に応じて1又は2つの成分が異なり得る。上述のJainの論文に記載される構造と比較して、各リングが全てのノードを通過し、全てのリンクが常に使用されることに留意されたい。各処理ノードは、自らのデータを4つのリンクで同時に出力することができ、全帯域幅を利用するように構成され得る。すなわち、ノードの帯域幅をBとすると、各リンクでの帯域幅はB/4である。これは、各処理ノードで対称に帯域幅が利用されている。
図4Dに示すネットワークの第1の末端層のリンクL01に沿ってN0からN1まで送信されるデータを考える。矢印は、このデータ送信方向を示す。既に述べたように、リングが逆方向にもデータを送信する可能性がある。しかし、矢印が示す順方向を考慮すると、経路内の次のステップは、ノードN1からノードN5である。従って、経路は、N0からN1への層内リンク及びN1からN5への層間リンクを使用する。経路内の次のステップは、(N5からN6への)層内リンクに続いて、N6からN10への層間リンクである。従って、経路は、層内リンク及び層間リンクの連続的なシーケンスを含む。各層において、ノードは、2つの方向、すなわち時計回り及び反時計回りのいずれか一方で辿られ得る。
図4Dにおいて、矢印は、ノードが第1の末端層で時計回りに辿られることを示す。同様に、ノードは、次の中間層及び全ての後続層において時計回りに辿られる。
【0052】
しかし、上述の通りである必要はないことに留意されたい。すなわち、特定の層を周回してノードを辿る方向は、各層で同じであるか又は各層で異なり得る。いくつかの実施形態では、各層で同じであり得、他の実施形態では、異なる層、例えば連続的な層で異なり得る。リンクが同時に双方向性を有する場合、各経路を周回するいずれの方向にもデータが送信され得ることに留意されたい。以下の記載は、各組み込み経路内でノードを辿るシーケンスを説明するためにデータ送信の一方向を説明する。例えば、
図4Eの実施形態において、リング内でデータがノードN0からノードN1、更にノードN5に送信され、次いで中間層内の層内リンクに沿って反時計回りに送信される。データは、次いで、層間リンクを通過して次の中間層に、次いで時計回りの方向に次の中間層内の層内リンクに通過する。
【0053】
対称な帯域幅の利用が対称及び非対称の両方の構造で実現できることが明らかになるであろう。ここで、構成の対称性は、構成の層の数に対する層内の処理ノードの相対的な数として定義される。
【0054】
図5A及び5Bは、4×4ネットワーク構成の2つの組み込み経路を示す。
図5A及び5Bのノード番号は、
図4Aのネットワーク構成(上から4行)から取られている。これは、例示的に過ぎない。
図4Aの4×6構成のノードを切り離して再接続することにより、4×4構成を提供することが可能であり、この場合、ノードは、一致するであろう。しかし、そのノードで4×4構成を構築することも可能である。
図5A及び5Bのノード間の相互接続は、それぞれ構成の2つの組み込み経路を示す。
【0055】
図6A及び6Bは、4×8ネットワーク構成の2つの組み込み経路を示す。ノード番号は、
図4Aの番号と同じであり、一番下の2行にノードN24~N31が追加される。既に述べたように、
図4Aの4×6構成を拡張して、
図6A及び6Bに示すような4×8構成を構築できるが、そのネットワークノードから4×8構成を構築することも可能である。
【0056】
図6A及び6Bの各々のノード間相互接続は、構成の2つの組み込み経路の各々を表す。
【0057】
図7A及び7Bを参照すると、8×8ネットワーク構成の2つの組み込み経路が示されている。
図7A及び7Bのノードは、
図6Aのノードに従ってラベル付けされ、構成に更なる4列のノードN32~N63が追加される。ノードを追加することにより、
図6Aの構成を拡張して、
図7A及び7Bに示す構成を構築することが可能である。代替的に、
図7A及び7Bの構成をその元のノードから構築することもできる。
【0058】
図7A及び7Bの各々のノード間相互接続は、それぞれネットワーク構成の2つの組み込みリングを示す。
【0059】
図8Aは、4×6斜め正方形角柱状に配置された24の処理ノードのコンピュータネットワークの別の実施形態を示す。コンピュータネットワークは、
図4Aに示す円環構造と類似している。しかし、いくつかの差違がある。ノードは、再び、軸に沿って配置された連続的な層内に配置され、各層は、処理ノード間の各接続によってリング状に接続された4つのノードを含む。リンクの構造及び挙動は、
図4Aに関して上で述べた通りであり得る。対応する処理ノードは、各々の層リンクにより、次の層内でその隣接するノードにそれぞれ接続される。
図8Aでは、
図4Aのノードと区別するためにノードがN’1、N’2等と表記されることに留意されたい。しかし、実際には、処理ノードは、
図4Aのノードと同種の処理ノードであり得る。
【0060】
図8Aのネットワークの構造は、末端層のノードが接続される方法が
図4Aの構造と異なる。
図4Aにおいて、末端層の各ノードは、他方の末端層内で自らに対応するノードに接続される。これが円環を形成する。対照的に、
図8Aでは、第1の末端層内の斜めに対向する処理ノードが互いに接続される。すなわち、ノードN’0は、ノードN’2に接続され、N’1は、ノードN’3に接続される。
【0061】
対応して、他方の末端層内において、ノードN’20は、ノードN’22に接続され、ノードN’21は、ノードN’23に接続される。
【0062】
図8Aのネットワークは、
図8B及び8Cにそれぞれ示すように、2つの同型リングR’1及びR’2を組み込むように構成され得る。リングR’1は、ノードN’0→N’1→N’5→N’4→N’8→N’9→N’13→N’12→N’16→N’17→N’21→N’20→N’23→N’19→N’18→N’14→N’15→N’11→N’10→N’6→N’7→N’3→N’2を通過してN’0に戻る。
【0063】
リングR’2は、ノードN’0からN’3→N’1→N’2→N’6→N’5→N’9→N’10→N’14→N’13→N’17→N’18→N’22→N’21→N’23→N’20→N’16→N’19→N’15→N’12→N’8→N’11→N’7→N’4→N’0まで延びる。
【0064】
ここでもまた、明快さのため、
図8B及び8Cで全てのリンクがラベル付けされるわけではないことに留意されたい。
【0065】
図4Aに示すネットワークと同様に、各処理ノードの帯域幅は、対称的である。例えば、処理ノードN’3を考える。これは、4つのリンクを有し、その各々での帯域幅はB/4であり、ここで、Bは、総ノード帯域幅である。
【0066】
図8Dは、リングR’
1を示す概略3次元図である。他方のリングもy軸の周りで90度回転すれば同じである。ここでもまた、リンクの矢印は、リングに沿った方向へのデータ送信の方向を示す。データは、逆方向に送信され得る。この場合、データは、N’0からノードN’1に、斜め接続リンクを介してノードN’3に、次いで層内で時計回りにノードN’4に送信される。データは、次いで、層間リンクを介して次の層に、層間リンク内に延びて次の層に接続する前に、その層に沿って層内リンクを反時計回りに送信される。従って、ここでもまた、経路は、連続的な層内及び層間リンクを含む。次の層において、データが時計回りの方向に送信される状態を示す。しかし、
図4Aのリングと同様に、層を周回してノードを辿り得る方向が変わり得ることに留意されたい。例えば、これは、全ての層で同じであるか又は異なる層で異なり得る。
【0067】
追加的な処理ノードを追加することにより、コンピュータの能力を拡張することができる。これらは、y軸方向の追加的な層又はx軸方向の各層の追加ノードの形式で追加され得る。ここで、x軸という用語を用いるが、これは、先に述べた「非軸方向」リングを指すことに留意されたい。これを行うため、処理ノードの相互接続性を変更することができる。例えば、
図4Aを参照して、一番下の末端層に追加された更なる層の追加を考える。ノードN20、N21、N22、N23からのリンクは、切り離され、追加的な層内の対応する処理ノードにそれぞれ接続される。これらのノードは、
図4Aに示していないが、原理は、明らかであろう。追加ノードは、次いで、最上末端層N0、N1,N2、N3に接続し直すリンクを有することになる。追加的な処理ノード間の層内リンクは、更なる処理ノードをリングにおいて接続する。構成の残りの部分の接続性は、同じままであることに留意されたい。
【0068】
円環構成は、斜め閉正方形角柱として再接続することができる。これを実現するために、末端層を互いに接続するリンクが切り離される。
図4Aを参照すると、リンクL020が切り離され、代わりにノードN0及びN2間に接続される。ノードN23及びN3間に延びるリンクが切り離され、代わりにノードN3がノードN1に接続される。同様に、下部末端層において、ノードN23がノードN21に接続され、ノードN22がノードN20に接続される。
【0069】
従って、これらのリンクを再接続することにより、斜め閉正方形角柱を円環から生成することができる。
【0070】
本明細書に記述するいくつかの実施形態において、コンピュータネットワークは、4×n構造を有し、ここで、4は、各層内の処理ノードの数を表し、nは、層の数を表す。それぞれの場合、2つの同型データ送信リングが組み込まれ、各々がネットワークの全ての処理ノードを通過する。
【0071】
各処理ノードで対称的な帯域幅の利用がある。すなわち、処理ノードからの各リンクは、その処理ノードからの他のリンクと同じ帯域幅を利用する。
【0072】
2つの組み込み同型リングは、全ての帯域幅を使用し、2つのリングでリンクが共有されることはない。すなわち、各リングは、リンクの共有がないため、完全なリンク帯域幅を有することが可能になる。
【0073】
上述のように、一実施形態において、コンピュータネットワークは、固定された構成に有線接続される。他の実施形態では、リンクは、切り替え可能である。すなわち、各リンクは、スイッチに取り付けられるか、又はリンクの一部を形成するスイッチを有し得る。特に、最上層及び最下層におけるリンクが切り替え可能である場合、これらを用いてネットワークを拡張するか、又は円環若しくは斜め角柱を切り替えることができる。導線を手動で切り離すことにより、固定的に有線接続された構造間で切り替えることができることに留意されたい。スイッチを用いる場合、構成間で自動的に切り替えることができる。
【0074】
斜め閉正方形角柱構成には、処理ノード間で必要とされる最大ケーブル長を円環よりも短くできるという利点がある。同じ層内の処理ノード間を閉じるために必要なケーブル長(
図8Aの最上及び最下端層は、円環構成のように最上末端層内のノードを最下端層内のノードに接続するのに必要な「巻き付け」リンクよりも短いことが直ちに分かる。しかしながら、折り畳み構造を採用することにより、トロイド内のケーブル長を短縮することができる。
【0075】
しかし、円環構成には、任意の2つの処理ノード間でのデータ交換の最悪ケースの経路が斜め閉角柱の場合よりも短いという利点がある。
【0076】
ネットワークは、異なる方法で誤り耐性化(fault tolerant)できることに留意されたい。例えば、処理ノード間で各リンク経路に2つの物理リンクを設けることができる。
【0077】
別の例では、各物理リンクは、リンクがそのリンクの1つのレーン上の不具合に自動的に適合するように、(例えば、PCI Expressの場合に)複数のレーンを有し得る。リンクは、より緩慢に動作する場合があるが、それでも動作し続ける。
【0078】
各々が構造の全ての処理ノードを通過する2つのリングを構造内に組み込むことにより、(例えば、破損リンクに起因して)1つのリングが完全に故障しても他の処理リングが依然として動作位置にあり得ることに留意されたい。Allreduce等の機械学習アルゴリズムを実装することに関連して、1つのリングの動作により、ある量のデータをAllreduce動作に依然として提供することができる。一部の訓練状況では、これは、故障しているリングが修理できるまでアルゴリズムの進行中の動作を支援するのに十分である。
【0079】
各ノードは、処理を実行又は機能を計算することができる。各ノードは、単一のプロセッサとして実装することができる。しかし、各ノードが単一のチップ又はチップのパッケージとして実装され、各チップが複数のプロセッサを含む可能性がより高い。個々のノードの各々を具現化する多くの異なる方法がある。一例において、ノードは、出願番号英国特許出願公開第1816891.4号明細書、英国特許出願公開第1816892.2号明細書、英国特許出願公開第1717299.0号明細書の英国出願に記載される種類の知能処理ユニットで構成され得、その内容は、参照により本明細書に援用される。しかし、本明細書に記載する技術は、ノードを構成する任意の種類のプロセッサに使用され得る。本明細書で概説するのは、機械学習モデルで有用な特定の交換パターンを実行するために効率的にデータを交換する方法である。更に、リンクは、任意の適当な方法で具現化できる。リンクが双方向性であることが有利であり、同時に両方向で動作可能であることが好適であるが、これは、必須条件ではない。通信リンクの1つの特定のカテゴリは、リンクを介して搬送されるデータの量又はそのデータの搬送に費やした時間から独立した電力要件を有するSERDESリンクである。SERDESは、シリアライザ/デシリアライザの略語であり、そのようなリンクは、公知である。このようなリンクの導線を介して信号を送信するには、信号を生成するために導線に電力を印加して電圧を変化させる必要がある。SERDESリンクには、電力を導線に印加し続けて特定の電圧レベルに維持して、その電圧レベルの変動(0~印加電圧レベルの変動)により信号が搬送されるようにするという特徴がある。従って、使用されるか否かに関わらず、SERDESリンクの帯域幅容量を維持するのに固定電力が存在する。SERDESリンクは、各終端において、リンク層装置を銅線等の物理リンクに接続する回路により実装される。この回路は、PHY(物理層)と称される場合がある。PCIe(Peripheral Component Interconnect Express)は、高速コンピュータを接続するためのインターフェース基準である。
【0080】
リンクが使用されない間、電力を殆ど消費しないように動的に無効化することが可能である。しかし、機械学習アプリケーションの起動時間及び非決定論的性質では、一般にプログラム実行中の動的起動が問題となる。その結果、本発明者は、チップ間リンクの電力消費がいずれの特定の構成でも本質的に一定であり、従って、最良の最適化が、チップ間トラフィックを可能な限りIPU動作と同期状態に維持することにより、物理リンクの利用率を最大化することであるとの事実を利用することがより良好であり得ると判断した。
【0081】
SERDES PHYは、全二重(すなわち、毎秒16GビットのPHYは、各方向に同時に毎秒16Gビットをサポートする)であるため、全リンクの帯域幅の利用は、バランスが取れた双方向トラフィックを示唆する。更に、直接チップ間通信の使用は、スイッチ経由等の間接通信と比較して重要な利点があることに留意されたい。直接チップ間通信は、スイッチ方式の通信よりも電力効率がより高い。
【0082】
考慮すべき別の要因として、ノード間の帯域幅の要件がある。1つの目的は、ノード間通信を、分散機械学習の各ノードで実行される計算で覆い隠すのに十分な帯域幅を得ることである。
【0083】
機械学習用マシンアーキテクチャを最適化する場合、必要とされる帯域幅の尺度としてAllreduceコレクティブを用いることができる。Allreduceコレクティブの一例を、モデル平均化のためのパラメータ更新の扱いに関して上記に示した。他の複数の例では、勾配平均化及び基準の計算が含まれる。
【0084】
一例として、残差学習ネットワークのAllreduce要件を考慮することができる。残差学習ネットワークは、深い畳み込みニューラルネットワークのクラスである。深い畳み込みのニューラルネットワークにおいて、複数の層を用いて各層内の各々の特徴を学習する。残差学習において、特徴の代わりに残差が学習され得る。ResNetとして知られる特定の残差学習ネットワークは、ネットワークの異なる層間の直接接続を実行する。このような残差ネットワークの訓練は、ある状況では従来の深い畳み込みニューラルネットワークよりも容易であり得ることが示されている。
【0085】
ResNet50は、50層の残差ネットワークである。ResNet50は、25Mの重みを有するため、単位置浮動小数点形式F16の全ての重み勾配のAllreduceが50メガバイトの部分を含む。帯域幅の要件を例示するために、1つの完全なAllreduceが完全なバッチ毎に必要であると仮定する。これは、勾配のAllreduceである可能性が高い(しかし、必須ではない)。これを実現するには、各ノードは、完全な集約毎に100メガビットを出力しなければならない。ResNet50は、訓練用画像毎に250ギガフロップスを必要とする。処理ノード毎のサブバッチサイズが16画像である場合、各プロセッサは、各Allreduceコレクティブに対して400ギガフロップスを実行する。プロセッサが毎秒100テラフロップを達成した場合、Allreduce通信との計算の並列性を維持するには、全てのリンク間で毎秒約25ギガビットが必要とされる。プロセッサ毎のサブバッチが8画像である場合、より小さいバッチを処理するのに要する毎秒テラフロップ数が少なくて済むため、部分的に緩和されて、必要な帯域幅は、名目的に2倍になる。
【0086】
各々がサイズmメガバイト(集約サイズに等しい)である部分から始まるp個のプロセッサ間でのAllreduceコレクティブの実行は、リンクを介して少なくとも2m・(p-1)メガバイトの送信を必要とする。従って、各プロセッサが、同時送信可能なlリンクを有する場合、漸近的最短集約時間は、2m・(p-1)・(p-1)/(p・l)である。
【0087】
上述の概念及び技術は、いくつかの異なる例で用いることができる。
【0088】
一例において、コンピュータとして使用するために固定構成が提供される。本例において、複数の処理ノードは、上述の各種の実施形態で記述及び図示したように相互接続される。このような構成では、本質的な層内及び層間リンクのみが処理ノード間に配置される。
【0089】
固定構成は、その構成の処理ノードの厳密な数で構築され得る。代替的に、それは、より大きい構造から分割することにより提供され得る。すなわち、積層に配置された処理ノードの組が提供され得る。各積層内の処理ノードは、隣接する積層内の対応する処理ノードへの層間リンク及び層内の隣接する処理ノード間の層内リンクを有し得る。
【0090】
所望の数の積層の固定構成は、積層の元の組の指定された積層内の各層間リンクを切り離し、それを、指定された積層内の隣接する処理ノードに接続して層内リンクを提供することにより得られる。このように、積層の元の組の指定された積層に構造の第1及び第2の末端層の1つを形成することができる。複数の層の元の組は、このように複数の固定構造に分割できることに留意されたい。
【0091】
層間及び層内リンクは、上述のように適当なバス又は導線により提供される物理リンクである。1つの具体例において、各処理ノードから、自らを別の処理ノードに接続する複数の導線の組が延びる。これは、例えば、1つ以上の物理的導線が接続された1つ以上のポートを有する各処理ノードの1つ以上のインターフェースにより行うことができる。
【0092】
別の具体例において、リンクは、オンボード導線により構成され得る。例えば、単一の基板がチップのグループ、例えば4つのチップを支持することができる。各チップは、他のチップに接続可能なポートとのインターフェースを有する。所定の方法に従って基板に導線をはんだ付けすることにより、チップ間の接続を形成することができる。本明細書に記述する概念及び技術は、印刷回路基板のチップ間に予めはんだ付けされるリンクの利用率を最大化するため、特にこの状況で有用であることに留意されたい。
【0093】
いくつかの実施形態に関して記載した概念及び技術は、切り替え不可能なリンクの最適使用を可能にするため、特に有用であろう。ノード間の固定された切り替え不可能なリンクを使用して、本明細書に記載したように処理ノードを接続することにより構成を構築することができる。いくつかの具体例において、このようなリンクを使用しない場合、処理ノード間に更なるリンクを提供する必要がない。
【0094】
この構成を用いるために、並列プログラムの組が生成される。並列プログラムの組は、ノードレベルプログラム、すなわち構成内の特定の処理ノードに対して作用するように指定されたプログラムを含む。特定の構成に作用する並列プログラムの組は、コンパイラにより生成することができる。特定のデータの各データ送信ステップで使用するリンクを正しく定義するノードレベルプログラムを生成することは、コンパイラが担当する。これらのプログラムは、リンク識別子を用いて、送信ステージで使用されるリンクを識別する、そのデータ送信ステージでデータ送信を実行するための1つ以上の命令を含む。例えば、処理ノードは、いずれの1つの時点でも4つ(リンクが同時に双方向性である場合にはその2倍)の有効リンクを有し得る。リンク識別子は、その送信ステージのためのデータ項目に対して正しいリンクを選択させる。各処理ノードがその隣接するノードの動作について不可知であり得、すなわち、交換動作は、交換ステージ毎に予めコンパイルされることに留意されたい。
【0095】
リンクを切り替える必要もなく、すなわちデータ項目を送信時点で動的にルーティングするか又はリンクの接続性を変える必要がないことにも留意されたい。しかし、スイッチは、上述のようにいくつかの実施形態で提供することができる。
【0096】
上述のように、本明細書に記述するコンピュータネットワークの構成は、計算の並列性を強化するものである。これに関連して、並列性は、並列に実行する、例えば上述のように人工知能モデルを分散的に訓練することを意図されたノードレベルプログラムを構成の処理ノードにロードすることにより実現される。しかし、これは、本明細書に記載した構成により可能にされる並列性の1つの応用例に過ぎないことが容易に認識されるであろう。並列性を実現する1つのスキームは、「バルク同期並列(bulk synchronous parallel)」(BSP)計算として知られる。BSPプロトコルによれば、各処理ノードは、計算フェーズ及び計算フェーズに続いて交換フェーズを実行する。計算フェーズ実行中、各処理ノードは、その計算タスクを局所的に実行するが、計算の結果を他の処理ノードと交換しない。交換フェーズにおいて、各処理ノードは、先行計算フェーズからの計算結果を構成の他の処理ノードと交換することが許容される。この構成で交換フェーズが完了するまで、新たな計算フェーズは開始されない。この形式のBSPプロトコルにおいて、バリア同期化は、計算フェーズから交換フェーズに遷移するか若しくは交換フェーズから計算フェーズに遷移する分岐点又はその両方で行われる。
【0097】
本実施形態において、交換フェーズが開始された場合、各処理ノードは、コンパイラにより、その交換フェーズのために決定されたリンク識別子を用いて、その隣接するノードとデータを交換するための命令を実行する。交換フェーズの性質は、上記したMPIメッセージ受け渡し標準を用いて決定することができる。例えば、Allreduceコレクティブ等のコレクティブをライブラリから取り出すことができる。このように、コンパイラは、部分ベクトルが送信される(または、部分ベクトルの各フラグメントが送信される)リンクを制御する予めコンパイルされたノードレベルプログラムを有する。
【0098】
他の同期化プロトコルを用い得ることは、容易に明らかになるであろう。
【0099】
特定の実施形態について記載してきたが、開示する技術の他の応用及び変型形態は、本明細書の開示をもって当業者に明らかになるであろう。本開示の範囲は、記載した実施形態ではなく、添付の請求項のみによって限定される。