概要
dockerイメージを変換してSingularityのコンテナを作る
やったこと
- singularityのインストール
- docker hub上のdockerイメージを使ってコンテナをビルド
- ローカルのdockerイメージを使ってコンテナをビルド
- コンテナ上でgpuを使えるようにする
環境
- OS:Ubuntu18.04LTS
- GPU:nvidia Quadro P2000
- nvidiaドライバインストール済み
インストール
このページ通りにインストール
https://github.com/sylabs/singularity/blob/master/INSTALL.md
システムの依存関係インストール
$ sudo apt-get update
$ sudo apt-get install -y build-essential \
libssl-dev uuid-dev libseccomp-dev \
pkg-config squashfs-tools cryptsetup
go をインストール&環境変数設定
$ export VERSION=1.13.3 OS=linux ARCH=amd64 # change this as you need
$ wget -O /tmp/go${VERSION}.${OS}-${ARCH}.tar.gz https://dl.google.com/go/go${VERSION}.${OS}-${ARCH}.tar.gz && \
sudo tar -C /usr/local -xzf /tmp/go${VERSION}.${OS}-${ARCH}.tar.gz
$ echo 'export GOPATH=${HOME}/go' >> ~/.bashrc && \
echo 'export PATH=/usr/local/go/bin:${PATH}:${GOPATH}/bin' >> ~/.bashrc && \
source ~/.bashrc
オプション:golangci-lintをインストール おすすめらしい
$ curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh |
sh -s -- -b $(go env GOPATH)/bin v1.15.0
リポジトリをコピー
$ mkdir -p ${GOPATH}/src/github.com/sylabs
$ cd ${GOPATH}/src/github.com/sylabs
$ git clone https://github.com/sylabs/singularity.git
$ cd singularity
$ git checkout v3.5.1
Singularityのインストール
$ cd ${GOPATH}/src/github.com/sylabs/singularity
$ ./mconfig
$ cd ./builddir
$ make
$ sudo make install
$ singularity version
でバージョンが表示されれば成功
dockerコンテナからビルド
docker hubで検索したコンテナを変換する
例: https://hub.docker.com/r/rogerchen/cuda10.0-cudnn7-py3.6 を使う
$ singularity build cuda10cu7.sif docker://fangchen1988/cuda10.0-cudnn7-py3.6
ローカルdockerファイルをSingularityに変換する
dockerイメージ一覧
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest aaa111a11aa1 11 months ago 1.84kB
$ sudo singularity build hello-singularity.sif docker-daemon://hello-world:latest
hello-singularity.sifは作りたいコンテナの名前
hello-worldは変換したいローカルのdockerイメージの名前
コンテナを起動しnividia-smiを実行
--nv オプションでgpuを使えるようにする
$ singularity exec --nv cuda10cu7.sif nvidia-smi
Fri Dec 20 20:37:42 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.50 Driver Version: 430.50 CUDA Version: 10.1 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Quadro P2000 Off | 00000000:01:00.0 Off | N/A |
| 46% 33C P8 4W / 75W | 17MiB / 5059MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1977 G /usr/lib/xorg/Xorg 9MiB |
| 0 2457 G /usr/bin/gnome-shell 5MiB |
+-----------------------------------------------------------------------------+
表示されれば成功
shellを起動
$ singularity shell --nv cuda10cu7.sif