IDMLBindingTable::BindPersistentResource 方法 (directml.h)

将缓冲区绑定为永久性资源。 可以通过调用 IDMLDispatchable::GetBindingProperties 来确定此缓冲区范围的所需大小。

如果 运算符的绑定属性为永久性资源指定为零的大小,则可以向此方法提供 nullptr (这表示没有要绑定) 的资源。 否则,必须提供 DML_BINDING_TYPE_BUFFER 类型的绑定,其大小至少与 IDMLDispatchable::GetBindingProperties 返回的所需 PersistentResourceSize 一样大。

与临时资源不同,持久性资源的内容和生存期必须保留,只要编译的运算符这样做。 也就是说,如果某个运算符需要永久性资源,则应用程序必须在初始化期间提供该资源,以后还必须将它应用到该运算符的所有后续执行,且不能修改其内容。

DirectML 通常使用永久性资源来存储初始化运算符期间计算的,以及将来执行该运算符时重复使用的查找表或其他生存期较长的数据。

由于永久性资源的数据不透明,因此在初始化后,无法将其复制或移动到另一个缓冲区。

永久性资源仅在初始化运算符期间写入,此后不可变;保证所有后续执行不会写入永久性资源。

所提供的要绑定为永久性缓存区的缓冲区范围的起始偏移量必须与 DML_PERSISTENT_BUFFER_ALIGNMENT 对齐。 缓冲区底层的堆的类型必须是 D3D12_HEAP_TYPE_DEFAULT

语法

void BindPersistentResource(
  [in, optional] const DML_BINDING_DESC *binding
);

参数

[in, optional] binding

类型: const DML_BINDING_DESC*

指向 DML_BINDING_DESC 的可选指针,其中包含要绑定的张量资源的说明。

返回值

要求

要求
目标平台 Windows
标头 directml.h
Library DirectML.lib
DLL DirectML.dll

另请参阅

DirectML 中的绑定

IDMLBindingTable