Bagikan melalui


Antarmuka IDMLBindingTable (directml.h)

Membungkus berbagai tumpukan deskriptor yang dikelola aplikasi, dan digunakan oleh DirectML untuk membuat pengikatan untuk sumber daya. Untuk membuat objek ini, panggil IDMLDevice::CreateBindingTable. Antarmuka IDMLBindingTable mewarisi dari IDMLDeviceChild.

Tabel pengikatan dibuat di atas berbagai handel deskriptor CPU dan GPU. Ketika metode IDMLBindingTable::Bind* dipanggil, DirectML menulis satu atau beberapa deskriptor ke dalam rentang deskriptor CPU. Saat Anda menggunakan tabel pengikatan selama panggilan ke IDMLCommandRecorder::RecordDispatch, DirectML mengikat deskriptor GPU yang sesuai ke alur.

Handel deskriptor CPU dan GPU tidak diperlukan untuk menunjuk ke entri yang sama dalam tumpukan deskriptor, namun kemudian merupakan tanggung jawab aplikasi Anda untuk memastikan bahwa seluruh rentang deskriptor yang dirujuk oleh handel deskriptor CPU disalin ke dalam rentang yang dirujuk oleh handel deskriptor GPU sebelum eksekusi menggunakan tabel pengikatan ini.

Aplikasi Anda bertanggung jawab untuk melakukan sinkronisasi yang benar antara pekerjaan CPU dan GPU yang menggunakan tabel pengikatan ini. Misalnya, Anda harus berhati-hati untuk tidak menimpa pengikatan yang dibuat oleh tabel pengikatan (misalnya, dengan memanggil Bind* lagi pada tabel pengikatan, atau dengan menimpa tumpukan deskriptor secara manual) sampai semua pekerjaan menggunakan tabel pengikatan telah menyelesaikan eksekusi pada GPU. Selain itu, karena tabel pengikatan tidak mempertahankan referensi pada tumpukan deskriptor yang ditulisnya, Anda tidak boleh melepaskan tumpukan deskriptor yang terlihat shader backing sampai semua bekerja menggunakan tabel pengikatan tersebut telah menyelesaikan eksekusi pada GPU.

Tabel pengikatan dikaitkan dengan tepat satu objek yang dapat dikirim (penginisialisasi operator, atau operator yang dikompilasi), dan mewakili pengikatan untuk objek tertentu. Namun, Anda dapat menggunakan kembali tabel pengikatan dengan memanggil IDMLBindingTable::Reset. Perhatikan bahwa karena tabel pengikatan tidak memiliki tumpukan deskriptor itu sendiri, aman untuk memanggil Reset dan menggunakan kembali tabel pengikatan untuk objek yang dapat dikirim yang berbeda bahkan sebelum eksekusi yang luar biasa telah selesai pada GPU.

Tabel pengikatan tidak menyimpan referensi yang kuat pada sumber daya apa pun yang terikat menggunakannya—aplikasi Anda harus memastikan bahwa sumber daya tidak dihapus saat masih digunakan oleh GPU.

Objek ini tidak aman untuk utas—aplikasi Anda tidak boleh memanggil metode pada tabel pengikatan secara bersamaan dari utas yang berbeda tanpa sinkronisasi.

Warisan

Antarmuka IDMLBindingTable mewarisi dari antarmuka IDMLDeviceChild.

Metode

Antarmuka IDMLBindingTable memiliki metode ini.

 
IDMLBindingTable::BindInputs

Mengikat sekumpulan sumber daya sebagai tensor input.
IDMLBindingTable::BindOutputs

Mengikat sekumpulan sumber daya sebagai tensor output.
IDMLBindingTable::BindPersistentResource

Mengikat buffer sebagai sumber daya persisten. Anda dapat menentukan ukuran rentang buffer yang diperlukan dengan memanggil IDMLDispatchable::GetBindingProperties.
IDMLBindingTable::BindTemporaryResource

Mengikat buffer untuk digunakan sebagai memori goresan sementara. Anda dapat menentukan ukuran rentang buffer yang diperlukan dengan memanggil IDMLDispatchable::GetBindingProperties.
IDMLBindingTable::Reset

Mengatur ulang tabel pengikatan untuk membungkus rentang deskriptor baru, berpotensi untuk operator atau penginisialisasi yang berbeda. Ini memungkinkan penggunaan kembali dinamis tabel pengikatan.

Persyaratan

Persyaratan Nilai
Target Platform Windows
Header directml.h

Lihat juga

Pengikatan di DirectML

IDMLDeviceChild