mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-05-25 22:26:24 +00:00
[js/webgpu] Fix issue of timestamp query (#19258)
When we enable webgpu profiling mode between session.create and session.run, current implementation has a problem to create querySet (and also queryResolveBuffer) if we share the commandEncoder with inputs upload. This PR fixes this by moving the querySet creation to the place we set queryType.
This commit is contained in:
parent
bc54ad3f03
commit
591f90c0b9
1 changed files with 10 additions and 10 deletions
|
|
@ -222,16 +222,6 @@ export class WebGpuBackend {
|
|||
getCommandEncoder(): GPUCommandEncoder {
|
||||
if (!this.commandEncoder) {
|
||||
this.commandEncoder = this.device.createCommandEncoder();
|
||||
|
||||
if (this.queryType !== 'none' && typeof this.querySet === 'undefined') {
|
||||
this.querySet = this.device.createQuerySet({
|
||||
type: 'timestamp',
|
||||
count: this.maxDispatchNumber * 2,
|
||||
});
|
||||
this.queryResolveBuffer = this.device.createBuffer(
|
||||
// eslint-disable-next-line no-bitwise
|
||||
{size: this.maxDispatchNumber * 2 * 8, usage: GPUBufferUsage.COPY_SRC | GPUBufferUsage.QUERY_RESOLVE});
|
||||
}
|
||||
}
|
||||
return this.commandEncoder;
|
||||
}
|
||||
|
|
@ -654,6 +644,16 @@ export class WebGpuBackend {
|
|||
} else if (this.device.features.has('timestamp-query')) {
|
||||
this.queryType = 'at-passes';
|
||||
}
|
||||
|
||||
if (this.queryType !== 'none' && typeof this.querySet === 'undefined') {
|
||||
this.querySet = this.device.createQuerySet({
|
||||
type: 'timestamp',
|
||||
count: this.maxDispatchNumber * 2,
|
||||
});
|
||||
this.queryResolveBuffer = this.device.createBuffer(
|
||||
// eslint-disable-next-line no-bitwise
|
||||
{size: this.maxDispatchNumber * 2 * 8, usage: GPUBufferUsage.COPY_SRC | GPUBufferUsage.QUERY_RESOLVE});
|
||||
}
|
||||
}
|
||||
}
|
||||
onRunStart(): void {
|
||||
|
|
|
|||
Loading…
Reference in a new issue