다음을 통해 공유


IDMLDevice::CreateBindingTable 메서드(directml.h)

파이프라인에 리소스(예: 텐서)를 바인딩하는 데 사용할 수 있는 개체인 바인딩 테이블을 만듭니다.

바인딩 테이블은 제공된 설명자 핸들 및 개수를 사용하여 애플리케이션 관리 설명자 힙의 범위를 래핑합니다. 바인딩 테이블은 DIRECTML에서 CPUDescriptorHandle에서 지정한 오프셋의 설명자 힙에 설명자를 작성하고 GPUDescriptorHandle에서 지정한 오프셋의 설명자를 사용하여 해당 설명자를 파이프라인에 바인딩하여 리소스 바인딩을 관리하는 데 사용됩니다. DirectML이 힙에 설명자를 쓰는 순서는 지정되지 않으므로 애플리케이션은 바인딩 테이블로 래핑된 설명자를 덮어쓰지 않도록 주의해야 합니다.

제공된 CPU 및 GPU 설명자 핸들은 서로 다른 힙에서 제공될 수 있습니다. 단, 이 바인딩 테이블을 사용하여 실행하기 전에 CPU 설명자 핸들에 의해 참조된 전체 설명자 범위가 GPU 설명자 핸들에 의해 참조된 범위로 복사되었는지 확인하는 것은 사용자 애플리케이션의 책임입니다.

핸들을 제공하는 설명자 힙에는 D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV 유형이 있어야 합니다. 또한 GPUDescriptorHandle 에서 참조하는 힙은 셰이더 표시 설명자 힙이어야 합니다.

참조하는 모든 작업이 GPU에서 실행을 완료할 때까지 GPU 설명자 핸들에서 참조하는 힙을 삭제해서는 안 됩니다. 그러나 디스패치가 명령 목록에 기록되는 즉시 바인딩 테이블 자체를 다시 설정하거나 해제할 수 있습니다. ID3D12CommandListID3D12CommandAllocator 간의 관계와 마찬가지로 IDMLBindingTable은 설명자 핸들에서 참조하는 기본 메모리를 소유하지 않습니다. 대신 ID3D12DescriptorHeap 이 수행합니다. 따라서 바인딩 테이블을 사용하는 작업이 GPU에서 실행을 완료하기 전에 DirectML 바인딩 테이블을 다시 설정하거나 해제할 수 있습니다.

구문

HRESULT CreateBindingTable(
  [in, optional] const DML_BINDING_TABLE_DESC *desc,
                 REFIID                       riid,
  [out]          void                         **ppv
);

매개 변수

[in, optional] desc

형식: const DML_BINDING_TABLE_DESC*

바인딩 테이블 매개 변수를 포함하는 DML_BINDING_TABLE_DESC 대한 선택적 포인터입니다. 빈 바인딩 테이블을 나타내는 nullptr일 수 있습니다.

riid

형식: REFIID

ppv에서 반환하려는 인터페이스의 GUID(Globally Unique Identifier)에 대한 참조입니다. IDMLBindingTable의 GUID가 될 것으로 예상됩니다.

[out] ppv

형식: void**

바인딩 테이블에 대한 포인터를 수신하는 메모리 블록에 대한 포인터입니다. 생성된 바인딩 테이블을 나타내는 IDMLBindingTable에 대한 포인터의 주소입니다.

반환 값

형식: HRESULT

메서드가 성공하면 S_OK를 반환하고, 성공하지 않으면 HRESULT 오류 코드를 반환합니다.

요구 사항

   
대상 플랫폼 Windows
헤더 directml.h
라이브러리 DirectML.lib
DLL DirectML.dll

추가 정보

DirectML의 바인딩

IDMLDevice