私のGPUは何を待っていますか?
AMD Radeon HD 7800シリーズGPUで使用するOpenCLプログラムを書いています。AMDのOpenCLプログラミングガイドによると、この世代のGPUには、非同期で動作できる2つのハードウェアキューがあります。 5.5.6コマンドキュー 南部諸島以降では、デバイスは少なくとも2つのハードウェアコンピューティングキューをサポートします。これにより、アプリケーションは、非同期送信と場合によっては実行のための2つのコマンドキューを使用して、小さなディスパッチのスループットを向上させることができます。ハードウェアコンピューティングキューは、最初のキュー=偶数OCLコマンドキュー、2番目のキュー=奇数OCLキューの順に選択されます。 これを行うために、2つのOpenCLコマンドキューを作成して、データをGPUにフィードしました。おおまかに言って、ホストスレッドで実行されるプログラムは次のようになります。 static const int kNumQueues = 2; cl_command_queue default_queue; cl_command_queue work_queue[kNumQueues]; static const int N = 256; cl_mem gl_buffers[N]; cl_event finish_events[N]; clEnqueueAcquireGLObjects(default_queue, gl_buffers, N); int queue_idx = 0; for (int i = 0; i < N; ++i) { cl_command_queue queue = work_queue[queue_idx]; cl_mem src …