研究分担者 |
辻本 諭 京都大学, 情報学研究科, 講師 (60287977)
木村 欽司 京都大学, 情報学研究科, 特定講師 (10447899)
山本 有作 名古屋大学, 工学研究科, 准教授 (20362288)
岩崎 雅史 京都府立大学, 生命環境科学研究科, 准教授 (30397575)
高田 雅美 奈良女子大学, 人間文化研究科, 助教 (20397574)
|
研究概要 |
従来の2重対角化アルゴリズムでは,行列Aに対して両側からハウスホルダー変換を繰り返し作用させることで2重対角化を行う.計算量のほとんどを行列とベクトルの積,および行列のrank-1更新と呼ばれる演算が占める.しかし,これらの演算ではデータの再利用性がなく,キャッシュメモリが有効に利用できない.このため,メモリからのデータ転送速度がボトルネックとなり,プロセッサの演算性能が十分発揮できない.これを改善する手法として,本研究では,Bischof(1993, 1994)により提案された2段階型の2重対角化アルゴリズムに着目した.この算法では,Aをまず帯幅Lの下3角帯行列に変換し,次にCを2重対角行列Bに変換する.同様に逆変換も2段階で行う.逆変換の演算量が2倍になる代わりに,前処理,後処理の演算のほとんどがキャッシュ利用効率の高い行列乗算で実行できる.この算法は,演算量が大幅に増加することから,従来はあまり使われてこなかったが,本研究では,マルチコアプロセッサにおいてはメモリボトルネック解消の効果のほうが演算量増加のデメリットよりも大きいと考え,本算法をマルチコア向けに実装した.実装に当たっては,CからBへの変換もOpenMPを用いて並列化するなど,全体に渡って最適化を行い,アルゴリズムの性能が最大限に引き出せるよう注意を払った.この結果,従来法では前処理がネックとなり,8プロセッサでもほとんど加速が得られないが,我々のプログラムでは約4倍の加速が得られることがわかった.この結果,マルチコアプロセッサの性能を引き出すことができ,画像処理など大規模な特異値分解が必要な応用で高速化に大きな効果を発揮すると期待される.
|