年末・年始の休暇中に時間をかけていろいろと趣味的な調べ物をしていたのだが、その中のひとつCray Slingshotについて説明したい。
Cray Shastaは米エネルギー省のコンペで全勝
スーパーコンピューター=HPCは1 Exa FLOPSを達成する「エクサスケール Exascale」を目指す時代に突入しつつあるが、我々が知る限り米政府エネルギー省は2023年までに4台の先端HPCを国立研究所に設置する。うち1台はPre-Exascale最後の世代となるLowrence Berkeley国立研究所(LBNL)NERSCのPerlmutterで、残りの3台はExascaleとなりArgonne国立研究所(ANL)のAurora(2021年)・Oak Ridge国立研究所(ORNL)のFrontier・Lowrence Livermore国立研究所(LLNL)のEl Capitan(2023年)と続く。
- Perlmutterは主契約がCray・副契約がAMD・NVIDIAで、Cray ShastaをベースにAMD EpycベースのCPU・NVIDIA "Volta Next" GPUが搭載される。PerlmutterはCPU 2基のみのノードとCPU 2基+ GPU 4基のノードとがあり、CPU-GPU間は恐らくPCI Express・GPU-GPU間はNVLinkで接続されるが、いずれのノードもSlingshotはCPUのPCI Expressに直結される。
- Auroraは主契約がIntel・副契約がCrayで、Cray ShastaをベースにIntel "Saphire Rapids" CPU 2基 + Intel "Ponte Vecchio" GPU 6基で構成され、CPU-GPU間・GPU-GPU間はCXLで接続される。Slingshotがどう接続されるのかはまだ公表されていない。
- Frontierは主契約がCray・副契約がAMDで、Cray ShastaをベースにAMD EpycベースのCPU 2基 + AMD Radeon Instinct GPU 4基が搭載され、CPU-GPU間・GPU-GPU間はInfinity Fabricで接続される。興味深いことに、SlingshotはEpycではなくRadeon側に接続される。
- El Capitanは主契約Crayの単独で、CPUもGPUも構成は発表されていない。
以上に纏めてみたが、いくらCrayが官公庁系のHPCに強いとはいえ、Shastaが全勝であることは興味深い。
Shasta以前 - Cray XC Series
Cray Shastaが興味深い理由は、恐らく7年前の時点で誰もこのような未来を想定していなかったからである。
昨今のHPCでは構成部品のコモディティ化が進み、かつてSeymour Crayが手掛けたCray-1のような独自アーキテクチャーは消え去りつつあり、中国と日本を除けば概ね市場で入手可能な部品の組み合わせでシステムにLinuxにOpenMPIを組み合わせて構築している。これはBlueGene/Q以降の米国でも例外ではなく、現在Top500で1位を誇るIBM/ORNLのSummitだってIBM製POWER 9 UNIXサーバーAC922にNVIDIA Volta GPUをアクセラレーターとして組み合わせMellanox EDR InfiniBandで多数のノードを相互接続しているに過ぎない。ちなみにOSもRed Hat Enterprise Linuxである。
そんな中で、HPCベンダーが差別化するのは、独自のインターコネクト技術・カスタマイズしたOSやコンパイラー・最適化したアプリケーションやライブラリー組み合わせである。
そのような状況で、以前のCrayは、SeaStar(XT Series)・Gemini(XK Series)・Aries(XC Series)と呼ばれる独自インターコネクトを開発して実装してきたのだが、Crayはこのインターコネクト技術とエンジニアをまとめて2014年にIntelに売却している。余談だが、IntelがCrayから取得したチームと2011年にQLogicから買収したチームとを組み合わせて開発したのが、2014年11月に発表されたOmni-Pathである。言い換えれば2014年以降のCrayは他社と差別化するための独自インターコネクト技術を喪失したことになる。
前世代XC SeriesはどのようなHPCだったかというと、演算ノード単体で見ればそれほど特徴は無いように見える。各演算ノードはIntel Xeon CPUにアクセラレーターとしてNVIDIA Tesla GPUを組み合わせたハードウェアに、OSはSUSE Linux Enterprise LinuxをカスタマイズしたCray Linux Environmentといった具合で、PCクラスターに類似して見える。このXC Seriesを特徴付けているのが独自のAriesインターコネクトである。
そもそもHPCでインターコネクトやトポロジーが重要なのは、HPCではネットワーク経由の通信での遅延が問題となるからである。
一般人の使うコンピューターではネットワークの性能の指標を「Gbps」や「GB/sec」で表現される帯域で表現するケースが多いが、HPCのように10,000を超えるような多数のノードを接続したコンピューターでは、各ノードに滞りなく効率良くジョブやデータを分配するためにネットワークの遅延が重要になる。
現在のHPCで使われるハイエンドのインターコネクト技術はInfiniBandであるが、帯域自体は100~200 Gbps(EDR InfiniBand x8 linkの場合またはHDR InfiniBand x4 linkの場合)で、ハイエンドのEthernetでは200GbEや400GbEが既に規格化・製品化されているから、帯域としては性能に違いはない。それでもEthernetではなくInfiniBandが選ばれる理由は、通信プロトコルスタックのうちソフトウェアで処理される部分が小さく軽量で処理遅延が小さいからである。
ちなみに、InfiniBandのソフトウェアスタックをEthernetのハードウェアで使用するRCoEも存在するし、MellanoxのConnectXのようにInfiniBandとEthernetに両対応したハードウェアも存在する。また、高性能化に伴い柔軟性の高いEthernetがローエンド~ミッドレンジのHPCでは積極的に使用されておりTop500でも半数以上がEthernetである。InfiniBandや独自インターコネクトが目立つのはハイエンドに集中している。
AriesなどCrayのインターコネクトはInfiniBandよりさらにHPCに最適化したものになっている。
コモディティーなEthernetやInfiniBandでは各ノードにNIC=Network Interface Controllerが搭載され、そこからケーブルを伸ばしてスイッチで相互接続される。スイッチには接続できる容量に限界があることからHPCでは多段構成となるケースが多く、リーフスイッチ=スパインスイッチ間も相互接続されFat-treeのようなツリー構造を採ることで膨大なノードを相互接続する。Fat-treeではネットワーク構成はシンプルになるがノード数が増えるとスイッチの段数を増やす必要があるためホップ数が増加し、最悪のケースでの通信遅延が増えてしまう。ただ、EthernetやInfiniBandなどコモディティなデバイスを利用できる点は長所といえる。
ほかにHPCで一般的なインターコネクト技術のトポロジーとしてはTorusが挙げられる。富士通/理研の京や富岳は現在もTorusを採用しているが、Torusではスイッチを持たず各ノードがルーターを内蔵することで、ルービックキューブのようなメッシュ構造を構成する(ネットワークトポロジーという観点では3D Torusだけでなく5次元とか6次元とかもありえる)。Torusでは最悪のケースでも遅延を低く抑えられるが、ネットワーク構成が複雑になりコモディティーのデバイスをし使用できない。例えば富士通/理研の京のTofuインターコネクトでは6D Torusでは各ノードに14ポートルーターと4基のネットワークインターフェースが統合されたている。
通常のトポロジーを比べると、AriesインターコネクトはDragonflyトポロジーを採用する非常に独特なインターコネクト技術である。
Dragonflyはノードを複数レベルのグループに分割し各グループ内で完全結合する。Ariesの例では、4ノードでRank 0グループ・16 Rank 0グループでRank 1グループ・6 Rank 1グループでRank 2グループ・最大30のRank 2グループをRank 3で構成し、それぞれ同じグループ内で完全結合する。この構成であれば最悪のケースでもノード-Rank 1-Rank 2/3-Rank 1-ノードと3ホップで通信相手のノードに接続できるというメリットがある。
AriesはDragonflyトポロジーに最適化されておりRank 0~3の接続を可能とする専用のASICが用意されている。これはRank 0で4ノードをPCIeで相互接続・Rank 1でPCB基板によるバックプレーン接続・Rank 2で銅線ケーブルで接続・Rank 3で光ファイバーで接続する、ASICで4基のNICと48ポートのルーターが統合されている。通常のPCIeデバイスはホストとデバイスが1対1で接続されることが多いが、Ariesでは4基のPCIe NICが統合されておりホストとデバイスが4:1で接続される。
ちなみに、コモディティなInfiniBandでDragonflyに近いトポロジーを実現するDragonfly+トポロジーが存在する。
これはグループ内を完全接続でRank 0~Rank 2を構成する代わりにFat-treeで小規模なグループを多数つくり、そのFat-treeグループをルーターで完全結合するもので、通常のFat-treeよりはノード数が増えた場合でもスイッチの段数を抑えることができ、Ariesのような独自ASICも必要ない。
Slingshotとは何か
Shastaのハードウェアも、XC Seriesと同様に一見すると一般的なPCクラスターに見える。
Shastaは独自ブレードと液冷技術を使った独自ラック(Mountainと呼ばれる)または空冷を使った標準19インチラック(Riverと呼ばれる)を使用した高密度なサーバーで、Intel製Xeon・AMD製Epyc・Marvell/Cavium製ThunderX2(加えて富士通製A64FX)CPUとNVIDIA製Tesla・AMD製Radeon InstinctといったGPUを組み合わせたノードを相互接続したものである。
この「相互接続」の部分を担うのがSlingshotであるが、上述の通りインターコネクトを開発チームごとIntelに売却済のためAriesのような独自ASICを使わず、Mellanox ConnectX-5 NICとBroadcom Tomahawk 3 Ethernetスイッチ(CrayはRosettaと呼んでいる)というコモディティASICに独自のソフトウェアを組み合わせることで実現している。恐らく通信プロトコルのLayer 3以上は独自の実装が含まれるのだろうが、Layer 1~2は200Gb Ethernetと互換と思われ、通信速度も200Gbpsとされる。
独自ASICであるAriesと違い、SlingshotはDragonflyトポロジーに最適化されているとは言えないが、代わりにEthernet用ASICを用いることでEthernet互換性が特徴となっており、プロトコルを変換する装置なしにEthernetに接続できる。
ネットワークトポロジーについてはAries同様Dragonflyとなっている。
Broadcom Tomahawk 3/Rosettaの200Gbps 64ポートのルーターを使い、L1 16ポートをノードと接続する・L2 30ポート(15 x 2 link = QSFP-DD x 15)を同ラック内での最大16スイッチ間の相互接続・L3 18ポート(9 x 2 link = QSFP-DD x 9)を他のラックとの相互接続に使用する。つまりラック間のL3接続は9 x 16スイッチ=144グループとなり、最大36,864ノードを接続できる。
余談
ちなみに、先日Crayと富士通の提携し、富士通が富岳のために開発したA64FXプロセッサー搭載システムをCrayがグローバルで販売することが発表されたが、WikiChipによるとCray CS500のことのようである(Cray Shastaに搭載されるかどうか特に記載なし)。CS500はCrayが「Cluster Supercomputer」と呼称しているが、通常の19インチラックやInfiniBandといったコモディティなハードウェアを使用したPCクラスターシステムのようである。
富士通が発表した一般向けのA64FX搭載システムではインターコネクトがToFuDのFX1000とInfiniBandのFX700が用意されるようだが、CrayのCS500にはFX700が流用されそうな気配である。
以前から、私はこのblogにて富士通/理研はA64FXにTofuDを統合すべきでなくPCIe接続とすべきという趣旨のことを書いてきたが、それはA64FXはTofuDを統合したSoCのためTofuDを使わないFX700の場合でもPCIeはGen 3 16レーンしかない。これはCavium ThunderX2がGen 3 56レーン・Intel Xeon "Cascade Lake-SP"がGen 3 48レーン・AMD Epyc "Rome"がGen 4 128レーンと比較すると圧倒的に少ない。例えばMellanox ConnectX-5 InfiniBand NICを使用する場合、PCIe Gen 3またはGen 4 x16接続でA64FXを接続してしまうとPCIeレーンを全て使い切ってしまう懸念があったからである。
記事中のFX700を見たところ、2Uサイズのラックマウントシャシーに2 CPU/ブレードが4ブレードということで、2U筐体に4ノード(PCIe x16 x 2リンク)で各ノードにPCIe x16接続のInfiniBand NICを1基搭載しても、一応PCIe x16が1リンク余ることになりPCIeが枯渇してしまうことは無さそうだ。
※コメント投稿者のブログIDはブログ作成者のみに通知されます