忍者ブログ

Memeplexes

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

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



C#でOpenCL入門 (OpenCLNet版) データ並列

データ並列

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

前回はついにGPUを使ってGPUのメモリに書き込みをしました。
しかしGPUを使っているというのにひとつのスレッドしか使っていませんでした。
GPUは並列計算をしてこそ意味があります。

という訳で今回は、OpenCL Cで書いたプログラムを並列に実行してみましょう。


拍手[0回]


C#でOpenCL入門 (OpenCLNet版) カーネル

カーネル

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

今回は「カーネル」について解説します。
カーネルというとよく意味が取れない方もいらっしゃるかも知れません。
OpenCLでカーネルというと、GPUで動かす関数のことです。

前回登場した「プログラム」との違いを言うと、カーネルは関数であるのに対し、プログラムはカーネルの塊である、といったところでしょうか。

今回することを3つにまとめるとこうなります:

  1. プログラムからカーネル生成
  2. カーネルに引数のセット
  3. カーネルの実行


拍手[0回]


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

プログラム

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

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

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


拍手[0回]


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

バッファ

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

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

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


拍手[0回]