()
| 995 | } |
| 996 | |
| 997 | async getQueryTime(): Promise<number> { |
| 998 | if (!this.supportTimestampQuery) { |
| 999 | return 0; |
| 1000 | } |
| 1001 | |
| 1002 | if (this.queryResolveBuffer == null) { |
| 1003 | this.queryResolveBuffer = this.bufferManager.acquireBuffer( |
| 1004 | this.querySetCount * 8, |
| 1005 | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST | |
| 1006 | GPUBufferUsage.QUERY_RESOLVE); |
| 1007 | } |
| 1008 | this.commandEncoder.resolveQuerySet( |
| 1009 | this.querySet, 0, this.querySetCount, this.queryResolveBuffer, 0); |
| 1010 | |
| 1011 | const queryStagingBuffer = this.bufferManager.acquireBuffer( |
| 1012 | this.querySetCount * 8, |
| 1013 | GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST); |
| 1014 | |
| 1015 | this.commandEncoder.copyBufferToBuffer( |
| 1016 | this.queryResolveBuffer, 0, queryStagingBuffer, 0, |
| 1017 | this.querySetCount * 8); |
| 1018 | |
| 1019 | this.submitQueue(); |
| 1020 | |
| 1021 | await queryStagingBuffer.mapAsync(GPUMapMode.READ); |
| 1022 | const arrayBuffer = new BigUint64Array(queryStagingBuffer.getMappedRange()); |
| 1023 | const time = Number(arrayBuffer[1] - arrayBuffer[0]) / 1000000; |
| 1024 | queryStagingBuffer.unmap(); |
| 1025 | this.bufferManager.releaseBuffer(queryStagingBuffer); |
| 1026 | return time; |
| 1027 | } |
| 1028 | |
| 1029 | shouldExecuteOnCPU( |
| 1030 | inputs: TensorInfo[], |
no test coverage detected