Интерфейс IDMLBindingTable (directml.h)

Заключает диапазон кучи дескриптора, управляемого приложением, и используется DirectML для создания привязок для ресурсов. Чтобы создать этот объект, вызовите IDMLDevice::CreateBindingTable. Интерфейс IDMLBindingTable наследуется от IDMLDeviceChild.

Таблица привязок создается в диапазоне дескрипторов ЦП и GPU. При вызове метода IDMLBindingTable::Bind* DirectML записывает один или несколько дескрипторов в диапазон дескрипторов ЦП. При использовании таблицы привязки во время вызова IDMLCommandRecorder::RecordDispatch DirectML привязывает соответствующие дескрипторы GPU к конвейеру.

Дескрипторы ЦП и GPU не должны указывать на одни и те же записи в куче дескриптора дескриптора, однако приложение обязано убедиться, что весь диапазон дескрипторов, на который ссылается дескриптор дескриптора ЦП, копируется в диапазон, на который ссылается дескриптор GPU перед выполнением с помощью этой таблицы привязки.

Ваше приложение отвечает за правильную синхронизацию между работой ЦП и GPU, использующими эту таблицу привязки. Например, необходимо не перезаписывать привязки, созданные таблицей привязок (например, путем повторного вызова Bind* в таблице привязки или путем перезаписи кучи дескриптора вручную), пока вся работа с таблицей привязки не завершит выполнение в GPU. Кроме того, так как таблица привязки не поддерживает ссылку на кучу дескрипторов, в которую она записывается, не следует освобождать кучи дескрипторов, видимую резервным шейдером, пока вся работа с этой таблицей привязки не завершит выполнение в GPU.

Таблица привязки связана только с одним диспетчеризируемым объектом (инициализатором оператора или скомпилированным оператором) и представляет привязки для этого конкретного объекта. Однако таблицу привязок можно повторно использовать, вызвав IDMLBindingTable::Reset. Обратите внимание, что, так как таблица привязки не владеет самой кучи дескрипторов, можно вызвать Reset и повторно использовать таблицу привязки для другого диспетчеризируемых объектов еще до завершения невыполненных выполнений на GPU.

Таблица привязки не сохраняет надежных ссылок на ресурсы, связанные с ее помощью. Приложение должно гарантировать, что ресурсы не будут удалены при использовании GPU.

Этот объект не является потокобезопасным— приложение не должно вызывать методы в таблице привязки одновременно из разных потоков без синхронизации.

Наследование

Интерфейс IDMLBindingTable наследуется от интерфейса IDMLDeviceChild.

Методы

Интерфейс IDMLBindingTable содержит следующие методы.

 
IDMLBindingTable::BindInputs

Привязывает набор ресурсов в качестве входных тензоров.
IDMLBindingTable::BindOutputs

Привязывает набор ресурсов в качестве выходных тензоров.
IDMLBindingTable::BindPersistentResource

Привязывает буфер как постоянный ресурс. Вы можете определить требуемый размер этого диапазона буфера, вызвав IDMLDispatchable::GetBindingProperties.
IDMLBindingTable::BindTemporaryResource

Привязывает буфер для использования в качестве временной временной памяти. Вы можете определить требуемый размер этого диапазона буфера, вызвав IDMLDispatchable::GetBindingProperties.
IDMLBindingTable::Reset

Сбрасывает таблицу привязки, чтобы обертывать новый диапазон дескрипторов, потенциально для другого оператора или инициализатора. Это позволяет динамически повторно использовать таблицу привязки.

Требования

Требование Значение
Целевая платформа Windows
Header directml.h

См. также раздел

Привязывание в DirectML

IDMLDeviceChild