GPUはどの程度エラーするのかについて、Oak Ridge National Laboratory(ORNL)のJim Rogers氏がGTC 2015で発表を行った。ORNLはTop500 2位のTitanスパコンを擁する研究所である。TitanはCRAYのXK7スパコンで、18,688個のNVIDIA XK20x GPUを使うシステムである。
各筐体には3段に積まれたケージがあり、それぞれのケージには8枚のブレードが搭載されている。下部にあるブロワーで空気を吹きあげて冷却しており、吸気は20.5℃で、3段のケージを冷却した排気は49℃まで上昇し得る。そして、筐体の上に設置されている代替フロンを使う熱交換器で冷却される。
各ブレードには4個のAMD 6247 Opteronと4個のNVIDIA K20xが搭載されている。そして右端に搭載されている2個のGemini LSIで3Dトーラスネットワークを構成している。
NVIDIAのK20x GPUボードにはGK110チップが使われている。演算クラスタであるSMXはチップ上に15個存在するが、1個の不良を許容するため、使えるのは14SMXという仕様になっている。
GK110の各SMXは256KBのRegister File、64KBのL1キャッシュ、48KBのRead only Cacheを持ち、14SMXに共通の1.5MBのL2キャッシュを持つ。そしてボード上に6GBのデバイスメモリが搭載されている。デバイスメモリは24個の2GビットのGDDR5 DRAMで作られている。そして、これらすべてのメモリは、1ビット誤りを訂正する機能を持っている。
![]() |
K20xのメモリ系。Register File、L1キャッシュ、Read-only CacheはSMXごと。L2キャッシュはチップに1個。デバイスメモリは24チップで6GB。すべてに1ビット訂正機能がついている |
K20xは次の表にまとめられたエラーを検出することができる。そして、ECCで訂正可能な1ビットエラー以外のエラーの場合は、アプリケーションに継続不能な障害が発生したとみなす。
次の図は1ビットエラー(SBE)が検出された筐体の位置を示す。赤丸の大きさは、発生頻度に比例している。このデータは2012年から2014年8月までの結果で、約600万回のSBEを含んでいる。
この図に見られるようにSBEの発生場所は一様ではなく非常に偏っている。18,688台のK20xの内の899台だけでSBEが発生しており、大部分のK20xではエラーは発生していない。全体で約600万回のSBEが起こっているが、右の小さなグラフに示すように、その98%は10台のK20xで発生している。
このSBEであるが、エラー頻度の高い10台のK20xでは、その99%がL2キャッシュのエラーである。一方、この10台以外ではSBEの94%はデバイスメモリのエラーであり、L2キャッシュのエラーは6%に過ぎない。
また、L1キャッシュ、レジスタファイル、Read onlyキャッシュでは、SBEは発生していない。
2ビットエラー(DBE)の発生位置の分布は、SBEと比べると、一様に近い分布となっている。2013年6月1日から2015年2月28日までにDBEは91回しか起こっておらず、その25%は6台のK20xで発生している。
また、右側のパイチャートに示すように、DBEの86%はデバイスメモリ、14%はレジスタファイルで発生している。レジスタファイルの総容量は256KB×14=3584KBであり、1536KBのL2キャッシュの2.3倍のサイズである。従って、レジスタファイルのDBE発生が2番目となるのは理解できるが、容量から見てL2キャッシュも6%位になるはずであるが、1回もエラーが発生していないのは、単なる偏りかも知れないが、何か原因があるのかも知れない。
DBEが発生するとアプリはフェイルとなるので、DBEが原因のTitanのMTBFは7日となっている。
これは18,688個のMTBFであるので、1個のMTBFは約13万日、3.1M時間となり、K20xのfit数は おおよそ300fitと見積もられる。これはGK110チップと24個のGDDR5 DRAMを含むユニットとしては小さい値であり、信頼度が高いと言える。
NVIDIAのドライバは2回のSBE、1回のDBEの発生を監視しており、これらの事象が発生すると、そのデバイスメモリのページを切り離して使用禁止にする機能を持っている。この機能は、エラーの起こりやすいメモリセルを早期に切り離すことにより、将来のエラー発生頻度を減らすという点で、非常に有効な機能である。
次の図は、このページの切り離しの発生位置と頻度を示すものである。これも比較的一様な分布であるが、10%以上を占めるK20xがあり、これは特異である。
Off the busエラーはPCIe接続のエラーを示している。発生頻度はケージ位置の依存性が大きく、搭載位置が一番下のケージ0が最低、一番上のケージ2でのエラー発生が多い。これはケージ2の温度が高いことが原因と考えられる。そして、熱膨張、収縮の影響を受けにくいコネクタに替えた結果、Off the busエラーは劇的に減少したとのことである。
Off the busエラーは、12月以降は大幅に減少し、翌年8月以降は発生していない。これはコネクタの改造が功を奏したものである。
まとめであるが、全体としてNVIDIAのK20xは非常に信頼度が高い。18,688個使用してDBEでダウンするMTBFは7日であった。NVIDIAのドライバは個々のSBEはロギングしないので、ORNLは、ハードウェアカウンタを1日1回読み出してSBEの発生をモニタしたという。そして、このようなデータから、貴方のアプリでECCをオンにする必要があるかどうかを判断すべきである。NVIDIAはSBE以外のエラーを追跡する手段を提供しているので、常にFITやMTBFを監視しておくべきである。
![]() |
まとめ。NVIDIAのK20xは16,866台でDBEのMTBFは7日と非常に信頼度が高い。SBEやその他のエラーの発生頻度を把握すべきである。そして、貴方のアプリでECCが必要かどうかを判断すべきである |
Titanのような大規模システムでのエラー発生の測定は膨大な手間のかかる作業で、その結果、得られた知見は貴重である。また、このような知見をフィードバックすることにより、より信頼度の高いシステムを作ることができるようになる。