IDMLBindingTable::BindTemporaryResource 方法 (directml.h)
绑定缓冲区以用作临时暂存内存。 可以通过调用 IDMLDispatchable::GetBindingProperties 来确定此缓冲区范围的所需大小。
如果 IDMLDispatchable 的绑定属性将临时资源的大小指定为零,则可以向此方法提供 nullptr (这表示没有要绑定) 的资源。 否则,必须提供 DML_BINDING_TYPE_BUFFER 类型的绑定,其大小至少与 IDMLDispatchable::GetBindingProperties 返回的所需 TemporaryResourceSize 一样大。
在执行运算符期间,临时资源通常用作暂存内存。 在执行之前,无需定义临时资源的内容。 例如,DirectML 不要求在绑定或执行运算符之前将临时资源的内容归零。
无需保留临时缓冲区的内容,在 GPU 上完成运算符或初始值设定项的执行后,应用程序可以随意覆盖或重复使用其内容。 这与永久性资源形成鲜明对比,永久性资源的内容必须保留,并在运算符的生存期内延长其生存期。
要作为临时缓冲区绑定的提供的缓冲区范围必须使其起始偏移量与 DML_TEMPORARY_BUFFER_ALIGNMENT对齐。 缓冲区底层的堆的类型必须是 D3D12_HEAP_TYPE_DEFAULT。
语法
void BindTemporaryResource(
[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 |