あまり詳しくないのですが、 最新の 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 .
でビルド。
その後、 socat
と xquartz
を起動します:
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 はどうしますか?とか聞かれますが、適当に設定して、「二度と表示しない」で大丈夫です。