DirectX 12는 그래픽 ( "직접"이라고 함), 계산 또는 복사 작업에 대한 명령 대기열을 노출합니다. 제공된 기능면에서 각 기능은 다음 기능의 상위 집합입니다. 명세는 명령 대기열을 디바이스에서 동시에 실행될 수있는 상태. 그러나 API는 어떤 식 으로든 명령 대기열 수를 제한하지 않습니다 (적어도 제한은 없습니다).
분명히, 다른 벤더는 이것을 매우 다르게 처리합니다.
- 인텔은 최근 프레젠테이션 (슬라이드 23)에서 현재 GPU가 그래픽 및 컴퓨팅을 병렬로 처리 할 수없고 복사 엔진의 처리량이 약하다고 말합니다. 여러 그래픽 / 컴퓨 트 큐를 사용하지 말 것을 권고합니다.
- AMD는 오래 전에 맨틀과 현재 세대 콘솔부터 큐 / "비동기 성 쉐이더"사용을 알리기 위해 시작했습니다. 컴퓨팅 및 그래픽 작업을 병렬로 실행하여 상당한 성능 향상을 확인하는 일부 개발자 ( 예 ) 도 있습니다 .
- 최근 하드웨어에서 비동기 셰이더를 지원하지 않는 엔비디아에 대한 약간의 소문 이 있습니다. 별도의 그래픽 및 컴퓨팅 큐를 한 번에 사용하면 드라이버 에뮬레이션을 나타내는 것이 느려집니다. 반면 CUDA는 병렬 복사 작업을 오랫동안 지원해 왔기 때문에 DMA 엔진이 독립적으로 작동 할 수 있습니다.
CommandLists를 단일 CommandQueues 대신 여러 CommandQueues에 커밋하는 것이 의미가 있는지 런타임에 결정할 방법이 있습니까? (이전 사례에는 많은 엔지니어링 오버 헤드가 포함되지 않음)
컴퓨팅 / 그래픽 작업과 병렬로 메모리 작업을 수행하는 것이 유용한 방법을 쉽게 알 수 있지만, 여러 컴퓨팅 및 그래픽 프로세스를 병렬로 실행하는 것은 불필요하게 복잡합니다 (주요 성능 이점이없는 한). 어쨌든 이것이 어떻게 성능을 크게 향상시킬 수 있는지는 분명하지 않습니다. 많은 작은 순차적 작업이 충분한 GPU 부하를 생성 할 수없는 병리학적인 경우를 제외하고.