本研究では,機械学習向けハードウェアと親和性の高い連立一次方程式の解法としてH行列を対象とする.H行列では密行列を対角ブロックが小さくなるように階層的に分割し,それぞれ大きさの異なる非対角ブロックに対して低ランク近似を行う.その結果小さな密行列の演算が無数に発生する点に着目し,batched MAGMAを用いたGPU実装を行ったところ,cuBLASのカーネルを毎回呼ぶ方法に比べて大幅な性能向上が得られた.また,低精度演算を有効利用する方法としてTensorCoreを用いた演算を行列積だけでなく,H行列の圧縮時に用いるQR分解でも実現した.TensorCoreでは入力行列が半精度に変換されるため,従来は精度の低い演算にしか用いることができなかったが,精度補正を行なうことで単精度の精度を維持しながらも2倍程度の性能向上を実現できる手法を開発した.省電力に関しても TensorCoreを用いることで,Flops/W を大幅に向上することができた.H行列を用いると密行列のLU分解の演算量をO(N^3)からO(Nlog^2N)に低減できることがこれまでに報告されていたが,本研究ではこれをO(N)にまで低減できることを示した.また,ブロックLU分解では左上のブロックから逐次的に処理をする必要があるため,本質的に並列度が出にくいアルゴリズムとであるが,H行列の場合はブロックごとの演算量にばらつきが生じるため負荷分散の問題もより深刻になる.本研究では,StarPUなどのランタイムを用いることで,ブロック間の依存関係を解析し,最適な順番で処理を行うことで並列化効率を大幅に向上させることができた.さらに,LU分解だけでなく,QR分解にもH行列を拡張し,従来法にくらべて直交性の良い QR分解をO(N^2)で実現する手法を開発した.
|