備忘録
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 件のコメント:
コメントを投稿