diff --git a/gpu/amd_linux.go b/gpu/amd_linux.go index b049de0c..cbbdf030 100644 --- a/gpu/amd_linux.go +++ b/gpu/amd_linux.go @@ -140,7 +140,7 @@ func AMDGetGPUInfo() []GpuInfo { } if int(major) < RocmComputeMin { - slog.Warn(fmt.Sprintf("amdgpu too old gfx%d%d%d", major, minor, patch), "gpu", gpuID) + slog.Warn(fmt.Sprintf("amdgpu too old gfx%d%d%x", major, minor, patch), "gpu", gpuID) continue } @@ -266,7 +266,7 @@ func AMDGetGPUInfo() []GpuInfo { } slog.Debug("rocm supported GPUs", "types", supported) } - gfx := fmt.Sprintf("gfx%d%d%d", gpuInfo.Major, gpuInfo.Minor, gpuInfo.Patch) + gfx := fmt.Sprintf("gfx%d%d%x", gpuInfo.Major, gpuInfo.Minor, gpuInfo.Patch) if !slices.Contains[[]string, string](supported, gfx) { slog.Warn("amdgpu is not supported", "gpu", gpuInfo.ID, "gpu_type", gfx, "library", libDir, "supported_types", supported) // TODO - consider discrete markdown just for ROCM troubleshooting? diff --git a/gpu/amd_windows.go b/gpu/amd_windows.go index 1bca3e10..dfa7e974 100644 --- a/gpu/amd_windows.go +++ b/gpu/amd_windows.go @@ -149,13 +149,16 @@ func AMDGetGPUInfo() []GpuInfo { } } if patch != "" { - gpuInfo.Patch, err = strconv.Atoi(patch) + // Patch rev is hex; e.g. gfx90a + p, err := strconv.ParseInt(patch, 16, 0) if err != nil { slog.Info("failed to parse version", "version", gfx, "error", err) + } else { + gpuInfo.Patch = int(p) } } if gpuInfo.Major < RocmComputeMin { - slog.Warn(fmt.Sprintf("amdgpu [%s] too old gfx%d%d%d", gpuInfo.ID, gpuInfo.Major, gpuInfo.Minor, gpuInfo.Patch)) + slog.Warn(fmt.Sprintf("amdgpu [%s] too old gfx%d%d%x", gpuInfo.ID, gpuInfo.Major, gpuInfo.Minor, gpuInfo.Patch)) continue }