忍者ブログ

Memeplexes

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

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

コマンドキュー

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

コマンドキューとは、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();
    }
}

今後、このコマンドキューによって、デバイスを操作します。
たとえばデバイスのバッファに値を書き込め、バッファから値を読み出せ、値を使って並列計算せよ、といった具合です。

拍手[0回]

PR