GPUのECCは性能の代償として価値があるのか?
Nicole Hemsoth

この記事に関するフォローアップのポッドキャストをお聞きください。
ゲームやグラフィックスの仲間とハイパフォーマンス・コンピューティング用のGPUを区別するいくつかの要素の一つは、ECCの追加であり、無効な結果やシステムの問題につながるメモリ内の重要なビット飛びを対象としている。
ECCは、多くの場合シミュレーション結果の実現性を確認するために必要な構成要素とみなされているが、パフォーマンスの代償がついてくる。 サンディエゴスーパーコンピュータセンターとロスアラモス国立研究所の研究者のチームによると、ECCがあるため、誤り訂正符号により消費されるメモリ量のために、10%の使用可能なシステムのサイズを減少させている。彼らはさらに、ECCを使うと「シミュレーション速度を低減するため、結果的に大規模ファイルシステムにおけるディスク障害のような他のエラーソースや、電源異常、および計算途上での原因不明のノード障害が発生する機会を増加させている。」と指摘している。
この性能と障害を念頭において、疑問はECCは、その代償を正当化するのに十分な重大な欠陥を防止しているかどうかになる。換言すれば、これらのエラーはECCが必要な程よく起こるのか?だ。想像の通り、演算時間には複数のハードウェア、アプリケーション、 GPUやその他の問題がんでいるため、これは難しい質問だ。しかし、このチームは、ゲーム用のGPU(ECCを搭載していない)を装備した、ジョージア工科大学のKeeneland、ロスアラモスの小規模生産クラスタ、およびSDSCのDanteを含むXSEDEシステムに渡って、ECC有用性の質問に対処した。
グラフに見られるように、試験で使われたノード当たりのGPU数において最大規模のシステムであるKeenelandにおける性能のペナルティーは確かに観察可能だ。性能ヒットの点では他のシステムでも同様の結果が観測された。しかし最も興味深いのは、ECCが全体のすべてのシステムにおいていかに有用か実際に見た時に、ほとんどエラーがないことがわかった。それから実際に結果から、異なるシステム間で比較した場合、少なくとも今回のシステム間試験の基として使われた分子動力学コードであるAMBERについては、もっとも重要なエラーまたは障害は、故障したマザーボードや他の不定要素など、ECCが対処するように設計されているタイプでないハードウェア自体に起因したものだった。
このMDコードの性質に関するさらなる詳細と、何故この種の試験のために特に関連したのかについては論文に記載されている。
研究者がまとめたように、「シングルビットエラーを検出および訂正するECCの能力は理論的には紛れもなく有用であるが、この技術の特定のアプリケーションについてはMDコミュニティの利益とはならないかもしれない。」彼らはECC訂正可能なエラーの希少性を指し示し、それらのエラーが「システムサイズと演算速度の意味においてコストを上回らない」と指摘する。「エラーが発生する率はこの実験では定量化できなかったこと、プロダクションでのGPU計算ではエラーは非常に希であると思われる」ことを指摘している。
最後に、彼らは全体的に、「実験中に観測されたハードウェアエラーの他の原因の事実は、ECCの状態に関わらず、シミュレーションが失敗する可能性のある原因は多くあることを指し示しており、その障害は無価値のデータを出すよりシミュレーションをクラッシュさせることがもっとも多い。」と推測している。
繰り返すが、論文にはさらに多大な詳細情報があるが、ECCがいくつかの科学的なアプリケーションに亀裂をいれるかどうかをめぐる議論に新たな火花をつけそうだ。これは、大規模科学技術計算サイトにおける無教養なゲーム用グラフィックスカードの新しい命を意味するのだろうか?おそらくそうでない?しかし、それにもかかわらず興味深い読み物だ。