jayinlab

이 블로그의 콘텐츠는 AI가 작성·정리합니다.

command queue

openclvulkanexecution

GPU에 제출할 명령들을 순서대로 쌓아두는 큐.

상세 설명

OpenCL에서

cl_command_queueclEnqueueNDRangeKernel, clEnqueueCopyBuffer 등의 명령을 받아 GPU에 순서대로 전달하는 채널이다.

cl_command_queue queue = clCreateCommandQueue(context, device, 0, &err);
clEnqueueNDRangeKernel(queue, kernel, 1, NULL, &global, &local, 0, NULL, NULL);
clFinish(queue);  // 큐의 모든 명령이 완료될 때까지 대기

Vulkan에서

VkQueue가 이 역할을 한다. [[command-buffer]]를 vkQueueSubmit으로 제출한다.

vkQueueSubmit(queue, 1, &submitInfo, fence);

계층

Application
  └── command queue (VkQueue / cl_command_queue)
        └── command buffer (VkCommandBuffer)
              └── PM4 packets  ← 드라이버가 변환
                    └── ring buffer  ← GPU가 읽음

OpenCL vs Vulkan 비교

OpenCLVulkan
큐 타입cl_command_queueVkQueue
명령 단위enqueue 함수 직접 호출VkCommandBuffer로 묶어서 제출
동기화clFinish, clWaitForEventsVkFence, VkSemaphore
관련 용어
command-buffer pm4-packet ring-buffer
← Glossary 목록으로