資産運用のコツ
-
昔から「卵を一つの籠に盛るな」ということわざがあります。例えば、卵を一つの籠にもっていて、その籠を落としてしまうと全ての卵が割れてしまいますが、例えば4つの籠に分けておくと、一つの籠を落としてしまっても、全ての卵が割れてしまうことはありません。
この卵を大切な資産と思ってみましょう。投資にも「卵を一つの籠に盛るな」を当てはめてみましょうということです。つまり分散投資ですが、ただ分ければ良いわけではありません。異なる動きをするものに分散することがポイントです。
違う動きをするものに分散すると、たとえ一つの商品がマイナスでも他の商品がプラスであればそのマイナス部分を埋め合せてくれます。
では、異なる動きをする資産は?というと、基本は、国内株式・国内債券・外国債券・外国株式の4つの分散です。過去の動きをみるとこの4資産の動きは異なっています。例えば、国内の株式が大きく上がっているときに、海外の債券がマイナスだった、その逆もあります。分散することによって例えば大きく国内の株式が下がっても、他の資産がプラスなら全部の資産で見るとプラスになっていたり、マイナスが小さくなるのです。
旧来のスーパーコンピュータの多くでは独自のインターコネクト方式を採用しており、2007年現在でもCrayはRapidArray[8]と呼ばれる独自方式を自社のシステムに採用している。コンピュータ・クラスターでは、イーサネットやInfiniBand、Myrinetなど、最大数十Gbps程度の帯域を持つインターコネクトが利用されている。
不用品回収における通信速度は2005年11月にIBMの研究所による14GB/chが最高速であったが、2006年3月現在、NECおよび理化学研究所による次世代HPC構想の研究にて25GB/chが記録されている[9]。
ネットワークトポロジ
スーパーコンピュータにおけるインターコネクトでは、そのトポロジも性能に大きい影響を与える。よく用いられるネットワークトポロジとして、メッシュ、クロスバ、トーラスなどがある。構築にかかるコストやアプリケーションの性質によって、システムに適切なネットワークトポロジは大きく異なる。
基盤ソフトウェア
1970年代前半のCrayによるスーパーコンピュータ黎明期から、研究者が好むOSとして、ベル研究所で開発され、その後多数の派生版が誕生したUNIX系OSが使用されてきた。これは当初、ライセンスフリーなオープンソース的OSであったことが最大の理由である。AT&Tは当初、UNIXへのライセンス料を賦課せず、ソースコードの頒布に当たってはメディアへのコピー料金しか徴収しなかった。このため、各大学の研究者達に広まり、企業へ就職後もそのまま慣れ親しんだOSを利用する事が多かったからである。
さらに、
ウィークリーマンションはそれまでのアセンブラにより記述されたOSと異なり、高級言語としてのC言語によって書かれており、機種間の移植がし易いため、新規ハードウェアを利用する際に研究者の研究時間を圧迫せずに使用できるという点も幅広い使用につながった。その上、UNIX(Linux)上でのライブラリなどカスタマイズの利便性やチューニング項目の多様性もあり広がったと認識されている[要出典]。
2008年現在も大多数のシステムでUNIX系オペレーティングシステムが利用されており、2007年11月発表の第30回TOP500ランキングではLinuxとMac OS Xを含めると92%のシェアを占めている[10]。
x86プロセッサの急激な価格性能比の向上を踏まえ、マイクロソフトはWindows Serverをベースとしたスーパーコンピュータ向けOSWindows Compute Cluster Serverを出荷している。(その他補足事項参照)
プロセス・スケジューリング
通常のUNIXにおけるラウンドロビン方式だけでなく、優先度の高い計算処理にCPU資源を強制的に割り当てるギャングスケジューリング方式もサポートしたものが多い。
ソフトウェア開発環境
スーパーコンピュータの性能を引き出すためには、それらハードウェアの特性に合わせたアプリケーションを開発する必要がある。スーパーコンピュータ向けアプリケーション開発で利用される技術・手法を以下に示す。
プログラミング言語
科学技術計算分野ではFortranが古くから使われ、コンパイラ最適化技術が成熟していることやアプリケーション・数値演算ライブラリなどのソフトウェア資産の蓄積が大きいことから2008年現在でも利用される。実行効率と開発効率の面から、C言語およびC++もよく用いられる。
開発効率の改善とハードウェアの並列度向上に対応するため、新たなプログラミング言語が提案されている。サン・マイクロシステムズは、2007年1月に科学技術計算向けプログラミング言語Fortressを発表し、オープンソースとして公開している[11]。
並列化API、フレームワーク
高い性能を求められるスーパーコンピュータ向けアプリケーションでは、ベクトルプロセッサのベクトル演算命令やSIMDなどの並列演算命令を活用し、並列度を高めることで性能向上を図っている。具体的な手法として、最適化コンパイラが並列実行可能な箇所を発見し自動並列化を行うベクトル化や、プロセッサの並列演算命令をプログラミング言語の拡張機能やアセンブラを使い、プログラム内で明示的に呼び出す方法などがある。
2008年現在主流であるコンピュータ・クラスター型のスーパーコンピュータでは、MPIを用いて、プログラマがプロセス間の通信や同期をプログラムに記述することで大規模な並列計算を行う方法が一般的である。スーパーコンピュータ向けベンチマークLINPACKの一実装であるHPL[12]や、遺伝子の相同性検索を行うBLASTなど多くの科学技術計算アプリケーションでは、MPIを用いた並列化に対応している。
歴史
スーパーコンピュータの歴史は、高性能コンピュータの軍事利用/軍事技術としての側面を切り離して語ることができない。現在もスーパーコンピュータはこういった政治的な影響から逃れることはできず、欧州でのスーパーコンピュータの採用などについては、性能や利便性という問題ではなく、その時のその国家の政治事情で採用ベンダが決定している。
横浜 マンションを含むスーパーコンピュータの評価には多くの問題点がある事が、スーパーコンピュータを扱うエンジニアや研究者の共通の認識となっている。現TOP500のスーパーコンピュータ相対評価において使用されるベンチマークテストはLINPACKと呼ばれる1970年代前半に確立されたもので、現在のスーパーコンピュータの規模/構成に適したものではない。そのため、TOP500の評価基準であるLINPACKベンチマーク評価について、基準ベンチマークとしての見直し論議が活発に行われ、HPC Challenge Benchmarkという新しいベンチマークが提案されている。
また、一つのベンチマーク値でそのシステムの実効性能を表現する事は不可能として、多くの研究者が提言を上げており、改善が求められる。また、スーパーコンピュータ本来の性能はシミュレーションを実行する場合などの実稼動時の性能を基準と考えるべきであり、スカラタイプとベクトルタイプでは計算する際のデータ投入性能が格段に差があると言われている。
例えば、冷凍おせちにより構成されるスカラータイプのスーパーコンピュータは、そのままの形態で使用すると気象予測において広域予報や長期予報などを行う際、データの連続処理におけるデータ供給能力に限界があり、実効性能が極端に落ちる事が知られている。このため、データの供給方法にハードウェア的/ソフトウェア的に工夫を施し、多量のデータを連続投入できる環境を作り、少しでもベクトルチップの実効性能に近づける努力をしているものが多い。一方、ベクトルチップを採用したNECの地球シミュレータを代表とするベクトルタイプのスーパーコンピュータは、スカラータイプより高い実効性能を維持する特性がある。
この方式による性能格差の主張には、既存の巨艦型ベクトル型スーパーコンピュータを使用していた研究者において、ベクトル処理を基本とした既存の処理方法からスカラ処理を基本とした現用の分散処理方法への移行教育や対応が遅れているという指摘もある。
アプリケーションによっては、スカラ化への対応には相当数の労力が必要であり、一般の研究者がスーパーコンピュータでのシミュレーションを行う際、本来の研究自体を圧迫してしまうという矛盾もあり、処理の最適化や処理分散の実装方式についてはもっと省力的で職人的な対応を不要にできるようなプラットホームの発展が求められている。その一例として、ベクトルプロセッサを前提として記述されたプログラムを、複数のスカラプロセッサで分散処理する形に自動的に変換する、自動並列化コンパイラがあり、スーパーコンピュータの世界では古くから研究、利用が進められている。近年では、PCや組み込みプロセッサのマルチコア化に伴い、こうした分野にも自動並列化コンパイラが導入されつつある。
それでもなお、スーパーコンピュータの大部分はベクトル型からスカラ型へ移行してきている。この背景として、ベクトル型プロセッサの開発コストや消費電力の大きさの問題がある。また、バイオインフォマティクスなど、スカラ型のほうが適しているアプリケーションが増えていることも一因である。