Linear Algebra Operators for GPU Implementation of Numerical Algorithms(SIGGRAPH2003)

SIGGRAPH2003からもうひとつ。Webサイトはこちら

Abstract:
この論文の要点は、数値計算のテクニックをGPU上で実現するための戦略の開発である。とりわけ、数値演算のシミュレーション時に必要となる代数式群を解くための方法を高速化することに重点が置かれている。我々は、プログラマブルGPU上への線形代数演算子の実装を紹介し、さらに、より複雑な数値演算アルゴリズムのための演算単位を提供する。より正確には、GPUの本質的な並列性を活用したベクトル、行列の算術演算子のためのストリームモデルを提案する。このモデルでは、数値演算の発展による性能向上だけでなく、演算結果をGPUへ転送する必要がないという利点もある。我々は、疎行列の直接解法を実装し、これらを多次元の決定性微分方程式(2次元波方程式、非圧縮ナビエ・ストークス方程式)へ適用することで、我々の手法の有効性を示した。

マトリクス → 2D Texutre
ベクトル → 1D Texture
として、要素毎に演算する、というのはすぐに考え付くところだが、この論文では、ベクトルを2DTextureとして扱う。よって、マトリクスも、一枚の2DTextureではなく、複数の2DTextureの集合となる。さらに、マトリクスも、垂直な短冊状に区切るのではなく、対角線の方向に区切っていく。これにより、単位行列の場合、2DTexture一枚で行列が表現できることになり、圧縮効果があると述べている。1DTextureは、キャッシュ効率が悪い(可能性がある)ので、2DTextureにした、というのは一理ある。で、その応用例として、例の疎行列とナビエ・ストークス方程式を試してみて、CPUよりも速くなりました、という話。

この論文の著者たちは、科学技術計算用のライブラリを作りたいらしく、その基礎パーツとなるベクトルとマトリクス演算をGPU上で行うためのフレームワークの提案。今後は、より完成度を高めていくことでしょう。

数値演算にGPUを使うのは面白いと思うのだが、適用先がまたも疎行列とナビエ・ストークス方程式だったので、もうちょっと他の応用例が見てみたいところ。