如何创建一个容器来使用 Nvidia Nsight Systems 图形界面?

问题描述 投票:0回答:1

我希望创建一个容器,在其中可以使用 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 nvidia nsight nvidia-docker
1个回答
0
投票

首先非常感谢您花时间回复。

我通过以下方式运行 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

我在这里留下了我看到解决方案的链接,非常感谢你,这是一项令人难以置信的工作:

在 docker 中运行的 GUI 应用程序的 X11 转发

© www.soinside.com 2019 - 2024. All rights reserved.