LykosAI/StabilityMatrix · error · InvalidOperationException
No Windows ROCm multi-arch device extra is available for
Error message
No Windows ROCm multi-arch device extra is available for '{state.RuntimeGfxArch ?? "unknown"}'. What it means
After compatibility passes, InstallWindowsNativeTorchAsync needs state.MultiArchDeviceExtra - the pip extra-index segment (e.g. 'gfx110X-dgpu') identifying which ROCm multi-arch wheel set to use for the GPU's runtime gfx arch. If it is null or whitespace, the runtime arch could not be mapped to a known Windows ROCm wheel category, so the install cannot proceed and it throws with the detected (or 'unknown') arch.
Solutions
- Check state.RuntimeGfxArch - if null/'unknown', fix arch detection (drivers, rocminfo equivalent) before installing
- Confirm the GPU's arch is in the helper's supported arch-to-extra mapping; if not, use an alternate install flow (ZLUDA/CPU)
- Update Stability Matrix so its mapping includes newly released gfx architectures
- Manually install torch from the correct multi-arch index if you know the device extra for your GPU
Example fix
// before
await rocmHelper.InstallWindowsNativeTorchAsync(venvRunner, ...); // arch unmapped
// after
var state = await rocmHelper.GetMachineStateAsync();
if (string.IsNullOrWhiteSpace(state.MultiArchDeviceExtra))
{
ui.ShowMessage($"No ROCm wheel set for arch '{state.RuntimeGfxArch}' - use ZLUDA build instead.");
return;
}
await rocmHelper.InstallWindowsNativeTorchAsync(venvRunner, ...); Defensive patterns
Strategy: validation
Validate before calling
var state = await rocmHelper.GetMachineStateAsync();
if (string.IsNullOrWhiteSpace(state.MultiArchDeviceExtra))
{
ShowMessage($"No ROCm wheel set for arch '{state.RuntimeGfxArch ?? "unknown"}'.");
return;
} Type guard
bool HasDeviceExtra(RocmMachineState s) =>
!string.IsNullOrWhiteSpace(s.MultiArchDeviceExtra); Try / catch
try { await rocmHelper.InstallWindowsNativeTorchAsync(venvRunner, ...); }
catch (InvalidOperationException ex) when (ex.Message.Contains("multi-arch device extra"))
{
// fall back to ZLUDA or generic torch flow
} Prevention
- Verify GPU arch detection succeeds (RuntimeGfxArch non-null) before install
- Only offer Windows ROCm install for arches in the supported mapping table
- Update the app when new gfx architectures ship
When it happens
Trigger: Calling InstallWindowsNativeTorchAsync when the machine state was computed for a GPU whose RuntimeGfxArch has no mapping in the helper's arch-to-multi-arch-extra table, or when the arch detection failed leaving RuntimeGfxArch null.
Common situations: Very new or very old AMD GPU whose arch isn't yet in the mapping table; gfx detection script failed so RuntimeGfxArch is null; iGPU architectures not covered by the Windows ROCm multi-arch index.
Understand the failure class
Background: "missing required config value" errors: why libraries refuse to start when a configuration key is empty, unset, or blank — this error's family across 48 libraries.
Related errors
- Windows ROCm installation is not supported for the current…
- Windows ROCm package commands are only supported on Windows.
- Installed package path is not available.
- Windows ROCm package commands require a supported Windows…
- Windows ROCm bitsandbytes is only supported on Python 3.12.x
AI-assisted analysis of LykosAI/StabilityMatrix@af93d6ef57 (2026-09-12).
Data as JSON: /api/errors/2755ac4fc0a4f1df.
Report an issue: GitHub.
Appendix: source
Thrown at StabilityMatrix.Core/Services/Rocm/RocmPackageHelper.cs:247
RocmPackageProfile profile,
IProgress<ProgressReport>? progress = null,
Action<ProcessOutput>? onConsoleOutput = null,
CancellationToken cancellationToken = default
)
{
var state = machineState.Value;
if (!state.IsCompatible)
{
throw new InvalidOperationException(
state.FailureReason ?? "Windows ROCm installation is not supported for the current machine."
);
}
var multiArchDeviceExtra = state.MultiArchDeviceExtra;
if (string.IsNullOrWhiteSpace(multiArchDeviceExtra))
{
throw new InvalidOperationException(
$"No Windows ROCm multi-arch device extra is available for '{state.RuntimeGfxArch ?? "unknown"}'."
);
}
progress?.Report(new ProgressReport(-1f, "Installing ROCm torch...", isIndeterminate: true));
var installConfig = profile.InstallConfig;
var multiArchPythonPackageIndexUrl = WindowsRocmSupport.GetMultiArchPythonPackageIndexUrl(
state.RuntimeGfxArch
);
var torchArgs = new PipInstallArgs()
.AddKeyedArgs("--index-url", ["--index-url", multiArchPythonPackageIndexUrl])
.AddArgs(
new Argument($"torch[{multiArchDeviceExtra}]"),
new Argument($"torchvision[{multiArchDeviceExtra}]"),
new Argument("torchaudio")
);
View on GitHub (pinned to af93d6ef57)