研究レベルにおける通信速度は、2005年11月にIBMの研究所による14GB/chが最高速であったが、2006年3月、NECおよび理化学研究所による次世代HPC構想の研究にて25GB/chが記録されている[15]。 スーパーコンピュータにおけるインターコネクトでは、そのトポロジも性能に大きい影響を与える。よく用いられるネットワークトポロジとしては、メッシュ、クロスバー、トーラスなどがある。構築にかかるコストやアプリケーションの性質によって、システムに適切なネットワークトポロジは大きく異なる。 1970年代前半のCrayによるスーパーコンピュータ黎明期から、オペレーティングシステムにはUNIXおよびLinuxなどのUnix系が広く使用されている。この理由には、当初はライセンスフリーなオープンソース的なOSであったこと、主にC言語で書かれており機種間の移植が容易なこと、大学や研究所で広く使われており科学技術計算用のライブラリやツールが充実していることなどが挙げられる。 2000年頃よりUnix系であるLinuxの比率が急増し、2009年では約9割である。 なお、x86プロセッサの急激な価格性能比の向上を踏まえ、マイクロソフト社はWindows Serverをベースとしたスーパーコンピュータ向けOSWindows Compute Cluster Server 各Unixで通常使われているスケジューラだけでなく、優先度の高い計算処理にCPU資源を強制的に割り当てるギャング スケジューリング方式もサポートしたものが多い。 スーパーコンピュータの性能を引き出すためには、それが持つハードウェアの特性に合わせてアプリケーションを開発する必要がある。スーパーコンピュータ向けアプリケーションの開発で利用される技術・手法を以下に示す。 科学技術計算分野ではFortranが古くから使われ、コンパイラ最適化技術が成熟していることやアプリケーション・数値演算ライブラリなどのソフトウェア資産の蓄積が大きいことから2017年現在でも利用される。実行効率と開発効率の面から、C言語およびC++もよく用いられる。 開発効率の改善とハードウェアの並列度向上に対応するため、新たなプログラミング言語が提案されている。サン・マイクロシステムズは、2007年1月に科学技術計算向けプログラミング言語Fortressを発表し、オープンソースとして公開している[20]。他にもIBM社のX10などさまざまな提案がある。 高い性能を求められるスーパーコンピュータ向けアプリケーションでは、ベクトルプロセッサのベクトル演算命令やSIMDなどの並列演算命令を活用し、並列度を高めることで性能向上を図っている。具体的な手法として、最適化コンパイラが並列実行可能な箇所を発見し自動並列化を行うベクトル化や、プロセッサの並列演算命令をプログラミング言語の拡張機能やアセンブラを使い、プログラム内で明示的に呼び出す方法などがある。 2013年現在主流であるコンピュータ・クラスター型のスーパーコンピュータでは、MPIを用いて、プログラマがプロセス間の通信や同期をプログラムに記述することで大規模な並列計算を行う方法が一般的である。スーパーコンピュータ向けベンチマークLINPACKの一実装であるHPLや[21]、遺伝子の相同性検索を行うBLASTなど多くの科学技術計算アプリケーションでは、MPIを用いた並列化に対応している。 分散コンピューティングの発展系として、遠隔地のスーパーコンピュータを含めたネットワーク上の多数のコンピュータを統一的に利用する手段として、グリッドコンピューティングの技術開発が世界的に進められており、日本でもNAREGIが国家プロジェクトとして採択を受け、研究と構築が行われている。また、国内の学校を含む、研究・教育機関に教育用に導入されているPCにグリッド基盤パッケージを導入し、現時点では利用されていないCPU資産をグリッドコンピュータの一部として活用する計画への参加を呼びかけている。グリッドコンピューティングの走りとして世界中のPCが参加しているSETIやグリッドによる分散処理に向いた研究素材を集めて、共通のグリッド基盤で処理を進めるBOINC、World Community Gridといったプロジェクトが軌道に乗っており、世界各国のプロジェクトが相乗りして成果を挙げている。
ネットワーク構成
基盤ソフトウェア
オペレーティングシステムTOP500ランキングにおけるオペレーティングシステムのシェア推移[16]
プロセス・スケジューリング
ソフトウェア開発環境
プログラミング言語
並列化API、フレームワーク
グリッド・コンピューティングとクラウド・コンピューティング
Size:107 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)』
担当:undef