• 検索結果がありません。

謝辞

ドキュメント内 修 士 学 位 論 文 (ページ 40-44)

今回の研究を通じ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 分割での計算となった.しかし分割数が大きすぎるとグローバルメ

ドキュメント内 修 士 学 位 論 文 (ページ 40-44)

関連したドキュメント