2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Mac の docker 上の Ubuntu で nvvp (NVIDIA Visual Profiler) を GUI として起動する

Posted at

あまり詳しくないのですが、 最新の MacOS (Catalina, 10.15.5) では cuda toolkit のサポートがされていないようで、 nvvp のインストールができないようです。
そこで、docker 上の Ubuntu で nvvp を起動し、その GUI をホストに飛ばして表示することを試みます。

ホスト側 (MacOS 側) の準備

https://qiita.com/ryoya-s/items/ee1daf9cab18c100c990
この記事に従い、 socat および xquartz を導入します。
(コメントにもある通り、 socat を起動する際に指定する DISPLAY 環境変数がインストール直後だとセットされておらず、 Mac の再起動が必要でした。)

Docker image/container の準備

以下の Dockerfile を build します。

FROM ubuntu:18.04

ENV DEBIAN_FRONTEND noninteractive

RUN apt-get update \
  && apt-get -y install wget ubuntu-desktop

# https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1804&target_type=deblocal
# に従い、cuda toolkit の install を試みる
RUN wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin \
  && mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600 \
  && wget http://developer.download.nvidia.com/compute/cuda/11.0.1/local_installers/cuda-repo-ubuntu1804-11-0-local_11.0.1-450.36.06-1_amd64.deb \
  && dpkg -i cuda-repo-ubuntu1804-11-0-local_11.0.1-450.36.06-1_amd64.deb \
  && apt-key add /var/cuda-repo-ubuntu1804-11-0-local/7fa2af80.pub \
  && apt-get update \
  && apt-get -y install cuda
# nvvp にパスを通しておく
ENV PATH /usr/local/cuda-11.0/bin:$PATH

# Java8 が必要そうなので install
RUN apt-get install openjdk-8-jre

# nvvp に java8 を使ってもらえるようにしとく
RUN echo "-vm" >> /usr/local/cuda-11.0/libnvvp/nvvp.ini \
  && echo "/usr/lib/jvm/java-8-openjdk-amd64/bin/java" >> /usr/local/cuda-11.0/libnvvp/nvvp.ini

これを適当な名前、例えば nvvp.Dockerfile などとして保存し、

docker build -t nvvp -f nvvp.Dockerfile .

でビルド。

その後、 socatxquartz を起動します:

socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"
open -a XQuartz

Docker container の起動

ifconfig en0 | grep inet | awk '$1=="inet" {print $2}' でホストの IP アドレスを調べて、

# xxx.xxx.xxx.xxx は調べたアドレス
# /host/dir は、採取したプロファイルを配置しているディレクトリ (docker 起動後に docker cp とかで送っても OK)
docker run -it -e DISPLAY="xxx.xxx.xxx.xxx:0" -v /host/dir:/mnt nvvp

として起動する。
起動した docker container 上で

# (hoge.nvvp を採取したプロファイルとして)
nvvp /mnt/hoge.nvvp

とすると、XQuartz 経由で nvvp を触ることができるはず。 (docker run のオプションとして nvvp を指定して直接起動もできるかもしれないですが、試してないです)

最初に起動したときだけ workspace はどうしますか?とか聞かれますが、適当に設定して、「二度と表示しない」で大丈夫です。

無事、採取したプロファイルの読み込みに成功したら、Visual Profiler が立ち上がります。
image.png

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?