-title: singularity container --daru 上で singularity を使う /mnt/ie-virsh/singularity にいくつか image が置いてある。 singularity shell /mnt/ie-virsh/singularity/os_complete/os_complete.sif で起動する。 --daru 上で singularity で GPU を使う ここを参考に 作業ディレクトリを作成して、そこで singularity pull --docker-login ubuntu:20.04 とする。 学科のrepositoryに何があるかはamaneで ls /ie-ryukyu/podman/registry/registry/docker/registry/v2/repositories とするとわかります。 --GPU があるかどうかを確認する +daru+kono singularity shell --nv ubuntu_20.04.sif Singularity> nvidia-smi Fri Sep 24 11:15:37 2021 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 450.142.00 Driver Version: 450.142.00 CUDA Version: 11.0 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 Tesla V100S-PCI... Off | 00000000:3B:00.0 Off | 0 | | N/A 37C P0 36W / 250W | 0MiB / 32510MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+ --apt-install は このままではできない vim も入ってない。apt-install vim は失敗する。root じゃないから。 test.def という以下のファイルを作る BootStrap: docker From: ubuntu:20.04 %post apt-get update apt-get -y upgrade apt-get -y install build-essential vim 以下を実行する % singularity build --fakeroot test.sif test.def すると % singularity shell test.sif Singularity> vim で vim が動作する --rust を入れてみる Singularity> apt search rust rustc だというのがわかるので、 Singularity> apt-get install rustc でもやっぱりだめ。 % singularity shell --fakeroot test.sif でもだめ。 % singularity shell --fakeroot --writable test.sif これで、なかから、 Singularity> apt-get update Singularity> apt-get install rustc で rust が入る。 Singularity> mkdir rust; cd rust ; cargo new hello_world --bin でも、これでは抜けたあと、全部消えてしまう。なのでやっぱり、build しないと繰り返し使えない。 BootStrap: docker From: ubuntu:20.04 %post apt-get update apt-get -y upgrade apt-get -y install build-essential vim apt-get -y install rustc で build しなおす。 でも、これやる必要なくて、既に誰かが作ったものを使えば良い。 % singularity build --sandbox --fakeroot test/ test.def % singularity shell --fakeroot --writable test と sanbox でやっても良い。これだと install 履歴は command に残らない。あと、かなり遅い。 daru:/mnt/nvme0/singuralrity/students/e2175xx などを作ってやると少し早いかも。 --daru 上で slum を使う pytorch のイメージを pull singularity pull --docker-login docker://localhost:5000/pytorch:latest または singularity pull --docker-login docker://pytorch/pytorch:latest localhost:5000 は学科のコンテナレジストリ MNIST の exsample をホームディレクトリに clone git clone https://github.com/pytorch/examples.git 以下の batch を作って #!/bin/bash #SBATCH --job-name mnist #SBATCH --output logs/%x-%j.log #SBATCH --error logs/%x-%j.err #SBATCH --nodes 1 #SBATCH --gpus tesla:1 date singularity exec --nv pytorch_latest.sif python examples/mnist/main.py date Slurm で Job を投下 sbatch mnist.sbatch GPUが混んでる時には gpu をはずそう #!/bin/bash #SBATCH --job-name mnist #SBATCH --output logs/%x-%j.log #SBATCH --error logs/%x-%j.err #SBATCH --nodes 1 date singularity exec pytorch_latest.sif python examples/mnist/main.py date 以下はオプションにします。 --daru 上で podman を使う rm -rf ~/.local podman-init # sudo podman run hello-world が実行できることとを確認せよ。 --podman でなにか動かす --オプション k8s で grpc を動かす % mkdir -p ~/podman/grpc % cd !$ % hg clone http://www.cr.ie.u-ryukyu.ac.jp/hg/podman/GRPCTest/ が、まだ動いてない (誰かやって... --オプション macOS 上の podman (あまり勧めない) macOS のpodmanを使うと、Linuxのアプリを指定したの環境上で動かすことができる。 qemu 上で、ARM 用の xv6 kernel (MITで書かれた tiny OS)をコンパイルして動かす それに対して、gdb を動かして xv6 を debug する これを行う podman script を用意した。 xv6 kernel の system call に break point をかけて、system call を実行し、backtrace を示せ。 また、kernel から xv6 に戻る部分を stepi で trace して見よ。 MacOSXでpodmanなxv6を動かす 終わった後は、 podman stop xv6 podman rm xv6 で消しておく。必要ならさらに podman rmi で image の削除を行う。 ---podman の速度 podman 内のfileは podman のAUFS上に作られている。それがどこかを lsof commnad で調べよ。 podman 環境下で FileWrite.jar を用いてファイルの書き込み時間を測定する。以下の二種類の測定を行う。 podman 内の file system に対して測定を行う -v ~/tmp/os:/mnt/os などで podman からpodmanの外のdirectoryを共有して測定を行う