| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/API/GPUComputePassEncoder/dispatchWorkgroups | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Want more browser support for this feature? Tell us why.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen untersttzenden Browsern verfgbar.
Hinweis: Diese Funktion ist in Web Workers verfgbar.
Die dispatchWorkgroups()-Methode des GPUComputePassEncoder-Interfaces fhrt ein spezifisches Raster von Arbeitsgruppen aus, um die Arbeit zu erledigen, die von der aktuellen GPUComputePipeline ausgefhrt wird (d.h. gesetzt ber GPUComputePassEncoder.setPipeline()).
dispatchWorkgroups(workgroupCountX)
dispatchWorkgroups(workgroupCountX, workgroupCountY)
dispatchWorkgroups(workgroupCountX, workgroupCountY, workgroupCountZ)
workgroupCountXDie X-Dimension des Rasters der Arbeitsgruppen, die ausgefhrt werden sollen.
workgroupCountY OptionalDie Y-Dimension des Rasters der Arbeitsgruppen, die ausgefhrt werden sollen. Wenn weggelassen, wird workgroupCountY standardmig auf 1 gesetzt.
workgroupCountZ OptionalDie Z-Dimension des Rasters der Arbeitsgruppen, die ausgefhrt werden sollen. Wenn weggelassen, wird workgroupCountZ standardmig auf 1 gesetzt.
Hinweis:
Die in dispatchWorkgroups() und GPUComputePassEncoder.dispatchWorkgroupsIndirect() bergebenen Dimensionen X, Y und Z sind die Anzahl der Arbeitsgruppen, die fr jede Dimension ausgefhrt werden sollen, nicht die Anzahl der Shader-Aufrufe, die in jeder Dimension ausgefhrt werden sollen. Dies entspricht dem Verhalten moderner nativer GPU-APIs, unterscheidet sich jedoch vom Verhalten von OpenCL. Das bedeutet, wenn ein GPUShaderModule einen Einstiegspunkt mit @workgroup_size(4, 4) definiert und Arbeit mit dem Aufruf passEncoder.dispatchWorkgroups(8, 8); an ihn bergeben wird, wird der Einstiegspunkt insgesamt 1024 Mal aufgerufen Ein 4 x 4-Arbeitsgruppe wird 8 Mal entlang der X- und Y-Achsen ausgefhrt. 4 * 4 * 8 * 8 = 1024.
Keiner (undefined).
Die folgenden Kriterien mssen beim Aufruf von dispatchWorkgroups() erfllt sein, andernfalls wird ein GPUValidationError erzeugt und der GPUComputePassEncoder wird ungltig:
workgroupCountX, workgroupCountY und workgroupCountZ mssen alle kleiner oder gleich dem maxComputeWorkgroupsPerDimension Limit des GPUDevice sein.In unserem grundlegenden Compute-Demo werden mehrere Befehle ber einen GPUCommandEncoder aufgezeichnet. Die meisten dieser Befehle stammen vom GPUComputePassEncoder, der ber beginComputePass() erstellt wurde.
Am Anfang des Codes setzen wir eine globale Puffergroe von 1000. Beachten Sie auch, dass die Arbeitsgruppengre im Shader auf 64 gesetzt ist.
const BUFFER_SIZE = 1000;
// Compute shader
const shader = `
@group(0) @binding(0)
var<storage, read_write> output: array<f32>;
@compute @workgroup_size(64)
...
`;
Spter im Code wird der Parameter dispatchWorkgroups() workgroupCountX basierend auf der globalen Puffergroe und der Arbeitsgruppenzahl des Shaders gesetzt.
//
// Create GPUCommandEncoder to encode commands to issue to the GPU
const commandEncoder = device.createCommandEncoder();
// Initiate compute pass
const passEncoder = commandEncoder.beginComputePass();
// Issue commands
passEncoder.setPipeline(computePipeline);
passEncoder.setBindGroup(0, bindGroup);
passEncoder.dispatchWorkgroups(Math.ceil(BUFFER_SIZE / 64));
// End the render pass
passEncoder.end();
// Copy output buffer to staging buffer
commandEncoder.copyBufferToBuffer(
output,
0, // Source offset
stagingBuffer,
0, // Destination offset
BUFFER_SIZE,
);
// End frame by passing array of command buffers to command queue for execution
device.queue.submit([commandEncoder.finish()]);
//
| Spezifikation |
|---|
| WebGPU # dom-gpucomputepassencoder-dispatchworkgroups |
GPUComputePassEncoderGPUGPUAdapterGPUAdapterInfoGPUBindGroupGPUBindGroupLayoutGPUBufferGPUCanvasContextGPUCommandBufferGPUCommandEncoderGPUCompilationInfoGPUCompilationMessageGPUComputePipelineGPUDeviceGPUDeviceLostInfoGPUErrorGPUExternalTextureGPUInternalErrorGPUOutOfMemoryErrorGPUPipelineErrorGPUPipelineLayoutGPUQuerySetGPUQueueGPURenderBundleGPURenderBundleEncoderGPURenderPassEncoderGPURenderPipelineGPUSamplerGPUShaderModuleGPUSupportedFeaturesGPUSupportedLimitsGPUTextureGPUTextureViewGPUUncapturedErrorEventGPUValidationErrorHTMLCanvasElement.getContext()Navigator.gpuWorkerNavigator.gpuDer Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |