feat: enhance GPU backend detection in LocalAGI installation scripts
This commit is contained in:
@@ -32,6 +32,16 @@ catch_errors
|
|||||||
resolve_backend() {
|
resolve_backend() {
|
||||||
local requested="${var_localagi_backend:-${var_torch_backend:-auto}}"
|
local requested="${var_localagi_backend:-${var_torch_backend:-auto}}"
|
||||||
local backend="cpu"
|
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
|
case "$requested" in
|
||||||
cpu | cu128 | rocm7.2)
|
cpu | cu128 | rocm7.2)
|
||||||
@@ -39,19 +49,21 @@ resolve_backend() {
|
|||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
if [[ "${var_gpu:-no}" == "yes" ]]; then
|
if [[ "${var_gpu:-no}" == "yes" ]]; then
|
||||||
if [[ -e /dev/nvidia0 || -e /dev/nvidiactl ]]; then
|
if [[ "${gpu_type}" == "NVIDIA" || "${has_nvidia}" == "yes" ]]; then
|
||||||
backend="cu128"
|
backend="cu128"
|
||||||
elif [[ -e /dev/kfd ]]; then
|
elif [[ "${gpu_type}" == "AMD" || "${has_kfd}" == "yes" ]]; then
|
||||||
backend="rocm7.2"
|
backend="rocm7.2"
|
||||||
elif lspci 2>/dev/null | grep -qiE 'AMD|Radeon'; then
|
elif [[ "${has_amd_pci}" == "yes" ]]; then
|
||||||
backend="rocm7.2"
|
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"
|
backend="rocm7.2"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
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"
|
echo "$backend"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,16 @@ header_info "$APP"
|
|||||||
resolve_backend() {
|
resolve_backend() {
|
||||||
local requested="${var_localagi_backend:-${var_torch_backend:-auto}}"
|
local requested="${var_localagi_backend:-${var_torch_backend:-auto}}"
|
||||||
local backend="cpu"
|
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
|
case "$requested" in
|
||||||
cpu | cu128 | rocm7.2)
|
cpu | cu128 | rocm7.2)
|
||||||
@@ -36,19 +46,21 @@ resolve_backend() {
|
|||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
if [[ "${var_gpu:-no}" == "yes" ]]; then
|
if [[ "${var_gpu:-no}" == "yes" ]]; then
|
||||||
if [[ -e /dev/nvidia0 || -e /dev/nvidiactl ]]; then
|
if [[ "${gpu_type}" == "NVIDIA" || "${has_nvidia}" == "yes" ]]; then
|
||||||
backend="cu128"
|
backend="cu128"
|
||||||
elif [[ -e /dev/kfd ]]; then
|
elif [[ "${gpu_type}" == "AMD" || "${has_kfd}" == "yes" ]]; then
|
||||||
backend="rocm7.2"
|
backend="rocm7.2"
|
||||||
elif lspci 2>/dev/null | grep -qiE 'AMD|Radeon'; then
|
elif [[ "${has_amd_pci}" == "yes" ]]; then
|
||||||
backend="rocm7.2"
|
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"
|
backend="rocm7.2"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
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"
|
echo "$backend"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -208,6 +220,8 @@ mkdir -p /opt/localagi/pool
|
|||||||
# Only attempt ROCm runtime provisioning when AMD backend is selected.
|
# Only attempt ROCm runtime provisioning when AMD backend is selected.
|
||||||
if [[ "${BACKEND}" == "rocm7.2" ]]; then
|
if [[ "${BACKEND}" == "rocm7.2" ]]; then
|
||||||
install_rocm_runtime_debian || msg_warn "ROCm runtime package installation failed"
|
install_rocm_runtime_debian || msg_warn "ROCm runtime package installation failed"
|
||||||
|
else
|
||||||
|
msg_warn "ROCm install skipped because selected backend is '${BACKEND}'"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Generate runtime configuration file used by systemd service.
|
# Generate runtime configuration file used by systemd service.
|
||||||
|
|||||||
Reference in New Issue
Block a user