我希望创建一个容器,在其中可以使用 Nvidia Nsight Systems 工具的图形界面,以便能够使用 cuda 和 python 获取应用程序报告,我找到了几个指南,这些指南说这是可能的,特别是我已经关注了我留下的续集:
https://leimao.github.io/blog/Docker-Nsight-Systems/
我没有遇到很多问题,直到创建容器后启动图形界面本身,我看到了以下错误:
################# ERROR: CrashReporter #################
CrashReporter
Qt initialization failed
Failed to load Qt platform plugin: "xcb"
Library path: /opt/nvidia/nsight-systems/2023.4.1/host-linux-x64/Plugins/platforms/ http://libqxcb.so
Application is going to abort
sh: 1: xmessage: not found
/usr/local/bin/nsys-ui: line 63: 38 Aborted (core dumped) "$NV_AGORA_PATH/CrashReporter" --hide-stack "NVIDIA Nsight Systems" "NsightSystems" "2023.4.1 (Build 2023.4.1.97-234133557503v0)" "$NV_QUADD_PATH" "$@"
""
搜索这个错误后,出现了几种解决方案,例如安装额外的库,例如libxcb-xinerama0或libxcb-cursor0,所以我将它们添加到dockerfile中,但错误仍然存在,有谁知道如何解决解决它或以其他方式创建有效的 docker。
这是我正在使用的 Dockerfile:
FROM nvcr.io/nvidia/cuda:12.0.1-devel-ubuntu22.04
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update -y && \
apt-get install -y --no-install-recommends \
apt-transport-https \
ca-certificates \
dbus \
fontconfig \
gnupg \
libasound2 \
libfreetype6 \
libglib2.0-0 \
libnss3 \
libsqlite3-0 \
libx11-xcb1 \
libxcb-glx0 \
libxcb-xkb1 \
libxcomposite1 \
libxcursor1 \
libxcb-xinerama0 \
libxdamage1 \
libxi6 \
libxml2 \
libxrandr2 \
libxrender1 \
libxtst6 \
libgl1-mesa-glx \
libxkbfile-dev \
openssh-client \
libxcb-cursor0\
wget \
xcb \
xkb-data && \
apt-get clean
RUN cd /tmp && \
wget https://developer.nvidia.com/downloads/assets/tools/secure/nsight-systems/2023_4_1_97/nsight-systems-2023.4.1_2023.4.1.97-1_amd64.deb && \
apt-get install -y ./nsight-systems-2023.4.1_2023.4.1.97-1_amd64.deb && \
rm -rf /tmp/*
# CMD ["nsys-ui"]
这是构建说明:
docker build -f nsight-systems.Dockerfile --no-cache --tag=nsight-systems:2023.4 .
运行:
docker run -it --rm --gpus all -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --cap-add=SYS_ADMIN --security-opt seccomp=unconfined -v $(pwd):/mnt --network=host nsight-systems:2023.4
并在docker中执行程序:
nsys-ui
首先非常感谢您花时间回复。
我通过以下方式运行 docker 来解决这个问题:
docker run -it --rm --gpus all --net=host -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --cap-add=SYS_ADMIN --security-opt seccomp=unconfined -v $(pwd):/mnt --privileged -v "$HOME/.Xauthority:/root/.Xauthority:rw" nsight-systems:2023.4
我在这里留下了我看到解决方案的链接,非常感谢你,这是一项令人难以置信的工作: