Published on

AMD 395 使用 amd-ttm 后 Vulkan 显存识别异常的修复

Authors

问题描述

在 AMD RX 395 机器上,使用 amd-ttm 工具修改显存配置后,Vulkan 版 llama.cpp 启动时识别到的显存非常少,无法正常加载模型运行推理。

原因分析

amd-ttm 修改后,系统默认使用的 Vulkan 驱动变为 AMDVLK(AMD 官方开源 Vulkan 驱动)。AMDVLK 在某些场景下对大显存的识别存在兼容性问题,导致 llama.cpp 通过 Vulkan API 查询到的可用显存远小于实际值。

解决方案

设置环境变量,强制使用社区 RADV 驱动(Mesa 项目维护),该驱动对大显存的兼容性更好:

export AMD_VULKAN_ICD=RADV

设置后重新启动 llama.cpp 即可正常识别全部显存。

持久化配置

将环境变量写入 shell 配置文件,避免每次手动设置:

echo 'export AMD_VULKAN_ICD=RADV' >> ~/.bashrc
source ~/.bashrc

验证

vulkaninfo --summary

确认输出中使用的驱动为 radv 而非 amdvlk,然后启动 llama.cpp 验证显存识别是否正常。

补充说明

驱动说明
AMDVLKAMD 官方开源 Vulkan 驱动,amd-ttm 修改后默认使用
RADVMesa 社区维护的 Vulkan 驱动,兼容性更好,推荐在 amd-ttm 场景下使用

两个驱动可以共存,通过 AMD_VULKAN_ICD 环境变量随时切换,无需卸载任何一个。