From: Chris Duncan Date: Tue, 7 Jan 2025 22:33:28 +0000 (-0800) Subject: Implement device lost promise property to handle loss gracefully by reinitializing... X-Git-Url: https://zoso.dev/?a=commitdiff_plain;h=afc7535fc6d0c8d06b7568c5935ce343aecffd77;p=libnemo.git Implement device lost promise property to handle loss gracefully by reinitializing. Adjust try-catch error logging message and just retry search instead of reinitializing class. --- diff --git a/src/lib/workers/powgpu.ts b/src/lib/workers/powgpu.ts index 4105721..43b9359 100644 --- a/src/lib/workers/powgpu.ts +++ b/src/lib/workers/powgpu.ts @@ -408,6 +408,10 @@ export class PowGpu extends WorkerInterface { adapter.requestDevice() .then(device => { this.#device = device + this.#device.lost.then(loss => { + console.warn(`(${loss.reason}) ${loss.message}. Reinitializing device.`) + this.init() + }) // Create buffers for writing GPU calculations and reading from Javascript this.#uboBuffer = this.#device.createBuffer({ @@ -539,8 +543,7 @@ export class PowGpu extends WorkerInterface { await this.#cpuBuffer.mapAsync(GPUMapMode.READ) await this.#device.queue.onSubmittedWorkDone() } catch (err) { - console.warn(`Reinitializing after catching error ${err}`) - this.init() + console.warn(`Error getting data from GPU, retrying. ${err}`) return await this.search(hash, threshold) } const data = new DataView(this.#cpuBuffer.getMappedRange())