忍者ブログ

Memeplexes

プログラミング、3DCGとその他いろいろについて

C#でOpenCL入門 (Cloo版) プログラム

プログラム

こちらも合わせてお読みください。

今回のテーマはプログラムです。
「プログラム?
前回もプログラム書いたじゃないか」という話ですが、そういう意味のプログラムではあありません。
OpenCLでプログラムといった時、それはGPU(正確に言うとデバイス)で動くプログラムのことです。
ここまではCPU側で動くプログラムしか書いて来ませんでしたからね。

OpenCLでGPUで動くプログラムを動かすときには、OpenCL Cという言語を使います。


拍手[0回]

PR

C#でOpenCL入門 (Cloo版) バッファ

バッファ

こちらも合わせてお読みください。

前回までは初期化作業が中心でした。
計算らしきものはしませんでしたね。

今回はGPU内にメモリ領域であるバッファを生成し、そこに書き込み、そこから読み込みをしてみます。
つまりGPUにデータを送って、また返してもらうのです。
GPGPUではそれに付け加えてバッファの値を使った計算もしなければいけませんが、それは次回以降にしましょう。


拍手[0回]


C#でOpenCL入門 (Cloo版) コマンドキュー

コマンドキュー

こちらも合わせてお読みください。
今回はコマンドキューの生成と破棄を行います。
残念ながら前回に引き続き今回もサンプルプログラムは画面に何も出力しません。

コマンドキューとは、GPUに対する操作をカプセル化したオブジェクトです。
たとえば、GPU内のバッファにデータを書き込んだりそこから読み込んだり、データに対して計算を行ったりといった感じです。
オリジナルのOpenCLではこういったメソッドのほとんど全てが非同期でした。
おそらくClooもそうでしょう。


拍手[0回]


C#でOpenCL入門 (Cloo版) コンテキスト

コンテキスト

こちらも合わせてお読みください。
前回はGPUやCPUといったハードウェアを司るデバイスオブジェクトを扱いました。
しかし実はデバイスオブジェクトでは大したことはできません。
そこらへんXnaやDirectXに似ていますね。

そこで登場するのがこのコンテキストオブジェクトです。
コンテキストはひとつ以上のデバイスをまとめるオブジェクトです。
OpenCLに必要なGPUを動かす命令、メモリ領域などは全てこれを通して作ります。


拍手[0回]


C#でOpenCL入門 (Cloo版) デバイス

デバイス

こちらも合わせてお読みください。

今回のテーマはデバイスです。
OpenCLではデバイスとはGPUかCPUのことです。
OpenCLで並列計算しようと思ったら、デバイスを列挙しなくてはいけません。
(プラットフォームのところでも同じようなことを言ったような気もしますが、プラットフォームはソフトウェアで、デバイスはそれで動くハードウェアということだと思います。)


拍手[0回]