Skip to content

Windows: GPU architecture detection for artifact selection is untested on real hardware #1040

Description

@luraess

On Linux the ROCm artifact is selected from gfx_target_version in the KFD topology. Windows has no KFD, so rocm_arch() falls back to matching GPU marketing names reported by EnumDisplayDevicesW against a fixed table (ROCm_Runtime/.pkg/platform_augmentation.jl:43):

const device_name_archs = [
    ["8050s", "8060s", "device 1586"] => "gfx1151",
    ["880m", "890m"]                  => "gfx1150",
    ["r9700", "9060", "9070"]         => "gfx120X",
    ["7700", "7800", "7900", "v710"]  => "gfx110X",
    ["6800", "6700", "6600", "6500"]  => "gfx103X",
]

The adapter string must also contain radeon or amd, otherwise the entry is skipped.

This path is not yet tested.

MWE

On Windows, with any AMD GPU:

using AMDGPU
AMDGPU.versioninfo()

RR = AMDGPU.ROCm_Runtime
@show RR.windows_video_device_names()
@show RR.rocm_arch()
@show RR.is_available()
@show AMDGPU.functional()

Please report your GPU model and the output.

Expected: windows_video_device_names() lists your adapter, and rocm_arch() maps it to the matching gfx family (for example an RX 6700 XT should give gfx103X). An empty rocm_arch() or is_available() == false means the adapter string did not match the table and no artifact was resolved.

As a workaround in that case, the architecture can be set explicitly:

AMDGPU.set_rocm_version!(arch="gfx1031")  # substitute your own target

Reports of the exact adapter string are useful even when detection works.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions