diff --git a/audit/internal/webui/pages.go b/audit/internal/webui/pages.go index 51b5602..7c9467a 100644 --- a/audit/internal/webui/pages.go +++ b/audit/internal/webui/pages.go @@ -1085,6 +1085,12 @@ func renderValidate(opts HandlerOptions) string {

Loading NVIDIA GPUs...

Select at least one NVIDIA GPU to enable NVIDIA validate tasks.

+
+ +
@@ -1203,6 +1209,10 @@ function satSelectedGPUIndices() { .filter(function(v) { return !Number.isNaN(v); }) .sort(function(a, b) { return a - b; }); } +function satMultiGPUAll() { + const cb = document.getElementById('sat-multi-gpu-all'); + return cb ? cb.checked : true; +} function satUpdateGPUSelectionNote() { const note = document.getElementById('sat-gpu-selection-note'); if (!note) return; @@ -1211,7 +1221,8 @@ function satUpdateGPUSelectionNote() { note.textContent = 'Select at least one NVIDIA GPU to enable NVIDIA validate tasks.'; return; } - note.textContent = 'Selected NVIDIA GPUs: ' + selected.join(', ') + '.'; + const multiAll = satMultiGPUAll(); + note.textContent = 'Selected GPUs: ' + selected.join(', ') + '. Multi-GPU tests: ' + (multiAll ? 'all GPUs in system' : 'selected GPUs only') + '.'; } function satRenderGPUList(gpus) { const root = document.getElementById('sat-gpu-list'); @@ -1324,14 +1335,23 @@ function runSATWithOverrides(target, overrides) { const nvidiaPerGPUTargets = ['nvidia', 'nvidia-targeted-stress', 'nvidia-targeted-power']; // pulse_test and fabric tests run on all selected GPUs simultaneously const nvidiaAllGPUTargets = ['nvidia-pulse', 'nvidia-interconnect', 'nvidia-bandwidth']; +function satAllGPUIndicesForMulti() { + // If "Multi-GPU tests — all GPUs" is checked, return all detected GPUs. + // Otherwise fall back to the per-GPU selection. + if (satMultiGPUAll()) { + return loadSatNvidiaGPUs().then(function(gpus) { + return gpus.map(function(g) { return Number(g.index); }); + }); + } + const sel = satSelectedGPUIndices(); + return Promise.resolve(sel); +} function expandSATTarget(target) { if (nvidiaAllGPUTargets.indexOf(target) >= 0) { - const selected = satSelectedGPUIndices(); - if (!selected.length) return Promise.reject(new Error('Select at least one NVIDIA GPU.')); - return Promise.resolve([{ - target: target, - overrides: {gpu_indices: selected, display_name: satLabels()[target] || target} - }]); + return satAllGPUIndicesForMulti().then(function(indices) { + if (!indices.length) return Promise.reject(new Error('No NVIDIA GPUs available.')); + return [{target: target, overrides: {gpu_indices: indices, display_name: satLabels()[target] || target}}]; + }); } if (nvidiaPerGPUTargets.indexOf(target) < 0) { return Promise.resolve([{target: target}]); @@ -1350,12 +1370,10 @@ function expandSATTarget(target) { }))); } function runNvidiaFabricValidate(target) { - const selected = satSelectedGPUIndices(); - if (!selected.length) { - alert('Select at least one NVIDIA GPU.'); - return; - } - return runSATWithOverrides(target, {gpu_indices: selected, display_name: satLabels()[target] || target}); + satAllGPUIndicesForMulti().then(function(indices) { + if (!indices.length) { alert('No NVIDIA GPUs available.'); return; } + runSATWithOverrides(target, {gpu_indices: indices, display_name: satLabels()[target] || target}); + }); } function runNvidiaValidateSet(target) { return loadSatNvidiaGPUs().then(gpus => {