Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. Web-APIs
  3. GPUComputePassEncoder
  4. dispatchWorkgroups()

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

GPUComputePassEncoder: dispatchWorkgroups() Methode

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Sicherer Kontext: Diese Funktion ist nur insicheren Kontexten (HTTPS) in einigen oder allenunterstützenden Browsern verfügbar.

Hinweis: Diese Funktion ist inWeb Workers verfügbar.

DiedispatchWorkgroups()-Methode derGPUComputePassEncoder-Schnittstelle sendet ein spezifisches Raster von Arbeitsgruppen aus, um die Arbeit auszuführen, die von der aktuellenGPUComputePipeline durchgeführt wird (d.h. festgelegt überGPUComputePassEncoder.setPipeline()).

Syntax

js
dispatchWorkgroups(workgroupCountX)dispatchWorkgroups(workgroupCountX, workgroupCountY)dispatchWorkgroups(workgroupCountX, workgroupCountY, workgroupCountZ)

Parameter

workgroupCountX

Die X-Dimension des zu sendenden Arbeitsgruppenrasters.

workgroupCountYOptional

Die Y-Dimension des zu sendenden Arbeitsgruppenrasters. Wird dieser Parameter weggelassen, wirdworkgroupCountY auf 1 gesetzt.

workgroupCountZOptional

Die Z-Dimension des zu sendenden Arbeitsgruppenrasters. Wird dieser Parameter weggelassen, wirdworkgroupCountZ auf 1 gesetzt.

Hinweis:Die andispatchWorkgroups() undGPUComputePassEncoder.dispatchWorkgroupsIndirect() übergebenen X-, Y- und Z-Dimensionswerte sind die Anzahl der Arbeitsgruppen, die für jede Dimension gesendet werden, nicht die Anzahl der Shader-Invozierungen, die über jede Dimension hinweg ausgeführt werden. Dies entspricht dem Verhalten moderner nativer GPU-APIs, unterscheidet sich jedoch vom Verhalten von OpenCL. Das bedeutet, dass wenn einGPUShaderModule einen Einstiegspunkt mit@workgroup_size(4, 4) definiert und Arbeit mit dem AufrufpassEncoder.dispatchWorkgroups(8, 8); gesendet wird, der Einstiegspunkt insgesamt 1024-mal aufgerufen wird — Eine 4 x 4 Arbeitsgruppe wird 8-mal entlang beider Achsen X und Y gestartet.4 * 4 * 8 * 8 = 1024.

Rückgabewert

Keiner (Undefined).

Validierung

Die folgenden Kriterien müssen erfüllt sein, wenndispatchWorkgroups() aufgerufen wird, andernfalls wird einGPUValidationError generiert und derGPUComputePassEncoder wird ungültig:

  • workgroupCountX,workgroupCountY undworkgroupCountZ dürfen alle nicht größer sein als diemaxComputeWorkgroupsPerDimension-Grenze desGPUDevicelimits.

Beispiele

In unseremBasis-Compute-Demo werden mehrere Befehle über einenGPUCommandEncoder aufgezeichnet. Die meisten dieser Befehle stammen von demGPUComputePassEncoder, der überbeginComputePass() erstellt wurde.

Zu Beginn des Codes legen wir eine globale Puffergröße von 1000 fest. Beachten Sie auch, dass die Arbeitsgruppengröße im Shader auf 64 gesetzt ist.

js
const BUFFER_SIZE = 1000;// Compute shaderconst shader = `@group(0) @binding(0)var<storage, read_write> output: array<f32>;@compute @workgroup_size(64)...`;

Später im Code wird derdispatchWorkgroups()workgroupCountX Parameter basierend auf der globalen Puffergröße und der Shader-Arbeitsgruppenzahl festgelegt.

js
// …// Create GPUCommandEncoder to encode commands to issue to the GPUconst commandEncoder = device.createCommandEncoder();// Initiate render passconst passEncoder = commandEncoder.beginComputePass();// Issue commandspassEncoder.setPipeline(computePipeline);passEncoder.setBindGroup(0, bindGroup);passEncoder.dispatchWorkgroups(Math.ceil(BUFFER_SIZE / 64));// End the render passpassEncoder.end();// Copy output buffer to staging buffercommandEncoder.copyBufferToBuffer(  output,  0, // Source offset  stagingBuffer,  0, // Destination offset  BUFFER_SIZE,);// End frame by passing array of command buffers to command queue for executiondevice.queue.submit([commandEncoder.finish()]);// …

Spezifikationen

Specification
WebGPU
# dom-gpucomputepassencoder-dispatchworkgroups

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2025 Movatter.jp