2010年1月22日金曜日

「はじめての CUDA プログラミング」とネットブック

今日は、「はじめての CUDA プログラミング」を読んでみた。
CUDA に関しては、現状では英語の情報がほとんどなので、こうして日本語でまとまった情報が手に入ると、とても便利だ。

CUDA の場合、記憶領域が「レジスタ」「ローカルメモリ」「シェアードメモリ」「グローバルメモリ」といくつかあって、記憶容量が小さいものほど高速に使用できるので、いかに小さい記憶領域で効率的に計算するかが肝心なようだ。

単純に配列の和なら、
for (int i=0; i < N; ++i) sum = sum + a[i];
でいいかと思っていたが、これだけでも GPU の性能をフルに発揮しようとすると、相当の工夫が必要ということが解かる。

今の時点で CUDA について勉強するのであれば、読んでおいて損はないと思う。

ただ、並列計算の分野では 2^n で離散化したりなどでプログラムを簡略化できるが、mathematical programming ではだいたい 2^n になることはないので、そのあたりでどのように性能を維持するかがポイントになりそうだ。sgemm でも N=4096 と N=4095 では2倍も速度が変わってしまうし。

とりあえず、ここで得た知識などを用いて、PLASMA/MAGMA を調べていくことにしよう。


あと、それと並行して、ネットブックがどれだけ使えるのかを試してみた。
ネットブックは SONY Type W で Atom CPU N280 @ 1.66GHz, Memory 2GB, Windows 7 Home Premium である。
Windows 7 は初めて使ったが、Office 2007 をインストールした時点で HDD は 20GB 程度になる。
Windows が起動しただけでメモリは 780MB 程度使用しており、Internet Explorer を起動すると 900MB を突破するので、メモリが 1GB しかない場合、Windows 7 Home Premium はきついかもしれない。
また、Word は起動時にかなりもたつくが、Word/Excel/PPT と3つ開いても1分ぐらいすると、それなりに動く。ただし、日本語入力はかなりのもたつきがある。
VMware で Ubuntu などを動かすのは、きつそうだ。


ただ、世の中の多くの人はインターネットエクスプローラを使っているだけの時間がかなりの割合を占めるので、そういった用途に絞っての2台目という点では、使い道が大きい。新しいページをひらくのに少しもたつくが、それほど致命的というわけでもない。
あと、出張のときに軽く持っていけるのもアドバンテージと言える。

今日の作業内容: CUDA 6h
今日のBGM: SKY OST [1-2]
今日のランチ: いろは 豚汁定食
明日の予測作業時間: 4h

0 件のコメント:

コメントを投稿