平成 23 年 9 月 30 日

KNOPPIX for CUDA によるプラグイン GPGPU
電気通信大学 情報工学科 成見研究室 0711035 菊池 洋介

1 はじめに

4 改良方針

近年、GPU の発達が進み、GPU が持つ演算資源を画現行の KNOPPIX for CUDA から改良する点は以下

像処理以外の目的に応用する技術である GPGPU が数の３つである。

値計算を始め様々な分野で活用されるようになった。そ・最新のソフトウェアへのアップデートれに伴い、今後この分野に興味を持つ人が増えていくこ

・GPGPU 初心者向けのチュートリアルの充実とが予想されるので、手軽に GPGPU を始められるツー

・仮想 GPU サポートによる操作性の向上

ルを開発することは重要であると考えられる。「プラグ4.1 最新のソフトウェアへのアップデート

イン GPGPU」とは、電源とネットワークケーブルを挿す（プラグイン）だけで GPGPU を始められる、という

表１のようにソフトウェアをアップデートする。

意味である。

表1

2 研究概要現在、GPU 関連研究の開発を支援する KNOPPIX

現行の作成する

KNOPPIX for CUDA

KNOPPIX for CUDAのバージョンのバージョン

6.4.1

KNOPPIX

5.3.1

for CUDA[1] というソフトウェアが一般に公開されてCUDA

2.34.0いる。これは OS やドライバなどのソフトウェアをインデバイスドライバ

190.18270.41.19

なし

2.0.1

仮想 GPU

ストールしなくてもすぐに GPU が使えるという点で高(Remote CUDA)

い利便性を持つが、GPU を用いたシミュレーションを体験することに重きが置かれているため、開発ツールとして使用するためには改良すべき点が何点か見受けられる。そこで本研究ではこれから需要が高まるであろう

4.2 GPGPU 初心者へのチュートリアルの充実

KNOPPIX for CUDA に関して、利便性をより向上さ

現行の KNOPPIX for CUDA は実装されているデモせ、広く一般的に使用できるよう改善、改良を行う。

シミュレーションの大半が視覚的シミュレーションである。そこで新たに GPU で開発を行うユーザへ向けて3 KNOPPIX for CUDA

GPU のプログラミングの特徴が捉えやすいデモプログ
ラムを用意し、併せて GPU でプログラミングを行う際

KNOPPIX for CUDA は Linux ディストリビュー

考慮しておくべき点を中心としてまとめた開発マニュアションのひとつである KNOPPIX に NVIDIA の並列計ルを実装することとした。

算アーキテクチャである CUDA[2] を組み込み、手軽にチュートリアルの対象となる計算は行列演算とする。

GPU のデモ、開発ができる環境を整備するため開発さこれは要素毎に計算を分解することが容易であり、計算れたものである。CUDA 用のデバイスドライバ、ツー速度の比較に適している。また、計算結果は CPU 使用ルキット、SDK がインストール済みであり、サンプル時と GPU 使用時を並列して導出するものとし、実際のプログラムがすぐにコンパイル、実行できる状態で起動比較が行いやすいよう留意する。

する。

また、GPU のチューニング方法についてもチュートリアルに含める。GPU の演算速度は高速だが、常に CPUの演算速度を上回るわけではない。開発をするならば様々な条件を解決しそのパフォーマンスを引き出す必要1

がある。だが GPU をプログラミングする際に留意すべ

5 進捗状況

き点は CPU を対象とした場合と異なる点があり、それ5.1 最新のソフトウェアへのアップデートが理解を妨げてしまう場合も多い。特にわかりにくいであろうスレッド数、ブロック数の概念に関しては上記のKNOPPIX 本体のバージョンアップのため、KNOP-デモプログラムと併せ、重点的に記述することとする。

PIX の カ ス タ マ イ ズ（ リ マ ス タ リ ン グ ）を 行 っ た 。

また、シェアードメモリの概念に関しても難解なので併

KNOPPIX のファイル郡をハードディスクに展開し、せて記述を行う。

chroot をしてカスタマイズを行う。主に Open Oﬃceを初めとした容量が大きく、開発に不要なパッケージの削除、更に Valgrind 等の開発の助けになるであろうデバッグツール郡の追加を行った。その後、カスタマイズを行ったファイル郡を DVD のイメージ化（ISO ファイル）し、カスタマイズ後の DVD から起動することで動作の確認を行った。

5.2 GPGPU 初心者へのチュートリアルの充実
行列計算を CPU と GPU で行うプログラムを用意して動作を確認した。分子動力学シミュレーションを

図 1 CUDA のプログラミングモデル

GPU 用にチューニングしたこれまでの経験を基に、チューニングのためのテクニックをまとめて原案を作成した。

4.3 仮想 GPU サポートによる操作性の向上
5.3 仮想 GPU サポートによる操作性の向上

仮想 GPU とは、あたかもローカルなマシンに GPUがあるように見せながらリモートの GPU を使う技術で仮想 GPU が実際に動作することを確認した。また、ある。GPU を搭載しないノートパソコンでも GPGPU自動起動の方法を検討した。

を使えるようになるなど操作性が向上する。

6 おわりに

4.3.1 RemoteCUDA による遠隔 GPU の使用
ネットワークに繋げることでリモート環境で CUDA

本研究では KNOPPIX、及び CUDA にカスタマイズを操作できる RemoteCUDA というソフトウェアが昨を行い、より利便性が高く、一般的に使用できる KNOP-

年度電通大で開発された。今のところ KNOPPIX forPIX for CUDA の改良を目指した。これまでに KNOP-CUDA が搭載されている PC 同士でないと遠隔 GPUPIX 側のカスタマイズを中心に改良を行った。今後、容の使用ができないが、KNOPPIX for CUDA 以外の OS量の関係上まだパッケージを追加可能なので、開発を続からでも使用できるように改良、実装を行う。

けていく上で有用なパッケージは適宜追加していきた
いと考えている。また、チュートリアルに関しては、使4.3.2 並列計算時の自動起動の実装

われている情報が自己の体験からのみ抽出されているのGPGPU はその性質上、並列処理に用いられることがで、GPU で開発を行っている他のユーザからも情報を多い。そこで複数の GPU が必要な計算を行う際、その抽出し取り入れていくことでマニュアルとしての完成度計算に必要な GPU の個数を自動で検出し、その個数だを高めていきたいと考えている。仮想 GPU 関連についけ対応する PC を自動起動するように改良する。また、ても順次進めていく予定である。

しばらく使用していない GPU があった場合は、そのGPU を搭載する PC を自動停止する機能を追加する。

参考文献[1] KNOPPIX for CUDA
http://www.yasuoka.mech.keio.ac.jp/cuda/[2] NVIDIA CUDA Programming Guide
http://developer.download.nvidia.com/compute/cuda/2