[PR]
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
プログラミング、3DCGとその他いろいろについて
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
こちらも合わせてお読みください。
今回はコマンドキューの生成と破棄を行います。
残念ながら前回に引き続き今回もサンプルプログラムは画面に何も出力しません。
コマンドキューとは、GPUに対する操作をカプセル化したオブジェクトです。
たとえば、GPU内のバッファにデータを書き込んだりそこから読み込んだり、データに対して計算を行ったりといった感じです。
オリジナルのOpenCLではこういったメソッドのほとんど全てが非同期でした。
おそらくOpenCLNetもそうでしょう。
こちらも合わせてお読みください。
前回はGPUやCPUといったハードウェアを司るデバイスオブジェクトを扱いました。
しかし実はデバイスオブジェクトでは大したことはできません。
そこらへんXnaやDirectXに似ていますね。
そこで登場するのがこのコンテキストオブジェクトです。
コンテキストはひとつ以上のデバイスをまとめるオブジェクトです。
OpenCLに必要なGPUを動かす命令、メモリ領域などは全てこれを通して作ります。
こちらも合わせてお読みください。
今回のテーマはデバイスです。
OpenCLではデバイスとはGPUかCPUのことです。
OpenCLで並列計算しようと思ったら、デバイスを列挙しなくてはいけません。
(プラットフォームのところでも同じようなことを言ったような気もしますが、プラットフォームはソフトウェアで、デバイスはそれで動くハードウェアということだと思います。)
以前、C#でOpenCLを使った記事を書いたのですが、Deep Learningの重さに耐えかね、復習することにしました。
OpenCLはGPUというグラフィックス表示用のハードウェアを普通の計算に利用しようというものです。
結構速くなるようです。
そして最近人工知能の世界で流行りのDeep Learning、これが重くて重くて仕方がありません。
この2つを組み合わせない手はないでしょう。
しかしP/InvokeでOpenCLのラッパーを書いて…というのは面倒なので、今回はOpenCLNetという物を使おうと思います。
これならC#から簡単にOpenCLが使えるようです。