2014年5月6日火曜日

GPGPUがやりたい。①

備忘録

GPGPUをやってみたい。
昔DirectShowでWebカメラの簡単な画像処理をやったが、
それをGPUで処理したらどうなるのかな?みたいな話。


幸い、メインで使っているSONYのVAIO(もうsonyじゃなくなったかな?)、VPCSE2AJは、
RadeonのHD6630Mを積んでいる。

グラフィックボードとしての性能はそれ程期待できないが、
とりあえず、GPGPUを少しかじってみる分には丁度いいかもしれない。

ところが、最近のWindowsの更新やらなんやらのせいか、グラフィックの切り替えスイッチを
操作しても一向に反応が無い。……困った。

仕方がないので、グラフィックの更新プログラムを拾ってきてインストールすると、
反応するようになったのでめでたしめでたし。

インストールしたのは
http://vcl.vaio.sony.co.jp/download/EP0000269144.html

「Microsoft Visual C++ 2010 Redistributable 64bit 」の所でエラーを吐いたが、
たぶんVisual C++ 2012が入ってるから大丈夫……のはず。
今の所は問題なし。
(ところで、HD6630MでGPGPUができるのか、実はまだ確認していない。)

――――しかし、高いグラボ積んだデスクトップが一台欲しいかもしれない。
まあ、今後成果を出せたら買う事にしようかな?
(と言ってたぶん買わないし、そもそも成果が出ないか途中で挫折しそう。)


========メモ================
(本当にただのメモです。信用に値しないので、気になった人は自分で調べてみてください。)

GPGPU


①ソフト編

CUDA
  現在最も普及しているGPGPUプログラミング環境。(AMD社のAPPに相当)
  NVIDIA社が開発しており、NVIDIA社のGPUでのみ使用可能。
  これをインストールする事によってVisual StudioとかでOpenCLなどを?扱えるようになる。
  http://www.nvidia.co.jp/object/parallel-nsight-jp.html

AMD APP(ATI Stream)
  AMD社の開発環境?だと思う。(NVIDIA社のCUDAに相当)
  これをインストールする事によってVisual StudioとかでOpenCLを扱えるようになる?
  http://developer.amd.com/tools-and-sdks/opencl-zone/opencl-tools-sdks/amd-accelerated-parallel-processing-app-sdk/

OpenCL
  NVIDIA社やAMD社のGPUや、マルチコアCPUなど、様々な並列計算マシンで利用可能。
  AMD社が力を入れている。(クロスプラットフォーム)
  言語名としては、「OpenCL C言語」になるのだと思う。だぶん。


CUDAとOpenCLの違いは、たぶん言語の違いと捕えて問題ないと思う。
ただ、二つとも似たような構造をしているとか、していないとか。



OpenACC
  http://www.gdep.jp/page/view/257
  に、 (いつの時点の情報か分からないものの、)多少解説されている。
  しかし、「マルチGPUに対応していないなどの制約があったり」と書いてある所、
  から推察すると、本格的にGPGPUを扱おうという場合には不向きだと考えられる。
  ただ、一説によると、特殊な文法ではないため簡単らしい?
  (個人的にはネットの資料が少なそうなので簡単だとは思わないが。)

  なんとなく、読んだ感じだと、非常に高級言語であるため、性能を引き出すのが難しいとか。
  これはコンパイラの問題なので、今後改善される可能性はあるでしょう。……たぶん。
  この辺りも参考になるかな?
  http://news.mynavi.jp/series/openacc/menu.html
  まあ、余り流行ってなさそうなので、パス。

OpenGL
  クロスプラットフォームなグラフィックのインターフェース。
  GPGPUも扱えるようだが、GPGPU方面では普及していないと推察。
  一から組むには面倒だが、既にOpenGLを使用している場合には都合がいいのかもしれない。

DirectX(DirectCompute?)
  言わずと知れたMicroSoft社が、自社のOSであるWindowsに提供する、グラフィクスのインターフェース。
  Windows上でしか動作しないが、おそらく、ほぼ全てのハードウェアをサポートする。
  PCゲーム開発では一般的に使われているため、ポテンシャルは大きい。(特にゲーム分野では。)


②ハード編(余談)

IntelチップによるGPGPU
  現時点(2012情報)では期待できない。
  2014年5月現在でも、検索に殆ど引っかからないので、おそらく無理。
  ただし、OpenCLではCPUもGPUも計算機として扱う事ができる。


おそらく、NVIDIA社の対応GPUを持っている人は、CUDAが一番だとおもいます。
ただし、DirectXに馴染みの深い人はそれもあり、かな?

私の場合は、ノートに搭載されているGPUが、「RadeonのHD6630M」なので、
OpenCLかDirectXになると思われます。


NVIDIAのGPGPU対応製品一覧。
http://www.nvidia.co.jp/object/cuda_learn_products_jp_old.html

NVIDIAの人は
http://www.gdep.jp/page/index/market
辺りで詳しく解説されていると思います。




AMDのGPGPU対応製品がどれなのか、調べても出てこないが、
http://www.4videosoft.jp/ati-technology.html
によると、「6700M/HD 6600M series」はAMD APPに対応しているので、おそらく可能?
だと思う。
http://www.notebookcheck.net/AMD-Radeon-HD-6630M.43963.0.html
によると、HD6630Mは「6700M/HD 6600M series」で一括りにされている。

そういう訳なので、
http://ameblo.jp/kyororo39/entry-11756524043.html
を参考にしてVisualC++でOpenCLを扱えるように環境を整えたいと思います。

0 件のコメント:

コメントを投稿