宿主机目录挂载容器
前提条件
安装步骤
- 在宿主机使用id HwHiAiUser命令查看宿主机HwHiAiUser的gid,并记录该gid的取值,如图1所示,则记录gid为1001。
如果用户安装Driver包时使用--install-username=username --install-usergroup=usergroup参数指定了其他非root用户,则需要使用同样的方法记录此非root用户的gid,容器内创建非root用户时,需要使用该gid,确保宿主机和容器内相关进程的非root用户同属组。
- 在宿主机创建并启动docker容器。
需要将表1所示参数挂载到容器。
多容器场景下,为了防止某个容器的恶意代码大量申请甚至耗尽内核态内存,从而对其它容器造成影响。需要用户根据实际情况通过“--kernel-memory”参数指定容器能够占用的最大内核态内存。此功能依赖客户主机侧内核开启kmem accounting功能。
表1 参数说明 参数
参数说明
--device
表示映射的设备,可以挂载一个或者多个设备。
需要挂载的设备如下:
- /dev/davinciX:NPU设备,X是ID号,如:davinci0。
- /dev/davinci_manager:davinci相关的管理设备。
- /dev/devmm_svm:内存管理相关设备。
- /dev/hisi_hdc:hdc相关管理设备。
-v /usr/local/dcmi:/usr/local/dcmi
将宿主机dcmi的.so和接口文件目录“/usr/local/dcmi”挂载到容器中,请根据实际情况修改。
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi
将宿主机npu-smi工具“/usr/local/bin/npu-smi”挂载到容器中,请根据实际情况修改。
-v /usr/local/Ascend/driver/lib64:/usr/local/Ascend/driver/lib64
将宿主机目录“/usr/local/Ascend/driver/lib64/ ”挂载到容器,请根据driver的驱动.so所在路径修改。
-v /etc/ascend_install.info:/etc/ascend_install.info
将宿主机安装信息文件“/etc/ascend_install.info”挂载到容器中。
-v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info
将宿主机版本信息文件“/usr/local/Ascend/driver/version.info”挂载到容器中,请根据实际情况修改。
容器启动后,执行以下命令查看当前docker容器中可以使用的davinci设备。
ls /dev/ | grep davinci*
命令执行情况参见图2。
其中:
- davinci_manager为管理模块的字符设备节点。
- davinci0为该容器使用的davinci设备。
- 在容器内创建HwHiAiUser用户(用户也可以创建其他非root用户),用于启动相关进程。
groupadd -g gid HwHiAiUser && useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser && echo ok
请将上述命令中的gid替换为1中查出的gid值。若返回“ok”,则说明创建成功。
如果用户创建了其他非root用户,请确保该用户所属的属组必须和Driver运行用户所属属组相同;如果不同,请用户自行添加到Driver运行用户属组。
- 设置如下环境变量,用于在容器中加载驱动so。
export LD_LIBRARY_PATH=/usr/local/Ascend/driver/lib64/common:/usr/local/Ascend/driver/lib64/driver:${LD_LIBRARY_PATH}
其中“/usr/local/Ascend”为默认安装路径,请根据实际情况修改。通过export方式设置环境变量,只在当前窗口有效,设置完成后立即生效。