Blue Gene
Blue Gene（ブルージーン）はIBMのスーパーコンピュータプロジェクトである。
Blue Geneプロジェクトは1999年に発表され、第1世代はBlue Gene/L、第2世代はBlue Gene/P、第3世代はBlue Gene/Qである。Blue GeneはPowerPC系のプロセッサを多数使用したHPCクラスタで、TOP500やGreen500、HPCCアワードなどのスーパーコンピュータ性能ランキングの上位を占めている。
IBMでは1997年にチェスの世界王者ガルリ・カスパロフに勝利した「Deep Blueの子孫」と称している
Blue Gene プロジェクトの最初のコンピュータである「Blue Gene/L」は、1億ドルの費用をかけてピーク性能で360TFLOPSを目指し、ローレンス・リバモア国立研究所と共同で開発された。この目標は日本製の旧地球シミュレータの実効性能35.86TFLOPSの10倍の速さである。2010年までにピーク性能1PFLOPSの「Blue Gene/P」、2010～2012年には10PFLOPSの「Blue Gene/Q」の開発を目指した。
Blue Gene登場前のスーパーコンピュータでは、専用のベクトルプロセッサやx86、POWERなどの高性能なプロセッサを数十個から最高で数千個搭載するものが中心であった。Blue Geneプロジェクトでは、一つ一つの性能は高くないプロセッサを最高で数十万個以上搭載し、並列実行するプログラム数を格段に増やすことで高い性能を実現する設計を採用した。
メッセージパッシング、同期など並列アプリケーション特有のプログラミング手法を支援する独自のコンピュータネットワークを搭載している。
発熱の低いプロセッサの採用や周辺回路の1チップ化によって、設置面積、消費電力、冷却に必要な空調設備などに要するコストを低く抑えている。
Blue Geneは、システムとしての最小構成となるラックを必要に応じて複数接続することでユーザが求める性能を提供する。そのラックは、1プロセスを実行する最小単位となる計算ノードを複数個搭載しており、各ノードはコンピュータネットワークによって接続されている。
2004年11月に発表された第24回Top500リストにおいて、スーパーコンピュータ向けベンチマークLINPACKにおけるBlue Gene/Lの実効性能は70.72TFLOPSとなり、地球シミュレータを抜いて当時の世界最速のスーパーコンピュータとなった。当時はまだ搭載CPUコアが32,768個であり、ベータ版という位置づけであった。
その半年後の2005年6月、Blue Gene/LはCPU数を65,536個に倍増して136.80TFLOPSを達成し、さらに2005年10月には131,072個のCPUで280TFLOPSを達成したと発表した。
2007年11月の第30回Top500では、CPUコアをさらに増やし212,992個で478TFLOPSを記録し、当初の計画目標である360TFLOPSを達成した。
日本国内では産業技術総合研究所生命情報工学研究センターが4ラックを導入し、2005年6月に発表されたTop500で第8位を記録した。その後ニイウス株式会社で1ラック、2006年には高エネルギー加速器研究機構で10ラックが稼働を開始した。
2009年9月17日、米国家技術賞を受賞した。
計算ノードの構成をシンプルにすることで、はんだ不良などによるハードウェア故障を減らし、また高密度実装を実現した。計算ノード単体の性能は、PCにくらべ低くまた搭載メモリ量も少ないため、一般的な環境に比べるとプロセスに対する制約が大きい。
メモリ以外の要素はSoCとして統合し、一つの集積回路に収めたことから、実質的には二つの部品のみで構成される。省電力プロセッサを採用した理由は高密度実装を実現するためである。一般的なPCやサーバ、また旧来のスーパーコンピュータが採用する高性能プロセッサの多くは、消費電力とそれに伴う発熱も大きいため、そのようなCPUを筐体に多数詰め込むと排熱が非常に困難になる。かといって筐体内の密度を下げるとケーブルや接続コネクタなどの構成部品が増え、それが信頼性の低下を招く。
Blue Gene/Lでは消費電力あたりの性能が高い組み込み用途向けプロセッサを導入することでその問題を解決した。この設計方針により、Blue Gene/Lはその性能に対し電力消費や設置面積において非常にコンパクトなシステムとなった。Blue Gene/Lの消費電力あたりの性能は112.24MFLOPS/Wであり、地球シミュレータの3.01MFLOPS/Wと比べると、Blue Gene/Lは37倍も電力効率の良いシステムである。
Blue Gene/Lのラック内には、計算ノードを2つ搭載する計算カードが512枚搭載され、2048CPUのマシンとして構成されている。それに加え、ファイルシステムへのアクセスを担当するI/Oノードが1ラック当り2から64枚搭載されている。I/Oノードはギガビット・イーサネットでラック外部のファイルサーバと接続し、集団通信ネットワークを介して計算ノードと通信を行う。ラックに搭載するI/Oノードの数は、実行するアプリケーションの性質によって調整する。
Blue Gene/L内のノード接続には、その用途に応じて異なる5種類のネットワークが使われている。
三次元トーラスネットワークは低遅延・広帯域を要求されるノード間の一対一通信に使われ、Blue Geneの通信ネットワークの中でも最も重要な位置を占める。
三次元トーラスネットワークは隣接ノード同士の接続から構成されるため、通信相手によってはその通信データが複数ノードを経由して到達することになる。
よって、トーラスネットワークの帯域を効率的に用いるには、三次元トーラスにおける通信を出来るだけ局所的に抑えるようなアルゴリズムを適用する必要がある。また、通信局所性をBlue Geneの物理的な接続配置にあわせることも重要である。
各計算ノード間の接続は1方向あたり1.4Gbps、遅延は100ナノ秒となる。各ノードは近隣の6ノードとそれぞれ双方向に接続しており、1ノードの合計入出力帯域は16.8Gbpsに達する。ノード数が65,536の場合トーラスは64x32x32となり、最大ホップ数は32+16+16=64ホップ、最大遅延は6.4マイクロ秒となる。
集団通信ネットワークは、ある1ノードと複数ノードとの一対多通信やファイル転送に用いられるもので、各ノードと他の1～3ノードとの相互接続による2分木ネットワークによって構成される。発信元から末端までの遅延は最大5マイクロ秒、帯域は2.8Gbpsである。
現在のスーパーコンピュータ向け並列アプリケーションでは、各ノードの処理結果を集約する操作に多く時間を費やしている。その性質を踏まえ、Blue Geneの集団通信ネットワークには最大・最小値、合計等の整数演算やビット列論理演算による集約機能を備えている。Blue Geneの集団通信ネットワークの遅延は他の一般的なスーパーコンピュータにくらべ1/10から1/100であり、Blue Gene/Lの最大構成時においても効率的な集約処理を実現している。
あるノードから複数のノードにデータをブロードキャストするのに集合通信ネットワークが用いられる。三次元トーラスネットワークでもブロードキャストは可能だが、ネットワークトポロジの面から見て集合通信ネットワークのほうがずっと効率的である。
並列アプリケーションでは、各プロセスの同期がよく行われる。プロセッサ数とノード数におけるスケーラビリティを確保するためには、同期待ちに伴う遅延を改良する必要がある。グローバルバリアネットワークには、複数ノードの同期をハードウェアによる支援によって高速に行う機構が備えられている。
このバリアネットワークは低遅延という特徴を持ち、65,536ノードの同期に必要な時間は1.5マイクロ秒未満である。
計算ノードの初期化や監視・管理・デバッグのためにイーサネットとJTAG等のインタフェースを変換回路を介して接続するネットワークが用意されている。このネットワークを用いて管理用コンピュータから遠隔操作を行う。
I/Oノードが持つギガビット・イーサネットが接続されるネットワークで、I/Oノード同士の通信と外部のファイルサーバへのアクセスを担う。
計算ノードでは、"Compute Node Kernel"(CNK)と呼ばれる独自のOSカーネルが動作している。マルチユーザをサポートしない、同時実行スレッド数はCPUの数と同じ2つのみ、ページング機能を持たずアドレス空間は512MiBに固定するなど、機能を絞ることでOSのオーバーヘッドを小さくしている。
CNKはPOSIXに近いインタフェースを持ち、アプリケーション開発者に対してGNU GlibcとファイルI/O用システムコールを提供している。I/O処理はCNKが行うのではなく、CNKの要求を受けたI/Oノードが代わりに実行する。上で述べたCNKの制限からforkやexecなどのマルチプロセスはサポートしない。
I/Oノードでは、I/Oノード独自のデバイスをサポートしたLinuxカーネルベースのカーネルを採用している。
I/Oノード上では"Control and I/O Daemon"(CIOD)が動作しており、計算ノードのファイルアクセスやジョブの制御を行っている。計算ノードでのジョブ実行は、I/Oノードがプログラムを計算ノードにロードし、実行開始指令をCNKに出すことで開始される。ジョブ実行中、I/OノードはCNKから送られてきたI/O処理依頼を実行する。
計算ノードとI/Oノードの管理を担うサービスノードでは、"Core Management and Control System"(CMCS)が動作している。CMCSの役割は、各ノードの電源投入や温度やファンなどの監視と異常検知時の緊急シャットダウン、ノードの初期化や再設定などである。
Blue Gene/Pは、2007年6月26日にIBMが発表した、次世代のBlue Geneスーパーコンピュータ。継続的に1 PFLOPSで稼動し、最大3 PFLOPSまで構成可能な余地を持って設計された。更に、小型で低電力の多数のチップを5つの特別なネットワークで結合する事で、他のスーパーコンピュータより少なくとも7倍のエネルギー効率を実現した。それぞれのBlue Gene/Pチップには、4個のPowerPC 450 850MHzプロセッサが搭載されている。1 PFLOPSのBlue Gene/Pは、高速の光ネットワークを備えた72ラックに294,912個のプロセッサで構成される。216ラックに884,736個のプロセッサまで拡張する事で、3 PFLOPS性能に達する。標準のBlue Gene/P構成では、1ラックに4,096個のプロセッサを格納する。
2007年11月12日、最初のシステムのJUGENEが、ドイツのユーリッヒ研究センターで、65,536プロセッサを搭載し167 TFLOPSで稼動した。
Blue Gene/Qは、Blue Geneシリーズの最新のスーパーコンピュータの設計で、2011年内に20 PFLOPS達成を目標としたが、2012年に延期された。Blue Gene/Qは、高い電力当り性能を持つ Blue Gene/L や Blue Gene/P の拡張と強化を続けたもので、1684 MFLOPS/Watt を実現した。
Blue Gene/QのプロセッサはPower BQCと呼ばれ、をベースにしている。Blue Gene/Q は、16コアを持つ、4-Way のハイパースレッド 64ビット の PowerPC A2 ベースのチップを搭載している。そのチップは統合されたメモリとI/Oコントローラを持ち、各プロセッサコアに1 GB DDR3 RAMを持つノードカードに搭載される。
Blue Gene/Qを採用したシステムには以下がある。
Blue Gene/Lのシステム構成は、各計算ノードで独立して実行されるプロセスがネットワークを介して互いにデータを交換するメッセージパッシングモデルを想定した設計となっている。メッセージパッシングにおいてデファクトスタンダードとして利用されるMessage Passing Interface (MPI)をサポートしていることから、MPIを利用して実装された既存のスーパーコンピュータ向け並列アプリケーションの多くは移植するだけでBlue Gene/Lの特徴を生かして実行される。
しかし、ネットワークで述べたように通信の局所性が乏しい、また処理全体の中で通信時間の比率が高いもの、元々並列度が低いアプリケーションについては、より低遅延・広帯域なネットワークを備える他のシステムに比べ低い実行効率しか得られない。Blue Geneは、通信に対する計算の比率が高いアプリケーションほどより有利に実行可能である。