(directml.h) IDMLBindingTable 介面
包裝應用程式管理描述元堆積的範圍,並供 DirectML 用來建立資源的系結。 若要建立此物件,請呼叫 IDMLDevice::CreateBindingTable。 IDMLBindingTable 介面繼承自 IDMLDeviceChild。
系結數據表是在一系列CPU和 GPU 描述元句柄上建立的。 呼叫IDMLBindingTable::Bind* 方法時,DirectML 會將一或多個描述項寫入 CPU 描述項的範圍。 當您在呼叫 IDMLCommandRecorder::RecordDispatch 期間使用系結數據表時,DirectML 會將對應的 GPU 描述元系結至管線。
CPU 和 GPU 描述元句柄不需要指向描述元堆積中的相同專案,不過,您的應用程式必須負責確保 CPU 描述元句柄所參考的整個描述元範圍會複製到使用此系結數據表執行之前 GPU 描述元句柄所參考的範圍。
您的應用程式必須負責執行使用此系結表之 CPU 與 GPU 工作之間的正確同步處理。 例如,您必須小心不要覆寫系結表所建立的系結 (例如在系結數據表上再次呼叫 Bind* ,或是手動覆寫描述元堆積) ,直到使用系結表的所有工作都已完成 GPU 上的執行為止。 此外,由於系結數據表不會維護其寫入之描述元堆積上的參考,因此您不得釋放支援著色器可見描述元堆積,直到使用該系結數據表的所有工作都已完成 GPU 上的執行。
系結數據表與運算元初始化表達式 (一個可分派對象或編譯的運算符) 關聯,並代表該特定對象的系結。 不過,您可以呼叫 IDMLBindingTable::Reset來重複使用系結數據表。 請注意,由於系結數據表本身沒有描述項堆積本身,因此即使在 GPU 上完成任何未完成的執行之前,仍可安全地呼叫 Reset 並重複使用系結數據表給不同的可分派物件。
系結數據表不會對使用它所系結的任何資源保留強式參考,您的應用程式必須確保不會刪除資源,同時仍供 GPU 使用。
此物件不是安全線程,您的應用程式不得從不同線程同時呼叫系結數據表上的方法,而不需要同步處理。
繼承
IDMLBindingTable 介面繼承自 IDMLDeviceChild 介面。
方法
IDMLBindingTable 介面具有這些方法。
IDMLBindingTable::BindInputs 將一組資源系結為輸入張量。 |
IDMLBindingTable::BindOutputs 將一組資源系結為輸出張量。 |
IDMLBindingTable::BindPersistentResource 將緩衝區系結為永續性資源。 您可以呼叫 IDMLDispatchable::GetBindingProperties 來判斷此緩衝區範圍的必要大小。 |
IDMLBindingTable::BindTemporaryResource 系結緩衝區,以作為暫存記憶體使用。 您可以呼叫 IDMLDispatchable::GetBindingProperties 來判斷此緩衝區範圍的必要大小。 |
IDMLBindingTable::Reset 重設系結數據表以包裝新的描述元範圍,可能適用於不同的運算符或初始化表達式。 這允許動態重複使用系結數據表。 |
規格需求
需求 | 值 |
---|---|
目標平台 | Windows |
標頭 | directml.h |