From 565705e837b675042e07aded6e2695ea2452bc68 Mon Sep 17 00:00:00 2001 From: John Doe Date: Wed, 4 Mar 2026 00:09:48 -0500 Subject: [PATCH] feat: enhance GPU backend detection in LocalAGI installation scripts --- ct/localagi.sh | 20 ++++++++++++++++---- install/localagi-install.sh | 22 ++++++++++++++++++---- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/ct/localagi.sh b/ct/localagi.sh index 780ff05bd..0505cea7b 100644 --- a/ct/localagi.sh +++ b/ct/localagi.sh @@ -32,6 +32,16 @@ catch_errors resolve_backend() { local requested="${var_localagi_backend:-${var_torch_backend:-auto}}" local backend="cpu" + local gpu_type="${GPU_TYPE:-unknown}" + local has_nvidia="no" + local has_kfd="no" + local has_amd_pci="no" + local has_amd_vendor="no" + + [[ -e /dev/nvidia0 || -e /dev/nvidiactl ]] && has_nvidia="yes" + [[ -e /dev/kfd ]] && has_kfd="yes" + lspci 2>/dev/null | grep -qiE 'AMD|Radeon' && has_amd_pci="yes" + grep -qEi '0x1002|0x1022' /sys/class/drm/renderD*/device/vendor /sys/class/drm/card*/device/vendor 2>/dev/null && has_amd_vendor="yes" case "$requested" in cpu | cu128 | rocm7.2) @@ -39,19 +49,21 @@ resolve_backend() { ;; *) if [[ "${var_gpu:-no}" == "yes" ]]; then - if [[ -e /dev/nvidia0 || -e /dev/nvidiactl ]]; then + if [[ "${gpu_type}" == "NVIDIA" || "${has_nvidia}" == "yes" ]]; then backend="cu128" - elif [[ -e /dev/kfd ]]; then + elif [[ "${gpu_type}" == "AMD" || "${has_kfd}" == "yes" ]]; then backend="rocm7.2" - elif lspci 2>/dev/null | grep -qiE 'AMD|Radeon'; then + elif [[ "${has_amd_pci}" == "yes" ]]; then backend="rocm7.2" - elif grep -qEi '0x1002|0x1022' /sys/class/drm/renderD*/device/vendor /sys/class/drm/card*/device/vendor 2>/dev/null; then + elif [[ "${has_amd_vendor}" == "yes" ]]; then backend="rocm7.2" fi fi ;; esac + msg_info "Backend detection: requested=${requested}, var_gpu=${var_gpu:-no}, GPU_TYPE=${gpu_type}, nvidia=${has_nvidia}, kfd=${has_kfd}, amd_pci=${has_amd_pci}, amd_vendor=${has_amd_vendor}, selected=${backend}" + echo "$backend" } diff --git a/install/localagi-install.sh b/install/localagi-install.sh index f48954df8..ef9aba0b8 100644 --- a/install/localagi-install.sh +++ b/install/localagi-install.sh @@ -29,6 +29,16 @@ header_info "$APP" resolve_backend() { local requested="${var_localagi_backend:-${var_torch_backend:-auto}}" local backend="cpu" + local gpu_type="${GPU_TYPE:-unknown}" + local has_nvidia="no" + local has_kfd="no" + local has_amd_pci="no" + local has_amd_vendor="no" + + [[ -e /dev/nvidia0 || -e /dev/nvidiactl ]] && has_nvidia="yes" + [[ -e /dev/kfd ]] && has_kfd="yes" + lspci 2>/dev/null | grep -qiE 'AMD|Radeon' && has_amd_pci="yes" + grep -qEi '0x1002|0x1022' /sys/class/drm/renderD*/device/vendor /sys/class/drm/card*/device/vendor 2>/dev/null && has_amd_vendor="yes" case "$requested" in cpu | cu128 | rocm7.2) @@ -36,19 +46,21 @@ resolve_backend() { ;; *) if [[ "${var_gpu:-no}" == "yes" ]]; then - if [[ -e /dev/nvidia0 || -e /dev/nvidiactl ]]; then + if [[ "${gpu_type}" == "NVIDIA" || "${has_nvidia}" == "yes" ]]; then backend="cu128" - elif [[ -e /dev/kfd ]]; then + elif [[ "${gpu_type}" == "AMD" || "${has_kfd}" == "yes" ]]; then backend="rocm7.2" - elif lspci 2>/dev/null | grep -qiE 'AMD|Radeon'; then + elif [[ "${has_amd_pci}" == "yes" ]]; then backend="rocm7.2" - elif grep -qEi '0x1002|0x1022' /sys/class/drm/renderD*/device/vendor /sys/class/drm/card*/device/vendor 2>/dev/null; then + elif [[ "${has_amd_vendor}" == "yes" ]]; then backend="rocm7.2" fi fi ;; esac + msg_info "Backend detection: requested=${requested}, var_gpu=${var_gpu:-no}, GPU_TYPE=${gpu_type}, nvidia=${has_nvidia}, kfd=${has_kfd}, amd_pci=${has_amd_pci}, amd_vendor=${has_amd_vendor}, selected=${backend}" + echo "$backend" } @@ -208,6 +220,8 @@ mkdir -p /opt/localagi/pool # Only attempt ROCm runtime provisioning when AMD backend is selected. if [[ "${BACKEND}" == "rocm7.2" ]]; then install_rocm_runtime_debian || msg_warn "ROCm runtime package installation failed" +else + msg_warn "ROCm install skipped because selected backend is '${BACKEND}'" fi # Generate runtime configuration file used by systemd service.