diff --git a/audit/internal/webui/pages.go b/audit/internal/webui/pages.go index 9b75d97..51b5602 100644 --- a/audit/internal/webui/pages.go +++ b/audit/internal/webui/pages.go @@ -1112,11 +1112,11 @@ func renderValidate(opts HandlerOptions) string { )) + `` + `
` + - renderSATCard("nvidia-pulse", "NVIDIA Pulse Test", "runNvidiaValidateSet('nvidia-pulse')", "", renderValidateCardBody( + renderSATCard("nvidia-pulse", "NVIDIA PSU Pulse Test", "runNvidiaFabricValidate('nvidia-pulse')", "", renderValidateCardBody( inv.NVIDIA, - `Verifies GPU transient power response using DCGM pulse load. Pass/fail determined by DCGM.`, + `Tests power supply transient response by pulsing all GPUs simultaneously between idle and full load. Synchronous pulses across all GPUs create worst-case PSU load spikes — running per-GPU would miss PSU-level failures.`, `dcgmi diag pulse_test`, - `Skipped in Validate mode. Runs in Stress mode only. Runs one GPU at a time.

Only runs in Stress mode. Switch mode above to enable in Run All.

`, + `Skipped in Validate mode. Runs in Stress mode only. Runs all selected GPUs simultaneously — synchronous pulsing is required to stress the PSU.

Only runs in Stress mode. Switch mode above to enable in Run All.

`, )) + `
` + `
` + @@ -1321,8 +1321,9 @@ function runSATWithOverrides(target, overrides) { return enqueueSATTarget(target, overrides) .then(d => streamSATTask(d.task_id, title, false)); } -const nvidiaPerGPUTargets = ['nvidia', 'nvidia-targeted-stress', 'nvidia-targeted-power', 'nvidia-pulse']; -const nvidiaAllGPUTargets = ['nvidia-interconnect', 'nvidia-bandwidth']; +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 expandSATTarget(target) { if (nvidiaAllGPUTargets.indexOf(target) >= 0) { const selected = satSelectedGPUIndices();