また、このGPGPU利用の流れを受け、経済指標予測・リスク計量などの膨大なシミュレートと計算が必要である経済予測分野において、多くの経済研究機関・シンクタンクに向け、アメリカ合衆国や台湾の複数のベンチャー企業がGPGPUベースの高速予測システムを提供しつつあり、経済分野での貢献も始まっている。 スーパーコンピュータはノードと呼ばれる計算機の集合によって構成され、その計算機はコンピュータネットワークによって接続される。そのノード間を結ぶコンピュータネットワークのことを特にインターコネクトと呼ぶ。超並列マシンでは、ユーザの実行させたい処理を各ノードに分割して実行し、MPI等のAPIを使ったノード間通信で同期や計算結果の集約などを行う。そのため、高い性能を得るには広帯域かつ低遅延なインターコネクトが必要とされる。 旧来のスーパーコンピュータの多くでは独自のインターコネクト方式を採用しており、2007年、CrayはRapidArray[14]と呼ばれる独自方式を自社のシステムに採用している。コンピュータ・クラスターでは、イーサネットやInfiniBand、Myrinetなど、最大数十Gbps程度の帯域を持つインターコネクトが利用されている。 研究レベルにおける通信速度は、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を用いた並列化に対応している。
インターコネクト
インターフェース
ネットワーク構成
基盤ソフトウェア
オペレーティングシステムTOP500ランキングにおけるオペレーティングシステムのシェア推移[16]
プロセス・スケジューリング
ソフトウェア開発環境
プログラミング言語
並列化API、フレームワーク
グリッド・コンピューティングとクラウド・コンピューティング
Size:107 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)』
担当:undef