SC17において、ブラジルのUniversidade Federal do Rio Grande do Sul、Universidade Federal de Santa CatalinaとLos Alamos国立研究所のチームが、IntelのXeon Phi CPUのエラー率の測定とハードウェアのエラーがHPCプログラムの実行に与える影響を評価したという論文を発表した。
宇宙線に起因する中性子が半導体素子に衝突することにより、電子回路がエラーすることは避けられないが、それがどの程度エラーするかは半導体プロセス、レイアウトルール、回路設計、さらには、どのようなプログラムを実行しているかによって変わってくる。したがって、エラーの発生頻度を実測し、エラーの影響を軽減するための方策を見つけ出そうというのが、この論文の狙いである。
高エネルギーの宇宙線が上層の大気と衝突すると、2次粒子のシャワーが発生する。さらに2次粒子が大気と衝突して3次粒子のシャワーが発生したりする。これらのシャワーの粒子の内、荷電粒子は地球の磁場で曲げられてしまうが、電荷を持たない中性子は直進してLSIに衝突するとシリコンを電離させて回路のエラーを引き起こす。
海抜0mあたりでは、1平方cmに1時間に13個の中性子が飛来する。これがメモリ素子に衝突するとビット反転が起こる。ロジック回路に衝突した場合は、パルス状のノイズが発生し、これがフリップフロップに記憶されてしまうとエラーになる。
なお、中性子から見ると、シリコンはスカスカで、大部分の中性子はシリコン原子にはぶつからず、通り抜けてしまう。また、シリコン原子にぶつかっても、発生する電荷が小さければエラーにはならない。など、中性子がシリコンチップを通ったからと言ってすべてエラーになるわけではない。
なお、中性子の密度は高度で変わり、ジェット旅客機の飛行高度では、海面の数十倍になると言われる。海外出張の折り、飛行機の中でパソコンを使っているとエラーの頻度が高いと感じておられたら、それは気のせいではない。
最近のプロセサでは大量のキャッシュメモリなどを搭載しており、何の対策も施さないと、中性子によるエラーの頻度が非常に高くなる。したがって、「MCA(Machine Check Architecture)」と総称されるパリティチェックやECCにより、エラーの検出や訂正を行うハードウェアを備えるのが一般的である。しかし、このような対策を施しても、データが誤っているのにエラーを検出できない「SDC(Silent Data Corruption)」やエラーは検出できたが訂正は出来ない「DUE(Detected Uncorrectable Error)」を完全に排除することはできない。
海面レベルでは、1個のXeon Phiのエラー頻度は100万時間に1回程度のオーダーである。これではエラー率の実測には膨大な時間が掛かり、現実的でない。10万個のXeon Phiを使えば現実的な時間で測定はできるが、予算という点では現実的ではない。そこで用いられるのが強力な中性子ビームを照射するという方法である。
この論文では、「LANSCE(Los Alamos Neutron Science Center)」のWeapons Neutron Research Facilityの中性子線源を使っている。この施設では加速器で加速した陽子をタングステンのターゲットに当てて中性子を発生させる。この施設で発生させる中性子ビームのスペクトルを次の図に示す。縦軸はcm2当たりの中性子数、横軸はMeV単位の中性子エネルギーである。
両対数のグラフで紺色の右下がりの直線が宇宙線のスペクトルで、もう一本の線が、LANSCEの中性子ビームのスペクトルである。LANSCEビームは、500~600MeVあたりまでは自然の中性子と非常に近いスペクトルを持っていると言える。
なお、LANSCEのビームが500MeV以上では急速に粒子数が減っているのは、加速器のエネルギーが600MeVで、これより高エネルギーの中性子を発生できないからである。しかし、自然界でも500MeV以上の中性子の個数は少ないので、LANSCEのビームでも、エラー頻度の点では自然のスペクトルと大差ないと言える。
LANSCEのビームの利点は、1.8×106中性子/cm2hと自然界の14万倍程度強力な点である。この約14万倍の加速があれば、現実的な時間でXeon Phiのエラー率を実測することができる。Oliveira氏らはそれぞれのテストを最低100時間実行しており、自然界では5万7000年の測定に相当する。
次に示す6つのベンチマークプログラムを使ってエラー率の測定を行っている。CLAMRはエネルギー省の流体力学のワークロード、DGEMMは密行列の積の計算、Hotspotは熱のシミュレーション、LavaMDはn-bodyシミュレーション、LUDは密行列の計算、NWはダイナミックプログラミングの計算を行う典型的なHPCプログラムである。
Xeon Phiチップに中性子ビームを当てながら各プログラムを実行したときのエラー率を次の図に示す。青の棒グラフはSDCのエラー率、黒の棒グラフはDUEのエラー率である。エラー率の単位はFIT(Failure in Time、109時間に1回のエラー)である。
この図で一番エラー頻度が高いのは、Hotspotを実行している場合で、SDCが180FIT、DUEが200FIT程度となっている。このエラー率では、エクサスケールのマシンでは1日に1回、DUEが発生してしまう。一方、LavaMDではSDCが90FIT、DUEは20FIT程度となっている。
6つのベンチマークの中で、HotspotとLUDは単精度浮動小数点演算を使っているベンチマークであるが、この2つが倍精度浮動小数点演算を使っている他のベンチ間マークよりもエラー率が高いのは興味深い。