解决容器内‘npu-smi‘动态库缺失问题

环境

  • 昊算npu云
  • 910b

报错情况

终端输入npu-smi info后报错:

npu-smi: error while loading shared libraries: libc_sec.so: cannot open shared object file: No such file or directory

解决方案

  1. 调用ldd /usr/local/bin/npu-smi查看缺少哪些文件
root@ascend-1743749729-chief-0:~# ldd /usr/local/bin/npu-smi
        linux-vdso.so.1 (0x0000ffff968fe000)
        libc_sec.so => not found
        libdrvdsmi_host.so => /usr/local/Ascend/driver/lib64/driver/libdrvdsmi_host.so (0x0000ffff965d0000)
        libmmpa.so => not found
        libascend_hal.so => /usr/local/Ascend/driver/lib64/driver/libascend_hal.so (0x0000ffff96170000)
        libpthread.so.0 => /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000ffff96140000)
        libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000ffff95f90000)
        /lib/ld-linux-aarch64.so.1 (0x0000ffff968c1000)
        libc_sec.so => not found
        libc_sec.so => not found
        librt.so.1 => /lib/aarch64-linux-gnu/librt.so.1 (0x0000ffff95f60000)

根据前文的报错信息和该命令的输出信息,缺少lib_sec.so

  1. 使用find命令查看
find / -name "libc_sec.so"

输出信息为:

root@ascend-1743749729-chief-0:~# find / -name "libc_sec.so"
find: ‘/sys/devices/virtual/powercap/dtpm’: Permission denied
/usr/local/Ascend/driver/lib64/common/libc_sec.so

可知libc_sec.so文件的位置在/usr/local/Ascend/driver/lib64/common/libc_sec.so,随后检查环境变量PATH和动态链接库LD_LIBRARY_PATH

root@ascend-1743749729-chief-0:~# echo $PATH
/usr/lib/code-server/lib/vscode/bin/remote-cli:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
root@ascend-1743749729-chief-0:~# echo $LD_LIBRARY_PATH
/usr/local/Ascend/driver/lib64:/usr/local/Ascend/driver/lib64/driver:

可知是动态链接库中缺少lib_sec.so

  1. /usr/local/Ascend/driver/lib64/common/libc_sec.so添加到动态链接库LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/Ascend/driver/lib64:/usr/local/Ascend/driver/lib64/driver://usr/local/Ascend/driver/lib64/common
  1. 验证库文件是否能被找到:
ldd /usr/local/bin/npu-smi
  1. 测试工具是否正常运行:
/usr/local/bin/npu-smi info
  1. 若有效,将设置写入环境配置文件:
echo 'export LD_LIBRARY_PATH=/usr/local/Ascend/driver/lib64:/usr/local/Ascend/driver/lib64/driver://usr/local/Ascend/driver/lib64/common' >> ~/.bashrc
source ~/.bashrc

REFERENCE

### 启用 NPU-SMI 配置或使用方法 NPU-SMINPU System Management Interface)是用于管理华为昇腾(Ascend)系列神经处理单元(NPU)的工具。它提供了对 NPU 状态、性能监控和资源分配等功能的支持[^1]。以下是关于如何启用和配置 NPU-SMI 的详细说明: #### 1. 安装 NPU-SMI 工具 在使用 NPU-SMI 之前,需要确保相关工具已正确安装。可以通过以下命令安装 NPU-SMI 工具包: ```bash apt-get update && apt-get install -y npu-smi ``` 如果系统中未包含该软件包,可能需要添加华为昇腾的相关软件源[^2]。 #### 2. 配置 NPU-SMI 环境 NPU-SMI 的正常运行依赖于正确的驱动程序和环境变量配置。确保以下条件满足: - 已安装昇腾 AI 计算框架(如 CANN)。 - 环境变量 `ASCEND_DEVICE_ID` 设置为当前使用NPU 设备 ID。 - 确保昇腾驱动程序版本与 NPU-SMI 工具兼容。 以下是一个示例脚本,用于设置必要的环境变量: ```bash export ASCEND_DEVICE_ID=0 export PATH=/usr/local/Ascend/toolkit/bin:$PATH export LD_LIBRARY_PATH=/usr/local/Ascend/driver/lib64:/usr/local/Ascend/add-ons:$LD_LIBRARY_PATH ``` #### 3. 使用 NPU-SMI 命令 NPU-SMI 提供了多种子命令以实现不同的功能。以下是一些常用的命令及其用途: - **查看 NPU 状态**: ```bash npu-smi info ``` 此命令将显示所有已连接 NPU 的基本信息,包括设备 ID、温度、功耗和利用率等[^3]。 - **监控 NPU 性能**: ```bash npu-smi --loop 1 --unit s ``` 上述命令将以每秒一次的频率持续输出 NPU 的性能数据。 - **设置功耗限制**: ```bash npu-smi power --set <power_limit> ``` 通过此命令可以调整 NPU 的最大功耗限制,`<power_limit>` 的单位为瓦特(W)[^4]。 #### 4. 日志与调试 NPU-SMI 支持生成详细的日志文件以帮助诊断问题。可以通过以下命令启用日志记录: ```bash npu-smi --log-enable true ``` 日志文件通常存储在 `/var/log/npu-smi/` 目录下,具体路径可能因系统配置而异。 --- ### 注意事项 - 在多用户环境中,确保每个用户都具有适当的权限访问 NPU 资源。 - 如果遇到兼容性问题,请检查昇腾驱动程序和 NPU-SMI 工具的版本是否匹配[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值