Интерфейс 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 |