Freigeben über


IDMLCommandRecorder::RecordDispatch-Methode (directml.h)

Zeichnet die Ausführung eines verteilbaren Objekts (ein Operatorinitialisierer oder einen kompilierten Operator) in einer Befehlsliste auf.

Diese Methode übermittelt die Ausführung nicht an die GPU. sie zeichnet sie lediglich in der Befehlsliste auf. Sie sind dafür verantwortlich, die Befehlsliste zu schließen und an die Direct3D 12-Befehlswarteschlange zu übermitteln.

Vor der Ausführung dieses Aufrufs auf der GPU müssen sich alle gebundenen Ressourcen im D3D12_RESOURCE_STATE_UNORDERED_ACCESS Zustand befinden, oder ein Zustand, der implizit auf D3D12_RESOURCE_STATE_UNORDERED_ACCESS zurückverteilbar ist, z. B. D3D12_RESOURCE_STATE_COMMON. Nach Abschluss dieses Aufrufs verbleiben die Ressourcen im D3D12_RESOURCE_STATE_UNORDERED_ACCESS Zustand. Die einzige Ausnahme hiervon besteht für Uploadheaps, die beim Ausführen eines Operatorinitialisierers gebunden sind, und während für einen oder mehrere Tensors das DML_TENSOR_FLAG_OWNED_BY_DML-Flag festgelegt ist. In diesem Fall müssen sich alle Upload heaps, die für die Eingabe gebunden sind, im D3D12_RESOURCE_STATE_GENERIC_READ Zustand befinden und in diesem Zustand verbleiben, wie es für alle Uploadheaps erforderlich ist.

Diese Methode setzt den folgenden Zustand in der Befehlsliste zurück.

  • Computestammsignatur
  • Pipelinestatus
Es wird kein anderer Befehlslistenstatus geändert.

Obwohl diese Methode eine Bindungstabelle verwendet, die die Ressourcen darstellt, die an die Pipeline gebunden werden sollen, legt sie nicht die Deskriptor-Heaps fest, die die Deskriptoren selbst enthalten. Daher ist Ihre Anwendung dafür verantwortlich, ID3D12GraphicsCommandList::SetDescriptorHeaps aufzurufen, um die richtigen Deskriptorheaps an die Pipeline zu binden.

Wenn DML_EXECUTION_FLAG_DESCRIPTORS_VOLATILE beim Kompilieren des Operators nicht festgelegt wurde, müssen alle Bindungen für die Bindungstabelle festgelegt werden, bevor RecordDispatch aufgerufen wird, andernfalls ist das Verhalten nicht definiert. Andernfalls kann _DESCRIPTORS_VOLATILE die Bindung von Ressourcen zurückgestellt werden, bis die Direct3D 12-Befehlsliste zur Ausführung an die Befehlswarteschlange übermittelt wird.

Diese Methode verhält sich logisch wie ein Aufruf von ID3D12GraphicsCommandList::D ispatch. Daher sind UAV-Barrieren (Unordered Access View) erforderlich, um eine korrekte Reihenfolge sicherzustellen, wenn Datenabhängigkeiten zwischen den Verteilvorgängen vorhanden sind. Diese Methode fügt keine UAV-Barrieren für Eingabe- oder Ausgaberessourcen ein. Ihre Anwendung muss sicherstellen, dass die richtigen UAV-Barrieren für alle Eingaben ausgeführt werden, wenn deren Inhalt von einer Upstream-Versendung abhängt, und von allen Ausgaben, wenn nachgelagerte Versendungen vorhanden sind, die von diesen Ausgaben abhängen.

Diese Methode enthält keine Verweise auf die übergebenen Schnittstellen. Es liegt in Ihrer Verantwortung, sicherzustellen, dass das IDMLDispatchable-Objekt erst freigegeben wird, wenn alle Dispatches, die es verwenden, die Ausführung auf der GPU abgeschlossen haben.

Syntax

void RecordDispatch(
  ID3D12CommandList *commandList,
  IDMLDispatchable  *dispatchable,
  IDMLBindingTable  *bindings
);

Parameter

commandList

Typ: ID3D12CommandList*

Ein Zeiger auf eine ID3D12CommandList-Schnittstelle , die die Befehlsliste zum Aufzeichnen der Ausführung darstellt. Die Befehlsliste muss geöffnet sein und den Typ D3D12_COMMAND_LIST_TYPE_DIRECT oder D3D12_COMMAND_LIST_TYPE_COMPUTE aufweisen.

dispatchable

Typ: IDMLDispatchable*

Ein Zeiger auf eine IDMLDispatchable-Schnittstelle , die das Objekt (ein Operatorinitialisierer oder ein kompilierter Operator) darstellt, dessen Ausführung in der Befehlsliste aufgezeichnet wird.

bindings

Typ: IDMLBindingTable*

Ein Zeiger auf eine IDMLBindingTable-Schnittstelle , die die Bindungen darstellt, die zum Ausführen des verteilbaren Objekts verwendet werden sollen. Wenn das flag DML_EXECUTION_FLAG_DESCRIPTORS_VOLATILE nicht festgelegt wurde, müssen Sie alle erforderlichen Bindungen ausfüllen, andernfalls tritt ein Fehler auf.

Rückgabewert

Keine

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile directml.h
Bibliothek DirectML.lib
DLL DirectML.dll

Weitere Informationen

Bindung in DirectML

IDMLCommandRecorder