今回の研究を通じOpenCLや疎行列圧縮を始め多くの技術・知識に触れることが出来ま した.研究内容の題材や助言を下さった株式会社UBIC 武田秀樹様 蓮子和巳様 藤田肇様 猪瀬悟史様等,各関係者様には深く感謝致します.
また今回の研究に限らず,3年間の適切な指導・助言を下さった指導教員福永力教授には 大変お世話になりました.深く感謝致します.研究室の仲間として共に研究を続けた西村 建郎,日高敬介両氏にも深く感謝致します.
最後に,ここまで育ててくれた両親を始め,友人や支えて下さった方々に深く感謝致し ます.
34
参考文献
[1] The University of Florida Sparse Matrix Collection http://www.cise.ufl.edu/research/sparse/matrices/
[2] NVIDIA社HP
http://www.nvidia.co.jp/page/home.html
[3] OpenCL概要
http://www.khronos.org/opencl/
[4] Cellプロサッサ技術情報 http://cell.scei.co.jp/index_j.html
[5] Survey of Sparse Matrix Storage Formats http://netlib.org/linalg/html_templates/node90.html
[6] OpenCL C言語のC言語からの拡張と制限について http://www.khronos.org/registry/cl/
[7] 桜井隆雄,直野健,片桐孝洋,中島研吾,黒田久泰,磯貝光祥:自動チューニングイン ターフェースOpenATLibにおける疎行列ベクトル積アルゴリズム,情報処理学会研究報告 2010-HPC-125 No2
[8] 片桐孝洋,佐藤雅彦: 疎行列-ベクトル積における実行時データ変換のための自動チュ ーニング方式,情報処理学会研究報告 2011-HPC-130 No41
[A] NVIDIA Quadro4000
http://www.nvidia.co.jp/object/product-quadro-4000-jp.html
35
A 64 並列以降の高速化に向けて
A.1 64 並列以降に起きるメモリアクセスの問題点
図5.4,5.5,5.6は全て64WIでの結果である.使用したGPUの最大並列数は256だが,
どの疎行列に対しても64WIと256WIでの実行結果に顕著な差異が見られなかった為であ
る(図5.1,5.2).これは全てのWIがグローバルメモリに対して読み込み・書き込みを行
う為に発生する遅延が原因であると考えられる.
A.2 改良案
メモリアクセスによる遅延に対する改良案として,グローバルメモリに対して書き込み するWI数を減らした上で,計算を行うWI数は最大並列数の256となるプログラムを新た に作成し実験を行った.
図A.1はCRS形式での計算を改良したプログラムの流れである.本論文中でのCRS形 式で計算するプログラムでは1つのWIが1つの行を計算しグローバルメモリに書き込み を行っているが,新たに実装したプログラムは1つの行の計算を複数のWIで計算する.
新たに実装したプログラムでは,まず複数のWIでワークグループを形成する.ワークグ ループ内の各WIによって1つの行を分割して計算を行い,ワークグループ内のWIのみア クセスできるローカルメモリに計算結果を書き込む.同期処理を行った後,ワークグルー プ内の1つのWIが代表してローカルメモリに格納した計算結果をグローバルメモリに書き 込む.仮にワークグループサイズを4とした場合,1つの行の計算を4つのWIが担当する ことで計算時間がおよそ4 分の 1 となり,グローバルメモリに対して書き込みを行う WI 数は256 / 4 = 64となる.64WIより大きいWI数ではメモリアクセスによる遅延が発生し てしまう為,書き込みを行うWI数が256から64になっても書き込み速度に変化なく,計 算時間を削減することができる.
36
図A.1 改良案での実行の流れ
A.3 改良案による実行結果
図A.2は2048×2048密行列をCRS形式に格納して行列ベクトル積を計算した結果であ る.グラフ左側の並列数64~256は本論文中で用いたプログラムでの結果であり,64~256 並列数の間であまり差は見られない.グラフ右側の 2~16 分割で示しているのが新しいプ ログラムでの実行となり,全て最大並列数となる256個のPEを用いて計算している.2分 割は1つの行の計算を2つのWIで行っている.4分割では1つの行の計算を4つのWIで,
8分割では8つのWIで行っている.分割数が増えることで計算速度は向上し,図A.2の中 で最も優れた結果が 8 分割での計算となった.しかし分割数が大きすぎるとグローバルメ