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 => {