2015年8月17日 10:00
ISC 2015 - HPLを補うベンチマーク「HPCG」(前編)
を作るConjugate Gradientという反復型の計算方法を使っている。○疎行列ではメモリへの格納とアクセス法が問題
疎行列を扱う場合は、メモリへの格納やアクセスが問題になる。各要素が8バイトの倍精度浮動小数点数で、1兆要素の行列をそのまま格納するには8TBのメモリを必要とする。まあ、メモリをたくさん積んだサーバであれば、格納できなくはないが、モデルを詳細化して元の格子が1000×1000×1000になると、必要メモリは8Exaバイトとなり、とてもメモリには格納できない。
また、大部分の係数はゼロなので、そのために大量のメモリを用意するのは馬鹿らしい。疎行列を効率的に格納する方法は色々と考案されているが、HPCGでは、各行について、非ゼロ要素のある列番号とその要素の値を記憶する圧縮行格納方式(Compressed Row Storage、CRS)が使われている。
CRSのような格納法を使うことにより大きな行列を扱うことができるが要素をアクセスするには各行の非ゼロ要素のリストの先頭アドレスを求め、次にそのリストの中からアクセスする要素の列番号を見つけてから、値をアクセスする必要がある。