Skip to content

Commit c39d765

Browse files
committed
Update (base update)
[ghstack-poisoned]
2 parents b264d32 + af92b60 commit c39d765

2 files changed

Lines changed: 15 additions & 26 deletions

File tree

backends/webgpu/runtime/WebGPUGraph.cpp

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@
1818
#include <cstring>
1919
#include <stdexcept>
2020

21-
namespace executorch {
22-
namespace backends {
23-
namespace webgpu {
21+
namespace executorch::backends::webgpu {
2422

2523
// vkgraph namespace is declared at global scope in the generated FlatBuffer
2624
// header
@@ -396,21 +394,20 @@ void WebGPUGraph::execute() {
396394
WGPUCommandEncoder encoder =
397395
wgpuDeviceCreateCommandEncoder(device_, &enc_desc);
398396

399-
WGPUComputePassDescriptor pass_desc = {};
400-
WGPUComputePassEncoder pass =
401-
wgpuCommandEncoderBeginComputePass(encoder, &pass_desc);
402-
397+
// One pass per dispatch: enforces storage RAW ordering across deps.
403398
for (const auto& dispatch : dispatches_) {
399+
WGPUComputePassDescriptor pass_desc = {};
400+
WGPUComputePassEncoder pass =
401+
wgpuCommandEncoderBeginComputePass(encoder, &pass_desc);
404402
wgpuComputePassEncoderSetPipeline(pass, dispatch.pipeline);
405403
wgpuComputePassEncoderSetBindGroup(
406404
pass, 0, dispatch.bind_group, 0, nullptr);
407405
wgpuComputePassEncoderDispatchWorkgroups(
408406
pass, dispatch.workgroup_count_x, 1, 1);
407+
wgpuComputePassEncoderEnd(pass);
408+
wgpuComputePassEncoderRelease(pass);
409409
}
410410

411-
wgpuComputePassEncoderEnd(pass);
412-
wgpuComputePassEncoderRelease(pass);
413-
414411
for (const auto& copy : output_copies_) {
415412
wgpuCommandEncoderCopyBufferToBuffer(
416413
encoder, copy.src_buffer, 0, copy.staging_buffer, 0, copy.nbytes);
@@ -439,21 +436,19 @@ void WebGPUGraph::execute() {
439436
WGPUCommandEncoder encoder =
440437
wgpuDeviceCreateCommandEncoder(device_, &enc_desc);
441438

442-
WGPUComputePassDescriptor pass_desc = {};
443-
WGPUComputePassEncoder pass =
444-
wgpuCommandEncoderBeginComputePass(encoder, &pass_desc);
445-
446439
for (size_t i = start; i < end; i++) {
440+
WGPUComputePassDescriptor pass_desc = {};
441+
WGPUComputePassEncoder pass =
442+
wgpuCommandEncoderBeginComputePass(encoder, &pass_desc);
447443
wgpuComputePassEncoderSetPipeline(pass, dispatches_[i].pipeline);
448444
wgpuComputePassEncoderSetBindGroup(
449445
pass, 0, dispatches_[i].bind_group, 0, nullptr);
450446
wgpuComputePassEncoderDispatchWorkgroups(
451447
pass, dispatches_[i].workgroup_count_x, 1, 1);
448+
wgpuComputePassEncoderEnd(pass);
449+
wgpuComputePassEncoderRelease(pass);
452450
}
453451

454-
wgpuComputePassEncoderEnd(pass);
455-
wgpuComputePassEncoderRelease(pass);
456-
457452
if (end == n) {
458453
for (const auto& copy : output_copies_) {
459454
wgpuCommandEncoderCopyBufferToBuffer(
@@ -561,6 +556,4 @@ WebGPUMemoryStats WebGPUGraph::memory_stats() const {
561556
return stats;
562557
}
563558

564-
} // namespace webgpu
565-
} // namespace backends
566-
} // namespace executorch
559+
} // namespace executorch::backends::webgpu

backends/webgpu/runtime/WebGPUGraph.h

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@
1717

1818
#include <executorch/runtime/core/named_data_map.h>
1919

20-
namespace executorch {
21-
namespace backends {
22-
namespace webgpu {
20+
namespace executorch::backends::webgpu {
2321

2422
struct WebGPUTensor {
2523
WGPUBuffer buffer = nullptr;
@@ -199,6 +197,4 @@ class WebGPUGraph {
199197
size_t uniform_buffer_bytes_ = 0;
200198
};
201199

202-
} // namespace webgpu
203-
} // namespace backends
204-
} // namespace executorch
200+
} // namespace executorch::backends::webgpu

0 commit comments

Comments
 (0)