diff --git "a/scripts/test-bounds-engine.mjs" "b/scripts/test-bounds-engine.mjs" --- "a/scripts/test-bounds-engine.mjs" +++ "b/scripts/test-bounds-engine.mjs" @@ -577,7 +577,7 @@ function assertProfiledReference({ single, batch, aggregate, - dennard, + memoryPowerCeiling, }) { const result = profiled(repo, hardwareId); assert.equal(result.status_code, status, `${repo} on ${hardwareId} status`); @@ -598,7 +598,12 @@ function assertProfiledReference({ 0.01, `${repo} on ${hardwareId} aggregate`, ); - assertNear(result.dennard, dennard, 0.01, `${repo} on ${hardwareId} Dennard`); + assertNear( + result.memoryPowerCeiling, + memoryPowerCeiling, + 0.01, + `${repo} on ${hardwareId} memory-power ceiling`, + ); } { @@ -650,10 +655,10 @@ function assertProfiledReference({ "Nemotron Mini 4B DGX Spark single-session throughput", ); assertNear( - dgx.dennard, + dgx.memoryPowerCeiling, 341.476954583, 0.000000001, - "Nemotron Mini 4B DGX Spark Dennard bound", + "Nemotron Mini 4B DGX Spark memory-power bound", ); const m5 = profiled( @@ -735,10 +740,10 @@ function assertProfiledReference({ "Nemotron Labs Diffusion 3B Base DGX Spark AR single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 419.9065567868347, 0.000000001, - "Nemotron Labs Diffusion 3B Base DGX Spark AR Dennard bound", + "Nemotron Labs Diffusion 3B Base DGX Spark AR memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 6); @@ -761,10 +766,10 @@ function assertProfiledReference({ "Nemotron Labs Diffusion 3B Base M5 Max AR per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 944.4052229564708, 0.000000001, - "Nemotron Labs Diffusion 3B Base M5 Max AR Dennard bound", + "Nemotron Labs Diffusion 3B Base M5 Max AR memory-power bound", ); } @@ -776,7 +781,7 @@ for (const reference of [ single: 127.412508, batch: 81, aggregate: 1631.816785, - dennard: 38243.798843, + memoryPowerCeiling: 38243.798843, }, { repo: "Andycurrent/Gemma-3-1B-it-GLM-4.7-Flash-Heretic-Uncensored-Thinking_GGUF", @@ -785,7 +790,7 @@ for (const reference of [ single: 286.561464, batch: 201, aggregate: 4024.730831, - dennard: 86013.525603, + memoryPowerCeiling: 86013.525603, }, { repo: "empero-ai/Qwythos-9B-Claude-Mythos-5-1M-GGUF", @@ -794,7 +799,7 @@ for (const reference of [ single: 44.415576, batch: 7, aggregate: 149.889695, - dennard: 1858.894042, + memoryPowerCeiling: 1858.894042, }, { repo: "empero-ai/Qwythos-9B-Claude-Mythos-5-1M-GGUF", @@ -803,7 +808,7 @@ for (const reference of [ single: 99.894372, batch: 23, aggregate: 465.196507, - dennard: 4180.809311, + memoryPowerCeiling: 4180.809311, }, { repo: "rippertnt/HyperCLOVAX-SEED-Text-Instruct-1.5B-Q4_K_M-GGUF", @@ -812,7 +817,7 @@ for (const reference of [ single: 65.811037, batch: 4, aggregate: 80.380264, - dennard: 3292.755268, + memoryPowerCeiling: 3292.755268, }, { repo: "rippertnt/HyperCLOVAX-SEED-Text-Instruct-1.5B-Q4_K_M-GGUF", @@ -821,7 +826,7 @@ for (const reference of [ single: 148.014566, batch: 9, aggregate: 188.510195, - dennard: 7405.684009, + memoryPowerCeiling: 7405.684009, }, { repo: "lmg-anon/vntl-llama3-8b-v2-gguf", @@ -830,7 +835,7 @@ for (const reference of [ single: 28.561605, batch: 1, aggregate: 28.561605, - dennard: 443.696744, + memoryPowerCeiling: 443.696744, }, { repo: "lmg-anon/vntl-llama3-8b-v2-gguf", @@ -839,7 +844,7 @@ for (const reference of [ single: 64.237456, batch: 6, aggregate: 120.668961, - dennard: 997.911357, + memoryPowerCeiling: 997.911357, }, { repo: "Qwen/Qwen3-0.6B", @@ -848,7 +853,7 @@ for (const reference of [ single: 56.148395, batch: 3, aggregate: 67.119331, - dennard: 2366.129025, + memoryPowerCeiling: 2366.129025, }, { repo: "Qwen/Qwen3-0.6B", @@ -857,7 +862,7 @@ for (const reference of [ single: 126.28247, batch: 8, aggregate: 160.773873, - dennard: 5321.623522, + memoryPowerCeiling: 5321.623522, }, { repo: "Qwen/Qwen3-0.6B-FP8", @@ -866,7 +871,7 @@ for (const reference of [ single: 61.740014, batch: 3, aggregate: 69.632201, - dennard: 3766.062688, + memoryPowerCeiling: 3766.062688, }, { repo: "Qwen/Qwen3-0.6B-FP8", @@ -875,7 +880,7 @@ for (const reference of [ single: 138.858494, batch: 8, aggregate: 163.124988, - dennard: 8470.192273, + memoryPowerCeiling: 8470.192273, }, { repo: "Qwen/Qwen3-1.7B", @@ -884,7 +889,7 @@ for (const reference of [ single: 38.390329, batch: 2, aggregate: 50.643798, - dennard: 801.975924, + memoryPowerCeiling: 801.975924, }, { repo: "Qwen/Qwen3-1.7B", @@ -893,7 +898,7 @@ for (const reference of [ single: 86.343084, batch: 7, aggregate: 147.539094, - dennard: 1803.71142, + memoryPowerCeiling: 1803.71142, }, { repo: "Qwen/Qwen3-1.7B-Base", @@ -902,7 +907,7 @@ for (const reference of [ single: 38.390329, batch: 2, aggregate: 50.643798, - dennard: 806.280811, + memoryPowerCeiling: 806.280811, }, { repo: "Qwen/Qwen3-1.7B-Base", @@ -911,7 +916,7 @@ for (const reference of [ single: 86.343084, batch: 7, aggregate: 147.539094, - dennard: 1813.393472, + memoryPowerCeiling: 1813.393472, }, { repo: "Qwen/Qwen3-4B", @@ -920,7 +925,7 @@ for (const reference of [ single: 21.38907, batch: 1, aggregate: 21.38907, - dennard: 257.644773, + memoryPowerCeiling: 257.644773, }, { repo: "Qwen/Qwen3-4B", @@ -929,7 +934,7 @@ for (const reference of [ single: 48.105821, batch: 4, aggregate: 91.235642, - dennard: 579.464801, + memoryPowerCeiling: 579.464801, }, { repo: "Qwen/Qwen3-4B-Base", @@ -938,7 +943,7 @@ for (const reference of [ single: 21.38907, batch: 1, aggregate: 21.38907, - dennard: 257.644773, + memoryPowerCeiling: 257.644773, }, { repo: "Qwen/Qwen3-4B-Base", @@ -947,7 +952,7 @@ for (const reference of [ single: 48.105821, batch: 4, aggregate: 91.235642, - dennard: 579.464801, + memoryPowerCeiling: 579.464801, }, { repo: "Qwen/Qwen3-4B-Instruct-2507", @@ -956,7 +961,7 @@ for (const reference of [ single: 21.38907, batch: 1, aggregate: 21.38907, - dennard: 257.644773, + memoryPowerCeiling: 257.644773, }, { repo: "Qwen/Qwen3-4B-Instruct-2507", @@ -965,7 +970,7 @@ for (const reference of [ single: 48.105821, batch: 4, aggregate: 91.235642, - dennard: 579.464801, + memoryPowerCeiling: 579.464801, }, { repo: "Qwen/Qwen3-8B", @@ -974,7 +979,7 @@ for (const reference of [ single: 13.749406, batch: null, aggregate: 0, - dennard: 126.736945, + memoryPowerCeiling: 126.736945, }, { repo: "Qwen/Qwen3-8B", @@ -983,7 +988,7 @@ for (const reference of [ single: 30.923573, batch: 3, aggregate: 62.882804, - dennard: 285.042066, + memoryPowerCeiling: 285.042066, }, { repo: "deepseek-ai/DeepSeek-R1-0528-Qwen3-8B", @@ -992,7 +997,7 @@ for (const reference of [ single: 13.749406, batch: null, aggregate: 0, - dennard: 126.736945, + memoryPowerCeiling: 126.736945, }, { repo: "deepseek-ai/DeepSeek-R1-0528-Qwen3-8B", @@ -1001,7 +1006,7 @@ for (const reference of [ single: 30.923573, batch: 3, aggregate: 62.882804, - dennard: 285.042066, + memoryPowerCeiling: 285.042066, }, { repo: "lmstudio-community/DeepSeek-R1-0528-Qwen3-8B-MLX-4bit", @@ -1010,7 +1015,7 @@ for (const reference of [ single: 30.413547, batch: 1, aggregate: 30.413547, - dennard: 501.770116, + memoryPowerCeiling: 501.770116, }, { repo: "lmstudio-community/DeepSeek-R1-0528-Qwen3-8B-MLX-4bit", @@ -1019,7 +1024,7 @@ for (const reference of [ single: 68.402629, batch: 5, aggregate: 110.230895, - dennard: 1128.523264, + memoryPowerCeiling: 1128.523264, }, { repo: "Qwen/Qwen3-14B", @@ -1028,7 +1033,7 @@ for (const reference of [ single: 8.217033, batch: null, aggregate: 0, - dennard: 53.871067, + memoryPowerCeiling: 53.871067, }, { repo: "Qwen/Qwen3-14B", @@ -1037,7 +1042,7 @@ for (const reference of [ single: 18.4808, batch: null, aggregate: 0, - dennard: 121.160568, + memoryPowerCeiling: 121.160568, }, { repo: "cyankiwi/Hermes-4-14B-AWQ-4bit", @@ -1046,7 +1051,7 @@ for (const reference of [ single: 19.183012, batch: null, aggregate: 0, - dennard: 202.906419, + memoryPowerCeiling: 202.906419, }, { repo: "cyankiwi/Hermes-4-14B-AWQ-4bit", @@ -1055,7 +1060,7 @@ for (const reference of [ single: 43.144211, batch: 4, aggregate: 81.976019, - dennard: 456.353631, + memoryPowerCeiling: 456.353631, }, { repo: "Qwen/Qwen3-32B", @@ -1064,7 +1069,7 @@ for (const reference of [ single: 3.772958, batch: null, aggregate: 0, - dennard: 8.868708, + memoryPowerCeiling: 8.868708, }, { repo: "Qwen/Qwen3-32B", @@ -1073,7 +1078,7 @@ for (const reference of [ single: 8.485699, batch: null, aggregate: 0, - dennard: 19.94647, + memoryPowerCeiling: 19.94647, }, { repo: "Qwen/Qwen3-30B-A3B", @@ -1082,7 +1087,7 @@ for (const reference of [ single: 29.579184, batch: 1, aggregate: 29.579184, - dennard: 269.029546, + memoryPowerCeiling: 269.029546, }, { repo: "Qwen/Qwen3-30B-A3B", @@ -1091,7 +1096,7 @@ for (const reference of [ single: 66.526077, batch: 4, aggregate: 86.984032, - dennard: 605.070115, + memoryPowerCeiling: 605.070115, }, { repo: "Qwen/Qwen3-30B-A3B-Instruct-2507", @@ -1100,7 +1105,7 @@ for (const reference of [ single: 29.579184, batch: 1, aggregate: 29.579184, - dennard: 269.029546, + memoryPowerCeiling: 269.029546, }, { repo: "Qwen/Qwen3-30B-A3B-Instruct-2507", @@ -1109,7 +1114,7 @@ for (const reference of [ single: 66.526077, batch: 4, aggregate: 86.984032, - dennard: 605.070115, + memoryPowerCeiling: 605.070115, }, { repo: "Qwen/Qwen3-30B-A3B-Thinking-2507", @@ -1118,7 +1123,7 @@ for (const reference of [ single: 29.579184, batch: 1, aggregate: 29.579184, - dennard: 269.029546, + memoryPowerCeiling: 269.029546, }, { repo: "Qwen/Qwen3-30B-A3B-Thinking-2507", @@ -1127,7 +1132,7 @@ for (const reference of [ single: 66.526077, batch: 4, aggregate: 86.984032, - dennard: 605.070115, + memoryPowerCeiling: 605.070115, }, { repo: "Qwen/Qwen3-Omni-30B-A3B-Instruct", @@ -1136,7 +1141,7 @@ for (const reference of [ single: 29.577504, batch: 1, aggregate: 29.577504, - dennard: 225.848172, + memoryPowerCeiling: 225.848172, }, { repo: "Qwen/Qwen3-Omni-30B-A3B-Instruct", @@ -1145,7 +1150,7 @@ for (const reference of [ single: 66.522298, batch: 4, aggregate: 86.982417, - dennard: 507.951567, + memoryPowerCeiling: 507.951567, }, { repo: "Qwen/Qwen3-Omni-30B-A3B-Thinking", @@ -1154,7 +1159,7 @@ for (const reference of [ single: 29.577504, batch: 1, aggregate: 29.577504, - dennard: 258.169721, + memoryPowerCeiling: 258.169721, }, { repo: "Qwen/Qwen3-Omni-30B-A3B-Thinking", @@ -1163,7 +1168,7 @@ for (const reference of [ single: 66.522298, batch: 4, aggregate: 86.982417, - dennard: 580.645454, + memoryPowerCeiling: 580.645454, }, { repo: "deepseek-ai/DeepSeek-V4-Flash", @@ -1172,7 +1177,7 @@ for (const reference of [ single: 24.157234, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "deepseek-ai/DeepSeek-V4-Flash", @@ -1181,7 +1186,7 @@ for (const reference of [ single: 54.331655, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "deepseek-ai/DeepSeek-V4-Pro", @@ -1190,7 +1195,7 @@ for (const reference of [ single: 6.860322, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "deepseek-ai/DeepSeek-V4-Pro", @@ -1199,7 +1204,7 @@ for (const reference of [ single: 15.429443, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "deepseek-ai/DeepSeek-V3-0324", @@ -1208,7 +1213,7 @@ for (const reference of [ single: 6.535707, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "deepseek-ai/DeepSeek-V3-0324", @@ -1217,7 +1222,7 @@ for (const reference of [ single: 14.699356, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "deepseek-ai/DeepSeek-V3", @@ -1226,7 +1231,7 @@ for (const reference of [ single: 6.535707, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "deepseek-ai/DeepSeek-V3", @@ -1235,7 +1240,7 @@ for (const reference of [ single: 14.699356, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "Qwen/Qwen3-VL-2B-Instruct", @@ -1244,7 +1249,7 @@ for (const reference of [ single: 38.390329, batch: 2, aggregate: 50.643798, - dennard: 800.650665, + memoryPowerCeiling: 800.650665, }, { repo: "Qwen/Qwen3-VL-2B-Instruct", @@ -1253,7 +1258,7 @@ for (const reference of [ single: 86.343084, batch: 7, aggregate: 147.539094, - dennard: 1800.7308, + memoryPowerCeiling: 1800.7308, }, { repo: "cyankiwi/Qwen3-VL-2B-Instruct-AWQ-4bit", @@ -1262,7 +1267,7 @@ for (const reference of [ single: 53.683935, batch: 3, aggregate: 65.913624, - dennard: 1980.762533, + memoryPowerCeiling: 1980.762533, }, { repo: "cyankiwi/Qwen3-VL-2B-Instruct-AWQ-4bit", @@ -1271,7 +1276,7 @@ for (const reference of [ single: 120.739692, batch: 7, aggregate: 158.566095, - dennard: 4454.901814, + memoryPowerCeiling: 4454.901814, }, { repo: "Qwen/Qwen3-VL-4B-Instruct", @@ -1280,7 +1285,7 @@ for (const reference of [ single: 21.38907, batch: 1, aggregate: 21.38907, - dennard: 255.733075, + memoryPowerCeiling: 255.733075, }, { repo: "Qwen/Qwen3-VL-4B-Instruct", @@ -1289,7 +1294,7 @@ for (const reference of [ single: 48.105821, batch: 4, aggregate: 91.235642, - dennard: 575.16523, + memoryPowerCeiling: 575.16523, }, { repo: "Qwen/Qwen3-VL-8B-Instruct", @@ -1298,7 +1303,7 @@ for (const reference of [ single: 13.749406, batch: null, aggregate: 0, - dennard: 125.326971, + memoryPowerCeiling: 125.326971, }, { repo: "Qwen/Qwen3-VL-8B-Instruct", @@ -1307,7 +1312,7 @@ for (const reference of [ single: 30.923573, batch: 3, aggregate: 62.882804, - dennard: 281.870917, + memoryPowerCeiling: 281.870917, }, { repo: "Qwen/Qwen3-VL-8B-Instruct-FP8", @@ -1316,7 +1321,7 @@ for (const reference of [ single: 21.144218, batch: 1, aggregate: 21.144218, - dennard: 247.244923, + memoryPowerCeiling: 247.244923, }, { repo: "Qwen/Qwen3-VL-8B-Instruct-FP8", @@ -1325,7 +1330,7 @@ for (const reference of [ single: 47.555127, batch: 4, aggregate: 90.737439, - dennard: 556.074661, + memoryPowerCeiling: 556.074661, }, { repo: "Qwen/Qwen3-VL-32B-Instruct", @@ -1334,7 +1339,7 @@ for (const reference of [ single: 3.772958, batch: null, aggregate: 0, - dennard: 8.674887, + memoryPowerCeiling: 8.674887, }, { repo: "Qwen/Qwen3-VL-32B-Instruct", @@ -1343,7 +1348,7 @@ for (const reference of [ single: 8.485699, batch: null, aggregate: 0, - dennard: 19.510553, + memoryPowerCeiling: 19.510553, }, { repo: "Qwen/Qwen2-1.5B-Instruct", @@ -1352,7 +1357,7 @@ for (const reference of [ single: 68.165941, batch: 11, aggregate: 227.845694, - dennard: 3605.528623, + memoryPowerCeiling: 3605.528623, }, { repo: "Qwen/Qwen2-1.5B-Instruct", @@ -1361,7 +1366,7 @@ for (const reference of [ single: 153.310944, batch: 30, aggregate: 601.71403, - dennard: 8109.137636, + memoryPowerCeiling: 8109.137636, }, { repo: "Qwen/Qwen2-VL-2B-Instruct", @@ -1370,7 +1375,7 @@ for (const reference of [ single: 68.165941, batch: 11, aggregate: 227.845694, - dennard: 3564.495316, + memoryPowerCeiling: 3564.495316, }, { repo: "Qwen/Qwen2-VL-2B-Instruct", @@ -1379,7 +1384,7 @@ for (const reference of [ single: 153.310944, batch: 30, aggregate: 601.71403, - dennard: 8016.850272, + memoryPowerCeiling: 8016.850272, }, { repo: "Qwen/Qwen2-0.5B", @@ -1388,7 +1393,7 @@ for (const reference of [ single: 197.642546, batch: 32, aggregate: 643.726657, - dennard: 26760.006066, + memoryPowerCeiling: 26760.006066, }, { repo: "Qwen/Qwen2-0.5B", @@ -1397,7 +1402,7 @@ for (const reference of [ single: 444.514738, batch: 75, aggregate: 1510.863178, - dennard: 60185.508148, + memoryPowerCeiling: 60185.508148, }, { repo: "Qwen/Qwen2.5-0.5B", @@ -1406,7 +1411,7 @@ for (const reference of [ single: 197.642546, batch: 32, aggregate: 643.726657, - dennard: 26760.006066, + memoryPowerCeiling: 26760.006066, }, { repo: "Qwen/Qwen2.5-0.5B", @@ -1415,7 +1420,7 @@ for (const reference of [ single: 444.514738, batch: 75, aggregate: 1510.863178, - dennard: 60185.508148, + memoryPowerCeiling: 60185.508148, }, { repo: "Qwen/Qwen2.5-0.5B-Instruct", @@ -1424,7 +1429,7 @@ for (const reference of [ single: 197.642546, batch: 32, aggregate: 643.726657, - dennard: 26760.006066, + memoryPowerCeiling: 26760.006066, }, { repo: "Qwen/Qwen2.5-0.5B-Instruct", @@ -1433,7 +1438,7 @@ for (const reference of [ single: 444.514738, batch: 75, aggregate: 1510.863178, - dennard: 60185.508148, + memoryPowerCeiling: 60185.508148, }, { repo: "Qwen/Qwen2.5-VL-3B-Instruct", @@ -1442,7 +1447,7 @@ for (const reference of [ single: 37.13515, batch: 6, aggregate: 123.624831, - dennard: 1349.769868, + memoryPowerCeiling: 1349.769868, }, { repo: "Qwen/Qwen2.5-VL-3B-Instruct", @@ -1451,7 +1456,7 @@ for (const reference of [ single: 83.520082, batch: 20, aggregate: 412.567347, - dennard: 3035.74615, + memoryPowerCeiling: 3035.74615, }, { repo: "Qwen/Qwen2-7B-Instruct", @@ -1460,7 +1465,7 @@ for (const reference of [ single: 17.087869, batch: null, aggregate: 0, - dennard: 352.711042, + memoryPowerCeiling: 352.711042, }, { repo: "Qwen/Qwen2-7B-Instruct", @@ -1469,7 +1474,7 @@ for (const reference of [ single: 38.432057, batch: 9, aggregate: 180.256526, - dennard: 793.276849, + memoryPowerCeiling: 793.276849, }, { repo: "Qwen/Qwen2.5-7B-Instruct", @@ -1478,7 +1483,7 @@ for (const reference of [ single: 17.087869, batch: null, aggregate: 0, - dennard: 352.711042, + memoryPowerCeiling: 352.711042, }, { repo: "Qwen/Qwen2.5-7B-Instruct", @@ -1487,7 +1492,7 @@ for (const reference of [ single: 38.432057, batch: 9, aggregate: 180.256526, - dennard: 793.276849, + memoryPowerCeiling: 793.276849, }, { repo: "Qwen/Qwen2.5-Coder-7B", @@ -1496,7 +1501,7 @@ for (const reference of [ single: 17.087869, batch: null, aggregate: 0, - dennard: 352.711042, + memoryPowerCeiling: 352.711042, }, { repo: "Qwen/Qwen2.5-Coder-7B", @@ -1505,7 +1510,7 @@ for (const reference of [ single: 38.432057, batch: 9, aggregate: 180.256526, - dennard: 793.276849, + memoryPowerCeiling: 793.276849, }, { repo: "Qwen/Qwen2.5-Coder-7B-Instruct", @@ -1514,7 +1519,7 @@ for (const reference of [ single: 17.087869, batch: null, aggregate: 0, - dennard: 352.711042, + memoryPowerCeiling: 352.711042, }, { repo: "Qwen/Qwen2.5-Coder-7B-Instruct", @@ -1523,7 +1528,7 @@ for (const reference of [ single: 38.432057, batch: 9, aggregate: 180.256526, - dennard: 793.276849, + memoryPowerCeiling: 793.276849, }, { repo: "Qwen/Qwen2.5-Omni-7B", @@ -1532,7 +1537,7 @@ for (const reference of [ single: 17.087869, batch: null, aggregate: 0, - dennard: 328.702976, + memoryPowerCeiling: 328.702976, }, { repo: "Qwen/Qwen2.5-Omni-7B", @@ -1541,7 +1546,7 @@ for (const reference of [ single: 38.432057, batch: 9, aggregate: 180.256526, - dennard: 739.280686, + memoryPowerCeiling: 739.280686, }, { repo: "nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16", @@ -1550,7 +1555,7 @@ for (const reference of [ single: 35.490312, batch: 11, aggregate: 224.702456, - dennard: 2553.571962, + memoryPowerCeiling: 2553.571962, }, { repo: "nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16", @@ -1559,7 +1564,7 @@ for (const reference of [ single: 79.820702, batch: 41, aggregate: 828.619821, - dennard: 5743.198478, + memoryPowerCeiling: 5743.198478, }, { repo: "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16", @@ -1568,7 +1573,7 @@ for (const reference of [ single: 11.021889, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "nvidia/Llama-3.1-Nemotron-Nano-VL-8B-V1", @@ -1577,7 +1582,7 @@ for (const reference of [ single: 14.214123, batch: null, aggregate: 0, - dennard: 142.291431, + memoryPowerCeiling: 142.291431, }, { repo: "Qwen/Qwen2.5-7B-Instruct-AWQ", @@ -1586,7 +1591,7 @@ for (const reference of [ single: 43.225197, batch: 4, aggregate: 92.379654, - dennard: 1215.796127, + memoryPowerCeiling: 1215.796127, }, { repo: "Qwen/Qwen2.5-7B-Instruct-AWQ", @@ -1595,7 +1600,7 @@ for (const reference of [ single: 97.21711, batch: 14, aggregate: 284.910628, - dennard: 2734.427918, + memoryPowerCeiling: 2734.427918, }, { repo: "Qwen/Qwen2.5-14B-Instruct", @@ -1604,7 +1609,7 @@ for (const reference of [ single: 7.965131, batch: null, aggregate: 0, - dennard: 44.887406, + memoryPowerCeiling: 44.887406, }, { repo: "Qwen/Qwen2.5-14B-Instruct", @@ -1613,7 +1618,7 @@ for (const reference of [ single: 17.914251, batch: null, aggregate: 0, - dennard: 100.955557, + memoryPowerCeiling: 100.955557, }, { repo: "Qwen/Qwen2.5-32B-Instruct", @@ -1622,7 +1627,7 @@ for (const reference of [ single: 3.772843, batch: null, aggregate: 0, - dennard: 8.867832, + memoryPowerCeiling: 8.867832, }, { repo: "Qwen/Qwen2.5-32B-Instruct", @@ -1631,7 +1636,7 @@ for (const reference of [ single: 8.485442, batch: null, aggregate: 0, - dennard: 19.944502, + memoryPowerCeiling: 19.944502, }, { repo: "Qwen/Qwen2.5-VL-32B-Instruct", @@ -1640,7 +1645,7 @@ for (const reference of [ single: 3.772843, batch: null, aggregate: 0, - dennard: 8.419271, + memoryPowerCeiling: 8.419271, }, { repo: "Qwen/Qwen2.5-VL-32B-Instruct", @@ -1649,7 +1654,7 @@ for (const reference of [ single: 8.485442, batch: null, aggregate: 0, - dennard: 18.93565, + memoryPowerCeiling: 18.93565, }, { repo: "Qwen/Qwen2.5-Coder-14B-Instruct", @@ -1658,7 +1663,7 @@ for (const reference of [ single: 7.965131, batch: null, aggregate: 0, - dennard: 44.887406, + memoryPowerCeiling: 44.887406, }, { repo: "Qwen/Qwen2.5-Coder-14B-Instruct", @@ -1667,7 +1672,7 @@ for (const reference of [ single: 17.914251, batch: null, aggregate: 0, - dennard: 100.955557, + memoryPowerCeiling: 100.955557, }, { repo: "Qwen/Qwen2.5-Coder-14B-Instruct-AWQ", @@ -1676,7 +1681,7 @@ for (const reference of [ single: 18.553318, batch: null, aggregate: 0, - dennard: 181.372599, + memoryPowerCeiling: 181.372599, }, { repo: "Qwen/Qwen2.5-Coder-14B-Instruct-AWQ", @@ -1685,7 +1690,7 @@ for (const reference of [ single: 41.727974, batch: 3, aggregate: 67.479296, - dennard: 407.922255, + memoryPowerCeiling: 407.922255, }, { repo: "Qwen/Qwen2.5-1.5B-Instruct", @@ -1694,7 +1699,7 @@ for (const reference of [ single: 68.165941, batch: 11, aggregate: 227.845694, - dennard: 3605.528623, + memoryPowerCeiling: 3605.528623, }, { repo: "Qwen/Qwen2.5-1.5B-Instruct", @@ -1703,7 +1708,7 @@ for (const reference of [ single: 153.310944, batch: 30, aggregate: 601.71403, - dennard: 8109.137636, + memoryPowerCeiling: 8109.137636, }, { repo: "Qwen/Qwen2.5-3B-Instruct", @@ -1712,7 +1717,7 @@ for (const reference of [ single: 37.13515, batch: 6, aggregate: 123.624831, - dennard: 1365.816874, + memoryPowerCeiling: 1365.816874, }, { repo: "Qwen/Qwen2.5-3B-Instruct", @@ -1721,7 +1726,7 @@ for (const reference of [ single: 83.520082, batch: 20, aggregate: 412.567347, - dennard: 3071.837218, + memoryPowerCeiling: 3071.837218, }, { repo: "google/gemma-4-E2B-it", @@ -1730,7 +1735,7 @@ for (const reference of [ single: 53.8386, batch: 19, aggregate: 381.607826, - dennard: 10500.37794, + memoryPowerCeiling: 10500.37794, }, { repo: "google/gemma-4-E2B-it", @@ -1739,7 +1744,7 @@ for (const reference of [ single: 121.087547, batch: 55, aggregate: 1102.296409, - dennard: 23616.234635, + memoryPowerCeiling: 23616.234635, }, { repo: "unsloth/gemma-4-E2B-it-GGUF", @@ -1748,7 +1753,7 @@ for (const reference of [ single: 53.832376, batch: 19, aggregate: 381.591368, - dennard: 4537.922746, + memoryPowerCeiling: 4537.922746, }, { repo: "unsloth/gemma-4-E2B-it-GGUF", @@ -1757,7 +1762,7 @@ for (const reference of [ single: 121.073549, batch: 55, aggregate: 1102.275316, - dennard: 10206.170572, + memoryPowerCeiling: 10206.170572, }, { repo: "google/gemma-4-E4B-it", @@ -1766,7 +1771,7 @@ for (const reference of [ single: 26.368665, batch: 4, aggregate: 82.628306, - dennard: 1040.31545, + memoryPowerCeiling: 1040.31545, }, { repo: "google/gemma-4-E4B-it", @@ -1775,7 +1780,7 @@ for (const reference of [ single: 59.305349, batch: 22, aggregate: 444.4666, - dennard: 2339.757092, + memoryPowerCeiling: 2339.757092, }, { repo: "google/gemma-4-12B-it", @@ -1784,7 +1789,7 @@ for (const reference of [ single: 11.182847, batch: null, aggregate: 0, - dennard: 953.821525, + memoryPowerCeiling: 953.821525, }, { repo: "google/gemma-4-12B-it", @@ -1793,7 +1798,7 @@ for (const reference of [ single: 25.151164, batch: 11, aggregate: 222.249482, - dennard: 2145.224968, + memoryPowerCeiling: 2145.224968, }, { repo: "google/gemma-4-12B-it-qat-w4a16-ct", @@ -1802,7 +1807,7 @@ for (const reference of [ single: 31.22241, batch: 9, aggregate: 181.660548, - dennard: 3184.781459, + memoryPowerCeiling: 3184.781459, }, { repo: "google/gemma-4-12B-it-qat-w4a16-ct", @@ -1811,7 +1816,7 @@ for (const reference of [ single: 70.221831, batch: 37, aggregate: 750.747695, - dennard: 7162.841816, + memoryPowerCeiling: 7162.841816, }, { repo: "cyankiwi/gemma-4-12B-it-AWQ-INT4", @@ -1820,7 +1825,7 @@ for (const reference of [ single: 22.362803, batch: 2, aggregate: 40.736697, - dennard: 1167.633193, + memoryPowerCeiling: 1167.633193, }, { repo: "cyankiwi/gemma-4-12B-it-AWQ-INT4", @@ -1829,7 +1834,7 @@ for (const reference of [ single: 50.295828, batch: 16, aggregate: 325.962658, - dennard: 2626.105423, + memoryPowerCeiling: 2626.105423, }, { repo: "yuxinlu1/gemma-4-12B-coder-fable5-composer2.5-v1-GGUF", @@ -1838,7 +1843,7 @@ for (const reference of [ single: 34.282493, batch: 10, aggregate: 204.610205, - dennard: 3614.774808, + memoryPowerCeiling: 3614.774808, }, { repo: "microsoft/Phi-4-mini-instruct", @@ -1847,7 +1852,7 @@ for (const reference of [ single: 23.006237, batch: 1, aggregate: 23.006237, - dennard: 304.95062, + memoryPowerCeiling: 304.95062, }, { repo: "google/gemma-4-26B-A4B-it", @@ -1856,7 +1861,7 @@ for (const reference of [ single: 34.045774, batch: 2, aggregate: 49.329186, - dennard: 3383.736554, + memoryPowerCeiling: 3383.736554, }, { repo: "google/gemma-4-26B-A4B", @@ -1865,7 +1870,7 @@ for (const reference of [ single: 34.045774, batch: 2, aggregate: 49.329186, - dennard: 3383.736554, + memoryPowerCeiling: 3383.736554, }, { repo: "google/gemma-4-26B-A4B-it", @@ -1874,7 +1879,7 @@ for (const reference of [ single: 76.571814, batch: 10, aggregate: 202.998061, - dennard: 7610.308587, + memoryPowerCeiling: 7610.308587, }, { repo: "cyankiwi/gemma-4-26B-A4B-it-AWQ-4bit", @@ -1883,7 +1888,7 @@ for (const reference of [ single: 62.45859, batch: 10, aggregate: 209.371465, - dennard: 9729.162647, + memoryPowerCeiling: 9729.162647, }, { repo: "cyankiwi/gemma-4-26B-A4B-it-AWQ-4bit", @@ -1892,7 +1897,7 @@ for (const reference of [ single: 140.474631, batch: 41, aggregate: 826.85303, - dennard: 21881.706467, + memoryPowerCeiling: 21881.706467, }, { repo: "lmstudio-community/gemma-4-26B-A4B-it-QAT-MLX-4bit", @@ -1901,7 +1906,7 @@ for (const reference of [ single: 97.577543, batch: 12, aggregate: 251.443001, - dennard: 16288.814631, + memoryPowerCeiling: 16288.814631, }, { repo: "lmstudio-community/gemma-4-26B-A4B-it-QAT-MLX-4bit", @@ -1910,7 +1915,7 @@ for (const reference of [ single: 219.460114, batch: 45, aggregate: 903.714646, - dennard: 36634.916422, + memoryPowerCeiling: 36634.916422, }, { repo: "RedHatAI/gemma-4-26B-A4B-it-NVFP4", @@ -1919,7 +1924,7 @@ for (const reference of [ single: 75.802882, batch: 11, aggregate: 229.865091, - dennard: 12138.535002, + memoryPowerCeiling: 12138.535002, }, { repo: "RedHatAI/gemma-4-26B-A4B-it-NVFP4", @@ -1928,7 +1933,7 @@ for (const reference of [ single: 170.487068, batch: 43, aggregate: 864.690309, - dennard: 27300.587879, + memoryPowerCeiling: 27300.587879, }, { repo: "google/gemma-4-31B-it", @@ -1937,7 +1942,7 @@ for (const reference of [ single: 4.340988, batch: null, aggregate: 0, - dennard: 88.496259, + memoryPowerCeiling: 88.496259, }, { repo: "google/gemma-4-31B-it", @@ -1946,7 +1951,7 @@ for (const reference of [ single: 9.763247, batch: null, aggregate: 0, - dennard: 199.035543, + memoryPowerCeiling: 199.035543, }, { repo: "google/gemma-4-31B-it-qat-w4a16-ct", @@ -1955,7 +1960,7 @@ for (const reference of [ single: 13.131789, batch: null, aggregate: 0, - dennard: 474.105161, + memoryPowerCeiling: 474.105161, }, { repo: "google/gemma-4-31B-it-qat-w4a16-ct", @@ -1964,7 +1969,7 @@ for (const reference of [ single: 29.534499, batch: 7, aggregate: 144.44839, - dennard: 1066.30245, + memoryPowerCeiling: 1066.30245, }, { repo: "RedHatAI/gemma-4-31B-it-NVFP4", @@ -1973,7 +1978,7 @@ for (const reference of [ single: 13.131791, batch: null, aggregate: 0, - dennard: 474.105258, + memoryPowerCeiling: 474.105258, }, { repo: "RedHatAI/gemma-4-31B-it-NVFP4", @@ -1982,7 +1987,7 @@ for (const reference of [ single: 29.534504, batch: 7, aggregate: 144.448406, - dennard: 1066.302667, + memoryPowerCeiling: 1066.302667, }, { repo: "RedHatAI/gemma-4-31B-it-FP8-block", @@ -1991,7 +1996,7 @@ for (const reference of [ single: 8.123608, batch: null, aggregate: 0, - dennard: 255.434743, + memoryPowerCeiling: 255.434743, }, { repo: "RedHatAI/gemma-4-31B-it-FP8-block", @@ -2000,7 +2005,7 @@ for (const reference of [ single: 18.270678, batch: null, aggregate: 0, - dennard: 574.494257, + memoryPowerCeiling: 574.494257, }, { repo: "nvidia/Gemma-4-31B-IT-NVFP4", @@ -2009,7 +2014,7 @@ for (const reference of [ single: 8.470664, batch: null, aggregate: 0, - dennard: 524.872527, + memoryPowerCeiling: 524.872527, }, { repo: "nvidia/Gemma-4-31B-IT-NVFP4", @@ -2018,7 +2023,7 @@ for (const reference of [ single: 19.051237, batch: null, aggregate: 0, - dennard: 1180.482533, + memoryPowerCeiling: 1180.482533, }, { repo: "zai-org/GLM-4.7-Flash", @@ -2027,7 +2032,7 @@ for (const reference of [ single: 7.191578, batch: null, aggregate: 0, - dennard: 22.801934, + memoryPowerCeiling: 22.801934, }, { repo: "zai-org/GLM-4.7-Flash", @@ -2036,7 +2041,7 @@ for (const reference of [ single: 16.174465, batch: null, aggregate: 0, - dennard: 51.28347, + memoryPowerCeiling: 51.28347, }, { repo: "zai-org/GLM-5-FP8", @@ -2045,7 +2050,7 @@ for (const reference of [ single: 1.324305, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "zai-org/GLM-5-FP8", @@ -2054,7 +2059,7 @@ for (const reference of [ single: 2.978474, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "zai-org/GLM-5.1-FP8", @@ -2063,7 +2068,7 @@ for (const reference of [ single: 1.324305, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "zai-org/GLM-5.1-FP8", @@ -2072,7 +2077,7 @@ for (const reference of [ single: 2.978474, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "zai-org/GLM-5.2-FP8", @@ -2081,7 +2086,7 @@ for (const reference of [ single: 1.330842, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "zai-org/GLM-5.2-FP8", @@ -2090,7 +2095,7 @@ for (const reference of [ single: 2.993175, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "moonshotai/Kimi-K2.5", @@ -2099,7 +2104,7 @@ for (const reference of [ single: 2.417203, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "moonshotai/Kimi-K2.5", @@ -2108,7 +2113,7 @@ for (const reference of [ single: 5.436494, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "moonshotai/Kimi-K2.6", @@ -2117,7 +2122,7 @@ for (const reference of [ single: 2.417203, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "moonshotai/Kimi-K2.6", @@ -2126,7 +2131,7 @@ for (const reference of [ single: 5.436494, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "nvidia/Kimi-K2.6-NVFP4", @@ -2135,7 +2140,7 @@ for (const reference of [ single: 3.7416, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "nvidia/Kimi-K2.6-NVFP4", @@ -2144,7 +2149,7 @@ for (const reference of [ single: 8.415174, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "moonshotai/Kimi-K2.7-Code", @@ -2153,7 +2158,7 @@ for (const reference of [ single: 2.417203, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "moonshotai/Kimi-K2.7-Code", @@ -2162,7 +2167,7 @@ for (const reference of [ single: 5.436494, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "Qwen/Qwen2.5-VL-7B-Instruct", @@ -2171,7 +2176,7 @@ for (const reference of [ single: 17.087869, batch: null, aggregate: 0, - dennard: 348.15574, + memoryPowerCeiling: 348.15574, }, { repo: "Qwen/Qwen2.5-VL-7B-Instruct", @@ -2180,7 +2185,7 @@ for (const reference of [ single: 38.432057, batch: 9, aggregate: 180.256526, - dennard: 783.031591, + memoryPowerCeiling: 783.031591, }, { repo: "Qwen/Qwen2.5-VL-7B-Instruct-AWQ", @@ -2189,7 +2194,7 @@ for (const reference of [ single: 43.225197, batch: 4, aggregate: 92.379654, - dennard: 1201.41961, + memoryPowerCeiling: 1201.41961, }, { repo: "Qwen/Qwen2.5-VL-7B-Instruct-AWQ", @@ -2198,7 +2203,7 @@ for (const reference of [ single: 97.21711, batch: 14, aggregate: 284.910628, - dennard: 2702.093921, + memoryPowerCeiling: 2702.093921, }, { repo: "Qwen/Qwen3.5-9B", @@ -2207,7 +2212,7 @@ for (const reference of [ single: 16.083557, batch: null, aggregate: 0, - dennard: 520.26036, + memoryPowerCeiling: 520.26036, }, { repo: "Qwen/Qwen3.5-9B", @@ -2216,7 +2221,7 @@ for (const reference of [ single: 36.173275, batch: 13, aggregate: 264.483088, - dennard: 1170.109382, + memoryPowerCeiling: 1170.109382, }, { repo: "AxionML/Qwen3.5-9B-NVFP4", @@ -2225,7 +2230,7 @@ for (const reference of [ single: 38.84185, batch: 7, aggregate: 140.191189, - dennard: 1530.687245, + memoryPowerCeiling: 1530.687245, }, { repo: "AxionML/Qwen3.5-9B-NVFP4", @@ -2234,7 +2239,7 @@ for (const reference of [ single: 87.358593, batch: 22, aggregate: 448.196117, - dennard: 3442.644573, + memoryPowerCeiling: 3442.644573, }, { repo: "lmstudio-community/Qwen3.5-9B-MLX-4bit", @@ -2243,7 +2248,7 @@ for (const reference of [ single: 49.044329, batch: 8, aggregate: 164.584784, - dennard: 2094.460921, + memoryPowerCeiling: 2094.460921, }, { repo: "lmstudio-community/Qwen3.5-9B-MLX-4bit", @@ -2252,7 +2257,7 @@ for (const reference of [ single: 110.304827, batch: 23, aggregate: 474.259228, - dennard: 4710.619067, + memoryPowerCeiling: 4710.619067, }, { repo: "Qwen/Qwen3.5-0.8B", @@ -2261,7 +2266,7 @@ for (const reference of [ single: 142.353109, batch: 29, aggregate: 587.267957, - dennard: 17182.639845, + memoryPowerCeiling: 17182.639845, }, { repo: "Qwen/Qwen3.5-0.8B", @@ -2270,7 +2275,7 @@ for (const reference of [ single: 320.164135, batch: 70, aggregate: 1413.209201, - dennard: 38645.204634, + memoryPowerCeiling: 38645.204634, }, { repo: "Qwen/Qwen3.5-0.8B-Base", @@ -2279,7 +2284,7 @@ for (const reference of [ single: 142.353109, batch: 29, aggregate: 587.267957, - dennard: 17182.639845, + memoryPowerCeiling: 17182.639845, }, { repo: "Qwen/Qwen3.5-0.8B-Base", @@ -2288,7 +2293,7 @@ for (const reference of [ single: 320.164135, batch: 70, aggregate: 1413.209201, - dennard: 38645.204634, + memoryPowerCeiling: 38645.204634, }, { repo: "Qwen/Qwen3.5-27B", @@ -2297,7 +2302,7 @@ for (const reference of [ single: 5.10268, batch: null, aggregate: 0, - dennard: 51.166346, + memoryPowerCeiling: 51.166346, }, { repo: "Qwen/Qwen3.5-27B", @@ -2306,7 +2311,7 @@ for (const reference of [ single: 11.476357, batch: null, aggregate: 0, - dennard: 115.077423, + memoryPowerCeiling: 115.077423, }, { repo: "Qwen/Qwen3.5-27B-FP8", @@ -2315,7 +2320,7 @@ for (const reference of [ single: 9.356588, batch: null, aggregate: 0, - dennard: 134.715087, + memoryPowerCeiling: 134.715087, }, { repo: "Qwen/Qwen3.5-27B-FP8", @@ -2324,7 +2329,7 @@ for (const reference of [ single: 21.043755, batch: 1, aggregate: 21.043755, - dennard: 302.98558, + memoryPowerCeiling: 302.98558, }, { repo: "Qwen/Qwen3.6-27B", @@ -2333,7 +2338,7 @@ for (const reference of [ single: 5.102682, batch: null, aggregate: 0, - dennard: 51.166376, + memoryPowerCeiling: 51.166376, }, { repo: "Qwen/Qwen3.6-27B", @@ -2342,7 +2347,7 @@ for (const reference of [ single: 11.476361, batch: null, aggregate: 0, - dennard: 115.077491, + memoryPowerCeiling: 115.077491, }, { repo: "Qwen/Qwen3.6-27B-FP8", @@ -2351,7 +2356,7 @@ for (const reference of [ single: 9.356593, batch: null, aggregate: 0, - dennard: 134.715197, + memoryPowerCeiling: 134.715197, }, { repo: "Qwen/Qwen3.6-27B-FP8", @@ -2360,7 +2365,7 @@ for (const reference of [ single: 21.043767, batch: 1, aggregate: 21.043767, - dennard: 302.985827, + memoryPowerCeiling: 302.985827, }, { repo: "unsloth/Qwen3.6-35B-A3B-MTP-GGUF", @@ -2369,7 +2374,7 @@ for (const reference of [ single: 78.636048, batch: 9, aggregate: 181.996537, - dennard: 4561.971324, + memoryPowerCeiling: 4561.971324, }, { repo: "unsloth/Qwen3.6-35B-A3B-MTP-GGUF", @@ -2378,7 +2383,7 @@ for (const reference of [ single: 176.859097, batch: 24, aggregate: 492.935463, - dennard: 10260.257849, + memoryPowerCeiling: 10260.257849, }, { repo: "unsloth/Qwen3.6-27B-MTP-GGUF", @@ -2387,7 +2392,7 @@ for (const reference of [ single: 14.242137, batch: null, aggregate: 0, - dennard: 245.592315, + memoryPowerCeiling: 245.592315, }, { repo: "unsloth/Qwen3.6-27B-MTP-GGUF", @@ -2396,7 +2401,7 @@ for (const reference of [ single: 32.031767, batch: 6, aggregate: 121.069248, - dennard: 552.357806, + memoryPowerCeiling: 552.357806, }, { repo: "DavidAU/Qwen3.6-27B-Heretic-Uncensored-FINETUNE-NEO-CODE-Di-IMatrix-MAX-GGUF", @@ -2405,7 +2410,7 @@ for (const reference of [ single: 8.876153, batch: null, aggregate: 0, - dennard: 128.679458, + memoryPowerCeiling: 128.679458, }, { repo: "DavidAU/Qwen3.6-27B-Heretic-Uncensored-FINETUNE-NEO-CODE-Di-IMatrix-MAX-GGUF", @@ -2414,7 +2419,7 @@ for (const reference of [ single: 19.963216, batch: null, aggregate: 0, - dennard: 289.410942, + memoryPowerCeiling: 289.410942, }, { repo: "lmstudio-community/Qwen3.6-27B-MLX-4bit", @@ -2423,7 +2428,7 @@ for (const reference of [ single: 16.377, batch: null, aggregate: 0, - dennard: 293.391795, + memoryPowerCeiling: 293.391795, }, { repo: "lmstudio-community/Qwen3.6-27B-MLX-4bit", @@ -2432,7 +2437,7 @@ for (const reference of [ single: 36.833253, batch: 7, aggregate: 142.40184, - dennard: 659.862864, + memoryPowerCeiling: 659.862864, }, { repo: "lmstudio-community/Qwen3.6-27B-MLX-5bit", @@ -2441,7 +2446,7 @@ for (const reference of [ single: 13.737602, batch: null, aggregate: 0, - dennard: 232.300037, + memoryPowerCeiling: 232.300037, }, { repo: "lmstudio-community/Qwen3.6-27B-MLX-5bit", @@ -2450,7 +2455,7 @@ for (const reference of [ single: 30.897024, batch: 5, aggregate: 106.299067, - dennard: 522.462355, + memoryPowerCeiling: 522.462355, }, { repo: "lmstudio-community/Qwen3.6-27B-MLX-6bit", @@ -2459,7 +2464,7 @@ for (const reference of [ single: 11.830879, batch: null, aggregate: 0, - dennard: 190.000967, + memoryPowerCeiling: 190.000967, }, { repo: "lmstudio-community/Qwen3.6-27B-MLX-6bit", @@ -2468,7 +2473,7 @@ for (const reference of [ single: 26.608644, batch: 4, aggregate: 82.329232, - dennard: 427.328183, + memoryPowerCeiling: 427.328183, }, { repo: "lmstudio-community/Qwen3.6-27B-MLX-8bit", @@ -2477,7 +2482,7 @@ for (const reference of [ single: 9.260297, batch: null, aggregate: 0, - dennard: 135.255193, + memoryPowerCeiling: 135.255193, }, { repo: "lmstudio-community/Qwen3.6-27B-MLX-8bit", @@ -2486,7 +2491,7 @@ for (const reference of [ single: 20.827187, batch: 1, aggregate: 20.827187, - dennard: 304.200324, + memoryPowerCeiling: 304.200324, }, { repo: "TheBloke/TinyLlama-1.1B-Chat-v0.3-GPTQ", @@ -2495,7 +2500,7 @@ for (const reference of [ single: 201.046372, batch: 18, aggregate: 360.975091, - dennard: 22682.625291, + memoryPowerCeiling: 22682.625291, }, { repo: "TheBloke/TinyLlama-1.1B-Chat-v0.3-GPTQ", @@ -2504,7 +2509,7 @@ for (const reference of [ single: 452.170229, batch: 41, aggregate: 833.749102, - dennard: 51015.135269, + memoryPowerCeiling: 51015.135269, }, { repo: "Qwen/Qwen2.5-72B-Instruct-AWQ", @@ -2513,7 +2518,7 @@ for (const reference of [ single: 5.505157, batch: null, aggregate: 0, - dennard: 16.704415, + memoryPowerCeiling: 16.704415, }, { repo: "Qwen/Qwen2.5-72B-Instruct-AWQ", @@ -2522,7 +2527,7 @@ for (const reference of [ single: 12.381563, batch: null, aggregate: 0, - dennard: 37.569637, + memoryPowerCeiling: 37.569637, }, { repo: "cyankiwi/Qwen3.6-27B-AWQ-INT4", @@ -2531,7 +2536,7 @@ for (const reference of [ single: 14.435749, batch: null, aggregate: 0, - dennard: 243.190956, + memoryPowerCeiling: 243.190956, }, { repo: "cyankiwi/Qwen3.6-27B-AWQ-INT4", @@ -2540,7 +2545,7 @@ for (const reference of [ single: 32.467215, batch: 6, aggregate: 122.100849, - dennard: 546.956949, + memoryPowerCeiling: 546.956949, }, { repo: "QuantTrio/Qwen3.6-27B-AWQ", @@ -2549,7 +2554,7 @@ for (const reference of [ single: 13.793967, batch: null, aggregate: 0, - dennard: 227.721425, + memoryPowerCeiling: 227.721425, }, { repo: "QuantTrio/Qwen3.6-27B-AWQ", @@ -2558,7 +2563,7 @@ for (const reference of [ single: 31.023794, batch: 5, aggregate: 106.598788, - dennard: 512.164671, + memoryPowerCeiling: 512.164671, }, { repo: "unsloth/Qwen3.6-27B-NVFP4", @@ -2567,7 +2572,7 @@ for (const reference of [ single: 11.225601, batch: null, aggregate: 0, - dennard: 172.643281, + memoryPowerCeiling: 172.643281, }, { repo: "unsloth/Qwen3.6-27B-NVFP4", @@ -2576,7 +2581,7 @@ for (const reference of [ single: 25.247321, batch: 3, aggregate: 63.906033, - dennard: 388.289285, + memoryPowerCeiling: 388.289285, }, { repo: "deepseek-ai/DeepSeek-Coder-V2-Lite-Instruct", @@ -2585,7 +2590,7 @@ for (const reference of [ single: 19.854213, batch: null, aggregate: 0, - dennard: 178.409796, + memoryPowerCeiling: 178.409796, }, { repo: "deepseek-ai/DeepSeek-Coder-V2-Lite-Instruct", @@ -2594,7 +2599,7 @@ for (const reference of [ single: 44.653798, batch: 2, aggregate: 49.034503, - dennard: 401.258661, + memoryPowerCeiling: 401.258661, }, { repo: "deepseek-ai/DeepSeek-V2-Lite-Chat", @@ -2603,7 +2608,7 @@ for (const reference of [ single: 19.854213, batch: null, aggregate: 0, - dennard: 178.409796, + memoryPowerCeiling: 178.409796, }, { repo: "deepseek-ai/DeepSeek-V2-Lite-Chat", @@ -2612,7 +2617,7 @@ for (const reference of [ single: 44.653798, batch: 2, aggregate: 49.034503, - dennard: 401.258661, + memoryPowerCeiling: 401.258661, }, { repo: "deepseek-ai/DeepSeek-V2-Lite", @@ -2621,7 +2626,7 @@ for (const reference of [ single: 19.854213, batch: null, aggregate: 0, - dennard: 178.409796, + memoryPowerCeiling: 178.409796, }, { repo: "deepseek-ai/DeepSeek-V2-Lite", @@ -2630,7 +2635,7 @@ for (const reference of [ single: 44.653798, batch: 2, aggregate: 49.034503, - dennard: 401.258661, + memoryPowerCeiling: 401.258661, }, { repo: "deepseek-ai/deepseek-vl2-tiny", @@ -2639,7 +2644,7 @@ for (const reference of [ single: 87.659171, batch: 5, aggregate: 110.013092, - dennard: 4382.742068, + memoryPowerCeiling: 4382.742068, }, { repo: "deepseek-ai/deepseek-vl2-tiny", @@ -2648,7 +2653,7 @@ for (const reference of [ single: 197.152861, batch: 13, aggregate: 268.300306, - dennard: 9857.156154, + memoryPowerCeiling: 9857.156154, }, { repo: "nm-testing/SmolLM-1.7B-Instruct-quantized.w4a16", @@ -2657,7 +2662,7 @@ for (const reference of [ single: 35.91877, batch: 1, aggregate: 35.91877, - dennard: 1254.742878, + memoryPowerCeiling: 1254.742878, }, { repo: "nm-testing/SmolLM-1.7B-Instruct-quantized.w4a16", @@ -2666,7 +2671,7 @@ for (const reference of [ single: 80.78434, batch: 4, aggregate: 92.767283, - dennard: 2822.022443, + memoryPowerCeiling: 2822.022443, }, { repo: "microsoft/Phi-3.5-mini-instruct", @@ -2675,7 +2680,7 @@ for (const reference of [ single: 13.630869, batch: null, aggregate: 0, - dennard: 104.775789, + memoryPowerCeiling: 104.775789, }, { repo: "microsoft/Phi-3.5-mini-instruct", @@ -2684,7 +2689,7 @@ for (const reference of [ single: 30.656973, batch: 1, aggregate: 30.656973, - dennard: 235.649576, + memoryPowerCeiling: 235.649576, }, { repo: "Qwen/Qwen3.6-35B-A3B", @@ -2693,7 +2698,7 @@ for (const reference of [ single: 41.2817, batch: 3, aggregate: 68.862096, - dennard: 1054.566046, + memoryPowerCeiling: 1054.566046, }, { repo: "Qwen/Qwen3.6-35B-A3B", @@ -2702,7 +2707,7 @@ for (const reference of [ single: 92.846021, batch: 10, aggregate: 214.632765, - dennard: 2371.807884, + memoryPowerCeiling: 2371.807884, }, { repo: "RedHatAI/Qwen3.6-35B-A3B-NVFP4", @@ -2711,7 +2716,7 @@ for (const reference of [ single: 59.434533, batch: 8, aggregate: 166.298989, - dennard: 3168.39637, + memoryPowerCeiling: 3168.39637, }, { repo: "RedHatAI/Qwen3.6-35B-A3B-NVFP4", @@ -2720,7 +2725,7 @@ for (const reference of [ single: 133.673272, batch: 24, aggregate: 487.060889, - dennard: 7125.99037, + memoryPowerCeiling: 7125.99037, }, { repo: "Qwen/Qwen3.5-4B", @@ -2729,7 +2734,7 @@ for (const reference of [ single: 28.700617, batch: 4, aggregate: 85.223067, - dennard: 1079.15444, + memoryPowerCeiling: 1079.15444, }, { repo: "Qwen/Qwen3.5-4B", @@ -2738,7 +2743,7 @@ for (const reference of [ single: 64.550105, batch: 20, aggregate: 403.666919, - dennard: 2427.109253, + memoryPowerCeiling: 2427.109253, }, { repo: "deepseek-ai/DeepSeek-R1", @@ -2747,7 +2752,7 @@ for (const reference of [ single: 6.535707, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "deepseek-ai/DeepSeek-R1", @@ -2756,7 +2761,7 @@ for (const reference of [ single: 14.699356, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "deepseek-ai/DeepSeek-R1-0528", @@ -2765,7 +2770,7 @@ for (const reference of [ single: 6.535707, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "deepseek-ai/DeepSeek-R1-0528", @@ -2774,7 +2779,7 @@ for (const reference of [ single: 14.699356, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "deepseek-ai/DeepSeek-V3.2", @@ -2783,7 +2788,7 @@ for (const reference of [ single: 6.509023, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "deepseek-ai/DeepSeek-V3.2", @@ -2792,7 +2797,7 @@ for (const reference of [ single: 14.639341, batch: null, aggregate: 0, - dennard: 0, + memoryPowerCeiling: 0, }, { repo: "openai/gpt-oss-20b", @@ -2801,7 +2806,7 @@ for (const reference of [ single: 60.698215, batch: 6, aggregate: 128.187238, - dennard: 3178.551951, + memoryPowerCeiling: 3178.551951, }, { repo: "openai/gpt-oss-20b", @@ -2810,7 +2815,7 @@ for (const reference of [ single: 136.5154, batch: 23, aggregate: 466.196276, - dennard: 7148.831127, + memoryPowerCeiling: 7148.831127, }, { repo: "openai/gpt-oss-120b", @@ -2819,7 +2824,7 @@ for (const reference of [ single: 44.122861, batch: 3, aggregate: 67.17918, - dennard: 809.424149, + memoryPowerCeiling: 809.424149, }, { repo: "openai/gpt-oss-120b", @@ -2828,7 +2833,7 @@ for (const reference of [ single: 99.236032, batch: 9, aggregate: 191.108127, - dennard: 1820.463104, + memoryPowerCeiling: 1820.463104, }, { repo: "Qwen/Qwen3.6-35B-A3B-FP8", @@ -2837,7 +2842,7 @@ for (const reference of [ single: 64.974175, batch: 6, aggregate: 132.26805, - dennard: 3063.529404, + memoryPowerCeiling: 3063.529404, }, { repo: "Qwen/Qwen3.6-35B-A3B-FP8", @@ -2846,7 +2851,7 @@ for (const reference of [ single: 146.132393, batch: 18, aggregate: 375.114551, - dennard: 6890.135729, + memoryPowerCeiling: 6890.135729, }, { repo: "Qwen/Qwen3.5-35B-A3B-FP8", @@ -2855,7 +2860,7 @@ for (const reference of [ single: 64.974026, batch: 6, aggregate: 132.267948, - dennard: 3063.5206, + memoryPowerCeiling: 3063.5206, }, { repo: "Qwen/Qwen3.5-35B-A3B-FP8", @@ -2864,7 +2869,7 @@ for (const reference of [ single: 146.132059, batch: 18, aggregate: 375.114429, - dennard: 6890.115929, + memoryPowerCeiling: 6890.115929, }, { repo: "Qwen/Qwen3.5-35B-A3B-GPTQ-Int4", @@ -2873,7 +2878,7 @@ for (const reference of [ single: 53.229666, batch: 8, aggregate: 162.529181, - dennard: 2801.834632, + memoryPowerCeiling: 2801.834632, }, { repo: "Qwen/Qwen3.5-35B-A3B-GPTQ-Int4", @@ -2882,7 +2887,7 @@ for (const reference of [ single: 119.718004, batch: 24, aggregate: 488.105938, - dennard: 6301.562139, + memoryPowerCeiling: 6301.562139, }, ]) { assertProfiledReference(reference); @@ -2974,10 +2979,10 @@ for (const reference of [ "Qwen3Guard Gen 0.6B DGX Spark aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2366.129025317, 0.000001, - "Qwen3Guard Gen 0.6B DGX Spark Dennard bound", + "Qwen3Guard Gen 0.6B DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 8); @@ -3037,10 +3042,10 @@ for (const reference of [ "Qwen3 0.6B Base DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2372.3423304041376, 0.000000001, - "Qwen3 0.6B Base DGX Spark Dennard bound", + "Qwen3 0.6B Base DGX Spark memory-power bound", ); } @@ -3130,10 +3135,10 @@ for (const reference of [ "MaziyarPanahi Qwen3 0.6B F16 GGUF DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2365.747451742909, 0.000000001, - "MaziyarPanahi Qwen3 0.6B F16 GGUF DGX Dennard bound", + "MaziyarPanahi Qwen3 0.6B F16 GGUF DGX memory-power bound", ); assert.equal(m5Result.best.batch, 8); assertNear( @@ -3214,10 +3219,10 @@ for (const reference of [ "Unsloth Qwen3 0.6B BF16 GGUF DGX aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2371.9600673597843, 0.000000001, - "Unsloth Qwen3 0.6B BF16 GGUF DGX Dennard bound", + "Unsloth Qwen3 0.6B BF16 GGUF DGX memory-power bound", ); assert.equal(m5Result.best.batch, 8); assertNear( @@ -3376,10 +3381,10 @@ for (const reference of [ "InternVL2.5 8B AWQ DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 542.3879083004412, 0.000000001, - "InternVL2.5 8B AWQ DGX Spark Dennard bound", + "InternVL2.5 8B AWQ DGX Spark memory-power bound", ); } @@ -3493,10 +3498,10 @@ for (const reference of [ assert.equal(result.bMem, 18); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 352.67213460344647, 0.000000001, - "Unsloth Qwen2.5-VL 7B GGUF DGX Dennard bound", + "Unsloth Qwen2.5-VL 7B GGUF DGX memory-power bound", ); const m5Result = profiled( @@ -3519,10 +3524,10 @@ for (const reference of [ "Unsloth Qwen2.5-VL 7B GGUF M5 Max per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 793.1893430275315, 0.000000001, - "Unsloth Qwen2.5-VL 7B GGUF M5 Max Dennard bound", + "Unsloth Qwen2.5-VL 7B GGUF M5 Max memory-power bound", ); } @@ -3633,10 +3638,10 @@ for (const reference of [ "Base Gemma 4 E2B DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 10500.377940328286, 0.000000001, - "Base Gemma 4 E2B DGX Dennard bound", + "Base Gemma 4 E2B DGX memory-power bound", ); assert.equal(m5Result.best.batch, 55); assertNear( @@ -3658,10 +3663,10 @@ for (const reference of [ "Base Gemma 4 E2B M5 Max per-session tok/s", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 23616.23463502406, 0.000000001, - "Base Gemma 4 E2B M5 Max Dennard bound", + "Base Gemma 4 E2B M5 Max memory-power bound", ); } @@ -3713,10 +3718,10 @@ for (const reference of [ "Unsloth Gemma 4 E2B GGUF DGX aggregate tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 4537.922746163, 0.000000001, - "Unsloth Gemma 4 E2B GGUF DGX Dennard bound", + "Unsloth Gemma 4 E2B GGUF DGX memory-power bound", ); } @@ -3787,10 +3792,10 @@ for (const reference of [ "LM Studio Gemma 4 E2B MLX 4-bit DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 24552.051710905784, 0.000000001, - "LM Studio Gemma 4 E2B MLX 4-bit DGX Dennard bound", + "LM Studio Gemma 4 E2B MLX 4-bit DGX memory-power bound", ); assert.equal(m5Result.best.batch, 60); assertNear( @@ -3812,10 +3817,10 @@ for (const reference of [ "LM Studio Gemma 4 E2B MLX 4-bit M5 Max per-session tok/s", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 55219.63278570019, 0.000000001, - "LM Studio Gemma 4 E2B MLX 4-bit M5 Max Dennard bound", + "LM Studio Gemma 4 E2B MLX 4-bit M5 Max memory-power bound", ); } @@ -3886,10 +3891,10 @@ for (const reference of [ "LM Studio Gemma 4 E2B MLX 5-bit DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 21934.997798362445, 0.000000001, - "LM Studio Gemma 4 E2B MLX 5-bit DGX Dennard bound", + "LM Studio Gemma 4 E2B MLX 5-bit DGX memory-power bound", ); assert.equal(m5Result.best.batch, 59); assertNear( @@ -3911,10 +3916,10 @@ for (const reference of [ "LM Studio Gemma 4 E2B MLX 5-bit M5 Max per-session tok/s", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 49333.65805199466, 0.000000001, - "LM Studio Gemma 4 E2B MLX 5-bit M5 Max Dennard bound", + "LM Studio Gemma 4 E2B MLX 5-bit M5 Max memory-power bound", ); } @@ -3985,10 +3990,10 @@ for (const reference of [ "LM Studio Gemma 4 E2B MLX 6-bit DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 21018.890435269164, 0.000000001, - "LM Studio Gemma 4 E2B MLX 6-bit DGX Dennard bound", + "LM Studio Gemma 4 E2B MLX 6-bit DGX memory-power bound", ); assert.equal(m5Result.best.batch, 59); assertNear( @@ -4010,10 +4015,10 @@ for (const reference of [ "LM Studio Gemma 4 E2B MLX 6-bit M5 Max per-session tok/s", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 47273.25541119146, 0.000000001, - "LM Studio Gemma 4 E2B MLX 6-bit M5 Max Dennard bound", + "LM Studio Gemma 4 E2B MLX 6-bit M5 Max memory-power bound", ); } @@ -4084,10 +4089,10 @@ for (const reference of [ "LM Studio Gemma 4 E2B MLX 8-bit DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 19383.35314027924, 0.000000001, - "LM Studio Gemma 4 E2B MLX 8-bit DGX Dennard bound", + "LM Studio Gemma 4 E2B MLX 8-bit DGX memory-power bound", ); assert.equal(m5Result.best.batch, 59); assertNear( @@ -4109,10 +4114,10 @@ for (const reference of [ "LM Studio Gemma 4 E2B MLX 8-bit M5 Max per-session tok/s", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 43594.79424223976, 0.000000001, - "LM Studio Gemma 4 E2B MLX 8-bit M5 Max Dennard bound", + "LM Studio Gemma 4 E2B MLX 8-bit M5 Max memory-power bound", ); } @@ -4137,10 +4142,10 @@ for (const reference of [ "Unsloth Gemma 4 E2B GGUF M5 Max aggregate tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 10206.170571957, 0.000000001, - "Unsloth Gemma 4 E2B GGUF M5 Max Dennard bound", + "Unsloth Gemma 4 E2B GGUF M5 Max memory-power bound", ); } @@ -4232,10 +4237,10 @@ for (const reference of [ "LM Studio Gemma 4 E2B GGUF Q4_K_M DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 34519.68678495126, 0.000000001, - "LM Studio Gemma 4 E2B GGUF Q4_K_M DGX Dennard bound", + "LM Studio Gemma 4 E2B GGUF Q4_K_M DGX memory-power bound", ); assertNear( m5Result.single.aggregate, @@ -4251,10 +4256,10 @@ for (const reference of [ "LM Studio Gemma 4 E2B GGUF Q4_K_M M5 Max aggregate tok/s", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 77637.68383135556, 0.000000001, - "LM Studio Gemma 4 E2B GGUF Q4_K_M M5 Max Dennard bound", + "LM Studio Gemma 4 E2B GGUF Q4_K_M M5 Max memory-power bound", ); } @@ -4319,10 +4324,10 @@ for (const reference of [ "Google Gemma 4 E2B QAT Q4_0 GGUF DGX aggregate tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 36466.75705150731, 0.000000001, - "Google Gemma 4 E2B QAT Q4_0 GGUF DGX Dennard bound", + "Google Gemma 4 E2B QAT Q4_0 GGUF DGX memory-power bound", ); assertNear( m5Result.single.aggregate, @@ -4338,10 +4343,10 @@ for (const reference of [ "Google Gemma 4 E2B QAT Q4_0 GGUF M5 Max aggregate tok/s", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 82016.80889972705, 0.000000001, - "Google Gemma 4 E2B QAT Q4_0 GGUF M5 Max Dennard bound", + "Google Gemma 4 E2B QAT Q4_0 GGUF M5 Max memory-power bound", ); } @@ -4438,10 +4443,10 @@ for (const reference of [ "Unsloth Gemma 4 E2B QAT GGUF DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 61022.61377569922, 0.000000001, - "Unsloth Gemma 4 E2B QAT GGUF DGX Dennard bound", + "Unsloth Gemma 4 E2B QAT GGUF DGX memory-power bound", ); assertNear( m5Result.single.aggregate, @@ -4457,10 +4462,10 @@ for (const reference of [ "Unsloth Gemma 4 E2B QAT GGUF M5 Max aggregate tok/s", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 137244.9994808766, 0.000000001, - "Unsloth Gemma 4 E2B QAT GGUF M5 Max Dennard bound", + "Unsloth Gemma 4 E2B QAT GGUF M5 Max memory-power bound", ); } @@ -4525,10 +4530,10 @@ for (const reference of [ "Google Gemma 4 E2B QAT W4A16 CT DGX aggregate tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 26387.17839351705, 0.000000001, - "Google Gemma 4 E2B QAT W4A16 CT DGX Dennard bound", + "Google Gemma 4 E2B QAT W4A16 CT DGX memory-power bound", ); assertNear( m5Result.single.aggregate, @@ -4544,10 +4549,10 @@ for (const reference of [ "Google Gemma 4 E2B QAT W4A16 CT M5 Max aggregate tok/s", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 59346.98730263541, 0.000000001, - "Google Gemma 4 E2B QAT W4A16 CT M5 Max Dennard bound", + "Google Gemma 4 E2B QAT W4A16 CT M5 Max memory-power bound", ); } @@ -4644,10 +4649,10 @@ for (const reference of [ "Google Gemma 4 E4B QAT W4A16 CT DGX aggregate tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 4988.322628766973, 0.000000001, - "Google Gemma 4 E4B QAT W4A16 CT DGX Dennard bound", + "Google Gemma 4 E4B QAT W4A16 CT DGX memory-power bound", ); assertNear( m5Result.single.aggregate, @@ -4663,10 +4668,10 @@ for (const reference of [ "Google Gemma 4 E4B QAT W4A16 CT M5 Max aggregate tok/s", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 11219.157853710336, 0.000000001, - "Google Gemma 4 E4B QAT W4A16 CT M5 Max Dennard bound", + "Google Gemma 4 E4B QAT W4A16 CT M5 Max memory-power bound", ); } @@ -4724,10 +4729,10 @@ for (const reference of [ "Gemma 4 E4B base DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1040.315449503, 0.000000001, - "Gemma 4 E4B base DGX Dennard bound", + "Gemma 4 E4B base DGX memory-power bound", ); } @@ -4836,10 +4841,10 @@ for (const reference of [ "leon-se Gemma 4 E4B FP8 DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1866.469542102, 0.000000001, - "leon-se Gemma 4 E4B FP8 DGX Dennard bound", + "leon-se Gemma 4 E4B FP8 DGX memory-power bound", ); } @@ -4935,10 +4940,10 @@ for (const reference of [ "prithivMLmods Gemma 4 E4B NVFP4 DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2825.200248769, 0.000000001, - "prithivMLmods Gemma 4 E4B NVFP4 DGX Dennard bound", + "prithivMLmods Gemma 4 E4B NVFP4 DGX memory-power bound", ); } @@ -5023,10 +5028,10 @@ for (const reference of [ assert.equal(result.bMem, 18); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 348.3929657044281, 0.000000001, - "Music Flamingo DGX Dennard bound", + "Music Flamingo DGX memory-power bound", ); } @@ -5123,10 +5128,10 @@ for (const reference of [ "Chunity Gemma 4 E4B AWQ DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2619.3459329892357, 0.000000001, - "Chunity Gemma 4 E4B AWQ DGX Dennard bound", + "Chunity Gemma 4 E4B AWQ DGX memory-power bound", ); } @@ -5222,10 +5227,10 @@ for (const reference of [ "cyankiwi Gemma 4 E4B AWQ DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2773.2657953763014, 0.000000001, - "cyankiwi Gemma 4 E4B AWQ DGX Dennard bound", + "cyankiwi Gemma 4 E4B AWQ DGX memory-power bound", ); } @@ -5256,10 +5261,10 @@ for (const reference of [ "leon-se Gemma 4 E4B FP8 M5 Max per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 4197.847248537, 0.000000001, - "leon-se Gemma 4 E4B FP8 M5 Max Dennard bound", + "leon-se Gemma 4 E4B FP8 M5 Max memory-power bound", ); } @@ -5317,10 +5322,10 @@ for (const reference of [ "Unsloth Gemma 4 E4B GGUF DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1049.583239637, 0.000000001, - "Unsloth Gemma 4 E4B GGUF DGX Dennard bound", + "Unsloth Gemma 4 E4B GGUF DGX memory-power bound", ); } @@ -5351,10 +5356,10 @@ for (const reference of [ "Unsloth Gemma 4 E4B GGUF M5 Max per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2360.60113237, 0.000000001, - "Unsloth Gemma 4 E4B GGUF M5 Max Dennard bound", + "Unsloth Gemma 4 E4B GGUF M5 Max memory-power bound", ); } @@ -5415,10 +5420,10 @@ for (const reference of [ "LM Studio Gemma 4 E4B GGUF DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3584.477601666, 0.000000001, - "LM Studio Gemma 4 E4B GGUF DGX Dennard bound", + "LM Studio Gemma 4 E4B GGUF DGX memory-power bound", ); } @@ -5449,10 +5454,10 @@ for (const reference of [ "LM Studio Gemma 4 E4B GGUF M5 Max per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 8061.792115103, 0.000000001, - "LM Studio Gemma 4 E4B GGUF M5 Max Dennard bound", + "LM Studio Gemma 4 E4B GGUF M5 Max memory-power bound", ); } @@ -5513,10 +5518,10 @@ for (const reference of [ "Google Gemma 4 E4B QAT Q4_0 GGUF DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3819.145480339, 0.000000001, - "Google Gemma 4 E4B QAT Q4_0 GGUF DGX Dennard bound", + "Google Gemma 4 E4B QAT Q4_0 GGUF DGX memory-power bound", ); } @@ -5547,10 +5552,10 @@ for (const reference of [ "Google Gemma 4 E4B QAT Q4_0 GGUF M5 Max per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 8589.579944791, 0.000000001, - "Google Gemma 4 E4B QAT Q4_0 GGUF M5 Max Dennard bound", + "Google Gemma 4 E4B QAT Q4_0 GGUF M5 Max memory-power bound", ); } @@ -5628,10 +5633,10 @@ for (const reference of [ "Unsloth Gemma 4 E4B QAT GGUF DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 4163.459300340137, 0.000000001, - "Unsloth Gemma 4 E4B QAT GGUF DGX Dennard bound", + "Unsloth Gemma 4 E4B QAT GGUF DGX memory-power bound", ); } @@ -5662,10 +5667,10 @@ for (const reference of [ "Unsloth Gemma 4 E4B QAT GGUF M5 Max per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 9363.97073409833, 0.000000001, - "Unsloth Gemma 4 E4B QAT GGUF M5 Max Dennard bound", + "Unsloth Gemma 4 E4B QAT GGUF M5 Max memory-power bound", ); } @@ -6030,10 +6035,10 @@ for (const reference of [ assert.equal(result.bMem, 83); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 953.8215249169874, 0.000000001, - "Gemma 4 12B QAT unquantized DGX Spark Dennard bound", + "Gemma 4 12B QAT unquantized DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 11); @@ -6050,10 +6055,10 @@ for (const reference of [ "Gemma 4 12B QAT unquantized M5 Max per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 2145.2249681283165, 0.000000001, - "Gemma 4 12B QAT unquantized M5 Max Dennard bound", + "Gemma 4 12B QAT unquantized M5 Max memory-power bound", ); assert.equal(m1UltraResult.status_code, "ok"); assert.equal(m1UltraResult.best.batch, 27); @@ -6246,10 +6251,10 @@ for (const reference of [ "RedHatAI Gemma 4 12B NVFP4 DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3184.7825608234134, 0.000000001, - "RedHatAI Gemma 4 12B NVFP4 DGX Spark Dennard bound", + "RedHatAI Gemma 4 12B NVFP4 DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 37); @@ -6351,10 +6356,10 @@ for (const reference of [ assert.equal(result.bMem, 20); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 300.17858280032874, 0.000000001, - "LM Studio Gemma 4 31B Q4_K_M GGUF DGX Spark Dennard bound", + "LM Studio Gemma 4 31B Q4_K_M GGUF DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.bMem, 20); @@ -6378,10 +6383,10 @@ for (const reference of [ "LM Studio Gemma 4 31B Q4_K_M GGUF M5 Max per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 675.1269224886514, 0.000000001, - "LM Studio Gemma 4 31B Q4_K_M GGUF M5 Max Dennard bound", + "LM Studio Gemma 4 31B Q4_K_M GGUF M5 Max memory-power bound", ); } @@ -6465,10 +6470,10 @@ for (const reference of [ assert.equal(result.bMem, 11); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 52.78833075034925, 0.000000001, - "llmfan46 Gemma 4 31B BF16 GGUF DGX Spark Dennard bound", + "llmfan46 Gemma 4 31B BF16 GGUF DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "no_floor"); assertNear( @@ -6479,10 +6484,10 @@ for (const reference of [ ); assert.equal(m5Result.best, null); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 118.72540322606022, 0.000000001, - "llmfan46 Gemma 4 31B BF16 GGUF M5 Max Dennard bound", + "llmfan46 Gemma 4 31B BF16 GGUF M5 Max memory-power bound", ); assert.equal(m1UltraResult.status_code, "no_floor"); assertNear( @@ -6586,10 +6591,10 @@ for (const reference of [ "llmfan46 Gemma 4 E4B BF16 GGUF DGX Spark aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1049.5832505179342, 0.000000001, - "llmfan46 Gemma 4 E4B BF16 GGUF DGX Spark Dennard bound", + "llmfan46 Gemma 4 E4B BF16 GGUF DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best?.batch, 22); @@ -6606,10 +6611,10 @@ for (const reference of [ "llmfan46 Gemma 4 E4B BF16 GGUF M5 Max aggregate throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 2360.6011568425333, 0.000000001, - "llmfan46 Gemma 4 E4B BF16 GGUF M5 Max Dennard bound", + "llmfan46 Gemma 4 E4B BF16 GGUF M5 Max memory-power bound", ); assert.equal(m1UltraResult.status_code, "ok"); assert.equal(m1UltraResult.best?.batch, 32); @@ -6692,10 +6697,10 @@ for (const reference of [ "cyankiwi Gemma 4 12B AWQ INT4 DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1167.63319274316, 0.000000001, - "cyankiwi Gemma 4 12B AWQ INT4 DGX Spark Dennard bound", + "cyankiwi Gemma 4 12B AWQ INT4 DGX Spark memory-power bound", ); } @@ -6775,10 +6780,10 @@ for (const reference of [ "ggml-org Gemma 4 12B GGUF DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 954.627313572, 0.000000001, - "ggml-org Gemma 4 12B GGUF DGX Spark Dennard bound", + "ggml-org Gemma 4 12B GGUF DGX Spark memory-power bound", ); } @@ -6809,10 +6814,10 @@ for (const reference of [ "ggml-org Gemma 4 12B GGUF M5 Max per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2147.037254701, 0.000000001, - "ggml-org Gemma 4 12B GGUF M5 Max Dennard bound", + "ggml-org Gemma 4 12B GGUF M5 Max memory-power bound", ); } @@ -6873,10 +6878,10 @@ for (const reference of [ "LM Studio Gemma 4 12B GGUF Q4_K_M DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3614.7747050215776, 0.000000001, - "LM Studio Gemma 4 12B GGUF Q4_K_M DGX Spark Dennard bound", + "LM Studio Gemma 4 12B GGUF Q4_K_M DGX Spark memory-power bound", ); } @@ -6957,10 +6962,10 @@ for (const reference of [ "zaakirio Gemma 4 12B Uncensored GGUF Q4_K_M DGX per-session", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3614.774804652182, 0.000000001, - "zaakirio Gemma 4 12B Uncensored GGUF Q4_K_M DGX Dennard", + "zaakirio Gemma 4 12B Uncensored GGUF Q4_K_M DGX memory-power ceiling", ); const m5Result = profiled( @@ -7112,10 +7117,10 @@ for (const reference of [ "LM Studio Gemma 4 12B QAT GGUF Q4_0 DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3839.1513209264217, 0.000000001, - "LM Studio Gemma 4 12B QAT GGUF Q4_0 DGX Spark Dennard bound", + "LM Studio Gemma 4 12B QAT GGUF Q4_0 DGX Spark memory-power bound", ); } @@ -7176,10 +7181,10 @@ for (const reference of [ "Google Gemma 4 12B QAT GGUF Q4_0 DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3839.151349187415, 0.000000001, - "Google Gemma 4 12B QAT GGUF Q4_0 DGX Spark Dennard bound", + "Google Gemma 4 12B QAT GGUF Q4_0 DGX Spark memory-power bound", ); } @@ -7240,10 +7245,10 @@ for (const reference of [ "Unsloth Gemma 4 12B QAT GGUF UD-Q4_K_XL DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3997.004700180158, 0.000000001, - "Unsloth Gemma 4 12B QAT GGUF UD-Q4_K_XL DGX Spark Dennard bound", + "Unsloth Gemma 4 12B QAT GGUF UD-Q4_K_XL DGX Spark memory-power bound", ); } @@ -7274,10 +7279,10 @@ for (const reference of [ "Unsloth Gemma 4 12B QAT GGUF UD-Q4_K_XL M5 Max per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 8989.600314690906, 0.000000001, - "Unsloth Gemma 4 12B QAT GGUF UD-Q4_K_XL M5 Max Dennard bound", + "Unsloth Gemma 4 12B QAT GGUF UD-Q4_K_XL M5 Max memory-power bound", ); } @@ -7482,10 +7487,10 @@ for (const reference of [ "Phi-2 DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 179.98845499714673, 0.000000001, - "Phi-2 DGX Spark Dennard bound", + "Phi-2 DGX Spark memory-power bound", ); } @@ -7544,10 +7549,10 @@ for (const reference of [ "DialoGPT Medium FP16 DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 4682.094221205405, 0.000000001, - "DialoGPT Medium FP16 DGX Spark Dennard bound", + "DialoGPT Medium FP16 DGX Spark memory-power bound", ); } @@ -7621,10 +7626,10 @@ for (const reference of [ "BioGPT FP32 DGX Spark per-session throughput at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1191.0179528907304, 0.000000001, - "BioGPT FP32 DGX Spark Dennard bound", + "BioGPT FP32 DGX Spark memory-power bound", ); } @@ -7675,10 +7680,10 @@ for (const reference of [ "Phi-4 DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 42.72620650289599, 0.000000001, - "Phi-4 DGX Spark Dennard bound", + "Phi-4 DGX Spark memory-power bound", ); } @@ -8264,10 +8269,10 @@ for (const reference of [ "NVIDIA Phi-4 reasoning plus NVFP4 DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 338.0786716856145, 0.000000001, - "NVIDIA Phi-4 reasoning plus NVFP4 DGX Spark Dennard bound", + "NVIDIA Phi-4 reasoning plus NVFP4 DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 6); @@ -8341,10 +8346,10 @@ for (const reference of [ "Phi-3 Mini 128K DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 104.77578876, 0.000000001, - "Phi-3 Mini 128K DGX Spark Dennard bound", + "Phi-3 Mini 128K DGX Spark memory-power bound", ); } @@ -8398,10 +8403,10 @@ for (const reference of [ "Phi-3.5 Mini DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 104.77578876, 0.000000001, - "Phi-3.5 Mini DGX Spark Dennard bound", + "Phi-3.5 Mini DGX Spark memory-power bound", ); } @@ -8473,10 +8478,10 @@ for (const reference of [ "Phi-3.5 Mini Q4_K_M GGUF DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 349.372592328, 0.000000001, - "Phi-3.5 Mini Q4_K_M GGUF DGX Spark Dennard bound", + "Phi-3.5 Mini Q4_K_M GGUF DGX Spark memory-power bound", ); } @@ -8550,10 +8555,10 @@ for (const reference of [ "Vikhr-Nemo 12B Q8_0 GGUF DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 144.903446593, 0.000000001, - "Vikhr-Nemo 12B Q8_0 GGUF DGX Spark Dennard bound", + "Vikhr-Nemo 12B Q8_0 GGUF DGX Spark memory-power bound", ); } @@ -8635,10 +8640,10 @@ for (const reference of [ "MaziyarPanahi Ministral 3 3B FP16 GGUF DGX aggregate", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 422.8659810185597, 0.000000001, - "MaziyarPanahi Ministral 3 3B FP16 GGUF DGX Dennard bound", + "MaziyarPanahi Ministral 3 3B FP16 GGUF DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 6); @@ -8748,10 +8753,10 @@ for (const reference of [ "MaziyarPanahi Solar Pro FP16 GGUF DGX single-session aggregate", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 14.352529801341761, 0.000000001, - "MaziyarPanahi Solar Pro FP16 GGUF DGX Dennard bound", + "MaziyarPanahi Solar Pro FP16 GGUF DGX memory-power bound", ); assert.equal(m5Result.status_code, "no_floor"); assert.equal(m5Result.best, null); @@ -8762,10 +8767,10 @@ for (const reference of [ "MaziyarPanahi Solar Pro FP16 GGUF M5 single-session aggregate", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 32.28004871071004, 0.000000001, - "MaziyarPanahi Solar Pro FP16 GGUF M5 Dennard bound", + "MaziyarPanahi Solar Pro FP16 GGUF M5 memory-power bound", ); assert.equal(m1UltraResult.status_code, "no_floor"); assert.equal(m1UltraResult.best, null); @@ -8776,10 +8781,10 @@ for (const reference of [ "MaziyarPanahi Solar Pro FP16 GGUF M1 Ultra single-session aggregate", ); assertNear( - m1UltraResult.dennard, + m1UltraResult.memoryPowerCeiling, 42.05869538854728, 0.000000001, - "MaziyarPanahi Solar Pro FP16 GGUF M1 Ultra Dennard bound", + "MaziyarPanahi Solar Pro FP16 GGUF M1 Ultra memory-power bound", ); } @@ -8854,10 +8859,10 @@ for (const reference of [ "MaziyarPanahi Mistral Nemo F16 GGUF DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 68.72211735437708, 0.000000001, - "MaziyarPanahi Mistral Nemo F16 GGUF DGX Spark Dennard bound", + "MaziyarPanahi Mistral Nemo F16 GGUF DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 1); @@ -8931,10 +8936,10 @@ for (const reference of [ "Phi-3 Mini 4K DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 5118.504580350444, 0.000000001, - "Phi-3 Mini 4K DGX Spark Dennard bound", + "Phi-3 Mini 4K DGX Spark memory-power bound", ); } @@ -9001,10 +9006,10 @@ for (const reference of [ "Kaitchup Phi-3 Mini GPTQ DGX single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 19145.647820827, 0.000001, - "Kaitchup Phi-3 Mini GPTQ DGX Dennard bound", + "Kaitchup Phi-3 Mini GPTQ DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 35); @@ -9429,10 +9434,10 @@ for (const reference of [ "MaziyarPanahi Yi 1.5 6B GGUF DGX Spark aggregate throughput", ); assertNear( - dgxResult.dennard, + dgxResult.memoryPowerCeiling, 2178.8412263597575, 0.000000001, - "MaziyarPanahi Yi 1.5 6B GGUF DGX Spark Dennard bound", + "MaziyarPanahi Yi 1.5 6B GGUF DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best?.batch, 13); @@ -9524,10 +9529,10 @@ for (const reference of [ assert.equal(dgxResult.bMem, 8); assert.equal(dgxResult.best, null); assertNear( - dgxResult.dennard, + dgxResult.memoryPowerCeiling, 154.44287837337478, 0.000000001, - "MaziyarPanahi Mathstral 7B GGUF DGX Spark Dennard bound", + "MaziyarPanahi Mathstral 7B GGUF DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best?.batch, 3); @@ -9619,10 +9624,10 @@ for (const reference of [ assert.equal(dgxResult.bMem, 3); assert.equal(dgxResult.best, null); assertNear( - dgxResult.dennard, + dgxResult.memoryPowerCeiling, 20.380171270001767, 0.000000001, - "MaziyarPanahi Mistral Small 2409 GGUF DGX Spark Dennard bound", + "MaziyarPanahi Mistral Small 2409 GGUF DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "no_floor"); assert.equal(m5Result.best, null); @@ -9709,10 +9714,10 @@ for (const reference of [ assert.equal(dgxResult.bMem, 8); assert.equal(dgxResult.best, null); assertNear( - dgxResult.dennard, + dgxResult.memoryPowerCeiling, 154.52966161378703, 0.000000001, - "MaziyarPanahi WizardLM 2 7B GGUF DGX Spark Dennard bound", + "MaziyarPanahi WizardLM 2 7B GGUF DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best?.batch, 3); @@ -9806,10 +9811,10 @@ for (const reference of [ "MaziyarPanahi Yi-Coder 1.5B GGUF DGX Spark aggregate throughput", ); assertNear( - dgxResult.dennard, + dgxResult.memoryPowerCeiling, 2808.2756759973267, 0.000000001, - "MaziyarPanahi Yi-Coder 1.5B GGUF DGX Spark Dennard bound", + "MaziyarPanahi Yi-Coder 1.5B GGUF DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best?.batch, 4); @@ -9903,10 +9908,10 @@ for (const reference of [ "MaziyarPanahi Yi-Coder 9B GGUF DGX Spark aggregate throughput", ); assertNear( - dgxResult.dennard, + dgxResult.memoryPowerCeiling, 991.6006033928395, 0.000000001, - "MaziyarPanahi Yi-Coder 9B GGUF DGX Spark Dennard bound", + "MaziyarPanahi Yi-Coder 9B GGUF DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best?.batch, 8); @@ -10067,10 +10072,10 @@ for (const reference of [ "Gemma 4 26B A4B AWQ 8-bit DGX aggregate throughput", ); assertNear( - dgxResult.dennard, + dgxResult.memoryPowerCeiling, 6525.025629876776, 0.000000001, - "Gemma 4 26B A4B AWQ 8-bit DGX Dennard bound", + "Gemma 4 26B A4B AWQ 8-bit DGX memory-power bound", ); assert.equal(m5Result.best.batch, 22); assertNear( @@ -10147,10 +10152,10 @@ for (const reference of [ "Gemma 4 26B A4B QAT MLX DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 16288.814630623921, 0.000000001, - "Gemma 4 26B A4B QAT MLX DGX Spark Dennard bound", + "Gemma 4 26B A4B QAT MLX DGX Spark memory-power bound", ); } @@ -10220,10 +10225,10 @@ for (const reference of [ "Gemma 4 26B A4B MLX DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 16288.814630623921, 0.000000001, - "Gemma 4 26B A4B MLX DGX Spark Dennard bound", + "Gemma 4 26B A4B MLX DGX Spark memory-power bound", ); } @@ -10299,10 +10304,10 @@ for (const reference of [ "Gemma 4 26B A4B MLX 5-bit DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 13523.102536049713, 0.000000001, - "Gemma 4 26B A4B MLX 5-bit DGX Spark Dennard bound", + "Gemma 4 26B A4B MLX 5-bit DGX Spark memory-power bound", ); } @@ -10378,10 +10383,10 @@ for (const reference of [ "Gemma 4 26B A4B MLX 6-bit DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 11455.76734372208, 0.000000001, - "Gemma 4 26B A4B MLX 6-bit DGX Spark Dennard bound", + "Gemma 4 26B A4B MLX 6-bit DGX Spark memory-power bound", ); } @@ -10457,10 +10462,10 @@ for (const reference of [ "Gemma 4 26B A4B MLX 8-bit DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 8571.450932808382, 0.000000001, - "Gemma 4 26B A4B MLX 8-bit DGX Spark Dennard bound", + "Gemma 4 26B A4B MLX 8-bit DGX Spark memory-power bound", ); } @@ -10539,10 +10544,10 @@ for (const reference of [ "Google Gemma 4 26B A4B QAT Q4_0 GGUF DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 16776.797866192403, 0.000000001, - "Google Gemma 4 26B A4B QAT Q4_0 GGUF DGX Spark Dennard bound", + "Google Gemma 4 26B A4B QAT Q4_0 GGUF DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best?.batch, 45); @@ -10643,10 +10648,10 @@ for (const reference of [ "LM Studio Gemma 4 26B A4B QAT Q4_0 GGUF DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 16776.797657675677, 0.000000001, - "LM Studio Gemma 4 26B A4B QAT Q4_0 GGUF DGX Spark Dennard bound", + "LM Studio Gemma 4 26B A4B QAT Q4_0 GGUF DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best?.batch, 45); @@ -10706,10 +10711,10 @@ for (const reference of [ "Google Gemma 4 31B DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 88.49625946752622, 0.000000001, - "Google Gemma 4 31B DGX Spark Dennard bound", + "Google Gemma 4 31B DGX Spark memory-power bound", ); } @@ -10809,10 +10814,10 @@ for (const reference of [ assert.equal(result.bMem, 30); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 255.3815264144366, 0.000000001, - "RedHatAI Gemma 4 31B FP8 Dynamic DGX Spark Dennard bound", + "RedHatAI Gemma 4 31B FP8 Dynamic DGX Spark memory-power bound", ); const m5 = profiled( @@ -10827,10 +10832,10 @@ for (const reference of [ "RedHatAI Gemma 4 31B FP8 Dynamic M5 Max single-session throughput", ); assertNear( - m5.dennard, + m5.memoryPowerCeiling, 574.3745685658024, 0.000000001, - "RedHatAI Gemma 4 31B FP8 Dynamic M5 Max Dennard bound", + "RedHatAI Gemma 4 31B FP8 Dynamic M5 Max memory-power bound", ); } @@ -10890,10 +10895,10 @@ for (const reference of [ "OLMo 2 0425 1B DGX Spark aggregate at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 232.1092428490017, 0.000000001, - "OLMo 2 0425 1B DGX Spark Dennard bound", + "OLMo 2 0425 1B DGX Spark memory-power bound", ); const m5 = profiled( @@ -10915,10 +10920,10 @@ for (const reference of [ "OLMo 2 0425 1B M5 Max per-session throughput at b*", ); assertNear( - m5.dennard, + m5.memoryPowerCeiling, 522.0332421585605, 0.000000001, - "OLMo 2 0425 1B M5 Max Dennard bound", + "OLMo 2 0425 1B M5 Max memory-power bound", ); } @@ -11095,10 +11100,10 @@ for (const reference of [ "OLMoE 1B 7B 0125 Instruct DGX Spark per-session throughput at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 937.7318005036676, 0.000000001, - "OLMoE 1B 7B 0125 Instruct DGX Spark Dennard bound", + "OLMoE 1B 7B 0125 Instruct DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 5); @@ -11115,10 +11120,10 @@ for (const reference of [ "OLMoE 1B 7B 0125 Instruct M5 Max per-session throughput at b*", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 2109.0378223782122, 0.000000001, - "OLMoE 1B 7B 0125 Instruct M5 Max Dennard bound", + "OLMoE 1B 7B 0125 Instruct M5 Max memory-power bound", ); assert.equal(m1UltraResult.status_code, "ok"); assert.equal(m1UltraResult.best.batch, 7); @@ -11200,10 +11205,10 @@ for (const reference of [ "OLMo 3 7B Instruct SFT DGX Spark single-session bound", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 141.93814198806817, 0.000000001, - "OLMo 3 7B Instruct SFT DGX Spark Dennard bound", + "OLMo 3 7B Instruct SFT DGX Spark memory-power bound", ); const m5 = profiled( @@ -11225,10 +11230,10 @@ for (const reference of [ "OLMo 3 7B Instruct SFT M5 Max per-session throughput at b*", ); assertNear( - m5.dennard, + m5.memoryPowerCeiling, 319.2308394896478, 0.000000001, - "OLMo 3 7B Instruct SFT M5 Max Dennard bound", + "OLMo 3 7B Instruct SFT M5 Max memory-power bound", ); } @@ -11302,10 +11307,10 @@ for (const reference of [ "OLMo 3 7B Instruct DGX Spark single-session bound", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 141.93814198806817, 0.000000001, - "OLMo 3 7B Instruct DGX Spark Dennard bound", + "OLMo 3 7B Instruct DGX Spark memory-power bound", ); const m5 = profiled( @@ -11327,10 +11332,10 @@ for (const reference of [ "OLMo 3 7B Instruct M5 Max per-session throughput at b*", ); assertNear( - m5.dennard, + m5.memoryPowerCeiling, 319.2308394896478, 0.000000001, - "OLMo 3 7B Instruct M5 Max Dennard bound", + "OLMo 3 7B Instruct M5 Max memory-power bound", ); } @@ -11393,10 +11398,10 @@ for (const reference of [ assert.equal(result.bMem, 33); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 474.10516093765483, 0.000000001, - "Google Gemma 4 31B QAT W4A16 CT DGX Spark Dennard bound", + "Google Gemma 4 31B QAT W4A16 CT DGX Spark memory-power bound", ); } @@ -11463,10 +11468,10 @@ for (const reference of [ "Google Gemma 4 31B QAT Q4_0 GGUF DGX Spark single", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 321.0640959174081, 0.000000001, - "Google Gemma 4 31B QAT Q4_0 GGUF DGX Spark Dennard", + "Google Gemma 4 31B QAT Q4_0 GGUF DGX Spark memory-power ceiling", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 6); @@ -11547,10 +11552,10 @@ for (const reference of [ "LM Studio Gemma 4 31B QAT GGUF DGX Spark single", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 321.0640918017246, 0.000000001, - "LM Studio Gemma 4 31B QAT GGUF DGX Spark Dennard", + "LM Studio Gemma 4 31B QAT GGUF DGX Spark memory-power ceiling", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 6); @@ -11635,10 +11640,10 @@ for (const reference of [ "douyamv Gemma 4 31B Q4_K_M GGUF DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 513.1316749714557, 0.000000001, - "douyamv Gemma 4 31B Q4_K_M GGUF DGX Spark Dennard bound", + "douyamv Gemma 4 31B Q4_K_M GGUF DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 8); @@ -11712,10 +11717,10 @@ for (const reference of [ assert.equal(result.bMem, 33); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 474.1052576072824, 0.000000001, - "RedHatAI Gemma 4 31B NVFP4 DGX Spark Dennard bound", + "RedHatAI Gemma 4 31B NVFP4 DGX Spark memory-power bound", ); } @@ -11821,10 +11826,10 @@ for (const reference of [ assert.equal(result.bMem, 69); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 987.1256465849583, 0.000000001, - "LilaRest Gemma 4 31B NVFP4 DGX Spark Dennard bound", + "LilaRest Gemma 4 31B NVFP4 DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 15); @@ -11887,10 +11892,10 @@ for (const reference of [ assert.equal(result.bMem, 34); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 474.42487476783765, 0.000000001, - "cyankiwi Gemma 4 31B AWQ DGX Spark Dennard bound", + "cyankiwi Gemma 4 31B AWQ DGX Spark memory-power bound", ); } @@ -11921,10 +11926,10 @@ for (const reference of [ "cyankiwi Gemma 4 31B AWQ M5 Max per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1067.021513214111, 0.000000001, - "cyankiwi Gemma 4 31B AWQ M5 Max Dennard bound", + "cyankiwi Gemma 4 31B AWQ M5 Max memory-power bound", ); } @@ -11978,10 +11983,10 @@ for (const reference of [ assert.equal(result.bMem, 34); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 487.51848399937734, 0.000000001, - "QuantTrio Gemma 4 31B AWQ DGX Spark Dennard bound", + "QuantTrio Gemma 4 31B AWQ DGX Spark memory-power bound", ); } @@ -12012,10 +12017,10 @@ for (const reference of [ "QuantTrio Gemma 4 31B AWQ M5 Max per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1096.470143500431, 0.000000001, - "QuantTrio Gemma 4 31B AWQ M5 Max Dennard bound", + "QuantTrio Gemma 4 31B AWQ M5 Max memory-power bound", ); } @@ -12069,10 +12074,10 @@ for (const reference of [ assert.equal(result.bMem, 35); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 562.3683502790444, 0.000000001, - "Unsloth Gemma 4 31B IQ4_NL GGUF DGX Spark Dennard bound", + "Unsloth Gemma 4 31B IQ4_NL GGUF DGX Spark memory-power bound", ); } @@ -12103,10 +12108,10 @@ for (const reference of [ "Unsloth Gemma 4 31B IQ4_NL GGUF M5 Max per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1264.8137987960927, 0.000000001, - "Unsloth Gemma 4 31B IQ4_NL GGUF M5 Max Dennard bound", + "Unsloth Gemma 4 31B IQ4_NL GGUF M5 Max memory-power bound", ); } @@ -12137,10 +12142,10 @@ for (const reference of [ "Google Gemma 4 31B QAT W4A16 CT M5 Max per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1066.3024498744326, 0.000000001, - "Google Gemma 4 31B QAT W4A16 CT M5 Max Dennard bound", + "Google Gemma 4 31B QAT W4A16 CT M5 Max memory-power bound", ); } @@ -12262,10 +12267,10 @@ for (const reference of [ "Unsloth GLM 4.7 Flash IQ4_NL GGUF DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2229.2593307475668, 0.000000001, - "Unsloth GLM 4.7 Flash IQ4_NL GGUF DGX Spark Dennard bound", + "Unsloth GLM 4.7 Flash IQ4_NL GGUF DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 12); @@ -12364,10 +12369,10 @@ for (const reference of [ "LM Studio GLM 4.7 Flash MLX 8-bit DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1167.2005264592126, 0.000000001, - "LM Studio GLM 4.7 Flash MLX 8-bit DGX Spark Dennard bound", + "LM Studio GLM 4.7 Flash MLX 8-bit DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 9); @@ -12466,10 +12471,10 @@ for (const reference of [ "LM Studio GLM 4.7 Flash MLX 6-bit DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1665.5310825155973, 0.000000001, - "LM Studio GLM 4.7 Flash MLX 6-bit DGX Spark Dennard bound", + "LM Studio GLM 4.7 Flash MLX 6-bit DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 10); @@ -12596,7 +12601,7 @@ for (const reference of [ ); assertNear( catalogRow.adapter.active_weight_gb, - 48.643642944, + 48.039663168, 0.000000001, "NVIDIA GLM 5.2 NVFP4 catalog active traffic", ); @@ -12630,7 +12635,7 @@ for (const reference of [ ); assertNear( item.architecture.weight_adapter.routed_expert_weight_gb, - 1.668024072, + 1.5925266, 0.000000001, "NVIDIA GLM 5.2 NVFP4 routed expert group", ); @@ -12643,7 +12648,7 @@ for (const reference of [ ); assertNear( result.single.batchWeight, - 48.643642944, + 48.039663168, 0.000000001, "NVIDIA GLM 5.2 NVFP4 DGX single-session MoE traffic", ); @@ -12661,16 +12666,16 @@ for (const reference of [ ); assertNear( result.single.aggregate, - 2.0916561111493857, + 2.1013803293648734, 0.000000001, "NVIDIA GLM 5.2 NVFP4 DGX single-session tok/s", ); assert.equal(result.best, null); - assert.equal(result.dennard, 0); + assert.equal(result.memoryPowerCeiling, 0); assert.equal(m5Result.status_code, "resident_not_fit"); assertNear( m5Result.single.aggregate, - 4.704310814086897, + 4.726181400110009, 0.000000001, "NVIDIA GLM 5.2 NVFP4 M5 Max single-session tok/s", ); @@ -12679,21 +12684,21 @@ for (const reference of [ assert.equal(gb300Result.best.batch, 1); assertNear( gb300Result.single.aggregate, - 54.398382377877795, + 54.651283291174366, 0.000000001, "NVIDIA GLM 5.2 NVFP4 GB300 single-session throughput", ); assertNear( gb300Result.best.aggregate, - 54.398382377877795, + 54.651283291174366, 0.000000001, "NVIDIA GLM 5.2 NVFP4 GB300 aggregate throughput", ); assertNear( - gb300Result.dennard, - 156.99546867673791, + gb300Result.memoryPowerCeiling, + 158.96929783687972, 0.000000001, - "NVIDIA GLM 5.2 NVFP4 GB300 Dennard bound", + "NVIDIA GLM 5.2 NVFP4 GB300 memory-power bound", ); } @@ -13106,10 +13111,10 @@ for (const reference of [ "Unsloth Kimi K2.7 Code GGUF GB300 per-session tok/s at b*", ); assertNear( - gb300Result.dennard, + gb300Result.memoryPowerCeiling, 30045.823720252985, 0.000000001, - "Unsloth Kimi K2.7 Code GGUF GB300 Dennard bound", + "Unsloth Kimi K2.7 Code GGUF GB300 memory-power bound", ); } @@ -13197,7 +13202,7 @@ for (const reference of [ ); assert.equal(result.bMem, 0); assert.equal(result.best, null); - assert.equal(result.dennard, 0); + assert.equal(result.memoryPowerCeiling, 0); } { @@ -13302,7 +13307,7 @@ for (const reference of [ ); assert.equal(result.bMem, 0); assert.equal(result.best, null); - assert.equal(result.dennard, 0); + assert.equal(result.memoryPowerCeiling, 0); } { @@ -13375,10 +13380,10 @@ for (const reference of [ "Qwen3 1.7B Base DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 806.280810907, 0.000000001, - "Qwen3 1.7B Base DGX Dennard bound", + "Qwen3 1.7B Base DGX memory-power bound", ); } @@ -13448,10 +13453,10 @@ for (const reference of [ "MaziyarPanahi Qwen3 1.7B GGUF DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 801.8752951280834, 0.000000001, - "MaziyarPanahi Qwen3 1.7B GGUF DGX Dennard bound", + "MaziyarPanahi Qwen3 1.7B GGUF DGX memory-power bound", ); assert.equal(m5Result.best.batch, 7); assertNear( @@ -13535,10 +13540,10 @@ for (const reference of [ "Qwen3 1.7B GPTQ Int8 DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1358.152210838758, 0.000000001, - "Qwen3 1.7B GPTQ Int8 DGX Spark Dennard bound", + "Qwen3 1.7B GPTQ Int8 DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 7); @@ -13677,10 +13682,10 @@ for (const reference of [ "Qwen3 4B Q4_K_M GGUF DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 873.2084350216029, 0.000000001, - "Qwen3 4B Q4_K_M GGUF DGX Spark Dennard bound", + "Qwen3 4B Q4_K_M GGUF DGX Spark memory-power bound", ); } @@ -13711,10 +13716,10 @@ for (const reference of [ "Qwen3 4B Q4_K_M GGUF M5 Max per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1963.9193373745943, 0.000000001, - "Qwen3 4B Q4_K_M GGUF M5 Max Dennard bound", + "Qwen3 4B Q4_K_M GGUF M5 Max memory-power bound", ); } @@ -13780,10 +13785,10 @@ for (const reference of [ "MaziyarPanahi Qwen3 4B GGUF DGX Spark aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 257.6176031900255, 0.000000001, - "MaziyarPanahi Qwen3 4B GGUF DGX Spark Dennard bound", + "MaziyarPanahi Qwen3 4B GGUF DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best?.batch, 4); @@ -13800,10 +13805,10 @@ for (const reference of [ "MaziyarPanahi Qwen3 4B GGUF M5 Max per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 579.4036936215224, 0.000000001, - "MaziyarPanahi Qwen3 4B GGUF M5 Max Dennard bound", + "MaziyarPanahi Qwen3 4B GGUF M5 Max memory-power bound", ); assert.equal(m1UltraResult.status_code, "ok"); assert.equal(m1UltraResult.best?.batch, 6); @@ -13895,10 +13900,10 @@ for (const reference of [ "Unsloth Qwen3 4B GGUF DGX Spark aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 257.6176023063605, 0.000000001, - "Unsloth Qwen3 4B GGUF DGX Spark Dennard bound", + "Unsloth Qwen3 4B GGUF DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best?.batch, 4); @@ -13915,10 +13920,10 @@ for (const reference of [ "Unsloth Qwen3 4B GGUF M5 Max per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 579.4036916340854, 0.000000001, - "Unsloth Qwen3 4B GGUF M5 Max Dennard bound", + "Unsloth Qwen3 4B GGUF M5 Max memory-power bound", ); assert.equal(m1UltraResult.status_code, "ok"); assert.equal(m1UltraResult.best?.batch, 6); @@ -14011,10 +14016,10 @@ for (const reference of [ "MaziyarPanahi Qwen3 4B Instruct 2507 GGUF DGX Spark aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 257.6176037054967, 0.000000001, - "MaziyarPanahi Qwen3 4B Instruct 2507 GGUF DGX Spark Dennard bound", + "MaziyarPanahi Qwen3 4B Instruct 2507 GGUF DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best?.batch, 4); @@ -14031,10 +14036,10 @@ for (const reference of [ "MaziyarPanahi Qwen3 4B Instruct 2507 GGUF M5 Max per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 579.4036947808606, 0.000000001, - "MaziyarPanahi Qwen3 4B Instruct 2507 GGUF M5 Max Dennard bound", + "MaziyarPanahi Qwen3 4B Instruct 2507 GGUF M5 Max memory-power bound", ); assert.equal(m1UltraResult.status_code, "ok"); assert.equal(m1UltraResult.best?.batch, 6); @@ -14143,10 +14148,10 @@ for (const reference of [ "Qwen3 4B Thinking 2507 DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 257.6447730999812, 0.000000001, - "Qwen3 4B Thinking 2507 DGX Spark Dennard bound", + "Qwen3 4B Thinking 2507 DGX Spark memory-power bound", ); } @@ -14221,10 +14226,10 @@ for (const reference of [ "Qwen3 8B Base DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 126.73694480535593, 0.000000001, - "Qwen3 8B Base DGX Spark Dennard bound", + "Qwen3 8B Base DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.bMem, 7); @@ -14242,10 +14247,10 @@ for (const reference of [ "Qwen3 8B Base M5 Max per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 285.04206633878584, 0.000000001, - "Qwen3 8B Base M5 Max Dennard bound", + "Qwen3 8B Base M5 Max memory-power bound", ); } @@ -14296,7 +14301,12 @@ for (const reference of [ 0.000001, "Qwen3 8B FP8 per-session throughput at b*", ); - assertNear(result.dennard, 249.87775, 0.000001, "Qwen3 8B FP8 Dennard bound"); + assertNear( + result.memoryPowerCeiling, + 249.87775, + 0.000001, + "Qwen3 8B FP8 memory-power bound", + ); } { @@ -14347,10 +14357,10 @@ for (const reference of [ "Qwen3 8B AWQ DGX Spark aggregate throughput at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 434.456309752, 0.000001, - "Qwen3 8B AWQ DGX Spark Dennard bound", + "Qwen3 8B AWQ DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 5); @@ -14367,10 +14377,10 @@ for (const reference of [ "Qwen3 8B AWQ M5 Max per-session throughput at b*", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 977.128843178, 0.000001, - "Qwen3 8B AWQ M5 Max Dennard bound", + "Qwen3 8B AWQ M5 Max memory-power bound", ); } @@ -14427,10 +14437,10 @@ for (const reference of [ "MaziyarPanahi Qwen3 8B GGUF DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 126.72374411947092, 0.000000001, - "MaziyarPanahi Qwen3 8B GGUF DGX Spark Dennard bound", + "MaziyarPanahi Qwen3 8B GGUF DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.bMem, 7); @@ -14448,10 +14458,10 @@ for (const reference of [ "MaziyarPanahi Qwen3 8B GGUF M5 Max per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 285.0123768840848, 0.000000001, - "MaziyarPanahi Qwen3 8B GGUF M5 Max Dennard bound", + "MaziyarPanahi Qwen3 8B GGUF M5 Max memory-power bound", ); assert.equal(m1UltraResult.status_code, "ok"); assert.equal(m1UltraResult.bMem, 7); @@ -14546,10 +14556,10 @@ for (const reference of [ "Unsloth Qwen3 8B GGUF DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 126.72374364981552, 0.000000001, - "Unsloth Qwen3 8B GGUF DGX Spark Dennard bound", + "Unsloth Qwen3 8B GGUF DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.bMem, 7); @@ -14567,10 +14577,10 @@ for (const reference of [ "Unsloth Qwen3 8B GGUF M5 Max per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 285.0123758277902, 0.000000001, - "Unsloth Qwen3 8B GGUF M5 Max Dennard bound", + "Unsloth Qwen3 8B GGUF M5 Max memory-power bound", ); assert.equal(m1UltraResult.status_code, "ok"); assert.equal(m1UltraResult.bMem, 7); @@ -14700,10 +14710,10 @@ for (const reference of [ "MaziyarPanahi DeepSeek R1 Qwen3 8B GGUF DGX Spark aggregate throughput", ); assertNear( - dgxResult.dennard, + dgxResult.memoryPowerCeiling, 703.5225926101233, 0.000000001, - "MaziyarPanahi DeepSeek R1 Qwen3 8B GGUF DGX Spark Dennard bound", + "MaziyarPanahi DeepSeek R1 Qwen3 8B GGUF DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best?.batch, 5); @@ -14795,10 +14805,10 @@ for (const reference of [ "Qwen3 14B FP8 DGX single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 116.9556518900355, 0.000000001, - "Qwen3 14B FP8 DGX Dennard bound", + "Qwen3 14B FP8 DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 3); @@ -14921,10 +14931,10 @@ for (const reference of [ "JunHowie Qwen3 14B GPTQ Int4 DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 217.49519029997802, 0.000000001, - "JunHowie Qwen3 14B GPTQ Int4 DGX Dennard bound", + "JunHowie Qwen3 14B GPTQ Int4 DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 4); @@ -15033,10 +15043,10 @@ for (const reference of [ "Llama 3 8B Instruct 64k GGUF FP16 DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 144.2137078917169, 0.000000001, - "Llama 3 8B Instruct 64k GGUF FP16 DGX Dennard bound", + "Llama 3 8B Instruct 64k GGUF FP16 DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 3); @@ -15132,10 +15142,10 @@ for (const reference of [ "MaziyarPanahi Qwen3 14B GGUF DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 53.865375751833895, 0.000000001, - "MaziyarPanahi Qwen3 14B GGUF DGX Dennard bound", + "MaziyarPanahi Qwen3 14B GGUF DGX memory-power bound", ); assert.equal(m5Result.status_code, "no_floor"); assert.equal(m5Result.best, null); @@ -15202,10 +15212,10 @@ for (const reference of [ "Hermes 4 14B AWQ DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 202.90641890171614, 0.000000001, - "Hermes 4 14B AWQ DGX Dennard bound", + "Hermes 4 14B AWQ DGX memory-power bound", ); } @@ -15310,10 +15320,10 @@ for (const reference of [ "Qwen3 32B FP8 DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 27.23067086086056, 0.000000001, - "Qwen3 32B FP8 DGX Dennard bound", + "Qwen3 32B FP8 DGX memory-power bound", ); assert.equal(m5Result.status_code, "no_floor"); assert.equal(m5Result.bMem, 3); @@ -15381,10 +15391,10 @@ for (const reference of [ "Qwen3 32B AWQ DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 59.00224021802882, 0.000000001, - "Qwen3 32B AWQ DGX Dennard bound", + "Qwen3 32B AWQ DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 1); @@ -15461,10 +15471,10 @@ for (const reference of [ "MaziyarPanahi Qwen3 32B GGUF DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 92.78297888678482, 0.000000001, - "MaziyarPanahi Qwen3 32B GGUF DGX Spark Dennard bound", + "MaziyarPanahi Qwen3 32B GGUF DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.bMem, 4); @@ -15482,10 +15492,10 @@ for (const reference of [ "MaziyarPanahi Qwen3 32B GGUF M5 Max per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 208.6767363973842, 0.000000001, - "MaziyarPanahi Qwen3 32B GGUF M5 Max Dennard bound", + "MaziyarPanahi Qwen3 32B GGUF M5 Max memory-power bound", ); assert.equal(m1UltraResult.status_code, "ok"); assert.equal(m1UltraResult.bMem, 4); @@ -15596,10 +15606,10 @@ for (const reference of [ "NVIDIA Qwen3 8B NVFP4 DGX per-session", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 816.434628193026, 0.000000001, - "NVIDIA Qwen3 8B NVFP4 DGX Dennard bound", + "NVIDIA Qwen3 8B NVFP4 DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 10); @@ -15696,10 +15706,10 @@ for (const reference of [ "NVIDIA Qwen3 32B NVFP4 DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 108.26333064053506, 0.000000001, - "NVIDIA Qwen3 32B NVFP4 DGX Dennard bound", + "NVIDIA Qwen3 32B NVFP4 DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 2); @@ -15806,10 +15816,10 @@ for (const reference of [ "TheBloke Mistral 7B AWQ DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 620.506967223216, 0.000000001, - "TheBloke Mistral 7B AWQ DGX Dennard bound", + "TheBloke Mistral 7B AWQ DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 6); @@ -15921,10 +15931,10 @@ for (const reference of [ "TheBloke Mistral 7B GGUF DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 560.8793979225626, 0.000000001, - "TheBloke Mistral 7B GGUF DGX Dennard bound", + "TheBloke Mistral 7B GGUF DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 6); @@ -16021,10 +16031,10 @@ for (const reference of [ "MaziyarPanahi Mistral 7B v0.3 GGUF DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 154.44287781124618, 0.000000001, - "MaziyarPanahi Mistral 7B v0.3 GGUF DGX Dennard bound", + "MaziyarPanahi Mistral 7B v0.3 GGUF DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 3); @@ -16109,10 +16119,10 @@ for (const reference of [ "Mistral Small 24B AWQ DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 136.6987127594391, 0.000000001, - "Mistral Small 24B AWQ DGX Dennard bound", + "Mistral Small 24B AWQ DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 3); @@ -16208,10 +16218,10 @@ for (const reference of [ "Mistral Small 24B GGUF F16 DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 26.50043595250848, 0.000000001, - "Mistral Small 24B GGUF F16 DGX Dennard bound", + "Mistral Small 24B GGUF F16 DGX memory-power bound", ); assert.equal(m5Result.status_code, "no_floor"); assert.equal(m5Result.best, null); @@ -16313,10 +16323,10 @@ for (const reference of [ "Mistral Small 3.2 AWQ DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 136.59626337595603, 0.000000001, - "Mistral Small 3.2 AWQ DGX Dennard bound", + "Mistral Small 3.2 AWQ DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 3); @@ -16427,10 +16437,10 @@ for (const reference of [ "Mistral Small 3.1 24B HF GGUF F16 DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 26.500435545069607, 0.000000001, - "Mistral Small 3.1 24B HF GGUF F16 DGX Dennard bound", + "Mistral Small 3.1 24B HF GGUF F16 DGX memory-power bound", ); assert.equal(m5Result.status_code, "no_floor"); assert.equal(m5Result.best, null); @@ -16548,10 +16558,10 @@ for (const reference of [ "MaziyarPanahi Qwen3 30B A3B Q2_K GGUF DGX per-session tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2301.238715308098, 0.000000001, - "MaziyarPanahi Qwen3 30B A3B Q2_K GGUF DGX Dennard bound", + "MaziyarPanahi Qwen3 30B A3B Q2_K GGUF DGX memory-power bound", ); const m5Result = profiled( @@ -16628,10 +16638,10 @@ for (const reference of [ "Qwen3 30B A3B FP8 DGX Spark per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 605.692174306, 0.000000001, - "Qwen3 30B A3B FP8 DGX Spark Dennard bound", + "Qwen3 30B A3B FP8 DGX Spark memory-power bound", ); } @@ -16726,10 +16736,10 @@ for (const reference of [ "Qwen3 30B A3B GPTQ Int4 DGX per-session tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1383.2644309844059, 0.000000001, - "Qwen3 30B A3B GPTQ Int4 DGX Dennard bound", + "Qwen3 30B A3B GPTQ Int4 DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 7); @@ -16861,10 +16871,10 @@ for (const reference of [ "Qwen3 30B A3B Thinking 2507 DGX per-session tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 269.0295462402111, 0.000000001, - "Qwen3 30B A3B Thinking 2507 DGX Dennard bound", + "Qwen3 30B A3B Thinking 2507 DGX memory-power bound", ); } @@ -16945,10 +16955,10 @@ for (const reference of [ "Qwen3 30B A3B Instruct 2507 FP8 DGX per-session tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 732.8451182368863, 0.000000001, - "Qwen3 30B A3B Instruct 2507 FP8 DGX Dennard bound", + "Qwen3 30B A3B Instruct 2507 FP8 DGX memory-power bound", ); } @@ -17023,10 +17033,10 @@ for (const reference of [ "cyankiwi Qwen3 30B A3B Instruct 2507 AWQ DGX per-session tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1300.1915301346467, 0.000000001, - "cyankiwi Qwen3 30B A3B Instruct 2507 AWQ DGX Dennard bound", + "cyankiwi Qwen3 30B A3B Instruct 2507 AWQ DGX memory-power bound", ); } @@ -17107,10 +17117,10 @@ for (const reference of [ "cyankiwi Qwen3 30B A3B Thinking 2507 AWQ DGX per-session tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1300.1915301346467, 0.000000001, - "cyankiwi Qwen3 30B A3B Thinking 2507 AWQ DGX Dennard bound", + "cyankiwi Qwen3 30B A3B Thinking 2507 AWQ DGX memory-power bound", ); } @@ -17177,10 +17187,10 @@ for (const reference of [ "Unsloth Qwen3 30B A3B Instruct 2507 IQ4_NL GGUF DGX per-session tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1548.582692, 0.000001, - "Unsloth Qwen3 30B A3B Instruct 2507 IQ4_NL GGUF DGX Dennard bound", + "Unsloth Qwen3 30B A3B Instruct 2507 IQ4_NL GGUF DGX memory-power bound", ); } @@ -17257,10 +17267,10 @@ for (const reference of [ "Unsloth Qwen3-Coder 30B A3B IQ4_NL GGUF DGX per-session tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1548.5826492144122, 0.000000001, - "Unsloth Qwen3-Coder 30B A3B IQ4_NL GGUF DGX Dennard bound", + "Unsloth Qwen3-Coder 30B A3B IQ4_NL GGUF DGX memory-power bound", ); assert.equal(m5Result.best.batch, 7); assertNear( @@ -17357,7 +17367,12 @@ for (const reference of [ 1, "Qwen3-Coder 30B A3B FP8 DGX aggregate", ); - assertNear(result.dennard, 733, 50, "Qwen3-Coder 30B A3B FP8 DGX Dennard"); + assertNear( + result.memoryPowerCeiling, + 733, + 50, + "Qwen3-Coder 30B A3B FP8 DGX memory-power ceiling", + ); } { @@ -17448,10 +17463,10 @@ for (const reference of [ "QuantTrio Qwen3-Coder AWQ DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1391.239552, 0.000001, - "QuantTrio Qwen3-Coder AWQ DGX Dennard bound", + "QuantTrio Qwen3-Coder AWQ DGX memory-power bound", ); } @@ -17475,10 +17490,10 @@ for (const reference of [ "QuantTrio Qwen3-Coder AWQ M5 Max aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3129.014964, 0.000001, - "QuantTrio Qwen3-Coder AWQ M5 Max Dennard bound", + "QuantTrio Qwen3-Coder AWQ M5 Max memory-power bound", ); } @@ -17586,10 +17601,10 @@ for (const reference of [ "nm-testing Qwen3-Coder W4A16 DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1400.0108742620898, 0.000000001, - "nm-testing Qwen3-Coder W4A16 DGX Dennard bound", + "nm-testing Qwen3-Coder W4A16 DGX memory-power bound", ); } @@ -17613,10 +17628,10 @@ for (const reference of [ "nm-testing Qwen3-Coder W4A16 M5 Max aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3148.742405849535, 0.000000001, - "nm-testing Qwen3-Coder W4A16 M5 Max Dennard bound", + "nm-testing Qwen3-Coder W4A16 M5 Max memory-power bound", ); } @@ -17724,10 +17739,10 @@ for (const reference of [ "cyankiwi Qwen3-Coder AWQ DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1300.1915301346467, 0.000000001, - "cyankiwi Qwen3-Coder AWQ DGX Dennard bound", + "cyankiwi Qwen3-Coder AWQ DGX memory-power bound", ); } @@ -17757,10 +17772,10 @@ for (const reference of [ "cyankiwi Qwen3-Coder AWQ M5 Max per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2924.2402912185826, 0.000000001, - "cyankiwi Qwen3-Coder AWQ M5 Max Dennard bound", + "cyankiwi Qwen3-Coder AWQ M5 Max memory-power bound", ); } @@ -17866,10 +17881,10 @@ for (const reference of [ "LM Studio Qwen3-Coder MLX 4-bit DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1668.5989019678234, 0.000000001, - "LM Studio Qwen3-Coder MLX 4-bit DGX Dennard bound", + "LM Studio Qwen3-Coder MLX 4-bit DGX memory-power bound", ); } @@ -17893,10 +17908,10 @@ for (const reference of [ "LM Studio Qwen3-Coder MLX 4-bit M5 Max aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3752.819508455104, 0.000000001, - "LM Studio Qwen3-Coder MLX 4-bit M5 Max Dennard bound", + "LM Studio Qwen3-Coder MLX 4-bit M5 Max memory-power bound", ); } @@ -17916,11 +17931,11 @@ for (const spec of [ dgxBatch: 2, dgxAggregate: 57.16757603178721, dgxPerSession: 28.583788015893607, - dgxDennard: 1314.6045071523997, + dgxMemoryPowerCeiling: 1314.6045071523997, m5Single: 117.23622750042036, m5Batch: 7, m5Aggregate: 142.73866356906686, - m5Dennard: 2956.6562908116243, + m5MemoryPowerCeiling: 2956.6562908116243, }, { repo: "lmstudio-community/Qwen3-Coder-30B-A3B-Instruct-MLX-6bit", @@ -17937,11 +17952,11 @@ for (const spec of [ dgxBatch: 2, dgxAggregate: 53.828040105491034, dgxPerSession: 26.914020052745517, - dgxDennard: 1069.5128735994545, + dgxMemoryPowerCeiling: 1069.5128735994545, m5Single: 109.30136719362372, m5Batch: 6, m5Aggregate: 134.2726630715874, - m5Dennard: 2405.4245582053663, + m5MemoryPowerCeiling: 2405.4245582053663, }, ]) { const catalogRow = model(spec.repo); @@ -18033,10 +18048,10 @@ for (const spec of [ `LM Studio Qwen3-Coder MLX ${spec.label} DGX per-session throughput`, ); assertNear( - result.dennard, - spec.dgxDennard, + result.memoryPowerCeiling, + spec.dgxMemoryPowerCeiling, 0.000000001, - `LM Studio Qwen3-Coder MLX ${spec.label} DGX Dennard bound`, + `LM Studio Qwen3-Coder MLX ${spec.label} DGX memory-power bound`, ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, spec.m5Batch); @@ -18053,10 +18068,10 @@ for (const spec of [ `LM Studio Qwen3-Coder MLX ${spec.label} M5 Max aggregate throughput`, ); assertNear( - m5Result.dennard, - spec.m5Dennard, + m5Result.memoryPowerCeiling, + spec.m5MemoryPowerCeiling, 0.000000001, - `LM Studio Qwen3-Coder MLX ${spec.label} M5 Max Dennard bound`, + `LM Studio Qwen3-Coder MLX ${spec.label} M5 Max memory-power bound`, ); } @@ -18156,10 +18171,10 @@ for (const spec of [ "LM Studio Qwen3-Coder MLX 8-bit DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 752.3128834857988, 0.000000001, - "LM Studio Qwen3-Coder MLX 8-bit DGX Dennard bound", + "LM Studio Qwen3-Coder MLX 8-bit DGX memory-power bound", ); } @@ -18183,10 +18198,10 @@ for (const spec of [ "LM Studio Qwen3-Coder MLX 8-bit M5 Max aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1692.0150566310638, 0.000000001, - "LM Studio Qwen3-Coder MLX 8-bit M5 Max Dennard bound", + "LM Studio Qwen3-Coder MLX 8-bit M5 Max memory-power bound", ); } @@ -18230,7 +18245,7 @@ for (const spec of [ ); assert.equal(result.bMem, 0); assert.equal(result.best, null); - assert.equal(result.dennard, 0); + assert.equal(result.memoryPowerCeiling, 0); } { @@ -18266,10 +18281,10 @@ for (const spec of [ "Qwen3-Coder 480B A35B FP8 GB300 per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2028.4424873646885, 0.000000001, - "Qwen3-Coder 480B A35B FP8 GB300 Dennard bound", + "Qwen3-Coder 480B A35B FP8 GB300 memory-power bound", ); } @@ -18634,10 +18649,10 @@ for (const spec of [ assert.equal(result.bMem, 5); assert.equal(result.best.batch, 1); assertNear( - result.dennard, + result.memoryPowerCeiling, 258.169721404, 0.000000001, - "Qwen3 Omni 30B A3B Thinking DGX Dennard bound", + "Qwen3 Omni 30B A3B Thinking DGX memory-power bound", ); } @@ -18700,10 +18715,10 @@ for (const spec of [ "Kimi VL A3B Instruct DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 166.88544181773716, 0.000000001, - "Kimi VL A3B Instruct DGX Spark Dennard bound", + "Kimi VL A3B Instruct DGX Spark memory-power bound", ); } @@ -18734,10 +18749,10 @@ for (const spec of [ "Kimi VL A3B Instruct M5 Max per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 375.3394185937385, 0.000000001, - "Kimi VL A3B Instruct M5 Max Dennard bound", + "Kimi VL A3B Instruct M5 Max memory-power bound", ); } @@ -18946,7 +18961,7 @@ for (const spec of [ ); assert.equal(result.bMem, 0); assert.equal(result.best, null); - assert.equal(result.dennard, 0); + assert.equal(result.memoryPowerCeiling, 0); } { @@ -18982,10 +18997,10 @@ for (const spec of [ "NVIDIA DeepSeek V4 Flash NVFP4 4x RTX PRO per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 184418.585401121, 0.000000001, - "NVIDIA DeepSeek V4 Flash NVFP4 4x RTX PRO Dennard bound", + "NVIDIA DeepSeek V4 Flash NVFP4 4x RTX PRO memory-power bound", ); } @@ -19098,7 +19113,7 @@ for (const spec of [ ); assert.equal(dgx.bMem, 0); assert.equal(dgx.best, null); - assert.equal(dgx.dennard, 0); + assert.equal(dgx.memoryPowerCeiling, 0); const gb300 = profiled( "nvidia/DeepSeek-V4-Pro-NVFP4", @@ -19220,10 +19235,10 @@ for (const spec of [ "cyankiwi Qwen3 VL 2B AWQ DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1980.762532838425, 0.000000001, - "cyankiwi Qwen3 VL 2B AWQ DGX Dennard bound", + "cyankiwi Qwen3 VL 2B AWQ DGX memory-power bound", ); } @@ -19280,10 +19295,10 @@ for (const spec of [ "Unsloth Qwen3 VL 2B GGUF DGX aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 806.1798623536436, 0.000000001, - "Unsloth Qwen3 VL 2B GGUF DGX Dennard bound", + "Unsloth Qwen3 VL 2B GGUF DGX memory-power bound", ); } @@ -19386,10 +19401,10 @@ for (const spec of [ "cyankiwi Qwen3 VL 4B AWQ DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 758.1905027107199, 0.000000001, - "cyankiwi Qwen3 VL 4B AWQ DGX Dennard bound", + "cyankiwi Qwen3 VL 4B AWQ DGX memory-power bound", ); } @@ -19420,10 +19435,10 @@ for (const spec of [ "cyankiwi Qwen3 VL 4B AWQ M5 Max per-session throughput at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1705.2343174519488, 0.000000001, - "cyankiwi Qwen3 VL 4B AWQ M5 Max Dennard bound", + "cyankiwi Qwen3 VL 4B AWQ M5 Max memory-power bound", ); } @@ -19500,10 +19515,10 @@ for (const spec of [ "LM Studio Qwen3 VL 4B MLX DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 956.4652362435886, 0.000000001, - "LM Studio Qwen3 VL 4B MLX DGX Dennard bound", + "LM Studio Qwen3 VL 4B MLX DGX memory-power bound", ); } @@ -19534,10 +19549,10 @@ for (const spec of [ "LM Studio Qwen3 VL 4B MLX M5 Max per-session throughput at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2151.1708976321, 0.000000001, - "LM Studio Qwen3 VL 4B MLX M5 Max Dennard bound", + "LM Studio Qwen3 VL 4B MLX M5 Max memory-power bound", ); } @@ -19614,10 +19629,10 @@ for (const spec of [ "LM Studio Qwen3 VL 4B MLX 8-bit DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 497.69358048135837, 0.000000001, - "LM Studio Qwen3 VL 4B MLX 8-bit DGX Dennard bound", + "LM Studio Qwen3 VL 4B MLX 8-bit DGX memory-power bound", ); } @@ -19648,10 +19663,10 @@ for (const spec of [ "LM Studio Qwen3 VL 4B MLX 8-bit M5 Max per-session throughput at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1119.3547927309671, 0.000000001, - "LM Studio Qwen3 VL 4B MLX 8-bit M5 Max Dennard bound", + "LM Studio Qwen3 VL 4B MLX 8-bit M5 Max memory-power bound", ); } @@ -19728,10 +19743,10 @@ for (const spec of [ "LM Studio Qwen3 VL 4B MLX 6-bit DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 656.5076226863522, 0.000000001, - "LM Studio Qwen3 VL 4B MLX 6-bit DGX Dennard bound", + "LM Studio Qwen3 VL 4B MLX 6-bit DGX memory-power bound", ); } @@ -19762,10 +19777,10 @@ for (const spec of [ "LM Studio Qwen3 VL 4B MLX 6-bit M5 Max per-session throughput at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1476.54095358762, 0.000000001, - "LM Studio Qwen3 VL 4B MLX 6-bit M5 Max Dennard bound", + "LM Studio Qwen3 VL 4B MLX 6-bit M5 Max memory-power bound", ); } @@ -19842,10 +19857,10 @@ for (const spec of [ "LM Studio Qwen3 VL 4B MLX 5-bit DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 779.2214223808791, 0.000000001, - "LM Studio Qwen3 VL 4B MLX 5-bit DGX Dennard bound", + "LM Studio Qwen3 VL 4B MLX 5-bit DGX memory-power bound", ); } @@ -19876,10 +19891,10 @@ for (const spec of [ "LM Studio Qwen3 VL 4B MLX 5-bit M5 Max per-session throughput at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1752.53462762586, 0.000000001, - "LM Studio Qwen3 VL 4B MLX 5-bit M5 Max Dennard bound", + "LM Studio Qwen3 VL 4B MLX 5-bit M5 Max memory-power bound", ); } @@ -19925,10 +19940,10 @@ for (const spec of [ "Qwen3 VL 4B Instruct FP8 DGX aggregate throughput at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 478.23257619419377, 0.000000001, - "Qwen3 VL 4B Instruct FP8 DGX Dennard bound", + "Qwen3 VL 4B Instruct FP8 DGX memory-power bound", ); } @@ -19959,10 +19974,10 @@ for (const spec of [ "Qwen3 VL 4B Instruct FP8 M5 Max per-session throughput at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1075.5853545173443, 0.000000001, - "Qwen3 VL 4B Instruct FP8 M5 Max Dennard bound", + "Qwen3 VL 4B Instruct FP8 M5 Max memory-power bound", ); } @@ -20094,10 +20109,10 @@ for (const spec of [ assert.equal(result.bMem, 3); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 26.847954861258643, 0.000000001, - "Qwen3 VL 32B Instruct FP8 DGX Spark Dennard bound", + "Qwen3 VL 32B Instruct FP8 DGX Spark memory-power bound", ); } @@ -20158,10 +20173,10 @@ for (const spec of [ "QuantTrio Qwen3 VL 32B AWQ DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 58.304506343, 0.000001, - "QuantTrio Qwen3 VL 32B AWQ DGX Spark Dennard bound", + "QuantTrio Qwen3 VL 32B AWQ DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 1); @@ -20178,10 +20193,10 @@ for (const spec of [ "QuantTrio Qwen3 VL 32B AWQ M5 Max aggregate throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 131.131746867, 0.000001, - "QuantTrio Qwen3 VL 32B AWQ M5 Max Dennard bound", + "QuantTrio Qwen3 VL 32B AWQ M5 Max memory-power bound", ); } @@ -20212,10 +20227,10 @@ for (const spec of [ "Qwen3 VL 32B Instruct FP8 GB300 per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 5822.4677497270495, 0.000000001, - "Qwen3 VL 32B Instruct FP8 GB300 Dennard bound", + "Qwen3 VL 32B Instruct FP8 GB300 memory-power bound", ); } @@ -20263,10 +20278,10 @@ for (const spec of [ assert.equal(result.bMem, 3); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 26.847954861258643, 0.000000001, - "Qwen3 VL 32B Thinking FP8 DGX Spark Dennard bound", + "Qwen3 VL 32B Thinking FP8 DGX Spark memory-power bound", ); } @@ -20297,10 +20312,10 @@ for (const spec of [ "Qwen3 VL 32B Thinking FP8 GB300 per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 5822.4677497270495, 0.000000001, - "Qwen3 VL 32B Thinking FP8 GB300 Dennard bound", + "Qwen3 VL 32B Thinking FP8 GB300 memory-power bound", ); } @@ -20490,10 +20505,10 @@ for (const spec of [ "Qwen3 235B A22B Instruct 2507 FP8 GB300 per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 8349.694599340693, 0.000000001, - "Qwen3 235B A22B Instruct 2507 FP8 GB300 Dennard bound", + "Qwen3 235B A22B Instruct 2507 FP8 GB300 memory-power bound", ); } @@ -20636,10 +20651,10 @@ for (const spec of [ "Qwen3 VL 235B A22B FP8 GB300 per-session throughput", ); assertNear( - gb300Result.dennard, + gb300Result.memoryPowerCeiling, 8329.152543089573, 0.000000001, - "Qwen3 VL 235B A22B FP8 GB300 Dennard", + "Qwen3 VL 235B A22B FP8 GB300 memory-power ceiling", ); } @@ -20750,10 +20765,10 @@ for (const spec of [ "NVIDIA Qwen3 VL 235B A22B NVFP4 GB300 per-session throughput", ); assertNear( - gb300Result.dennard, + gb300Result.memoryPowerCeiling, 17027.068062667946, 0.000000001, - "NVIDIA Qwen3 VL 235B A22B NVFP4 GB300 Dennard", + "NVIDIA Qwen3 VL 235B A22B NVFP4 GB300 memory-power ceiling", ); } @@ -20813,10 +20828,10 @@ for (const spec of [ "Qwen3 VL 30B A3B BF16 DGX aggregate", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 264.11206401249603, 0.000000001, - "Qwen3 VL 30B A3B BF16 Dennard", + "Qwen3 VL 30B A3B BF16 memory-power ceiling", ); } @@ -20884,10 +20899,10 @@ for (const spec of [ "Qwen3 VL 30B A3B FP8 DGX aggregate", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 723.8561855145952, 0.000000001, - "Qwen3 VL 30B A3B FP8 Dennard", + "Qwen3 VL 30B A3B FP8 memory-power ceiling", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 6); @@ -20950,10 +20965,10 @@ for (const spec of [ "QuantTrio Qwen3 VL 30B A3B AWQ DGX aggregate", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1376.7165925681934, 0.000000001, - "QuantTrio Qwen3 VL 30B A3B AWQ Dennard", + "QuantTrio Qwen3 VL 30B A3B AWQ memory-power ceiling", ); } @@ -21020,10 +21035,10 @@ for (const spec of [ "cyankiwi Qwen3 VL 30B A3B AWQ DGX aggregate", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1286.447882753505, 0.000000001, - "cyankiwi Qwen3 VL 30B A3B AWQ Dennard", + "cyankiwi Qwen3 VL 30B A3B AWQ memory-power ceiling", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 7); @@ -21102,10 +21117,10 @@ for (const spec of [ "ERNIE 4.5 VL 28B A3B DGX aggregate", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 433.8939463206842, 0.000000001, - "ERNIE 4.5 VL 28B A3B Dennard", + "ERNIE 4.5 VL 28B A3B memory-power ceiling", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 5); @@ -21470,10 +21485,10 @@ for (const spec of [ "RedHatAI Qwen2.5 1.5B W8A8 DGX aggregate", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 6304.105884569162, 0.000000001, - "RedHatAI Qwen2.5 1.5B W8A8 DGX Dennard bound", + "RedHatAI Qwen2.5 1.5B W8A8 DGX memory-power bound", ); } @@ -21599,10 +21614,10 @@ for (const spec of [ "Qwen2.5 1.5B Instruct GGUF DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3590.6048846465806, 0.000000001, - "Qwen2.5 1.5B Instruct GGUF DGX Dennard bound", + "Qwen2.5 1.5B Instruct GGUF DGX memory-power bound", ); assert.equal(m5Result.best.batch, 30); assertNear( @@ -21694,10 +21709,10 @@ for (const spec of [ "MaziyarPanahi Qwen2.5 1.5B Instruct Q2_K DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 16948.34120410883, 0.000000001, - "MaziyarPanahi Qwen2.5 1.5B Instruct Q2_K DGX Dennard bound", + "MaziyarPanahi Qwen2.5 1.5B Instruct Q2_K DGX memory-power bound", ); assert.equal(m5Result.best.batch, 32); assertNear( @@ -21887,10 +21902,10 @@ for (const spec of [ "Qwen2.5 0.5B Instruct GGUF DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 26693.55028665493, 0.000000001, - "Qwen2.5 0.5B Instruct GGUF DGX Dennard bound", + "Qwen2.5 0.5B Instruct GGUF DGX memory-power bound", ); assert.equal(m5Result.best.batch, 75); assertNear( @@ -21945,10 +21960,10 @@ for (const spec of [ "Qwen2.5 Math 1.5B DGX Spark aggregate bound", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3605.528622963, 0.000001, - "Qwen2.5 Math 1.5B DGX Spark Dennard bound", + "Qwen2.5 Math 1.5B DGX Spark memory-power bound", ); } @@ -21999,10 +22014,10 @@ for (const spec of [ "Qwen2.5 Math 1.5B Instruct DGX Spark aggregate bound", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3605.528622963, 0.000001, - "Qwen2.5 Math 1.5B Instruct DGX Spark Dennard bound", + "Qwen2.5 Math 1.5B Instruct DGX Spark memory-power bound", ); } @@ -22072,10 +22087,10 @@ for (const spec of [ "Qwen2.5 Coder 1.5B DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3605.5286229633844, 0.000000001, - "Qwen2.5 Coder 1.5B DGX Dennard bound", + "Qwen2.5 Coder 1.5B DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 30); @@ -22144,10 +22159,10 @@ for (const spec of [ "Qwen2.5 Coder 1.5B Instruct DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3605.528622963, 0.000000001, - "Qwen2.5 Coder 1.5B Instruct DGX Dennard bound", + "Qwen2.5 Coder 1.5B Instruct DGX memory-power bound", ); } @@ -22178,10 +22193,10 @@ for (const spec of [ "Qwen2.5 Coder 1.5B Instruct M5 Max per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 8109.137635529, 0.000000001, - "Qwen2.5 Coder 1.5B Instruct M5 Max Dennard bound", + "Qwen2.5 Coder 1.5B Instruct M5 Max memory-power bound", ); } @@ -22265,10 +22280,10 @@ for (const spec of [ "Qwen2.5 Coder 3B Instruct DGX Spark per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1365.816873827231, 0.000000001, - "Qwen2.5 Coder 3B Instruct DGX Spark Dennard bound", + "Qwen2.5 Coder 3B Instruct DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.bMem, 30); @@ -22335,10 +22350,10 @@ for (const spec of [ "Qwen2.5 3B DGX Spark per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1365.816873827, 0.000000001, - "Qwen2.5 3B DGX Spark Dennard bound", + "Qwen2.5 3B DGX Spark memory-power bound", ); } @@ -22552,10 +22567,10 @@ for (const spec of [ "Qwen2.5 VL 3B AWQ DGX aggregate tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 4182.984768413783, 0.000000001, - "Qwen2.5 VL 3B AWQ DGX Dennard bound", + "Qwen2.5 VL 3B AWQ DGX memory-power bound", ); assertNear( m5Result.single.aggregate, @@ -22571,10 +22586,10 @@ for (const spec of [ "Qwen2.5 VL 3B AWQ M5 Max aggregate tok/s", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 9407.885156798766, 0.000000001, - "Qwen2.5 VL 3B AWQ M5 Max Dennard bound", + "Qwen2.5 VL 3B AWQ M5 Max memory-power bound", ); } @@ -22666,10 +22681,10 @@ for (const spec of [ "RedHatAI Qwen2.5 VL 3B W4A16 DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 4183.001062146388, 0.000000001, - "RedHatAI Qwen2.5 VL 3B W4A16 DGX Dennard bound", + "RedHatAI Qwen2.5 VL 3B W4A16 DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 24); @@ -22783,10 +22798,10 @@ for (const spec of [ "RedHatAI Qwen2.5 VL 3B W8A8 DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2497.44677335443, 0.000000001, - "RedHatAI Qwen2.5 VL 3B W8A8 DGX Dennard bound", + "RedHatAI Qwen2.5 VL 3B W8A8 DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 23); @@ -22882,10 +22897,10 @@ for (const spec of [ assert.equal(result.bMem, 1); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 37.761119637, 0.000000001, - "Qwen2 Audio 7B Instruct DGX Dennard bound", + "Qwen2 Audio 7B Instruct DGX memory-power bound", ); } @@ -22904,10 +22919,10 @@ for (const spec of [ assert.equal(result.bMem, 1); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 84.927939404, 0.000000001, - "Qwen2 Audio 7B Instruct M5 Max Dennard bound", + "Qwen2 Audio 7B Instruct M5 Max memory-power bound", ); } @@ -22953,10 +22968,10 @@ for (const spec of [ assert.equal(result.bMem, 18); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 352.711042188, 0.000000001, - "Qwen2.5 7B base DGX Dennard bound", + "Qwen2.5 7B base DGX memory-power bound", ); } @@ -23055,10 +23070,10 @@ for (const spec of [ "Qwen2.5 Math 7B Instruct DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 352.7110421882862, 0.000000001, - "Qwen2.5 Math 7B Instruct DGX Dennard bound", + "Qwen2.5 Math 7B Instruct DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 9); @@ -23120,10 +23135,10 @@ for (const spec of [ "Qwen2.5 Coder 7B DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 352.7110421882862, 0.000000001, - "Qwen2.5 Coder 7B DGX Spark Dennard bound", + "Qwen2.5 Coder 7B DGX Spark memory-power bound", ); } @@ -23236,10 +23251,10 @@ for (const spec of [ "Qwen2.5 Coder 7B Instruct GGUF Q5_K_M DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1076.9094551509895, 0.000000001, - "Qwen2.5 Coder 7B Instruct GGUF Q5_K_M DGX Dennard bound", + "Qwen2.5 Coder 7B Instruct GGUF Q5_K_M DGX memory-power bound", ); assertNear( m5Result.single.aggregate, @@ -23255,10 +23270,10 @@ for (const spec of [ "Qwen2.5 Coder 7B Instruct GGUF Q5_K_M M5 Max aggregate throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 2422.0600932699913, 0.000000001, - "Qwen2.5 Coder 7B Instruct GGUF Q5_K_M M5 Max Dennard bound", + "Qwen2.5 Coder 7B Instruct GGUF Q5_K_M M5 Max memory-power bound", ); } @@ -23321,10 +23336,10 @@ for (const spec of [ "Qwen2.5 Coder 7B Instruct GPTQ Int4 DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1214.520077601, 0.000001, - "Qwen2.5 Coder 7B Instruct GPTQ Int4 DGX Spark Dennard bound", + "Qwen2.5 Coder 7B Instruct GPTQ Int4 DGX Spark memory-power bound", ); } @@ -23410,10 +23425,10 @@ for (const spec of [ "Qwen2.5 Coder 7B Instruct AWQ DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1215.796126552, 0.000001, - "Qwen2.5 Coder 7B Instruct AWQ DGX Spark Dennard bound", + "Qwen2.5 Coder 7B Instruct AWQ DGX Spark memory-power bound", ); } @@ -23559,10 +23574,10 @@ for (const spec of [ "Llama 3.3 Nemotron Super 49B v1 DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2.8233976425449123, 0.000000001, - "Llama 3.3 Nemotron Super 49B v1 DGX Spark Dennard bound", + "Llama 3.3 Nemotron Super 49B v1 DGX Spark memory-power bound", ); } @@ -23611,10 +23626,10 @@ for (const spec of [ "Llama 3.3 Nemotron Super 49B v1.5 DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2.8233976425449123, 0.000000001, - "Llama 3.3 Nemotron Super 49B v1.5 DGX Spark Dennard bound", + "Llama 3.3 Nemotron Super 49B v1.5 DGX Spark memory-power bound", ); } @@ -23633,10 +23648,10 @@ for (const spec of [ "Llama 3.3 Nemotron Super 49B v1.5 M5 Max single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 6.3500591667493635, 0.000000001, - "Llama 3.3 Nemotron Super 49B v1.5 M5 Max Dennard bound", + "Llama 3.3 Nemotron Super 49B v1.5 M5 Max memory-power bound", ); } @@ -23689,10 +23704,10 @@ for (const spec of [ "Llama 3.3 Nemotron Super 49B v1.5 FP8 DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 37.11214678920625, 0.000000001, - "Llama 3.3 Nemotron Super 49B v1.5 FP8 DGX Spark Dennard bound", + "Llama 3.3 Nemotron Super 49B v1.5 FP8 DGX Spark memory-power bound", ); } @@ -23711,10 +23726,10 @@ for (const spec of [ "Llama 3.3 Nemotron Super 49B v1.5 FP8 M5 Max single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 83.46834479330636, 0.000000001, - "Llama 3.3 Nemotron Super 49B v1.5 FP8 M5 Max Dennard bound", + "Llama 3.3 Nemotron Super 49B v1.5 FP8 M5 Max memory-power bound", ); } @@ -23763,10 +23778,10 @@ for (const spec of [ assert.equal(result.bMem, 57); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 942.9638918173164, 0.000000001, - "Nemotron Nano 9B v2 BF16 DGX Spark Dennard bound", + "Nemotron Nano 9B v2 BF16 DGX Spark memory-power bound", ); } @@ -23848,10 +23863,10 @@ for (const spec of [ "Nemotron Nano 12B v2 VL BF16 DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 421.01955071497434, 0.000000001, - "Nemotron Nano 12B v2 VL BF16 DGX Spark Dennard bound", + "Nemotron Nano 12B v2 VL BF16 DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 7); @@ -23874,10 +23889,10 @@ for (const spec of [ "Nemotron Nano 12B v2 VL BF16 M5 Max per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 946.908440069576, 0.000000001, - "Nemotron Nano 12B v2 VL BF16 M5 Max Dennard bound", + "Nemotron Nano 12B v2 VL BF16 M5 Max memory-power bound", ); } @@ -23962,10 +23977,10 @@ for (const spec of [ "Nemotron Nano 9B v2 FP8 DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1844.264800061, 0.000000001, - "Nemotron Nano 9B v2 FP8 DGX Spark Dennard bound", + "Nemotron Nano 9B v2 FP8 DGX Spark memory-power bound", ); } @@ -23996,10 +24011,10 @@ for (const spec of [ "Nemotron Nano 9B v2 FP8 M5 Max per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 4147.906912958, 0.000000001, - "Nemotron Nano 9B v2 FP8 M5 Max Dennard bound", + "Nemotron Nano 9B v2 FP8 M5 Max memory-power bound", ); } @@ -24048,10 +24063,10 @@ for (const spec of [ "Nemotron 3 Nano 30B BF16 DGX aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3621.6162593181825, 0.000000001, - "Nemotron 3 Nano 30B BF16 DGX Dennard bound", + "Nemotron 3 Nano 30B BF16 DGX memory-power bound", ); } @@ -24126,10 +24141,10 @@ for (const spec of [ "Nemotron 3 Nano 30B NVFP4 DGX aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 26701.832469856658, 0.000000001, - "Nemotron 3 Nano 30B NVFP4 DGX Dennard bound", + "Nemotron 3 Nano 30B NVFP4 DGX memory-power bound", ); } @@ -24204,10 +24219,10 @@ for (const spec of [ "Nemotron 3 Nano 30B FP8 DGX aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 16808.886258937506, 0.000000001, - "Nemotron 3 Nano 30B FP8 DGX Dennard bound", + "Nemotron 3 Nano 30B FP8 DGX memory-power bound", ); } @@ -24284,10 +24299,10 @@ for (const spec of [ "Nemotron 3 Nano Omni BF16 DGX aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3570.1705885532006, 0.000000001, - "Nemotron 3 Nano Omni BF16 DGX Dennard bound", + "Nemotron 3 Nano Omni BF16 DGX memory-power bound", ); } @@ -24329,7 +24344,7 @@ for (const spec of [ ); assert.equal(result.bMem, 0); assert.equal(result.best, null); - assert.equal(result.dennard, 0); + assert.equal(result.memoryPowerCeiling, 0); } { @@ -24370,7 +24385,7 @@ for (const spec of [ ); assert.equal(result.bMem, 0); assert.equal(result.best, null); - assert.equal(result.dennard, 0); + assert.equal(result.memoryPowerCeiling, 0); } { @@ -24400,10 +24415,10 @@ for (const spec of [ "Nemotron 3 Super FP8 M2 Ultra 192GB per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 5690.405308853797, 0.000000001, - "Nemotron 3 Super FP8 M2 Ultra 192GB Dennard bound", + "Nemotron 3 Super FP8 M2 Ultra 192GB memory-power bound", ); } @@ -24452,10 +24467,10 @@ for (const spec of [ "Nemotron 3 Super NVFP4 DGX aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1725.3976776238326, 0.000000001, - "Nemotron 3 Super NVFP4 DGX Dennard bound", + "Nemotron 3 Super NVFP4 DGX memory-power bound", ); } @@ -24486,10 +24501,10 @@ for (const spec of [ "Nemotron 3 Super NVFP4 M5 Max per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3880.5647401503047, 0.000000001, - "Nemotron 3 Super NVFP4 M5 Max Dennard bound", + "Nemotron 3 Super NVFP4 M5 Max memory-power bound", ); } @@ -24531,7 +24546,7 @@ for (const spec of [ ); assert.equal(result.bMem, 0); assert.equal(result.best, null); - assert.equal(result.dennard, 0); + assert.equal(result.memoryPowerCeiling, 0); } { @@ -24567,10 +24582,10 @@ for (const spec of [ "Nemotron 3 Ultra NVFP4 4x RTX PRO per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 4111.405433821978, 0.000000001, - "Nemotron 3 Ultra NVFP4 4x RTX PRO Dennard bound", + "Nemotron 3 Ultra NVFP4 4x RTX PRO memory-power bound", ); } @@ -24612,7 +24627,7 @@ for (const spec of [ ); assert.equal(result.bMem, 0); assert.equal(result.best, null); - assert.equal(result.dennard, 0); + assert.equal(result.memoryPowerCeiling, 0); } { @@ -24660,10 +24675,10 @@ for (const spec of [ assert.equal(result.bMem, 7); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 142.291431195, 0.000000001, - "Llama Nemotron Nano VL DGX Dennard bound", + "Llama Nemotron Nano VL DGX memory-power bound", ); } @@ -24780,10 +24795,10 @@ for (const spec of [ "Qwen2.5 3B Instruct AWQ DGX Spark aggregate throughput at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 4208.636896114454, 0.000000001, - "Qwen2.5 3B Instruct AWQ DGX Spark Dennard bound", + "Qwen2.5 3B Instruct AWQ DGX Spark memory-power bound", ); assert.equal(m5Result.best?.batch, 24); assertNear( @@ -24924,10 +24939,10 @@ for (const spec of [ assert.equal(result.bMem, 5); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 181.17453821547426, 0.000000001, - "Qwen2.5 14B GPTQ Int4 DGX Spark Dennard bound", + "Qwen2.5 14B GPTQ Int4 DGX Spark memory-power bound", ); } @@ -24958,10 +24973,10 @@ for (const spec of [ "Qwen2.5 14B GPTQ Int4 M5 Max per-session throughput at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 407.47680023553545, 0.000000001, - "Qwen2.5 14B GPTQ Int4 M5 Max Dennard bound", + "Qwen2.5 14B GPTQ Int4 M5 Max memory-power bound", ); } @@ -25007,10 +25022,10 @@ for (const spec of [ assert.equal(result.bMem, 2); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 16.704415158, 0.000000001, - "Qwen2.5 72B Instruct AWQ DGX Dennard bound", + "Qwen2.5 72B Instruct AWQ DGX memory-power bound", ); } @@ -25055,7 +25070,7 @@ for (const spec of [ 0.000000001, "Qwen2.5 72B Instruct BF16 DGX single-session bound despite non-fit resident payload", ); - assert.equal(result.dennard, 0); + assert.equal(result.memoryPowerCeiling, 0); } { @@ -25167,10 +25182,10 @@ for (const spec of [ "Calamitous Qwen2.5 32B FP8 DGX single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 27.23210637488365, 0.000000001, - "Calamitous Qwen2.5 32B FP8 DGX Dennard bound", + "Calamitous Qwen2.5 32B FP8 DGX memory-power bound", ); assert.equal(m5Result.status_code, "no_floor"); assert.equal(m5Result.bMem, 3); @@ -25182,10 +25197,10 @@ for (const spec of [ "Calamitous Qwen2.5 32B FP8 M5 Max single-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 61.247301517137586, 0.000000001, - "Calamitous Qwen2.5 32B FP8 M5 Max Dennard bound", + "Calamitous Qwen2.5 32B FP8 M5 Max memory-power bound", ); } @@ -25244,10 +25259,10 @@ for (const spec of [ "Sugoi 32B Ultra F16 GGUF DGX single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 8.86618452430719, 0.000000001, - "Sugoi 32B Ultra F16 GGUF DGX Dennard bound", + "Sugoi 32B Ultra F16 GGUF DGX memory-power bound", ); assert.equal(m5Result.status_code, "no_floor"); assert.equal(m5Result.bMem, 2); @@ -25259,10 +25274,10 @@ for (const spec of [ "Sugoi 32B Ultra F16 GGUF M5 Max single-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 19.940795963093827, 0.000000001, - "Sugoi 32B Ultra F16 GGUF M5 Max Dennard bound", + "Sugoi 32B Ultra F16 GGUF M5 Max memory-power bound", ); } @@ -25308,10 +25323,10 @@ for (const spec of [ "Qwen2.5 VL 32B Instruct DGX single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 8.419271110228358, 0.000000001, - "Qwen2.5 VL 32B Instruct DGX Dennard bound", + "Qwen2.5 VL 32B Instruct DGX memory-power bound", ); } @@ -25356,7 +25371,7 @@ for (const spec of [ ); assert.equal(result.bMem, 0); assert.equal(result.best, null); - assert.equal(result.dennard, 0); + assert.equal(result.memoryPowerCeiling, 0); } { @@ -25427,10 +25442,10 @@ for (const spec of [ assert.equal(result.bMem, 2); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 16.404190186945065, 0.000000001, - "Qwen2.5 VL 72B AWQ DGX Dennard bound", + "Qwen2.5 VL 72B AWQ DGX memory-power bound", ); } @@ -25455,10 +25470,10 @@ for (const spec of [ "Qwen2.5 VL 72B AWQ 4x RTX PRO per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1862.7899570966754, 0.000000001, - "Qwen2.5 VL 72B AWQ 4x RTX PRO Dennard bound", + "Qwen2.5 VL 72B AWQ 4x RTX PRO memory-power bound", ); } @@ -25483,10 +25498,10 @@ for (const spec of [ "Qwen2.5 VL 72B Instruct 4x RTX PRO per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 350.77272176356763, 0.000000001, - "Qwen2.5 VL 72B Instruct 4x RTX PRO Dennard bound", + "Qwen2.5 VL 72B Instruct 4x RTX PRO memory-power bound", ); } @@ -25535,10 +25550,10 @@ for (const spec of [ assert.equal(result.bMem, 2); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 8.867832391, 0.000000001, - "DeepSeek R1 Distill Qwen 32B DGX Dennard bound", + "DeepSeek R1 Distill Qwen 32B DGX memory-power bound", ); } @@ -25557,10 +25572,10 @@ for (const spec of [ assert.equal(result.bMem, 2); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 19.944502155, 0.000000001, - "DeepSeek R1 Distill Qwen 32B M5 Max Dennard bound", + "DeepSeek R1 Distill Qwen 32B M5 Max memory-power bound", ); } @@ -25609,10 +25624,10 @@ for (const spec of [ ); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 58.992896662981124, 0.000000001, - "Casper Hansen DeepSeek R1 Distill Qwen 32B AWQ DGX Dennard bound", + "Casper Hansen DeepSeek R1 Distill Qwen 32B AWQ DGX memory-power bound", ); } @@ -25637,10 +25652,10 @@ for (const spec of [ "Casper Hansen DeepSeek R1 Distill Qwen 32B AWQ M5 Max aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 132.6799946925656, 0.000000001, - "Casper Hansen DeepSeek R1 Distill Qwen 32B AWQ M5 Max Dennard bound", + "Casper Hansen DeepSeek R1 Distill Qwen 32B AWQ M5 Max memory-power bound", ); } @@ -25813,10 +25828,10 @@ for (const spec of [ ); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 58.992896663, 0.000000001, - "Qwen2.5 32B AWQ DGX Dennard bound", + "Qwen2.5 32B AWQ DGX memory-power bound", ); } @@ -25841,10 +25856,10 @@ for (const spec of [ "Qwen2.5 32B AWQ M5 Max aggregate throughput at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 132.679994693, 0.000000001, - "Qwen2.5 32B AWQ M5 Max Dennard bound", + "Qwen2.5 32B AWQ M5 Max memory-power bound", ); } @@ -25893,10 +25908,10 @@ for (const spec of [ ); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 58.93458909157554, 0.000000001, - "Qwen2.5 32B GPTQ Int4 DGX Dennard bound", + "Qwen2.5 32B GPTQ Int4 DGX memory-power bound", ); } @@ -25921,10 +25936,10 @@ for (const spec of [ "Qwen2.5 32B GPTQ Int4 M5 Max aggregate throughput at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 132.54885605211496, 0.000000001, - "Qwen2.5 32B GPTQ Int4 M5 Max Dennard bound", + "Qwen2.5 32B GPTQ Int4 M5 Max memory-power bound", ); } @@ -26005,10 +26020,10 @@ for (const spec of [ "Qwen2.5 32B GPTQ Int8 DGX single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 26.39369664944565, 0.000000001, - "Qwen2.5 32B GPTQ Int8 DGX Dennard bound", + "Qwen2.5 32B GPTQ Int8 DGX memory-power bound", ); assert.equal(m5Result.bMem, 3); assert.equal(m5Result.best, null); @@ -26019,10 +26034,10 @@ for (const spec of [ "Qwen2.5 32B GPTQ Int8 M5 Max single-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 59.361647409375934, 0.000000001, - "Qwen2.5 32B GPTQ Int8 M5 Max Dennard bound", + "Qwen2.5 32B GPTQ Int8 M5 Max memory-power bound", ); } @@ -26071,10 +26086,10 @@ for (const spec of [ "Qwen2.5 Coder 14B AWQ single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 181.37259851429485, 0.000000001, - "Qwen2.5 Coder 14B AWQ DGX Spark Dennard bound", + "Qwen2.5 Coder 14B AWQ DGX Spark memory-power bound", ); } @@ -26138,10 +26153,10 @@ for (const spec of [ "LM Studio Qwen2.5 Coder 14B MLX 4-bit DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 197.02704309293063, 0.000000001, - "LM Studio Qwen2.5 Coder 14B MLX 4-bit DGX Dennard bound", + "LM Studio Qwen2.5 Coder 14B MLX 4-bit DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 3); @@ -26205,10 +26220,10 @@ for (const spec of [ "LM Studio Qwen2.5 Coder 14B MLX 8-bit DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 97.4217173403159, 0.000000001, - "LM Studio Qwen2.5 Coder 14B MLX 8-bit DGX Dennard bound", + "LM Studio Qwen2.5 Coder 14B MLX 8-bit DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 2); @@ -26724,10 +26739,10 @@ for (const spec of [ "gpt-oss-safeguard-20b DGX per-session throughput at b*", ); assertNear( - dgxResult.dennard, + dgxResult.memoryPowerCeiling, 3178.5519505718958, 0.000000001, - "gpt-oss-safeguard-20b DGX Dennard bound", + "gpt-oss-safeguard-20b DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 23); @@ -27135,10 +27150,10 @@ for (const spec of [ "ggml-org gpt-oss-120b GGUF DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1164.9699035576941, 0.000000001, - "ggml-org gpt-oss-120b GGUF DGX Dennard bound", + "ggml-org gpt-oss-120b GGUF DGX memory-power bound", ); const m5Result = profiled( @@ -27235,10 +27250,10 @@ for (const spec of [ "SakamakiSmile Qwen3.6 27B Text NVFP4 MTP single RTX PRO per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2197.4356377060953, 0.000000001, - "SakamakiSmile Qwen3.6 27B Text NVFP4 MTP single RTX PRO Dennard bound", + "SakamakiSmile Qwen3.6 27B Text NVFP4 MTP single RTX PRO memory-power bound", ); } @@ -27329,10 +27344,10 @@ for (const spec of [ "LM Studio Qwen3.6 35B A3B MLX 4-bit DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 7707.906276927898, 0.000000001, - "LM Studio Qwen3.6 35B A3B MLX 4-bit DGX Spark Dennard bound", + "LM Studio Qwen3.6 35B A3B MLX 4-bit DGX Spark memory-power bound", ); } @@ -27401,10 +27416,10 @@ for (const spec of [ "LM Studio Qwen3.6 35B A3B MLX 6-bit DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2700.5339319149016, 0.000000001, - "LM Studio Qwen3.6 35B A3B MLX 6-bit DGX Spark Dennard bound", + "LM Studio Qwen3.6 35B A3B MLX 6-bit DGX Spark memory-power bound", ); } @@ -27473,10 +27488,10 @@ for (const spec of [ "LM Studio Qwen3.6 35B A3B MLX 8-bit DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3394.6905558568737, 0.000000001, - "LM Studio Qwen3.6 35B A3B MLX 8-bit DGX Spark Dennard bound", + "LM Studio Qwen3.6 35B A3B MLX 8-bit DGX Spark memory-power bound", ); } @@ -27601,10 +27616,10 @@ for (const spec of [ "cyankiwi Qwen3.5 35B A3B AWQ DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2777.1775561760096, 0.000000001, - "cyankiwi Qwen3.5 35B A3B AWQ DGX Spark Dennard bound", + "cyankiwi Qwen3.5 35B A3B AWQ DGX Spark memory-power bound", ); const m5Result = profiled( @@ -27627,10 +27642,10 @@ for (const spec of [ "cyankiwi Qwen3.5 35B A3B AWQ M5 Max per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 6246.106298505751, 0.000000001, - "cyankiwi Qwen3.5 35B A3B AWQ M5 Max Dennard bound", + "cyankiwi Qwen3.5 35B A3B AWQ M5 Max memory-power bound", ); } @@ -27722,10 +27737,10 @@ for (const spec of [ "Nex-N2-mini AWQ INT4 DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2768.208004715283, 0.000000001, - "Nex-N2-mini AWQ INT4 DGX Spark Dennard bound", + "Nex-N2-mini AWQ INT4 DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.bMem, 45); @@ -27743,10 +27758,10 @@ for (const spec of [ "Nex-N2-mini AWQ INT4 M5 Max per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 6225.93302159408, 0.000000001, - "Nex-N2-mini AWQ INT4 M5 Max Dennard bound", + "Nex-N2-mini AWQ INT4 M5 Max memory-power bound", ); } @@ -27880,10 +27895,10 @@ for (const spec of [ "txn545 Qwen3.5 122B A10B NVFP4 DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 603.5261422921471, 0.000000001, - "txn545 Qwen3.5 122B A10B NVFP4 DGX Spark Dennard bound", + "txn545 Qwen3.5 122B A10B NVFP4 DGX Spark memory-power bound", ); const m5Result = profiled(repo, "apple-macbook-pro-16-m5-max-128gb"); @@ -27903,10 +27918,10 @@ for (const spec of [ "txn545 Qwen3.5 122B A10B NVFP4 M5 Max per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 1357.3811405398474, 0.000000001, - "txn545 Qwen3.5 122B A10B NVFP4 M5 Max Dennard bound", + "txn545 Qwen3.5 122B A10B NVFP4 M5 Max memory-power bound", ); } @@ -27980,10 +27995,10 @@ for (const spec of [ "RedHatAI Qwen3.5 122B A10B NVFP4 DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 421.73558706741494, 0.000000001, - "RedHatAI Qwen3.5 122B A10B NVFP4 DGX Spark Dennard bound", + "RedHatAI Qwen3.5 122B A10B NVFP4 DGX Spark memory-power bound", ); const m5Result = profiled(repo, "apple-macbook-pro-16-m5-max-128gb"); @@ -28003,10 +28018,10 @@ for (const spec of [ "RedHatAI Qwen3.5 122B A10B NVFP4 M5 Max per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 948.5188661516219, 0.000000001, - "RedHatAI Qwen3.5 122B A10B NVFP4 M5 Max Dennard bound", + "RedHatAI Qwen3.5 122B A10B NVFP4 M5 Max memory-power bound", ); } @@ -28070,10 +28085,10 @@ for (const spec of [ "Qwen3.5 122B A10B GPTQ Int4 DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 339.67761348357817, 0.000000001, - "Qwen3.5 122B A10B GPTQ Int4 DGX Spark Dennard bound", + "Qwen3.5 122B A10B GPTQ Int4 DGX Spark memory-power bound", ); const m5Result = profiled( @@ -28096,10 +28111,10 @@ for (const spec of [ "Qwen3.5 122B A10B GPTQ Int4 M5 Max per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 763.9635702524432, 0.000000001, - "Qwen3.5 122B A10B GPTQ Int4 M5 Max Dennard bound", + "Qwen3.5 122B A10B GPTQ Int4 M5 Max memory-power bound", ); } @@ -28162,10 +28177,10 @@ for (const spec of [ assert.equal(result.bMem, 15); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 326.3884732434616, 0.000000001, - "cyankiwi Qwen3.5 122B A10B AWQ DGX Spark Dennard bound", + "cyankiwi Qwen3.5 122B A10B AWQ DGX Spark memory-power bound", ); const m5Result = profiled( @@ -28188,10 +28203,10 @@ for (const spec of [ "cyankiwi Qwen3.5 122B A10B AWQ M5 Max per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 734.0751742545253, 0.000000001, - "cyankiwi Qwen3.5 122B A10B AWQ M5 Max Dennard bound", + "cyankiwi Qwen3.5 122B A10B AWQ M5 Max memory-power bound", ); } @@ -28466,10 +28481,10 @@ for (const spec of [ "Qwen3.5 0.8B Base DGX Spark aggregate", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 17182.63984539862, 0.000000001, - "Qwen3.5 0.8B Base DGX Spark Dennard bound", + "Qwen3.5 0.8B Base DGX Spark memory-power bound", ); const m5 = profiled( @@ -28485,10 +28500,10 @@ for (const spec of [ "Qwen3.5 0.8B Base M5 Max aggregate", ); assertNear( - m5.dennard, + m5.memoryPowerCeiling, 38645.20463397345, 0.000000001, - "Qwen3.5 0.8B Base M5 Max Dennard bound", + "Qwen3.5 0.8B Base M5 Max memory-power bound", ); } @@ -28541,10 +28556,10 @@ for (const spec of [ "Unsloth Qwen3.5 0.8B GGUF DGX Spark aggregate", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 17204.740152701, 0.000000001, - "Unsloth Qwen3.5 0.8B GGUF DGX Spark Dennard bound", + "Unsloth Qwen3.5 0.8B GGUF DGX Spark memory-power bound", ); const m5 = profiled( @@ -28566,10 +28581,10 @@ for (const spec of [ "Unsloth Qwen3.5 0.8B GGUF M5 Max aggregate", ); assertNear( - m5.dennard, + m5.memoryPowerCeiling, 38694.910087026, 0.000000001, - "Unsloth Qwen3.5 0.8B GGUF M5 Max Dennard bound", + "Unsloth Qwen3.5 0.8B GGUF M5 Max memory-power bound", ); } @@ -28607,7 +28622,12 @@ for (const spec of [ ); assert.equal(result.best.batch, 23); assertNear(result.best.aggregate, 473, 1, "Qwen3.5 2B aggregate"); - assertNear(result.dennard, 6707, 100, "Qwen3.5 2B Dennard"); + assertNear( + result.memoryPowerCeiling, + 6707, + 100, + "Qwen3.5 2B memory-power ceiling", + ); } { @@ -28651,10 +28671,10 @@ for (const spec of [ "Qwen3.5 2B Base aggregate", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 6707.251777357739, 0.000000001, - "Qwen3.5 2B Base Dennard", + "Qwen3.5 2B Base memory-power ceiling", ); } @@ -28723,10 +28743,10 @@ for (const spec of [ "Unsloth Qwen3.5 2B GGUF DGX Spark per-session", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 6750.168130512359, 0.000000001, - "Unsloth Qwen3.5 2B GGUF DGX Spark Dennard", + "Unsloth Qwen3.5 2B GGUF DGX Spark memory-power ceiling", ); assert.equal(m5Result.best.batch, 65); assertNear( @@ -28778,7 +28798,12 @@ for (const spec of [ 1, "cyankiwi Qwen3.5 2B AWQ aggregate", ); - assertNear(result.dennard, 14336, 100, "cyankiwi Qwen3.5 2B AWQ Dennard"); + assertNear( + result.memoryPowerCeiling, + 14336, + 100, + "cyankiwi Qwen3.5 2B AWQ memory-power ceiling", + ); } { @@ -28886,10 +28911,10 @@ for (const spec of [ assert.equal(dgxResult.bMem, 15); assert.equal(dgxResult.best, null); assertNear( - dgxResult.dennard, + dgxResult.memoryPowerCeiling, 283.7187782602703, 0.000000001, - "Unsloth Qwen3.5 27B DGX Dennard bound", + "Unsloth Qwen3.5 27B DGX memory-power bound", ); const m5Result = profiled(repo, "apple-macbook-pro-16-m5-max-128gb"); assert.equal(m5Result.status_code, "ok"); @@ -29020,10 +29045,10 @@ for (const spec of [ "Qwen3.5 27B GPTQ Int4 DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 140.923700333, 0.000000001, - "Qwen3.5 27B GPTQ Int4 DGX Dennard bound", + "Qwen3.5 27B GPTQ Int4 DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 2); @@ -29083,10 +29108,10 @@ for (const spec of [ "cyankiwi Qwen3.5 27B AWQ DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 249.834038318, 0.000000001, - "cyankiwi Qwen3.5 27B AWQ DGX Dennard bound", + "cyankiwi Qwen3.5 27B AWQ DGX memory-power bound", ); } @@ -29139,10 +29164,10 @@ for (const spec of [ "QuantTrio Qwen3.5 27B AWQ DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 227.721166711, 0.000000001, - "QuantTrio Qwen3.5 27B AWQ DGX Dennard bound", + "QuantTrio Qwen3.5 27B AWQ DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 5); @@ -29219,10 +29244,10 @@ for (const spec of [ "QuantTrio Qwen3.5 27B Claude v2 AWQ DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 227.721166711, 0.000000001, - "QuantTrio Qwen3.5 27B Claude v2 AWQ DGX Dennard bound", + "QuantTrio Qwen3.5 27B Claude v2 AWQ DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 5); @@ -29285,10 +29310,10 @@ for (const spec of [ "DeepSeek Coder 7B v1.5 DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 45.428030311, 0.000000001, - "DeepSeek Coder 7B v1.5 DGX Dennard bound", + "DeepSeek Coder 7B v1.5 DGX memory-power bound", ); } @@ -29337,10 +29362,10 @@ for (const spec of [ "DeepSeek Coder 6.7B DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 41.965644845, 0.000000001, - "DeepSeek Coder 6.7B DGX Dennard bound", + "DeepSeek Coder 6.7B DGX memory-power bound", ); } @@ -29417,10 +29442,10 @@ for (const spec of [ "Bielik 11B AWQ DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 255.844496986, 0.000000001, - "Bielik 11B AWQ DGX Dennard bound", + "Bielik 11B AWQ DGX memory-power bound", ); } @@ -29525,10 +29550,10 @@ for (const spec of [ "groxaxo Qwen3.6 27B GPTQ DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 270.371989934, 0.000000001, - "groxaxo Qwen3.6 27B GPTQ DGX Dennard bound", + "groxaxo Qwen3.6 27B GPTQ DGX memory-power bound", ); } @@ -29559,10 +29584,10 @@ for (const spec of [ "groxaxo Qwen3.6 27B GPTQ M5 Max per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 608.089383955, 0.000000001, - "groxaxo Qwen3.6 27B GPTQ M5 Max Dennard bound", + "groxaxo Qwen3.6 27B GPTQ M5 Max memory-power bound", ); } @@ -29608,10 +29633,10 @@ for (const spec of [ "Unsloth Qwen3.6 27B GGUF IQ4_NL DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 275.6034421434826, 0.000000001, - "Unsloth Qwen3.6 27B GGUF IQ4_NL DGX Dennard bound", + "Unsloth Qwen3.6 27B GGUF IQ4_NL DGX memory-power bound", ); } @@ -29668,10 +29693,10 @@ for (const spec of [ "LM Studio Qwen3.6 27B GGUF Q4_K_M DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 266.0947116547451, 0.000000001, - "LM Studio Qwen3.6 27B GGUF Q4_K_M DGX Dennard bound", + "LM Studio Qwen3.6 27B GGUF Q4_K_M DGX memory-power bound", ); } @@ -29702,10 +29727,10 @@ for (const spec of [ "LM Studio Qwen3.6 27B GGUF Q4_K_M M5 Max per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 598.4694247473021, 0.000000001, - "LM Studio Qwen3.6 27B GGUF Q4_K_M M5 Max Dennard bound", + "LM Studio Qwen3.6 27B GGUF Q4_K_M M5 Max memory-power bound", ); } @@ -29782,10 +29807,10 @@ for (const spec of [ "BatiAI Qwen3.6 27B GGUF IQ3_XXS DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 416.6039464534867, 0.000000001, - "BatiAI Qwen3.6 27B GGUF IQ3_XXS DGX Dennard bound", + "BatiAI Qwen3.6 27B GGUF IQ3_XXS DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.bMem, 16); @@ -29809,10 +29834,10 @@ for (const spec of [ "BatiAI Qwen3.6 27B GGUF IQ3_XXS M5 Max per-session tok/s", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 936.9773740748749, 0.000000001, - "BatiAI Qwen3.6 27B GGUF IQ3_XXS M5 Max Dennard bound", + "BatiAI Qwen3.6 27B GGUF IQ3_XXS M5 Max memory-power bound", ); } @@ -29871,10 +29896,10 @@ for (const spec of [ "DavidAU Qwen3.6 27B GGUF Q8_0 DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 128.67945792872968, 0.000000001, - "DavidAU Qwen3.6 27B GGUF Q8_0 DGX Dennard bound", + "DavidAU Qwen3.6 27B GGUF Q8_0 DGX memory-power bound", ); } @@ -29923,10 +29948,10 @@ for (const spec of [ "DavidAU Qwen3.6 40B GGUF Q8_0 DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 50.454674580685314, 0.000000001, - "DavidAU Qwen3.6 40B GGUF Q8_0 DGX Dennard bound", + "DavidAU Qwen3.6 40B GGUF Q8_0 DGX memory-power bound", ); } @@ -29972,10 +29997,10 @@ for (const spec of [ "LM Studio Qwen3.6 27B MLX 4bit DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 293.39179457, 0.000000001, - "LM Studio Qwen3.6 27B MLX 4bit DGX Dennard bound", + "LM Studio Qwen3.6 27B MLX 4bit DGX memory-power bound", ); } @@ -30022,10 +30047,10 @@ for (const spec of [ "LM Studio Qwen3.6 27B MLX 6bit DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 190.000967499, 0.000000001, - "LM Studio Qwen3.6 27B MLX 6bit DGX Dennard bound", + "LM Studio Qwen3.6 27B MLX 6bit DGX memory-power bound", ); } @@ -30072,10 +30097,10 @@ for (const spec of [ "LM Studio Qwen3.6 27B MLX 5bit DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 232.300037297, 0.000000001, - "LM Studio Qwen3.6 27B MLX 5bit DGX Dennard bound", + "LM Studio Qwen3.6 27B MLX 5bit DGX memory-power bound", ); } @@ -30122,10 +30147,10 @@ for (const spec of [ "LM Studio Qwen3.6 27B MLX 8bit DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 135.255192843, 0.000000001, - "LM Studio Qwen3.6 27B MLX 8bit DGX Dennard bound", + "LM Studio Qwen3.6 27B MLX 8bit DGX memory-power bound", ); } @@ -30211,10 +30236,10 @@ for (const spec of [ "TheBloke TinyLlama 1.1B AWQ DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 22767.620766598066, 0.000000001, - "TheBloke TinyLlama 1.1B AWQ DGX Dennard bound", + "TheBloke TinyLlama 1.1B AWQ DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 41); @@ -30283,10 +30308,10 @@ for (const spec of [ "TheBloke TinyLlama 1.1B GPTQ DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 22682.625290829, 0.000000001, - "TheBloke TinyLlama 1.1B GPTQ DGX Dennard bound", + "TheBloke TinyLlama 1.1B GPTQ DGX memory-power bound", ); } @@ -30392,10 +30417,10 @@ for (const spec of [ "TheBloke TinyLlama 1.1B Chat v1.0 GPTQ DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 22683.067532363, 0.000000001, - "TheBloke TinyLlama 1.1B Chat v1.0 GPTQ DGX Dennard bound", + "TheBloke TinyLlama 1.1B Chat v1.0 GPTQ DGX memory-power bound", ); assert.equal(m5Result.best?.batch, 41); assertNear( @@ -30496,10 +30521,10 @@ for (const spec of [ assert.equal(dgx.bMem, 6); assert.equal(dgx.best, null); assertNear( - dgx.dennard, + dgx.memoryPowerCeiling, 126.224241863, 0.000000001, - "MLX Devstral Small 2 DGX Dennard bound", + "MLX Devstral Small 2 DGX memory-power bound", ); assert.equal(m5.status_code, "ok"); assert.equal(m5.best?.batch, 3); @@ -30602,10 +30627,10 @@ for (const spec of [ "TheBloke TinyLlama 1.1B Chat v1.0 GGUF DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 22945.92459723394, 0.000000001, - "TheBloke TinyLlama 1.1B Chat v1.0 GGUF DGX Dennard bound", + "TheBloke TinyLlama 1.1B Chat v1.0 GGUF DGX memory-power bound", ); assert.equal(m5Result.best.batch, 41); assertNear( @@ -30656,10 +30681,10 @@ for (const spec of [ "Cyankiwi Qwen3.6 27B AWQ INT4 DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 243.19095612, 0.000000001, - "Cyankiwi Qwen3.6 27B AWQ INT4 DGX Dennard bound", + "Cyankiwi Qwen3.6 27B AWQ INT4 DGX memory-power bound", ); } @@ -30707,10 +30732,10 @@ for (const spec of [ ); assert.equal(result.bMem, 13); assertNear( - result.dennard, + result.memoryPowerCeiling, 152.091801341, 0.000000001, - "Cyankiwi Qwen3.6 27B AWQ BF16 INT4 DGX Dennard bound", + "Cyankiwi Qwen3.6 27B AWQ BF16 INT4 DGX memory-power bound", ); } @@ -30735,10 +30760,10 @@ for (const spec of [ "Cyankiwi Qwen3.6 27B AWQ BF16 INT4 M5 Max aggregate tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 342.067274812, 0.000000001, - "Cyankiwi Qwen3.6 27B AWQ BF16 INT4 M5 Max Dennard bound", + "Cyankiwi Qwen3.6 27B AWQ BF16 INT4 M5 Max memory-power bound", ); } @@ -30784,10 +30809,10 @@ for (const spec of [ "QuantTrio Qwen3.6 27B AWQ DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 227.721425284, 0.000000001, - "QuantTrio Qwen3.6 27B AWQ DGX Dennard bound", + "QuantTrio Qwen3.6 27B AWQ DGX memory-power bound", ); } @@ -30833,10 +30858,10 @@ for (const spec of [ "Unsloth Qwen3.6 27B NVFP4 DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 172.643281493, 0.000000001, - "Unsloth Qwen3.6 27B NVFP4 DGX Dennard bound", + "Unsloth Qwen3.6 27B NVFP4 DGX memory-power bound", ); } @@ -30907,10 +30932,10 @@ for (const spec of [ "SakamakiSmile Qwen3.6 27B NVFP4 DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 491.114039291, 0.000000001, - "SakamakiSmile Qwen3.6 27B NVFP4 DGX Dennard bound", + "SakamakiSmile Qwen3.6 27B NVFP4 DGX memory-power bound", ); const m5Result = profiled( @@ -31025,10 +31050,10 @@ for (const spec of [ "ocicek Qwen3.6 27B NVFP4 DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 249.10018069734483, 0.000000001, - "ocicek Qwen3.6 27B NVFP4 DGX Dennard bound", + "ocicek Qwen3.6 27B NVFP4 DGX memory-power bound", ); const m5Result = profiled(repo, "apple-macbook-pro-16-m5-max-128gb"); @@ -31129,10 +31154,10 @@ for (const spec of [ "DeepSeek Coder V2 Lite DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 178.409795743, 0.000000001, - "DeepSeek Coder V2 Lite DGX Dennard bound", + "DeepSeek Coder V2 Lite DGX memory-power bound", ); } @@ -31212,10 +31237,10 @@ for (const spec of [ "RedHatAI DeepSeek Coder V2 Lite FP8 DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 384.897002588, 0.000000001, - "RedHatAI DeepSeek Coder V2 Lite FP8 DGX Dennard bound", + "RedHatAI DeepSeek Coder V2 Lite FP8 DGX memory-power bound", ); } @@ -31278,10 +31303,10 @@ for (const spec of [ "DeepSeek V2 Lite Chat DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 178.409795743, 0.000000001, - "DeepSeek V2 Lite Chat DGX Dennard bound", + "DeepSeek V2 Lite Chat DGX memory-power bound", ); } @@ -31341,10 +31366,10 @@ for (const spec of [ "DeepSeek V2 Lite DGX single-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 178.409795743, 0.000000001, - "DeepSeek V2 Lite DGX Dennard bound", + "DeepSeek V2 Lite DGX memory-power bound", ); } @@ -31410,10 +31435,10 @@ for (const spec of [ "DeepSeek VL2 Tiny DGX aggregate tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 4382.742068382, 0.000000001, - "DeepSeek VL2 Tiny DGX Dennard bound", + "DeepSeek VL2 Tiny DGX memory-power bound", ); } @@ -31466,10 +31491,10 @@ for (const spec of [ "SmolLM 1.7B W4A16 DGX Spark aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1254.742877584941, 0.000000001, - "SmolLM 1.7B W4A16 DGX Dennard bound", + "SmolLM 1.7B W4A16 DGX memory-power bound", ); } @@ -31569,10 +31594,10 @@ for (const spec of [ "QuantTrio Qwen3.6 35B A3B AWQ DGX per-session tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2725.8759476324717, 0.000000001, - "QuantTrio Qwen3.6 35B A3B AWQ DGX Dennard bound", + "QuantTrio Qwen3.6 35B A3B AWQ DGX memory-power bound", ); } @@ -31647,10 +31672,10 @@ for (const spec of [ "palmfuture Qwen3.6 35B A3B GPTQ DGX per-session tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 5436.735137096732, 0.000000001, - "palmfuture Qwen3.6 35B A3B GPTQ DGX Dennard bound", + "palmfuture Qwen3.6 35B A3B GPTQ DGX memory-power bound", ); } @@ -31726,10 +31751,10 @@ for (const spec of [ "Qwen3.6 35B A3B MXFP4_MOE GGUF DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 4648.521474227382, 0.000000001, - "Qwen3.6 35B A3B MXFP4_MOE GGUF DGX Dennard bound", + "Qwen3.6 35B A3B MXFP4_MOE GGUF DGX memory-power bound", ); } @@ -31823,10 +31848,10 @@ for (const spec of [ "Qwen3.5 35B A3B MXFP4_MOE GGUF DGX per-session tok/s at b*", ); assertNear( - dgxResult.dennard, + dgxResult.memoryPowerCeiling, 4679.63504763545, 0.000000001, - "Qwen3.5 35B A3B MXFP4_MOE GGUF DGX Dennard bound", + "Qwen3.5 35B A3B MXFP4_MOE GGUF DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 25); @@ -31933,10 +31958,10 @@ for (const spec of [ "Holo 3.1 35B A3B BF16 GGUF DGX per-session tok/s at b*", ); assertNear( - dgxResult.dennard, + dgxResult.memoryPowerCeiling, 1101.6679963092402, 0.000000001, - "Holo 3.1 35B A3B BF16 GGUF DGX Dennard bound", + "Holo 3.1 35B A3B BF16 GGUF DGX memory-power bound", ); assert.equal(m5Result.best.batch, 10); assertNear( @@ -32037,10 +32062,10 @@ for (const spec of [ "llmfan46 Qwen3.6 35B A3B Heretic BF16 GGUF DGX per-session tok/s at b*", ); assertNear( - dgxResult.dennard, + dgxResult.memoryPowerCeiling, 1101.6679064755108, 0.000000001, - "llmfan46 Qwen3.6 35B A3B Heretic BF16 GGUF DGX Dennard bound", + "llmfan46 Qwen3.6 35B A3B Heretic BF16 GGUF DGX memory-power bound", ); assert.equal(m5Result.best.batch, 10); assertNear( @@ -32233,10 +32258,10 @@ for (const spec of [ "LM Studio Qwen3.6 35B A3B Q4_K_M DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 6463.609872076501, 0.000000001, - "LM Studio Qwen3.6 35B A3B Q4_K_M DGX Dennard bound", + "LM Studio Qwen3.6 35B A3B Q4_K_M DGX memory-power bound", ); assert.equal(m5Result.best.batch, 25); assertNear( @@ -32336,10 +32361,10 @@ for (const spec of [ "Bartowski Qwen3.6 35B A3B IQ1_M DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 10004.030539611478, 0.000000001, - "Bartowski Qwen3.6 35B A3B IQ1_M DGX Dennard bound", + "Bartowski Qwen3.6 35B A3B IQ1_M DGX memory-power bound", ); assert.equal(m5Result.best.batch, 34); assertNear( @@ -32436,10 +32461,10 @@ for (const spec of [ "Ornith 1.0 35B BF16 GGUF DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1101.6680011839387, 0.000000001, - "Ornith 1.0 35B BF16 GGUF DGX Dennard bound", + "Ornith 1.0 35B BF16 GGUF DGX memory-power bound", ); assert.equal(m5Result.best.batch, 10); assertNear( @@ -32531,10 +32556,10 @@ for (const spec of [ "Qwen3.6 35B A3B MTP UD-Q4_K_XL DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 4561.971323762485, 0.000000001, - "Qwen3.6 35B A3B MTP UD-Q4_K_XL DGX Dennard bound", + "Qwen3.6 35B A3B MTP UD-Q4_K_XL DGX memory-power bound", ); } @@ -32585,10 +32610,10 @@ for (const spec of [ assert.equal(result.bMem, 15); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 245.592314594, 0.000000001, - "Qwen3.6 27B MTP UD-Q4_K_XL DGX Dennard bound", + "Qwen3.6 27B MTP UD-Q4_K_XL DGX memory-power bound", ); } @@ -32642,10 +32667,10 @@ for (const spec of [ assert.equal(result.bMem, 14); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 222.8462871897437, 0.000000001, - "Jackrong Qwopus3.6 27B Coder MTP Q5_K_M DGX Dennard bound", + "Jackrong Qwopus3.6 27B Coder MTP Q5_K_M DGX memory-power bound", ); const m5Result = profiled( @@ -32673,10 +32698,10 @@ for (const spec of [ "Jackrong Qwopus3.6 27B Coder MTP Q5_K_M M5 per-session tok/s at b*", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 501.2000744853576, 0.000000001, - "Jackrong Qwopus3.6 27B Coder MTP Q5_K_M M5 Dennard bound", + "Jackrong Qwopus3.6 27B Coder MTP Q5_K_M M5 memory-power bound", ); } @@ -32749,10 +32774,10 @@ for (const spec of [ assert.equal(result.bMem, 15); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 265.4174377043947, 0.000000001, - "Jackrong Qwopus3.6 27B Coder Compat MTP Q4_K_M DGX Dennard bound", + "Jackrong Qwopus3.6 27B Coder Compat MTP Q4_K_M DGX memory-power bound", ); const m5Result = profiled( @@ -32780,10 +32805,10 @@ for (const spec of [ "Jackrong Qwopus3.6 27B Coder Compat MTP Q4_K_M M5 per-session tok/s at b*", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 596.946178573254, 0.000000001, - "Jackrong Qwopus3.6 27B Coder Compat MTP Q4_K_M M5 Dennard bound", + "Jackrong Qwopus3.6 27B Coder Compat MTP Q4_K_M M5 memory-power bound", ); const m1UltraResult = profiled( @@ -32867,10 +32892,10 @@ for (const spec of [ assert.equal(result.bMem, 4); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 16.75805877740116, 0.000000001, - "RecViking Mistral Medium 3.5 DGX Dennard bound", + "RecViking Mistral Medium 3.5 DGX memory-power bound", ); const m5Result = profiled(repo, "apple-macbook-pro-16-m5-max-128gb"); @@ -32883,10 +32908,10 @@ for (const spec of [ "RecViking Mistral Medium 3.5 M5 Max single-session tok/s", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 37.690286041481, 0.000000001, - "RecViking Mistral Medium 3.5 M5 Max Dennard bound", + "RecViking Mistral Medium 3.5 M5 Max memory-power bound", ); } @@ -32944,10 +32969,10 @@ for (const spec of [ assert.equal(result.bMem, 14); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 222.84628577011875, 0.000000001, - "Jackrong Qwopus3.6 27B v2 MTP Q5_K_M DGX Dennard bound", + "Jackrong Qwopus3.6 27B v2 MTP Q5_K_M DGX memory-power bound", ); const m5Result = profiled( @@ -32975,10 +33000,10 @@ for (const spec of [ "Jackrong Qwopus3.6 27B v2 MTP Q5_K_M M5 per-session tok/s at b*", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 501.20007129250155, 0.000000001, - "Jackrong Qwopus3.6 27B v2 MTP Q5_K_M M5 Dennard bound", + "Jackrong Qwopus3.6 27B v2 MTP Q5_K_M M5 memory-power bound", ); } @@ -33044,10 +33069,10 @@ for (const spec of [ "Jackrong Qwopus3.5 9B Coder MTP Q5_K_M DGX per-session tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1614.678162450568, 0.000000001, - "Jackrong Qwopus3.5 9B Coder MTP Q5_K_M DGX Dennard bound", + "Jackrong Qwopus3.5 9B Coder MTP Q5_K_M DGX memory-power bound", ); const m5Result = profiled( @@ -33075,10 +33100,10 @@ for (const spec of [ "Jackrong Qwopus3.5 9B Coder MTP Q5_K_M M5 per-session tok/s at b*", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 3631.547222507871, 0.000000001, - "Jackrong Qwopus3.5 9B Coder MTP Q5_K_M M5 Dennard bound", + "Jackrong Qwopus3.5 9B Coder MTP Q5_K_M M5 memory-power bound", ); } @@ -33215,10 +33240,10 @@ for (const spec of [ "RedHatAI Qwen3.5 9B FP8 DGX Spark per-session tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 822.1167020244179, 0.000000001, - "RedHatAI Qwen3.5 9B FP8 DGX Spark Dennard bound", + "RedHatAI Qwen3.5 9B FP8 DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 18); @@ -33340,10 +33365,10 @@ for (const spec of [ "Hyper-AI Qwen3.5 9B FP8 DGX Spark per-session tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 987.4617361126113, 0.000000001, - "Hyper-AI Qwen3.5 9B FP8 DGX Spark Dennard bound", + "Hyper-AI Qwen3.5 9B FP8 DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 19); @@ -33442,10 +33467,10 @@ for (const spec of [ "Qwen3.5 9B Base M5 per-session tok/s at b*", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 1170.1093820472672, 0.000000001, - "Qwen3.5 9B Base M5 Dennard bound", + "Qwen3.5 9B Base M5 memory-power bound", ); } @@ -33524,10 +33549,10 @@ for (const spec of [ "Jackrong Qwen3.5 9B DeepSeek V4 Flash DGX per-session tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2266.181975341868, 0.000000001, - "Jackrong Qwen3.5 9B DeepSeek V4 Flash DGX Dennard bound", + "Jackrong Qwen3.5 9B DeepSeek V4 Flash DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 24); @@ -33601,10 +33626,10 @@ for (const spec of [ "AxionML Qwen3.5 9B NVFP4 DGX per-session tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1530.687244784, 0.000000001, - "AxionML Qwen3.5 9B NVFP4 DGX Dennard bound", + "AxionML Qwen3.5 9B NVFP4 DGX memory-power bound", ); } @@ -33664,10 +33689,10 @@ for (const spec of [ "Apolo13x Qwen3.5 9B NVFP4 DGX per-session tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 988.836448101, 0.000000001, - "Apolo13x Qwen3.5 9B NVFP4 DGX Dennard bound", + "Apolo13x Qwen3.5 9B NVFP4 DGX memory-power bound", ); } @@ -33732,10 +33757,10 @@ for (const spec of [ "LM Studio DeepSeek R1 Qwen3 8B MLX 4bit DGX per-session tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 501.770115701, 0.000000001, - "LM Studio DeepSeek R1 Qwen3 8B MLX 4bit DGX Dennard bound", + "LM Studio DeepSeek R1 Qwen3 8B MLX 4bit DGX memory-power bound", ); } @@ -33804,10 +33829,10 @@ for (const spec of [ "LM Studio DeepSeek R1 Qwen3 8B MLX 8bit DGX per-session tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 256.2329241066242, 0.000000001, - "LM Studio DeepSeek R1 Qwen3 8B MLX 8bit DGX Dennard bound", + "LM Studio DeepSeek R1 Qwen3 8B MLX 8bit DGX memory-power bound", ); assert.equal(m5Result.best.batch, 4); assertNear( @@ -33883,10 +33908,10 @@ for (const spec of [ "LM Studio Qwen3.5 9B MLX 4bit DGX per-session tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2094.460920533, 0.000000001, - "LM Studio Qwen3.5 9B MLX 4bit DGX Dennard bound", + "LM Studio Qwen3.5 9B MLX 4bit DGX memory-power bound", ); } @@ -33949,10 +33974,10 @@ for (const spec of [ "LM Studio Qwen3.5 9B MLX 8bit DGX per-session tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1065.549968734, 0.000000001, - "LM Studio Qwen3.5 9B MLX 8bit DGX Dennard bound", + "LM Studio Qwen3.5 9B MLX 8bit DGX memory-power bound", ); } @@ -34010,10 +34035,10 @@ for (const spec of [ "cyankiwi Qwen3.5 9B AWQ DGX per-session tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1532.394683808, 0.000000001, - "cyankiwi Qwen3.5 9B AWQ DGX Dennard bound", + "cyankiwi Qwen3.5 9B AWQ DGX memory-power bound", ); } @@ -34071,10 +34096,10 @@ for (const spec of [ "QuantTrio Qwen3.5 9B AWQ DGX per-session tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 986.928817653, 0.000000001, - "QuantTrio Qwen3.5 9B AWQ DGX Dennard bound", + "QuantTrio Qwen3.5 9B AWQ DGX memory-power bound", ); } @@ -34098,10 +34123,10 @@ for (const spec of [ "cyankiwi Qwen3.5 9B AWQ M5 Max aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3446.484746734, 0.000000001, - "cyankiwi Qwen3.5 9B AWQ M5 Max Dennard bound", + "cyankiwi Qwen3.5 9B AWQ M5 Max memory-power bound", ); } @@ -34159,10 +34184,10 @@ for (const spec of [ "Llama 3.2 1B Q8_0 GGUF DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 7529.019284667595, 0.000000001, - "Llama 3.2 1B Q8_0 GGUF DGX Dennard bound", + "Llama 3.2 1B Q8_0 GGUF DGX memory-power bound", ); } @@ -34222,10 +34247,10 @@ for (const spec of [ "bartowski Llama 3.2 1B F16 GGUF DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3961.128859515596, 0.000000001, - "bartowski Llama 3.2 1B F16 GGUF DGX Dennard bound", + "bartowski Llama 3.2 1B F16 GGUF DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 26); @@ -34301,10 +34326,10 @@ for (const spec of [ "MaziyarPanahi Llama 3.2 1B F16 GGUF DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3961.128858437008, 0.000000001, - "MaziyarPanahi Llama 3.2 1B F16 GGUF DGX Dennard bound", + "MaziyarPanahi Llama 3.2 1B F16 GGUF DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 26); @@ -34372,10 +34397,10 @@ for (const spec of [ "bartowski Llama 3.2 3B F16 GGUF DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 420.6913668661886, 0.000000001, - "bartowski Llama 3.2 3B F16 GGUF DGX Dennard bound", + "bartowski Llama 3.2 3B F16 GGUF DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 6); @@ -34443,10 +34468,10 @@ for (const spec of [ "Qwythos 9B Q4_K_M GGUF DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1858.8940423, 0.000000001, - "Qwythos 9B Q4_K_M GGUF DGX Dennard bound", + "Qwythos 9B Q4_K_M GGUF DGX memory-power bound", ); } @@ -34507,10 +34532,10 @@ for (const spec of [ "LM Studio Qwen3.5 9B Q4_K_M GGUF DGX per-session tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1859.688424329, 0.000000001, - "LM Studio Qwen3.5 9B Q4_K_M GGUF DGX Dennard bound", + "LM Studio Qwen3.5 9B Q4_K_M GGUF DGX memory-power bound", ); const m5Result = profiled( @@ -34584,10 +34609,10 @@ for (const spec of [ "HyperCLOVAX SEED Q4_K_M GGUF DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3292.755267855, 0.000000001, - "HyperCLOVAX SEED Q4_K_M GGUF DGX Dennard bound", + "HyperCLOVAX SEED Q4_K_M GGUF DGX memory-power bound", ); } @@ -34642,10 +34667,10 @@ for (const spec of [ "VNTL Llama 3 8B Q5_K_M GGUF DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 443.696743611, 0.000000001, - "VNTL Llama 3 8B Q5_K_M GGUF DGX Dennard bound", + "VNTL Llama 3 8B Q5_K_M GGUF DGX memory-power bound", ); } @@ -34684,10 +34709,10 @@ for (const spec of [ ); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 527.348734, 0.000001, - "Unsloth Qwen3.5 9B BF16 GGUF DGX Dennard", + "Unsloth Qwen3.5 9B BF16 GGUF DGX memory-power ceiling", ); } @@ -34711,10 +34736,10 @@ for (const spec of [ "Unsloth Qwen3.5 9B BF16 GGUF M5 Max aggregate", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1186.051732, 0.000001, - "Unsloth Qwen3.5 9B BF16 GGUF M5 Max Dennard", + "Unsloth Qwen3.5 9B BF16 GGUF M5 Max memory-power ceiling", ); } @@ -34810,10 +34835,10 @@ for (const spec of [ assert.equal(result.bMem, 30); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 524.8347988792368, 0.000000001, - "Unsloth Qwen3.5 9B MTP GGUF DGX Dennard bound", + "Unsloth Qwen3.5 9B MTP GGUF DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 13); @@ -34830,10 +34855,10 @@ for (const spec of [ "Unsloth Qwen3.5 9B MTP GGUF M5 per-session tok/s at b*", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 1180.3976795305912, 0.000000001, - "Unsloth Qwen3.5 9B MTP GGUF M5 Dennard bound", + "Unsloth Qwen3.5 9B MTP GGUF M5 memory-power bound", ); assert.equal(m1Result.status_code, "ok"); assert.equal(m1Result.best.batch, 21); @@ -34929,10 +34954,10 @@ for (const spec of [ "Unsloth Qwen3.5 4B BF16 GGUF DGX per-session", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1087.6365563898619, 0.000000001, - "Unsloth Qwen3.5 4B BF16 GGUF DGX Dennard", + "Unsloth Qwen3.5 4B BF16 GGUF DGX memory-power ceiling", ); } @@ -34962,10 +34987,10 @@ for (const spec of [ "Unsloth Qwen3.5 4B BF16 GGUF M5 Max per-session", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2446.1862477046716, 0.000000001, - "Unsloth Qwen3.5 4B BF16 GGUF M5 Max Dennard", + "Unsloth Qwen3.5 4B BF16 GGUF M5 Max memory-power ceiling", ); } @@ -35061,10 +35086,10 @@ for (const spec of [ "Unsloth Qwen3.5 4B MTP GGUF DGX per-session", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1085.2850817582932, 0.000000001, - "Unsloth Qwen3.5 4B MTP GGUF DGX Dennard", + "Unsloth Qwen3.5 4B MTP GGUF DGX memory-power ceiling", ); } @@ -35094,10 +35119,10 @@ for (const spec of [ "Unsloth Qwen3.5 4B MTP GGUF M5 Max per-session", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2440.897583148689, 0.000000001, - "Unsloth Qwen3.5 4B MTP GGUF M5 Max Dennard", + "Unsloth Qwen3.5 4B MTP GGUF M5 Max memory-power ceiling", ); } @@ -35153,10 +35178,10 @@ for (const spec of [ "Qwen3 4B Instruct 2507 FP8 DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 481.768293357, 0.000000001, - "Qwen3 4B Instruct 2507 FP8 DGX Dennard bound", + "Qwen3 4B Instruct 2507 FP8 DGX memory-power bound", ); } @@ -35217,10 +35242,10 @@ for (const spec of [ "Qwen3 4B Thinking 2507 FP8 DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 481.768293357, 0.000000001, - "Qwen3 4B Thinking 2507 FP8 DGX Dennard bound", + "Qwen3 4B Thinking 2507 FP8 DGX memory-power bound", ); } @@ -35244,10 +35269,10 @@ for (const spec of [ "Qwen3 4B Instruct 2507 FP8 M5 Max aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1083.537480298, 0.000000001, - "Qwen3 4B Instruct 2507 FP8 M5 Max Dennard bound", + "Qwen3 4B Instruct 2507 FP8 M5 Max memory-power bound", ); } @@ -35303,10 +35328,10 @@ for (const spec of [ "RedHatAI Llama 3.2 1B static FP8 DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 6558.965515145, 0.000000001, - "RedHatAI Llama 3.2 1B static FP8 DGX Dennard bound", + "RedHatAI Llama 3.2 1B static FP8 DGX memory-power bound", ); } @@ -35330,10 +35355,10 @@ for (const spec of [ "RedHatAI Llama 3.2 1B static FP8 M5 Max aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 14751.666030399, 0.000000001, - "RedHatAI Llama 3.2 1B static FP8 M5 Max Dennard bound", + "RedHatAI Llama 3.2 1B static FP8 M5 Max memory-power bound", ); } @@ -35388,10 +35413,10 @@ for (const spec of [ "RedHatAI Llama 3.1 8B base static FP8 DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 287.682706377, 0.000000001, - "RedHatAI Llama 3.1 8B base static FP8 DGX Dennard bound", + "RedHatAI Llama 3.1 8B base static FP8 DGX memory-power bound", ); } @@ -35415,10 +35440,10 @@ for (const spec of [ "RedHatAI Llama 3.1 8B base static FP8 M5 Max aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 647.022643648, 0.000000001, - "RedHatAI Llama 3.1 8B base static FP8 M5 Max Dennard bound", + "RedHatAI Llama 3.1 8B base static FP8 M5 Max memory-power bound", ); } @@ -35474,10 +35499,10 @@ for (const spec of [ "RedHatAI Llama 3.1 8B static FP8 DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 287.682706377, 0.000000001, - "RedHatAI Llama 3.1 8B static FP8 DGX Dennard bound", + "RedHatAI Llama 3.1 8B static FP8 DGX memory-power bound", ); } @@ -35501,10 +35526,10 @@ for (const spec of [ "RedHatAI Llama 3.1 8B static FP8 M5 Max aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 647.022643648, 0.000000001, - "RedHatAI Llama 3.1 8B static FP8 M5 Max Dennard bound", + "RedHatAI Llama 3.1 8B static FP8 M5 Max memory-power bound", ); } @@ -35603,10 +35628,10 @@ for (const spec of [ "Hugging Quants Llama 3.1 8B AWQ DGX per-session tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 508.8723857188016, 0.000000001, - "Hugging Quants Llama 3.1 8B AWQ DGX Dennard bound", + "Hugging Quants Llama 3.1 8B AWQ DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 6); @@ -35680,10 +35705,10 @@ for (const spec of [ "NVIDIA Llama 3.1 8B ModelOpt FP8 DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 575.365324242, 0.000000001, - "NVIDIA Llama 3.1 8B ModelOpt FP8 DGX Dennard bound", + "NVIDIA Llama 3.1 8B ModelOpt FP8 DGX memory-power bound", ); } @@ -35707,10 +35732,10 @@ for (const spec of [ "NVIDIA Llama 3.1 8B ModelOpt FP8 M5 Max aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1294.045088221, 0.000000001, - "NVIDIA Llama 3.1 8B ModelOpt FP8 M5 Max Dennard bound", + "NVIDIA Llama 3.1 8B ModelOpt FP8 M5 Max memory-power bound", ); } @@ -35768,10 +35793,10 @@ for (const spec of [ "NVIDIA Llama 3.1 8B ModelOpt NVFP4 DGX aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 953.910323378, 0.000000001, - "NVIDIA Llama 3.1 8B ModelOpt NVFP4 DGX Dennard bound", + "NVIDIA Llama 3.1 8B ModelOpt NVFP4 DGX memory-power bound", ); } @@ -35795,10 +35820,10 @@ for (const spec of [ "NVIDIA Llama 3.1 8B ModelOpt NVFP4 M5 Max aggregate tok/s at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2145.424683348, 0.000000001, - "NVIDIA Llama 3.1 8B ModelOpt NVFP4 M5 Max Dennard bound", + "NVIDIA Llama 3.1 8B ModelOpt NVFP4 M5 Max memory-power bound", ); } @@ -35864,10 +35889,10 @@ for (const spec of [ "Bartowski Llama 3.1 8B F32 GGUF DGX single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 60.96667653071715, 0.000000001, - "Bartowski Llama 3.1 8B F32 GGUF DGX Dennard bound", + "Bartowski Llama 3.1 8B F32 GGUF DGX memory-power bound", ); assert.equal(m5Result.status_code, "no_floor"); assert.equal(m5Result.best, null); @@ -35878,10 +35903,10 @@ for (const spec of [ "Bartowski Llama 3.1 8B F32 GGUF M5 single-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 137.1191919042503, 0.000000001, - "Bartowski Llama 3.1 8B F32 GGUF M5 Dennard bound", + "Bartowski Llama 3.1 8B F32 GGUF M5 memory-power bound", ); } @@ -36096,10 +36121,10 @@ for (const spec of [ "Qwen3.5 4B Base DGX Spark aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1079.1544398016715, 0.000000001, - "Qwen3.5 4B Base DGX Spark Dennard bound", + "Qwen3.5 4B Base DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best?.batch, 20); @@ -36116,10 +36141,10 @@ for (const spec of [ "Qwen3.5 4B Base M5 Max per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 2427.109252887276, 0.000000001, - "Qwen3.5 4B Base M5 Max Dennard bound", + "Qwen3.5 4B Base M5 Max memory-power bound", ); assert.equal(m1UltraResult.status_code, "ok"); assert.equal(m1UltraResult.best?.batch, 28); @@ -36192,10 +36217,10 @@ for (const spec of [ "cyankiwi Qwen3.5 4B AWQ DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2893.668745100436, 0.000000001, - "cyankiwi Qwen3.5 4B AWQ DGX Dennard bound", + "cyankiwi Qwen3.5 4B AWQ DGX memory-power bound", ); } @@ -36274,10 +36299,10 @@ for (const spec of [ "ggml-org SmolVLM 500M Instruct DGX Spark aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 10971.305158468882, 0.000000001, - "ggml-org SmolVLM 500M Instruct DGX Spark Dennard bound", + "ggml-org SmolVLM 500M Instruct DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best?.batch, 22); @@ -36387,10 +36412,10 @@ for (const spec of [ "LM Studio Llama 3.2 3B Instruct DGX Spark aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1556.4138949072844, 0.000000001, - "LM Studio Llama 3.2 3B Instruct DGX Spark Dennard bound", + "LM Studio Llama 3.2 3B Instruct DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best?.batch, 7); @@ -36503,10 +36528,10 @@ for (const spec of [ "MaziyarPanahi Llama 3.2 3B Instruct DGX Spark aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2082.429892748311, 0.000000001, - "MaziyarPanahi Llama 3.2 3B Instruct DGX Spark Dennard bound", + "MaziyarPanahi Llama 3.2 3B Instruct DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best?.batch, 7); @@ -36613,10 +36638,10 @@ for (const spec of [ "mratsim GLM 4 32B GPTQ DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 246.10189009906148, 0.000000001, - "mratsim GLM 4 32B GPTQ DGX Spark Dennard bound", + "mratsim GLM 4 32B GPTQ DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best?.batch, 6); @@ -36691,10 +36716,10 @@ for (const spec of [ assert.equal(result.bMem, 6); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 121.89094355282006, 0.000000001, - "Step3-VL 10B BF16 DGX Dennard bound", + "Step3-VL 10B BF16 DGX memory-power bound", ); } @@ -36725,10 +36750,10 @@ for (const spec of [ "Step3-VL 10B BF16 M5 Max per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 274.1430012506649, 0.000000001, - "Step3-VL 10B BF16 M5 Max Dennard bound", + "Step3-VL 10B BF16 M5 Max memory-power bound", ); } @@ -37028,10 +37053,10 @@ for (const spec of [ "Qwen Qwen2.5 7B Instruct Q2_K DGX aggregate throughput", ); assertNear( - dgxResult.dennard, + dgxResult.memoryPowerCeiling, 1967.1480530745496, 0.000000001, - "Qwen Qwen2.5 7B Instruct Q2_K DGX Dennard bound", + "Qwen Qwen2.5 7B Instruct Q2_K DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best?.batch, 15); @@ -37381,10 +37406,10 @@ for (const spec of [ "Qwen1.5 MoE A2.7B DGX aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 266.75601416123743, 0.000000001, - "Qwen1.5 MoE A2.7B DGX Dennard bound", + "Qwen1.5 MoE A2.7B DGX memory-power bound", ); } @@ -37491,10 +37516,10 @@ for (const spec of [ "NM Testing Qwen1.5 MoE Chat W4A16 DGX aggregate throughput", ); assertNear( - dgxResult.dennard, + dgxResult.memoryPowerCeiling, 916.1166098526915, 0.000000001, - "NM Testing Qwen1.5 MoE Chat W4A16 DGX Dennard bound", + "NM Testing Qwen1.5 MoE Chat W4A16 DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.bMem, 5); @@ -37586,7 +37611,7 @@ for (const spec of [ ); assert.equal(result.bMem, 0); assert.equal(result.best, null); - assert.equal(result.dennard, 0); + assert.equal(result.memoryPowerCeiling, 0); } { @@ -37668,7 +37693,7 @@ for (const spec of [ ); assert.equal(result.bMem, 0); assert.equal(result.best, null); - assert.equal(result.dennard, 0); + assert.equal(result.memoryPowerCeiling, 0); } { @@ -37698,10 +37723,10 @@ for (const spec of [ "Step 3.7 Flash BF16 M3 Ultra 512GB per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 726.0348072278412, 0.000000001, - "Step 3.7 Flash BF16 M3 Ultra 512GB Dennard bound", + "Step 3.7 Flash BF16 M3 Ultra 512GB memory-power bound", ); } @@ -37732,10 +37757,10 @@ for (const spec of [ "Step 3.7 Flash BF16 GB300 per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 20961.90563756888, 0.000000001, - "Step 3.7 Flash BF16 GB300 Dennard bound", + "Step 3.7 Flash BF16 GB300 memory-power bound", ); } @@ -37809,7 +37834,7 @@ for (const spec of [ ); assert.equal(result.bMem, 0); assert.equal(result.best, null); - assert.equal(result.dennard, 0); + assert.equal(result.memoryPowerCeiling, 0); } { @@ -37839,10 +37864,10 @@ for (const spec of [ "Step 3.7 Flash NVFP4 M2 Ultra 192GB per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1147.224957019117, 0.000000001, - "Step 3.7 Flash NVFP4 M2 Ultra 192GB Dennard bound", + "Step 3.7 Flash NVFP4 M2 Ultra 192GB memory-power bound", ); } @@ -37873,10 +37898,10 @@ for (const spec of [ "Step 3.7 Flash NVFP4 GB300 per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 113562.22076739495, 0.000000001, - "Step 3.7 Flash NVFP4 GB300 Dennard bound", + "Step 3.7 Flash NVFP4 GB300 memory-power bound", ); } @@ -37965,10 +37990,10 @@ for (const spec of [ "Unsloth Step 3.7 Flash GGUF UD-Q4_K_S DGX aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 33.468028720814246, 0.000000001, - "Unsloth Step 3.7 Flash GGUF UD-Q4_K_S DGX Dennard bound", + "Unsloth Step 3.7 Flash GGUF UD-Q4_K_S DGX memory-power bound", ); } @@ -37999,10 +38024,10 @@ for (const spec of [ "Unsloth Step 3.7 Flash GGUF UD-Q4_K_S M2 Ultra 192GB per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1173.4551004844373, 0.000000001, - "Unsloth Step 3.7 Flash GGUF UD-Q4_K_S M2 Ultra 192GB Dennard bound", + "Unsloth Step 3.7 Flash GGUF UD-Q4_K_S M2 Ultra 192GB memory-power bound", ); } @@ -38082,10 +38107,10 @@ for (const spec of [ "GLM 4.6V Flash MLX 4-bit DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1523.6917045579469, 0.000000001, - "GLM 4.6V Flash MLX 4-bit DGX Dennard bound", + "GLM 4.6V Flash MLX 4-bit DGX memory-power bound", ); } @@ -38116,10 +38141,10 @@ for (const spec of [ "GLM 4.6V Flash MLX 4-bit M5 Max per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3426.9110131816096, 0.000000001, - "GLM 4.6V Flash MLX 4-bit M5 Max Dennard bound", + "GLM 4.6V Flash MLX 4-bit M5 Max memory-power bound", ); } @@ -38200,10 +38225,10 @@ for (const spec of [ "GLM 4.6V Flash MLX 6-bit DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1033.0216187979206, 0.000000001, - "GLM 4.6V Flash MLX 6-bit DGX Dennard bound", + "GLM 4.6V Flash MLX 6-bit DGX memory-power bound", ); } @@ -38234,10 +38259,10 @@ for (const spec of [ "GLM 4.6V Flash MLX 6-bit M5 Max per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2323.352651801917, 0.000000001, - "GLM 4.6V Flash MLX 6-bit M5 Max Dennard bound", + "GLM 4.6V Flash MLX 6-bit M5 Max memory-power bound", ); } @@ -38318,10 +38343,10 @@ for (const spec of [ "GLM 4.6V Flash MLX 8-bit DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 773.2133340868147, 0.000000001, - "GLM 4.6V Flash MLX 8-bit DGX Dennard bound", + "GLM 4.6V Flash MLX 8-bit DGX memory-power bound", ); } @@ -38352,10 +38377,10 @@ for (const spec of [ "GLM 4.6V Flash MLX 8-bit M5 Max per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1739.0219308765722, 0.000000001, - "GLM 4.6V Flash MLX 8-bit M5 Max Dennard bound", + "GLM 4.6V Flash MLX 8-bit M5 Max memory-power bound", ); } @@ -38414,10 +38439,10 @@ for (const spec of [ "ChatGLM2 6B FP16 DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 856.3155974960654, 0.000000001, - "ChatGLM2 6B FP16 DGX Dennard bound", + "ChatGLM2 6B FP16 DGX memory-power bound", ); } @@ -38448,10 +38473,10 @@ for (const spec of [ "ChatGLM2 6B FP16 M5 Max per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1925.9259225735684, 0.000000001, - "ChatGLM2 6B FP16 M5 Max Dennard bound", + "ChatGLM2 6B FP16 M5 Max memory-power bound", ); } @@ -38522,10 +38547,10 @@ for (const spec of [ "ChatGLM3 6B FP16 DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 856.3155974960654, 0.000000001, - "ChatGLM3 6B FP16 DGX Dennard bound", + "ChatGLM3 6B FP16 DGX memory-power bound", ); } @@ -38556,10 +38581,10 @@ for (const spec of [ "ChatGLM3 6B FP16 M5 Max per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1925.9259225735684, 0.000000001, - "ChatGLM3 6B FP16 M5 Max Dennard bound", + "ChatGLM3 6B FP16 M5 Max memory-power bound", ); } @@ -38668,10 +38693,10 @@ for (const spec of [ "Molmo2-O 7B DGX Spark single-session bound", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 8.406880747725348, 0.000000001, - "Molmo2-O 7B DGX Spark Dennard bound", + "Molmo2-O 7B DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "no_session_capacity"); assertNear( @@ -38787,10 +38812,10 @@ for (const spec of [ "DeepSeek R1 Distill Llama 8B DGX Spark single-session bound", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 144.23043617542254, 0.000000001, - "DeepSeek R1 Distill Llama 8B DGX Spark Dennard bound", + "DeepSeek R1 Distill Llama 8B DGX Spark memory-power bound", ); assert.equal(m5MaxResult.status_code, "ok"); assert.equal(m5MaxResult.best.batch, 3); @@ -38855,10 +38880,10 @@ for (const spec of [ "DeepSeek R1 Distill Qwen 7B DGX Spark single-session bound", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 352.7110421882862, 0.000000001, - "DeepSeek R1 Distill Qwen 7B DGX Spark Dennard bound", + "DeepSeek R1 Distill Qwen 7B DGX Spark memory-power bound", ); } @@ -38929,10 +38954,10 @@ for (const spec of [ "DeepSeek R1 Distill Qwen 14B DGX Spark single-session bound", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 44.887405647, 0.000000001, - "DeepSeek R1 Distill Qwen 14B DGX Spark Dennard bound", + "DeepSeek R1 Distill Qwen 14B DGX Spark memory-power bound", ); } @@ -38951,10 +38976,10 @@ for (const spec of [ assert.equal(result.bMem, 4); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 100.955557023, 0.000000001, - "DeepSeek R1 Distill Qwen 14B M5 Max Dennard bound", + "DeepSeek R1 Distill Qwen 14B M5 Max memory-power bound", ); } @@ -39075,10 +39100,10 @@ for (const spec of [ "Casper Hansen DeepSeek R1 Distill Llama 70B AWQ DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 17.746263507777513, 0.000000001, - "Casper Hansen DeepSeek R1 Distill Llama 70B AWQ DGX Spark Dennard bound", + "Casper Hansen DeepSeek R1 Distill Llama 70B AWQ DGX Spark memory-power bound", ); const gb300Result = profiled( @@ -39107,10 +39132,10 @@ for (const spec of [ "Casper Hansen DeepSeek R1 Distill Llama 70B AWQ GB300 per-session throughput", ); assertNear( - gb300Result.dennard, + gb300Result.memoryPowerCeiling, 4028.0600362045348, 0.000000001, - "Casper Hansen DeepSeek R1 Distill Llama 70B AWQ GB300 Dennard bound", + "Casper Hansen DeepSeek R1 Distill Llama 70B AWQ GB300 memory-power bound", ); } @@ -39157,10 +39182,10 @@ for (const spec of [ "GLM 4.1V 9B Thinking DGX Spark single-session bound", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 377.356054, 0.000001, - "GLM 4.1V 9B Thinking DGX Spark Dennard bound", + "GLM 4.1V 9B Thinking DGX Spark memory-power bound", ); } @@ -39208,10 +39233,10 @@ for (const spec of [ "GLM 4.6V Flash DGX Spark single-session bound", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 377.356054, 0.000001, - "GLM 4.6V Flash DGX Spark Dennard bound", + "GLM 4.6V Flash DGX Spark memory-power bound", ); } @@ -39520,7 +39545,7 @@ for (const spec of [ ); assert.equal(result.bMem, 0); assert.equal(result.best, null); - assert.equal(result.dennard, 0); + assert.equal(result.memoryPowerCeiling, 0); assertNear( result.single.aggregate, 8.629390749324676, @@ -39587,10 +39612,10 @@ for (const spec of [ "Doradus RnJ-1 Instruct FP8 DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 227.361062036, 0.000001, - "Doradus RnJ-1 Instruct FP8 DGX Spark Dennard bound", + "Doradus RnJ-1 Instruct FP8 DGX Spark memory-power bound", ); } @@ -39687,10 +39712,10 @@ for (const spec of [ "MaziyarPanahi Gemma 3 27B Q2_K DGX Spark aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 330.05210102067275, 0.000000001, - "MaziyarPanahi Gemma 3 27B Q2_K DGX Spark Dennard bound", + "MaziyarPanahi Gemma 3 27B Q2_K DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 6); @@ -39779,10 +39804,10 @@ for (const spec of [ "RedHatAI Gemma 3 27B FP8 DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 100.977979776, 0.000001, - "RedHatAI Gemma 3 27B FP8 DGX Spark Dennard bound", + "RedHatAI Gemma 3 27B FP8 DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "no_floor"); assertNear( @@ -39792,10 +39817,10 @@ for (const spec of [ "RedHatAI Gemma 3 27B FP8 M5 Max single-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 227.107983818, 0.000001, - "RedHatAI Gemma 3 27B FP8 M5 Max Dennard bound", + "RedHatAI Gemma 3 27B FP8 M5 Max memory-power bound", ); } @@ -39850,10 +39875,10 @@ for (const spec of [ "ISTA-DASLab Gemma 3 27B GPTQ DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 203.678628834, 0.000001, - "ISTA-DASLab Gemma 3 27B GPTQ DGX Spark Dennard bound", + "ISTA-DASLab Gemma 3 27B GPTQ DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 4); @@ -39876,10 +39901,10 @@ for (const spec of [ "ISTA-DASLab Gemma 3 27B GPTQ M5 Max per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 458.090395986, 0.000001, - "ISTA-DASLab Gemma 3 27B GPTQ M5 Max Dennard bound", + "ISTA-DASLab Gemma 3 27B GPTQ M5 Max memory-power bound", ); } @@ -39956,10 +39981,10 @@ for (const spec of [ "PyTorch Gemma 3 27B AWQ DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 197.856033848, 0.000001, - "PyTorch Gemma 3 27B AWQ DGX Spark Dennard bound", + "PyTorch Gemma 3 27B AWQ DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 4); @@ -39982,10 +40007,10 @@ for (const spec of [ "PyTorch Gemma 3 27B AWQ M5 Max per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 444.994889313, 0.000001, - "PyTorch Gemma 3 27B AWQ M5 Max Dennard bound", + "PyTorch Gemma 3 27B AWQ M5 Max memory-power bound", ); } @@ -40037,10 +40062,10 @@ for (const spec of [ "Xiaomi MiMo 7B RL DGX Spark single-session bound", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 137.946795293, 0.000001, - "Xiaomi MiMo 7B RL DGX Spark Dennard bound", + "Xiaomi MiMo 7B RL DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 3); @@ -40113,10 +40138,10 @@ for (const spec of [ "Xiaomi MiMo 7B Base DGX Spark single-session bound", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 137.946795293, 0.000001, - "Xiaomi MiMo 7B Base DGX Spark Dennard bound", + "Xiaomi MiMo 7B Base DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 3); @@ -40243,10 +40268,10 @@ for (const spec of [ "Xiaomi MiMo V2.5 GB300 per-session bound", ); assertNear( - gb300Result.dennard, + gb300Result.memoryPowerCeiling, 75268.62400912, 0.000001, - "Xiaomi MiMo V2.5 GB300 Dennard bound", + "Xiaomi MiMo V2.5 GB300 memory-power bound", ); } @@ -40395,10 +40420,10 @@ for (const spec of [ "RedHatAI Gemma 3 27B W4A16 DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 198.110823183, 0.000001, - "RedHatAI Gemma 3 27B W4A16 DGX Spark Dennard bound", + "RedHatAI Gemma 3 27B W4A16 DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 4); @@ -40421,10 +40446,10 @@ for (const spec of [ "RedHatAI Gemma 3 27B W4A16 M5 Max per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 445.567931995, 0.000001, - "RedHatAI Gemma 3 27B W4A16 M5 Max Dennard bound", + "RedHatAI Gemma 3 27B W4A16 M5 Max memory-power bound", ); } @@ -40486,10 +40511,10 @@ for (const spec of [ "abhishekchohan Gemma 3 12B W4A16 DGX Spark aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 584.750958089, 0.000001, - "abhishekchohan Gemma 3 12B W4A16 DGX Spark Dennard bound", + "abhishekchohan Gemma 3 12B W4A16 DGX Spark memory-power bound", ); assert.equal(m5Result.best.batch, 9); assertNear( @@ -40511,10 +40536,10 @@ for (const spec of [ "abhishekchohan Gemma 3 12B W4A16 M5 Max per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 1315.154169475, 0.000001, - "abhishekchohan Gemma 3 12B W4A16 M5 Max Dennard bound", + "abhishekchohan Gemma 3 12B W4A16 M5 Max memory-power bound", ); } @@ -40563,10 +40588,10 @@ for (const spec of [ ); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 17.746263507777513, 0.000000001, - "Hugging Quants Llama 3.1 70B AWQ DGX Dennard bound", + "Hugging Quants Llama 3.1 70B AWQ DGX memory-power bound", ); } @@ -40623,10 +40648,10 @@ for (const spec of [ ); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 17.746263507777513, 0.000000001, - "Casper Hansen Llama 3.3 70B AWQ DGX Dennard bound", + "Casper Hansen Llama 3.3 70B AWQ DGX memory-power bound", ); } @@ -40880,10 +40905,10 @@ for (const spec of [ "cortecs Llama 3.3 70B FP8 DGX single-session throughput", ); assertNear( - dgxResult.dennard, + dgxResult.memoryPowerCeiling, 5.5877935166179835, 0.000000001, - "cortecs Llama 3.3 70B FP8 DGX Dennard bound", + "cortecs Llama 3.3 70B FP8 DGX memory-power bound", ); const m5Result = profiled(repo, "apple-macbook-pro-16-m5-max-128gb"); assert.equal(m5Result.status_code, "no_floor"); @@ -40932,10 +40957,10 @@ for (const spec of [ "Casper Hansen Llama 3.3 70B AWQ GB300 per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 4028.0600362045348, 0.000000001, - "Casper Hansen Llama 3.3 70B AWQ GB300 Dennard bound", + "Casper Hansen Llama 3.3 70B AWQ GB300 memory-power bound", ); } @@ -40966,10 +40991,10 @@ for (const spec of [ "Hugging Quants Llama 3.1 70B AWQ GB300 per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 4028.0600362045348, 0.000000001, - "Hugging Quants Llama 3.1 70B AWQ GB300 Dennard bound", + "Hugging Quants Llama 3.1 70B AWQ GB300 memory-power bound", ); } @@ -41035,10 +41060,10 @@ for (const spec of [ "Weni Llama Guard 3 8B AWQ DGX per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 508.8723857188016, 0.000000001, - "Weni Llama Guard 3 8B AWQ DGX Dennard bound", + "Weni Llama Guard 3 8B AWQ DGX memory-power bound", ); } @@ -41069,10 +41094,10 @@ for (const spec of [ "Weni Llama Guard 3 8B AWQ M5 Max per-session tok/s", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1144.4968675140813, 0.000000001, - "Weni Llama Guard 3 8B AWQ M5 Max Dennard bound", + "Weni Llama Guard 3 8B AWQ M5 Max memory-power bound", ); } @@ -41662,10 +41687,10 @@ for (const repo of [ "Bartowski Gemma 2 2B F32 GGUF DGX aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 515.8959682675738, 0.000000001, - "Bartowski Gemma 2 2B F32 GGUF DGX Dennard bound", + "Bartowski Gemma 2 2B F32 GGUF DGX memory-power bound", ); assert.equal(m5Result.best.batch, 10); assertNear( @@ -41687,10 +41712,10 @@ for (const repo of [ "Bartowski Gemma 2 2B F32 GGUF M5 per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 1160.293496396668, 0.000000001, - "Bartowski Gemma 2 2B F32 GGUF M5 Dennard bound", + "Bartowski Gemma 2 2B F32 GGUF M5 memory-power bound", ); } @@ -41787,10 +41812,10 @@ for (const repo of [ "MaziyarPanahi Gemma 2 2B FP16 GGUF DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1080.9395158040297, 0.000000001, - "MaziyarPanahi Gemma 2 2B FP16 GGUF DGX Dennard bound", + "MaziyarPanahi Gemma 2 2B FP16 GGUF DGX memory-power bound", ); assert.equal(m5Result.best.batch, 13); assertNear( @@ -41812,10 +41837,10 @@ for (const repo of [ "MaziyarPanahi Gemma 2 2B FP16 GGUF M5 per-session throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 2431.1240392075983, 0.000000001, - "MaziyarPanahi Gemma 2 2B FP16 GGUF M5 Dennard bound", + "MaziyarPanahi Gemma 2 2B FP16 GGUF M5 memory-power bound", ); } @@ -42636,7 +42661,12 @@ for (const repo of [ assertNear(result.single.aggregate, 103, 1, "Qwen DGX single"); assert.equal(result.best.batch, 13); assertNear(result.best.aggregate, 275, 1, "Qwen DGX aggregate"); - assertNear(result.dennard, 10700, 100, "Qwen DGX Dennard"); + assertNear( + result.memoryPowerCeiling, + 10700, + 100, + "Qwen DGX memory-power ceiling", + ); assertNear( result.alloc, 1.08888064, @@ -42742,10 +42772,10 @@ for (const repo of [ "ykarout Qwen3.6 NVFP4 DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 5418.895085656, 0.000001, - "ykarout Qwen3.6 NVFP4 DGX Spark Dennard bound", + "ykarout Qwen3.6 NVFP4 DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 36); @@ -42762,10 +42792,10 @@ for (const repo of [ "ykarout Qwen3.6 NVFP4 M5 Max aggregate throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 12187.551584589, 0.000001, - "ykarout Qwen3.6 NVFP4 M5 Max Dennard bound", + "ykarout Qwen3.6 NVFP4 M5 Max memory-power bound", ); assert.equal(gb300Result.status_code, "ok"); assert.equal(gb300Result.bMem, 657); @@ -42889,10 +42919,10 @@ for (const repo of [ "lyf Qwen3.6 HauhauCS NVFP4 DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 6257.357943331, 0.000001, - "lyf Qwen3.6 HauhauCS NVFP4 DGX Spark Dennard bound", + "lyf Qwen3.6 HauhauCS NVFP4 DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 37); @@ -42909,10 +42939,10 @@ for (const repo of [ "lyf Qwen3.6 HauhauCS NVFP4 M5 Max aggregate throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 14073.325191228, 0.000001, - "lyf Qwen3.6 HauhauCS NVFP4 M5 Max Dennard bound", + "lyf Qwen3.6 HauhauCS NVFP4 M5 Max memory-power bound", ); assert.equal(gb300Result.status_code, "ok"); assert.equal(gb300Result.bMem, 658); @@ -43080,7 +43110,12 @@ for (const repo of [ 0.1, "AEON Qwen3.6 Heretic DGX aggregate", ); - assertNear(result.dennard, 3224.8, 0.1, "AEON Qwen3.6 Heretic DGX Dennard"); + assertNear( + result.memoryPowerCeiling, + 3224.8, + 0.1, + "AEON Qwen3.6 Heretic DGX memory-power ceiling", + ); } { @@ -43119,10 +43154,10 @@ for (const repo of [ "Gemma DGX aggregate", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 13690.564285893495, 0.000000001, - "Gemma DGX Dennard", + "Gemma DGX memory-power ceiling", ); } @@ -43196,10 +43231,10 @@ for (const repo of [ "RedHatAI Gemma 4 DGX per-session", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 12138.535001620381, 0.00001, - "RedHatAI Gemma 4 DGX Dennard", + "RedHatAI Gemma 4 DGX memory-power ceiling", ); } @@ -43289,10 +43324,10 @@ for (const repo of [ "LargitData Gemma 4 FP8 DGX per-session throughput at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 15350.66385330092, 0.000000001, - "LargitData Gemma 4 FP8 DGX Dennard bound", + "LargitData Gemma 4 FP8 DGX memory-power bound", ); assert.equal(m5Result.best.batch, 36); assertNear( @@ -43386,10 +43421,10 @@ for (const repo of [ assert.equal(result.bMem, 3); assert.equal(result.best, null); assertNear( - result.dennard, + result.memoryPowerCeiling, 103.77691506294462, 0.000000001, - "MaziyarPanahi Mixtral IQ1_M DGX Dennard bound", + "MaziyarPanahi Mixtral IQ1_M DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 2); @@ -43451,10 +43486,10 @@ for (const repo of [ "Unsloth Gemma 4 DGX aggregate", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 11339.20836487981, 0.000000001, - "Unsloth Gemma 4 DGX Dennard", + "Unsloth Gemma 4 DGX memory-power ceiling", ); } @@ -43576,10 +43611,10 @@ for (const repo of [ "Bartowski Gemma 4 IQ2_M DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 20205.379952633684, 0.000000001, - "Bartowski Gemma 4 IQ2_M DGX Dennard bound", + "Bartowski Gemma 4 IQ2_M DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 54); @@ -43729,10 +43764,10 @@ for (const repo of [ "Jiunsong SuperGemma4 Q4_K_M DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 15039.9789582251, 0.000000001, - "Jiunsong SuperGemma4 Q4_K_M DGX Dennard bound", + "Jiunsong SuperGemma4 Q4_K_M DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 40); @@ -43853,10 +43888,10 @@ for (const repo of [ "ggml-org Gemma 4 DGX per-session", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3428.169705612102, 0.000000001, - "ggml-org Gemma 4 DGX Dennard", + "ggml-org Gemma 4 DGX memory-power ceiling", ); assert.equal(m5Result.best.batch, 10); assertNear( @@ -44001,10 +44036,10 @@ for (const repo of [ "ReadyArt Melody1437 DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 11166.606922424593, 0.000000001, - "ReadyArt Melody1437 DGX Dennard bound", + "ReadyArt Melody1437 DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 38); @@ -44140,10 +44175,10 @@ for (const repo of [ "ReadyArt Dark Scarlett DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 17412.759890047833, 0.000000001, - "ReadyArt Dark Scarlett DGX Dennard bound", + "ReadyArt Dark Scarlett DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 46); @@ -44272,10 +44307,10 @@ for (const repo of [ "MaziyarPanahi Llama 3.1 405B GB300 per-session throughput", ); assertNear( - gb300Result.dennard, + gb300Result.memoryPowerCeiling, 269.09256670010353, 0.000000001, - "MaziyarPanahi Llama 3.1 405B GB300 Dennard bound", + "MaziyarPanahi Llama 3.1 405B GB300 memory-power bound", ); } @@ -44414,10 +44449,10 @@ for (const repo of [ "MaziyarPanahi DeepSeek V3 0324 GB300 per-session throughput", ); assertNear( - gb300Result.dennard, + gb300Result.memoryPowerCeiling, 64884.84570358248, 0.000000001, - "MaziyarPanahi DeepSeek V3 0324 GB300 Dennard bound", + "MaziyarPanahi DeepSeek V3 0324 GB300 memory-power bound", ); } @@ -44537,10 +44572,10 @@ for (const repo of [ "ReadyArt Serenity DGX per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 8687.028651377164, 0.000000001, - "ReadyArt Serenity DGX Dennard bound", + "ReadyArt Serenity DGX memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 28); @@ -44648,10 +44683,10 @@ for (const repo of [ "Unsloth Gemma 4 QAT DGX per-session", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 18267.77710483906, 0.000001, - "Unsloth Gemma 4 QAT DGX Dennard", + "Unsloth Gemma 4 QAT DGX memory-power ceiling", ); } @@ -44712,10 +44747,10 @@ for (const repo of [ "Unsloth Gemma 4 31B QAT DGX single", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 328.98178487948337, 0.000000001, - "Unsloth Gemma 4 31B QAT DGX Dennard", + "Unsloth Gemma 4 31B QAT DGX memory-power ceiling", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 6); @@ -44824,10 +44859,10 @@ for (const repo of [ "Unsloth Gemma 3 270M DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 193001.7152713321, 0.000000001, - "Unsloth Gemma 3 270M DGX Spark Dennard bound", + "Unsloth Gemma 3 270M DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 284); @@ -44955,10 +44990,10 @@ for (const repo of [ "MaziyarPanahi Gemma 3 1B DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 38243.79919562377, 0.000000001, - "MaziyarPanahi Gemma 3 1B DGX Spark Dennard bound", + "MaziyarPanahi Gemma 3 1B DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 201); @@ -45053,10 +45088,10 @@ for (const repo of [ "MaziyarPanahi Gemma 3 4B DGX Spark per-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1819.619996085, 0.000001, - "MaziyarPanahi Gemma 3 4B DGX Spark Dennard bound", + "MaziyarPanahi Gemma 3 4B DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 29); @@ -45067,10 +45102,10 @@ for (const repo of [ "MaziyarPanahi Gemma 3 4B M5 Max aggregate throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 4092.478672513, 0.000001, - "MaziyarPanahi Gemma 3 4B M5 Max Dennard bound", + "MaziyarPanahi Gemma 3 4B M5 Max memory-power bound", ); } @@ -45148,10 +45183,10 @@ for (const repo of [ "MaziyarPanahi Gemma 3 12B DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 162.43023295101244, 0.000000001, - "MaziyarPanahi Gemma 3 12B DGX Spark Dennard bound", + "MaziyarPanahi Gemma 3 12B DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 2); @@ -45249,10 +45284,10 @@ for (const repo of [ "Unsloth Gemma 3 12B DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 162.42601031696242, 0.000000001, - "Unsloth Gemma 3 12B DGX Spark Dennard bound", + "Unsloth Gemma 3 12B DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 2); @@ -45335,10 +45370,10 @@ for (const repo of [ "MaziyarPanahi Llama 3 8B DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 144.212996069, 0.000001, - "MaziyarPanahi Llama 3 8B DGX Spark Dennard bound", + "MaziyarPanahi Llama 3 8B DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 3); @@ -45417,10 +45452,10 @@ for (const repo of [ "MaziyarPanahi Llama 3 8B 32k v0.1 DGX Spark single-session throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 144.21370775850832, 0.000000001, - "MaziyarPanahi Llama 3 8B 32k v0.1 DGX Spark Dennard bound", + "MaziyarPanahi Llama 3 8B 32k v0.1 DGX Spark memory-power bound", ); assert.equal(m5Result.status_code, "ok"); assert.equal(m5Result.best.batch, 3); @@ -45456,7 +45491,12 @@ for (const repo of [ assertNear(result.single.aggregate, 28, 1, "DeepSeek DGX single"); assert.equal(result.best.batch, 3); assertNear(result.best.aggregate, 62, 1, "DeepSeek DGX aggregate"); - assertNear(result.dennard, 3024, 100, "DeepSeek DGX Dennard"); + assertNear( + result.memoryPowerCeiling, + 3024, + 100, + "DeepSeek DGX memory-power ceiling", + ); } { @@ -45542,10 +45582,10 @@ for (const repo of [ "Huihui DeepSeek DS4 Q2_K DGX per-session throughput at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1787.181575152751, 0.000000001, - "Huihui DeepSeek DS4 Q2_K DGX Dennard bound", + "Huihui DeepSeek DS4 Q2_K DGX memory-power bound", ); } @@ -45558,7 +45598,12 @@ for (const repo of [ assertNear(result.single.aggregate, 232, 1, "Qwen M5 Max single"); assert.equal(result.best.batch, 40); assertNear(result.best.aggregate, 807, 2, "Qwen M5 Max aggregate"); - assertNear(result.dennard, 24200, 100, "Qwen M5 Max Dennard"); + assertNear( + result.memoryPowerCeiling, + 24200, + 100, + "Qwen M5 Max memory-power ceiling", + ); } { @@ -45581,10 +45626,10 @@ for (const repo of [ "Gemma M5 Max aggregate", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 30791.232496478413, 0.000000001, - "Gemma M5 Max Dennard", + "Gemma M5 Max memory-power ceiling", ); } @@ -45597,7 +45642,12 @@ for (const repo of [ assertNear(result.single.aggregate, 64, 1, "DeepSeek M5 Max single"); assert.equal(result.best.batch, 14); assertNear(result.best.aggregate, 284, 2, "DeepSeek M5 Max aggregate"); - assertNear(result.dennard, 6801, 100, "DeepSeek M5 Max Dennard"); + assertNear( + result.memoryPowerCeiling, + 6801, + 100, + "DeepSeek M5 Max memory-power ceiling", + ); } { @@ -45626,10 +45676,10 @@ for (const repo of [ "Huihui DeepSeek DS4 Q2_K M5 Max per-session throughput at b*", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 4019.5219309296303, 0.000000001, - "Huihui DeepSeek DS4 Q2_K M5 Max Dennard bound", + "Huihui DeepSeek DS4 Q2_K M5 Max memory-power bound", ); } @@ -45692,10 +45742,10 @@ for (const repo of [ "Jan v3.5 4B Q3_K_L GGUF DGX aggregate throughput", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 974.612753291355, 0.000000001, - "Jan v3.5 4B Q3_K_L GGUF DGX Dennard bound", + "Jan v3.5 4B Q3_K_L GGUF DGX memory-power bound", ); assert.equal(m5Result.best.batch, 6); assertNear( @@ -45705,10 +45755,10 @@ for (const repo of [ "Jan v3.5 4B Q3_K_L GGUF M5 Max aggregate throughput", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 2191.98619238422, 0.000000001, - "Jan v3.5 4B Q3_K_L GGUF M5 Max Dennard bound", + "Jan v3.5 4B Q3_K_L GGUF M5 Max memory-power bound", ); } @@ -45745,7 +45795,12 @@ for (const repo of [ assertNear(result.single.aggregate, 85, 1, "Nemotron DGX single"); assert.equal(result.best.batch, 17); assertNear(result.best.aggregate, 341, 2, "Nemotron DGX aggregate"); - assertNear(result.dennard, 26078, 100, "Nemotron DGX Dennard"); + assertNear( + result.memoryPowerCeiling, + 26078, + 100, + "Nemotron DGX memory-power ceiling", + ); } { @@ -45778,7 +45833,12 @@ for (const repo of [ assertNear(result.single.aggregate, 41, 1, "Qwen3.5 35B A3B DGX single"); assert.equal(result.best.batch, 3); assertNear(result.best.aggregate, 69, 1, "Qwen3.5 35B A3B DGX aggregate"); - assertNear(result.dennard, 1055, 50, "Qwen3.5 35B A3B DGX Dennard"); + assertNear( + result.memoryPowerCeiling, + 1055, + 50, + "Qwen3.5 35B A3B DGX memory-power ceiling", + ); } { @@ -45845,7 +45905,12 @@ for (const repo of [ 1, "Qwen3-Coder-Next FP8 DGX aggregate", ); - assertNear(result.dennard, 1085, 50, "Qwen3-Coder-Next FP8 DGX Dennard"); + assertNear( + result.memoryPowerCeiling, + 1085, + 50, + "Qwen3-Coder-Next FP8 DGX memory-power ceiling", + ); } { @@ -45945,10 +46010,10 @@ for (const repo of [ "LM Studio Qwen3-Coder-Next MLX 4-bit DGX per-session", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3982.738830578161, 0.000000001, - "LM Studio Qwen3-Coder-Next MLX 4-bit DGX Dennard", + "LM Studio Qwen3-Coder-Next MLX 4-bit DGX memory-power ceiling", ); const m5Result = profiled( @@ -45976,10 +46041,10 @@ for (const repo of [ "LM Studio Qwen3-Coder-Next MLX 4-bit M5 per-session", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 8957.515172069563, 0.000000001, - "LM Studio Qwen3-Coder-Next MLX 4-bit M5 Dennard", + "LM Studio Qwen3-Coder-Next MLX 4-bit M5 memory-power ceiling", ); } @@ -46086,10 +46151,10 @@ for (const repo of [ "Bullpoint Qwen3-Coder-Next AWQ 4-bit DGX per-session", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1559.2114525429954, 0.000000001, - "Bullpoint Qwen3-Coder-Next AWQ 4-bit DGX Dennard", + "Bullpoint Qwen3-Coder-Next AWQ 4-bit DGX memory-power ceiling", ); const m5Result = profiled( @@ -46117,10 +46182,10 @@ for (const repo of [ "Bullpoint Qwen3-Coder-Next AWQ 4-bit M5 per-session", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 3506.797918906224, 0.000000001, - "Bullpoint Qwen3-Coder-Next AWQ 4-bit M5 Dennard", + "Bullpoint Qwen3-Coder-Next AWQ 4-bit M5 memory-power ceiling", ); const m1UltraResult = profiled( @@ -46246,10 +46311,10 @@ for (const repo of [ "Cyankiwi Qwen3-Coder-Next AWQ 4-bit DGX per-session", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1559.2114525429954, 0.000000001, - "Cyankiwi Qwen3-Coder-Next AWQ 4-bit DGX Dennard", + "Cyankiwi Qwen3-Coder-Next AWQ 4-bit DGX memory-power ceiling", ); const m5Result = profiled( @@ -46277,10 +46342,10 @@ for (const repo of [ "Cyankiwi Qwen3-Coder-Next AWQ 4-bit M5 per-session", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 3506.797918906224, 0.000000001, - "Cyankiwi Qwen3-Coder-Next AWQ 4-bit M5 Dennard", + "Cyankiwi Qwen3-Coder-Next AWQ 4-bit M5 memory-power ceiling", ); const m1UltraResult = profiled( @@ -46406,10 +46471,10 @@ for (const repo of [ "Cyankiwi Qwen3-Coder-Next AWQ 8-bit DGX per-session", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 624.4681620384944, 0.000000001, - "Cyankiwi Qwen3-Coder-Next AWQ 8-bit DGX Dennard", + "Cyankiwi Qwen3-Coder-Next AWQ 8-bit DGX memory-power ceiling", ); const m5Result = profiled( @@ -46437,10 +46502,10 @@ for (const repo of [ "Cyankiwi Qwen3-Coder-Next AWQ 8-bit M5 per-session", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 1404.4815072953684, 0.000000001, - "Cyankiwi Qwen3-Coder-Next AWQ 8-bit M5 Dennard", + "Cyankiwi Qwen3-Coder-Next AWQ 8-bit M5 memory-power ceiling", ); const m1UltraResult = profiled( @@ -46548,10 +46613,10 @@ for (const repo of [ "Mungert Hunyuan-MT-7B GGUF DGX single", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 209.3449565317409, 0.000000001, - "Mungert Hunyuan-MT-7B GGUF DGX Dennard", + "Mungert Hunyuan-MT-7B GGUF DGX memory-power ceiling", ); const m5Result = profiled( @@ -46696,10 +46761,10 @@ for (const repo of [ "LM Studio Qwen3-Coder-Next MLX 6-bit DGX per-session", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 2044.4437962156949, 0.000000001, - "LM Studio Qwen3-Coder-Next MLX 6-bit DGX Dennard", + "LM Studio Qwen3-Coder-Next MLX 6-bit DGX memory-power ceiling", ); const m5Result = profiled( @@ -46727,10 +46792,10 @@ for (const repo of [ "LM Studio Qwen3-Coder-Next MLX 6-bit M5 per-session", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 4598.126340206728, 0.000000001, - "LM Studio Qwen3-Coder-Next MLX 6-bit M5 Dennard", + "LM Studio Qwen3-Coder-Next MLX 6-bit M5 memory-power ceiling", ); const m1UltraResult = profiled( @@ -46838,10 +46903,10 @@ for (const repo of [ "LM Studio Qwen3-Coder-Next MLX 8-bit DGX per-session", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1004.7144896412233, 0.000000001, - "LM Studio Qwen3-Coder-Next MLX 8-bit DGX Dennard", + "LM Studio Qwen3-Coder-Next MLX 8-bit DGX memory-power ceiling", ); const m5Result = profiled( @@ -46869,10 +46934,10 @@ for (const repo of [ "LM Studio Qwen3-Coder-Next MLX 8-bit M5 per-session", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 2259.687533478795, 0.000000001, - "LM Studio Qwen3-Coder-Next MLX 8-bit M5 Dennard", + "LM Studio Qwen3-Coder-Next MLX 8-bit M5 memory-power ceiling", ); } @@ -46958,10 +47023,10 @@ for (const repo of [ "Unsloth Qwen3-Coder-Next GGUF DGX per-session", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 3486.587, 0.001, - "Unsloth Qwen3-Coder-Next GGUF DGX Dennard", + "Unsloth Qwen3-Coder-Next GGUF DGX memory-power ceiling", ); const m5Result = profiled( @@ -46989,10 +47054,10 @@ for (const repo of [ "Unsloth Qwen3-Coder-Next GGUF M5 per-session", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 7841.628, 0.001, - "Unsloth Qwen3-Coder-Next GGUF M5 Dennard", + "Unsloth Qwen3-Coder-Next GGUF M5 memory-power ceiling", ); } @@ -47060,10 +47125,10 @@ for (const repo of [ "Qwen3 Next 80B A3B Instruct BF16 M2 Ultra per-session", ); assertNear( - m2Result.dennard, + m2Result.memoryPowerCeiling, 945.1445860048653, 0.000000001, - "Qwen3 Next 80B A3B Instruct BF16 M2 Ultra Dennard", + "Qwen3 Next 80B A3B Instruct BF16 M2 Ultra memory-power ceiling", ); } @@ -47112,10 +47177,10 @@ for (const repo of [ "Qwen3 Next 80B A3B Instruct FP8 DGX aggregate", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1040, 50, - "Qwen3 Next 80B A3B Instruct FP8 DGX Dennard", + "Qwen3 Next 80B A3B Instruct FP8 DGX memory-power ceiling", ); } @@ -47199,10 +47264,10 @@ for (const repo of [ "cyankiwi Qwen3 Next 80B A3B AWQ DGX aggregate", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1537.800429402919, 0.000000001, - "cyankiwi Qwen3 Next 80B A3B AWQ DGX Dennard", + "cyankiwi Qwen3 Next 80B A3B AWQ DGX memory-power ceiling", ); } @@ -47287,10 +47352,10 @@ for (const repo of [ "cyankiwi Qwen3 Next 80B A3B Thinking AWQ DGX aggregate", ); assertNear( - result.dennard, + result.memoryPowerCeiling, 1537.800429402919, 0.000000001, - "cyankiwi Qwen3 Next 80B A3B Thinking AWQ DGX Dennard", + "cyankiwi Qwen3 Next 80B A3B Thinking AWQ DGX memory-power ceiling", ); } @@ -47369,10 +47434,10 @@ for (const repo of [ "VertaLily DGX per-session throughput at b*", ); assertNear( - dgxResult.dennard, + dgxResult.memoryPowerCeiling, 36368.95277616251, 0.000000001, - "VertaLily DGX Dennard bound", + "VertaLily DGX memory-power bound", ); const m5Result = profiled( "VLTX/VertaLily-1.2-1B-GGUF", @@ -47398,10 +47463,10 @@ for (const repo of [ "VertaLily M5 Max per-session throughput at b*", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 81796.83884455597, 0.000000001, - "VertaLily M5 Max Dennard bound", + "VertaLily M5 Max memory-power bound", ); } @@ -47475,10 +47540,10 @@ for (const repo of [ assert.equal(dgxResult.bMem, 15); assert.equal(dgxResult.best, null); assertNear( - dgxResult.dennard, + dgxResult.memoryPowerCeiling, 266.2329838344315, 0.000000001, - "Jackrong Qwen3.5 27B DGX Dennard bound", + "Jackrong Qwen3.5 27B DGX memory-power bound", ); const m5Result = profiled(repo, "apple-macbook-pro-16-m5-max-128gb"); assert.equal(m5Result.status_code, "ok"); @@ -47502,10 +47567,10 @@ for (const repo of [ "Jackrong Qwen3.5 27B M5 Max per-session throughput at b*", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 598.7804105287213, 0.000000001, - "Jackrong Qwen3.5 27B M5 Max Dennard bound", + "Jackrong Qwen3.5 27B M5 Max memory-power bound", ); } @@ -47583,10 +47648,10 @@ for (const repo of [ "Qwen2.5 3B Instruct GGUF DGX per-session throughput at b*", ); assertNear( - dgxResult.dennard, + dgxResult.memoryPowerCeiling, 3923.691138132876, 0.000000001, - "Qwen2.5 3B Instruct GGUF DGX Dennard bound", + "Qwen2.5 3B Instruct GGUF DGX memory-power bound", ); const m5Result = profiled(repo, "apple-macbook-pro-16-m5-max-128gb"); assert.equal(m5Result.best.batch, 24); @@ -47609,10 +47674,10 @@ for (const repo of [ "Qwen2.5 3B Instruct GGUF M5 Max per-session throughput at b*", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 8824.711937046102, 0.000000001, - "Qwen2.5 3B Instruct GGUF M5 Max Dennard bound", + "Qwen2.5 3B Instruct GGUF M5 Max memory-power bound", ); } @@ -47771,10 +47836,10 @@ for (const repo of [ assert.equal(dgxResult.bMem, 4); assert.equal(dgxResult.best, null); assertNear( - dgxResult.dennard, + dgxResult.memoryPowerCeiling, 44.880913599335436, 0.000000001, - "Sugoi 14B Ultra F16 GGUF DGX Dennard bound", + "Sugoi 14B Ultra F16 GGUF DGX memory-power bound", ); const m5Result = profiled(repo, "apple-macbook-pro-16-m5-max-128gb"); assert.equal(m5Result.status_code, "no_floor"); @@ -47794,10 +47859,10 @@ for (const repo of [ "Sugoi 14B Ultra F16 GGUF M1 Ultra aggregate throughput at b*", ); assertNear( - m1Result.dennard, + m1Result.memoryPowerCeiling, 131.51916073065328, 0.000000001, - "Sugoi 14B Ultra F16 GGUF M1 Ultra Dennard bound", + "Sugoi 14B Ultra F16 GGUF M1 Ultra memory-power bound", ); } @@ -47890,10 +47955,10 @@ for (const repo of [ "Jackrong Qwopus3.6 35B A3B v1 IQ4_XS DGX per-session throughput at b*", ); assertNear( - dgxResult.dennard, + dgxResult.memoryPowerCeiling, 6956.727982907029, 0.000000001, - "Jackrong Qwopus3.6 35B A3B v1 IQ4_XS DGX Dennard bound", + "Jackrong Qwopus3.6 35B A3B v1 IQ4_XS DGX memory-power bound", ); const m5Result = profiled(repo, "apple-macbook-pro-16-m5-max-128gb"); assert.equal(m5Result.best.batch, 26); @@ -47904,10 +47969,137 @@ for (const repo of [ "Jackrong Qwopus3.6 35B A3B v1 IQ4_XS M5 Max aggregate throughput at b*", ); assertNear( - m5Result.dennard, + m5Result.memoryPowerCeiling, 15646.26733151984, 0.000000001, - "Jackrong Qwopus3.6 35B A3B v1 IQ4_XS M5 Max Dennard bound", + "Jackrong Qwopus3.6 35B A3B v1 IQ4_XS M5 Max memory-power bound", + ); +} + +{ + // Legacy MoE traffic must reproduce active traffic at b=1 and saturate at + // exactly the total resident weight; the earlier E - k - s denominator + // overshot the resident footprint for shared-expert models. + const syntheticMoe = { + adapter: { + kind: "moe", + weight_bytes_per_param: 1, + resident_weight_gb: 35, + active_weight_gb: 3, + }, + architecture: { + total_params_b: 35, + active_params_b: 3, + routed_experts: 256, + routed_experts_per_token: 8, + shared_experts_per_token: 1, + }, + }; + assertNear( + bounds.batchWeightGB(syntheticMoe, 1, 1), + 3, + 0.000000001, + "legacy MoE W_batch(1) equals active traffic", + ); + assertNear( + bounds.batchWeightGB(syntheticMoe, 1e9, 1), + 35, + 0.000000001, + "legacy MoE W_batch saturates at total resident weight", + ); +} + +{ + // Zero per-session allocation means memory does not bound concurrency; the + // engine must not report no_session_capacity, and it must warn that the + // batch search cap may understate the KV-aware ceiling. + const syntheticProfile = { + id: "synthetic--zero-alloc", + repo: "synthetic/zero-alloc", + status: "audited", + serving: { + weight_bytes_per_param: 1, + kv_store_bytes_per_scalar: 1, + kv_read_bytes_per_scalar: 1, + }, + architecture: { + weight_adapter: { kind: "dense", total_params_b: 1 }, + kv_adapter: { + kind: "recurrent_state", + alloc_gb_per_session: 0, + read_gb_per_output_token: 0, + }, + }, + }; + const result = bounds.calculateProfiledBounds({ + profile: syntheticProfile, + hardware: hardware("nvidia-dgx-spark"), + workloadSettings: { + l_alloc_tokens: 32000, + l_read_tokens: 8000, + min_toks_per_session: 0, + overhead_gb: 4, + decode_policy: { kind: "ordinary", rho: 1 }, + }, + }); + assert.equal(result.engine_version, "1.1.0"); + assert.equal(result.status_code, "ok"); + assert.equal(result.bMem, 10000); + assert.equal(result.best.batch, 10000); + assert.equal(result.warnings.length, 2); + assert.ok( + result.warnings[0].includes("zero per-session"), + "zero-alloc warning present", + ); + assert.ok( + result.warnings[1].includes("Batch search stopped"), + "search truncation warning present", + ); + assert.ok( + Object.hasOwn(result.trace, "memory_power_ceiling_toks_per_s"), + "trace exposes memory-power ceiling field", + ); +} + +{ + // A tiny but nonzero allocation with a huge memory pool must also surface + // the truncation warning instead of silently underreporting the ceiling. + const syntheticProfile = { + id: "synthetic--tiny-alloc", + repo: "synthetic/tiny-alloc", + status: "audited", + serving: { + weight_bytes_per_param: 1, + kv_store_bytes_per_scalar: 1, + kv_read_bytes_per_scalar: 1, + }, + architecture: { + weight_adapter: { kind: "dense", total_params_b: 1 }, + kv_adapter: { + kind: "recurrent_state", + alloc_gb_per_session: 0.001, + read_gb_per_output_token: 0, + }, + }, + }; + const result = bounds.calculateProfiledBounds({ + profile: syntheticProfile, + hardware: hardware("nvidia-dgx-spark"), + workloadSettings: { + l_alloc_tokens: 32000, + l_read_tokens: 8000, + min_toks_per_session: 0, + overhead_gb: 4, + decode_policy: { kind: "ordinary", rho: 1 }, + }, + }); + assert.equal(result.status_code, "ok"); + assert.ok(result.bMem > 10000, "memory fit exceeds the search cap"); + assert.equal(result.best.batch, 10000); + assert.equal(result.warnings.length, 1); + assert.ok( + result.warnings[0].includes("Batch search stopped"), + "search truncation warning present", ); }