GitHub Actions commited on
Commit
e261d14
·
1 Parent(s): adbad62

sync from abhijitramesh/webgpu-bench@e5c33f18bc

Browse files
build/asyncify/build-info.json CHANGED
@@ -2,5 +2,5 @@
2
  "llamaCppCommit": "f22c8021d213567942a3d0134692e70f02f28f3a",
3
  "llamaCppDescribe": "b8981-3-gf22c8021d",
4
  "dawnTag": "v20260317.182325",
5
- "builtAt": "2026-05-01T09:06:07Z"
6
  }
 
2
  "llamaCppCommit": "f22c8021d213567942a3d0134692e70f02f28f3a",
3
  "llamaCppDescribe": "b8981-3-gf22c8021d",
4
  "dawnTag": "v20260317.182325",
5
+ "builtAt": "2026-05-07T20:52:31Z"
6
  }
build/jspi/build-info.json CHANGED
@@ -2,5 +2,5 @@
2
  "llamaCppCommit": "f22c8021d213567942a3d0134692e70f02f28f3a",
3
  "llamaCppDescribe": "b8981-3-gf22c8021d",
4
  "dawnTag": "v20260317.182325",
5
- "builtAt": "2026-05-01T09:02:12Z"
6
  }
 
2
  "llamaCppCommit": "f22c8021d213567942a3d0134692e70f02f28f3a",
3
  "llamaCppDescribe": "b8981-3-gf22c8021d",
4
  "dawnTag": "v20260317.182325",
5
+ "builtAt": "2026-05-07T20:49:44Z"
6
  }
js/run/controller.js CHANGED
@@ -1282,6 +1282,7 @@ async function onRunClick({ studyMode = false } = {}) {
1282
  'Mobile device — sequential downloads (no parallel prefetch), ' +
1283
  'forced eviction after each variant, ' +
1284
  `${(MOBILE_YIELD_BETWEEN_RUNS_MS / 1000).toFixed(1)} s cooldown between runs ` +
 
1285
  'so iOS can release WebGPU buffers before the next load.',
1286
  );
1287
  if (state.budget?.source) {
@@ -1370,8 +1371,22 @@ async function onRunClick({ studyMode = false } = {}) {
1370
  const depthsToRun = (studyMode && baseDepth > 0) ? [0, baseDepth] : [baseDepth];
1371
 
1372
  let sharedCpu = null;
1373
- for (const nDepth of depthsToRun) {
1374
  if (state.aborted) break;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1375
  const start = performance.now();
1376
  const variantResult = await runVariantWithIterations(v, row, {
1377
  nDepth,
 
1282
  'Mobile device — sequential downloads (no parallel prefetch), ' +
1283
  'forced eviction after each variant, ' +
1284
  `${(MOBILE_YIELD_BETWEEN_RUNS_MS / 1000).toFixed(1)} s cooldown between runs ` +
1285
+ '(and between depth passes in study mode) ' +
1286
  'so iOS can release WebGPU buffers before the next load.',
1287
  );
1288
  if (state.budget?.source) {
 
1371
  const depthsToRun = (studyMode && baseDepth > 0) ? [0, baseDepth] : [baseDepth];
1372
 
1373
  let sharedCpu = null;
1374
+ for (let di = 0; di < depthsToRun.length; di++) {
1375
  if (state.aborted) break;
1376
+ // Inter-depth cooldown — mirrors the inter-variant sleep below. In
1377
+ // study mode each variant spawns a fresh worker for d=0 and another
1378
+ // for d=N back-to-back; without a gap, the second worker requests a
1379
+ // GPUDevice and a larger KV cache while iOS Metal is still draining
1380
+ // the just-terminated first worker. On long study queues this is
1381
+ // the seam where cumulative pressure tips the tab into Jetsam,
1382
+ // typically on the last (largest) variant.
1383
+ if (di > 0) {
1384
+ const cooldownMs = isMobileDevice() ? MOBILE_YIELD_BETWEEN_RUNS_MS : YIELD_BETWEEN_RUNS_MS;
1385
+ row.setStatus('cooldown', `${(cooldownMs / 1000).toFixed(1)}s before d=${depthsToRun[di]}`);
1386
+ await sleep(cooldownMs);
1387
+ if (state.aborted) break;
1388
+ }
1389
+ const nDepth = depthsToRun[di];
1390
  const start = performance.now();
1391
  const variantResult = await runVariantWithIterations(v, row, {
1392
  nDepth,