@@ -197,83 +197,81 @@ export const init = async (
197
197
}
198
198
199
199
if ( name === 'webgpu' ) {
200
- if ( ! BUILD_DEFS . USE_WEBGPU_EP ) {
201
- // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
202
- const webGpuBackendImpl = require ( './backend-webgpu' ) . WebGpuBackend ;
203
- const backend = new webGpuBackendImpl ( ) ;
204
- await backend . initialize ( env , gpuAdapter ! ) ;
200
+ // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
201
+ const webGpuBackendImpl = require ( './backend-webgpu' ) . WebGpuBackend ;
202
+ const backend = new webGpuBackendImpl ( ) ;
203
+ await backend . initialize ( env , gpuAdapter ! ) ;
205
204
206
- jsepInit ( 'webgpu' , [
207
- // backend
208
- backend ,
209
-
210
- // jsepAlloc()
211
- ( size : number ) => backend . alloc ( Number ( size ) ) ,
205
+ jsepInit ( 'webgpu' , [
206
+ // backend
207
+ backend ,
212
208
213
- // jsepFree ()
214
- ( ptr : number ) => backend . free ( ptr ) ,
209
+ // jsepAlloc ()
210
+ ( size : number ) => backend . alloc ( Number ( size ) ) ,
215
211
216
- // jsepCopy(src, dst, size, isSourceGpu)
217
- ( src : number , dst : number , size : number , isSourceGpu = false ) => {
218
- if ( isSourceGpu ) {
219
- LOG_DEBUG (
220
- 'verbose' ,
221
- ( ) => `[WebGPU] jsepCopyGpuToGpu: src=${ Number ( src ) } , dst=${ Number ( dst ) } , size=${ Number ( size ) } ` ,
222
- ) ;
223
- backend . memcpy ( Number ( src ) , Number ( dst ) ) ;
224
- } else {
225
- LOG_DEBUG (
226
- 'verbose' ,
227
- ( ) =>
228
- `[WebGPU] jsepCopyCpuToGpu: dataOffset=${ Number ( src ) } , gpuDataId=${ Number ( dst ) } , size=${ Number ( size ) } ` ,
229
- ) ;
230
- const data = module . HEAPU8 . subarray ( Number ( src >>> 0 ) , Number ( src >>> 0 ) + Number ( size ) ) ;
231
- backend . upload ( Number ( dst ) , data ) ;
232
- }
233
- } ,
212
+ // jsepFree()
213
+ ( ptr : number ) => backend . free ( ptr ) ,
234
214
235
- // jsepCopyAsync(src, dst, size)
236
- async ( gpuDataId : number , dataOffset : number , size : number ) : Promise < void > => {
215
+ // jsepCopy(src, dst, size, isSourceGpu)
216
+ ( src : number , dst : number , size : number , isSourceGpu = false ) => {
217
+ if ( isSourceGpu ) {
237
218
LOG_DEBUG (
238
219
'verbose' ,
239
- ( ) => `[WebGPU] jsepCopyGpuToCpu: gpuDataId =${ gpuDataId } , dataOffset =${ dataOffset } , size=${ size } ` ,
220
+ ( ) => `[WebGPU] jsepCopyGpuToGpu: src =${ Number ( src ) } , dst =${ Number ( dst ) } , size=${ Number ( size ) } ` ,
240
221
) ;
241
-
242
- await backend . download ( Number ( gpuDataId ) , ( ) =>
243
- module . HEAPU8 . subarray ( Number ( dataOffset ) >>> 0 , Number ( dataOffset + size ) >>> 0 ) ,
244
- ) ;
245
- } ,
246
-
247
- // jsepCreateKernel
248
- ( kernelType : string , kernelId : number , attribute : unknown ) =>
249
- backend . createKernel (
250
- kernelType ,
251
- Number ( kernelId ) ,
252
- attribute ,
253
- module . UTF8ToString ( module . _JsepGetNodeName ! ( Number ( kernelId ) ) ) ,
254
- ) ,
255
-
256
- // jsepReleaseKernel
257
- ( kernel : number ) => backend . releaseKernel ( kernel ) ,
258
-
259
- // jsepRun
260
- ( kernel : number , contextDataOffset : number , sessionHandle : number , errors : Array < Promise < string | null > > ) => {
222
+ backend . memcpy ( Number ( src ) , Number ( dst ) ) ;
223
+ } else {
261
224
LOG_DEBUG (
262
225
'verbose' ,
263
226
( ) =>
264
- `[WebGPU] jsepRun: sessionHandle =${ sessionHandle } , kernel =${ kernel } , contextDataOffset =${ contextDataOffset } ` ,
227
+ `[WebGPU] jsepCopyCpuToGpu: dataOffset =${ Number ( src ) } , gpuDataId =${ Number ( dst ) } , size =${ Number ( size ) } ` ,
265
228
) ;
266
- const context = new ComputeContextImpl ( module , backend , Number ( contextDataOffset ) ) ;
267
- return backend . computeKernel ( Number ( kernel ) , context , errors ) ;
268
- } ,
269
- // jsepCaptureBegin
270
- ( ) => backend . captureBegin ( ) ,
271
- // jsepCaptureEnd
272
- ( ) => backend . captureEnd ( ) ,
273
- // jsepReplay
274
- ( ) => backend . replay ( ) ,
275
- ] ) ;
276
- }
229
+ const data = module . HEAPU8 . subarray ( Number ( src >>> 0 ) , Number ( src >>> 0 ) + Number ( size ) ) ;
230
+ backend . upload ( Number ( dst ) , data ) ;
231
+ }
232
+ } ,
233
+
234
+ // jsepCopyAsync(src, dst, size)
235
+ async ( gpuDataId : number , dataOffset : number , size : number ) : Promise < void > => {
236
+ LOG_DEBUG (
237
+ 'verbose' ,
238
+ ( ) => `[WebGPU] jsepCopyGpuToCpu: gpuDataId=${ gpuDataId } , dataOffset=${ dataOffset } , size=${ size } ` ,
239
+ ) ;
240
+
241
+ await backend . download ( Number ( gpuDataId ) , ( ) =>
242
+ module . HEAPU8 . subarray ( Number ( dataOffset ) >>> 0 , Number ( dataOffset + size ) >>> 0 ) ,
243
+ ) ;
244
+ } ,
245
+
246
+ // jsepCreateKernel
247
+ ( kernelType : string , kernelId : number , attribute : unknown ) =>
248
+ backend . createKernel (
249
+ kernelType ,
250
+ Number ( kernelId ) ,
251
+ attribute ,
252
+ module . UTF8ToString ( module . _JsepGetNodeName ! ( Number ( kernelId ) ) ) ,
253
+ ) ,
254
+
255
+ // jsepReleaseKernel
256
+ ( kernel : number ) => backend . releaseKernel ( kernel ) ,
257
+
258
+ // jsepRun
259
+ ( kernel : number , contextDataOffset : number , sessionHandle : number , errors : Array < Promise < string | null > > ) => {
260
+ LOG_DEBUG (
261
+ 'verbose' ,
262
+ ( ) =>
263
+ `[WebGPU] jsepRun: sessionHandle=${ sessionHandle } , kernel=${ kernel } , contextDataOffset=${ contextDataOffset } ` ,
264
+ ) ;
265
+ const context = new ComputeContextImpl ( module , backend , Number ( contextDataOffset ) ) ;
266
+ return backend . computeKernel ( Number ( kernel ) , context , errors ) ;
267
+ } ,
268
+ // jsepCaptureBegin
269
+ ( ) => backend . captureBegin ( ) ,
270
+ // jsepCaptureEnd
271
+ ( ) => backend . captureEnd ( ) ,
272
+ // jsepReplay
273
+ ( ) => backend . replay ( ) ,
274
+ ] ) ;
277
275
} else {
278
276
const backend = new WebNNBackend ( env ) ;
279
277
jsepInit ( 'webnn' , [
0 commit comments