GPUはどの程度エラーするのかについて、Oak Ridge National Laboratory(ORNL)のJim Rogers氏がGTC 2015で発表を行った。ORNLはTop500 2位のTitanスパコンを擁する研究所である。TitanはCRAYのXK7スパコンで、18,688個のNVIDIA XK20x GPUを使うシステムである。

ORNLのTitanの概要。18,688ノードからなり、各ノードは16コアOpteron+K20x+32GB DDR3/6GB GDDR5という構成

各筐体には3段に積まれたケージがあり、それぞれのケージには8枚のブレードが搭載されている。下部にあるブロワーで空気を吹きあげて冷却しており、吸気は20.5℃で、3段のケージを冷却した排気は49℃まで上昇し得る。そして、筐体の上に設置されている代替フロンを使う熱交換器で冷却される。

筐体には3段に積まれたケージがあり、各ケージには8枚のブレードが搭載されている

各ブレードには4個のAMD 6247 Opteronと4個のNVIDIA K20xが搭載されている。そして右端に搭載されている2個のGemini LSIで3Dトーラスネットワークを構成している。

ブレードには4個のAMD 6247 Opteronと4個のNVIDIA K20xが搭載され、右端に2個のGeminiネットワークLSIが搭載されている

NVIDIAのK20x GPUボードにはGK110チップが使われている。演算クラスタであるSMXはチップ上に15個存在するが、1個の不良を許容するため、使えるのは14SMXという仕様になっている。

NVIDIAのK20xに使用されているGK110 GPUチップ

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ビットエラー以外のエラーの場合は、アプリケーションに継続不能な障害が発生したとみなす。

K20xはこの表に書かれたエラーを検出する能力をもっている。ECCで訂正可能な1ビットエラー以外のエラーはアプリの実行を継続できない障害とみなす

次の図は1ビットエラー(SBE)が検出された筐体の位置を示す。赤丸の大きさは、発生頻度に比例している。このデータは2012年から2014年8月までの結果で、約600万回のSBEを含んでいる。

1ビットエラー(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は発生していない。

この10台のK20xのSBEの99%はL2キャッシュで発生しているが、これ以外のK20xのSBEの94%はデバイスメモリで発生しており、L2キャッシュでの発生は6%

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回もエラーが発生していないのは、単なる偏りかも知れないが、何か原因があるのかも知れない。

2ビットエラー(DBE)の発生筐体位置の分布

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があり、これは特異である。

Page切り離しの発生個所。NVIDIAのドライバはDBEの発生、あるいはSBEが2回発生したデバイスメモリのページを切り離して使わないようにする

Off the busエラーはPCIe接続のエラーを示している。発生頻度はケージ位置の依存性が大きく、搭載位置が一番下のケージ0が最低、一番上のケージ2でのエラー発生が多い。これはケージ2の温度が高いことが原因と考えられる。そして、熱膨張、収縮の影響を受けにくいコネクタに替えた結果、Off the busエラーは劇的に減少したとのことである。

Off the busエラーはK20xをマザーボードに接続するPCIeコネクタの問題を示している。発生頻度のケージ位置依存性が大きく、温度の高い一番上のケージでのエラーが多い

Off the busエラーは、12月以降は大幅に減少し、翌年8月以降は発生していない。これはコネクタの改造が功を奏したものである。

Off the busエラーの時系列での発生頻度

まとめであるが、全体として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のような大規模システムでのエラー発生の測定は膨大な手間のかかる作業で、その結果、得られた知見は貴重である。また、このような知見をフィードバックすることにより、より信頼度の高いシステムを作ることができるようになる。

GTC 2015の記事一覧

【レポート】GTC 2015 - Deep Learningを理解する(後編)
【レポート】GTC 2015 - Deep Learningを理解する(中編)
【レポート】GTC 2015 - Deep Learningを理解する(前編)
【レポート】GTC 2015 - NVIDIAの新製品発表とDeep Learning
【レポート】GTC 2015 - Baidu(百度)のDeep Learning
【レポート】GTC 2015 - GoogleのDeep Learning
【レポート】GTC 2015 - Deep Learning一色となった基調講演
【レポート】GTC 2015 - NVIDIA、7TFlopsの演算性能を実現したハイエンドGPU「Titan X」を発表