[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
プログラミング、3DCGとその他いろいろについて
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
こちらも合わせてお読みください。
今回はコマンドキューの生成と破棄を行います。
残念ながら前回に引き続き今回もサンプルプログラムは画面に何も出力しません。
コマンドキューとは、GPUに対する操作をカプセル化したオブジェクトです。
たとえば、GPU内のバッファにデータを書き込んだりそこから読み込んだり、データに対して計算を行ったりといった感じです。
オリジナルのOpenCLではこういったメソッドのほとんど全てが非同期でした。
おそらくClooもそうでしょう。
コマンドキューの生成にはComputeCommandQueueのコンストラクタが使えるようです。
using Cloo; using System.Linq; class Program { static void Main() { ComputePlatform platform = ComputePlatform.Platforms[0]; ComputeDevice[] devices = platform .Devices .Where(d => d.Type == ComputeDeviceTypes.Gpu) .ToArray(); ComputeContext context = new ComputeContext( devices, new ComputeContextPropertyList(platform), null, System.IntPtr.Zero ); ComputeCommandQueue commandQueue = new ComputeCommandQueue( context, devices[0], ComputeCommandQueueFlags.None ); commandQueue.Dispose(); context.Dispose(); } }
今後、このコマンドキューによって、デバイスを操作します。
たとえばデバイスのバッファに値を書き込め、バッファから値を読み出せ、値を使って並列計算せよ、といった具合です。