トップ 最新 追記

役に立たない情報


2020年10月07日 [R応用] OCTOPUSのOpenMPIでRを動かそう

_ [R応用] OCTOPUSにRをインストールしよう

Rってメモリインテンシブですっごいパフォーマンスに問題があるんだけど,みんな使いたいよね?これからのデータサイエンス的な解析作業増えてくるけど,もちろんデータも増えてくるし,もうみんなご苦労さまですよね.で,AWSとかGoogle Cloudとかsakuraとかクラウドサービスに頼る手もあるんだけど,実は大学の大型計算機センターの計算機って実は安いんだぜ?ということで弊センターのクラスタ型汎用スパコン,OCTOPUSを使ったらいいと思うんだ.大容量メモリノード(6T)もあるしね.でも押しなべてセンターの計算機ってだいたい古典的な計算アプリが高速に動くように設計されているし,そもそも運用がライトウェイト言語向けじゃないのね.一応動くけどサブセット,みたいな. で,実はOCTOPUSにもRはインストールされているものの,MPI対応版じゃないので,自前でコンパイルしちゃいましょう. 現時点で最新版のR-4.0.2を以下の手順でインストールしてみよう.OCTOPUSアカウントは自前で取得してくれよな!ちなみにOCTOPUSは

  • RHEL 7.6
  • GCC 4.8.5
  • OpenMPI 3.0.0rc6

ってな環境です. あ,ビルドの前に~/.R/Makevarsを以下のようにしておいてね!大事だよ!

$ vi ~/.R/Makevars
CC=mpicc
CXX=mpic++
FC=mpif90
CFLAGS=-O3 -fopenmp -std=c11 -L/usr/mpi/gcc/openmpi/lib64
CXXFLAGS=-O3 -fopenmp -L/usr/mpi/gcc/openmpi/lib64
FFLAGS=-O3 -fopenmp -L/usr/mpi/gcc/openmpi/lib64

じゃあ,Rをビルドしていこう.

$ wget https://cran.r-project.org/src/base/R-4/R-4.0.2.tar.gz
$ tar zxvf R-4.0.2.tar.gz
$ cd R-4.0.2
$ BASE=/octfs/apl/HPC-X/hpcx-v2.2.0-gcc-MLNX_OFED_LINUX-4.2-1.2.0.0-redhat7.3-x86_64
$ source $BASE/hpcx-init.sh
$ hpcx_load
$ export CC=mpicc
$ export CXX=mpic++
$ export FC=mpif90
$ export CFLAGS="-O3 -fopenmp -std=c11 -L/usr/mpi/gcc/openmpi/lib64"
$ export CXXFLAGS="-O3 -fopenmp -L/usr/mpi/gcc/openmpi/lib64"
$ export FFLAGS="-O3 -fopenmp -L/usr/mpi/gcc/openmpi/lib64"
$ export LD_LIBRARY_PATH=/usr/mpi/gcc/openmpi/lib64:$LD_LIBRARY_PATH
$ configure
...
$ make

ってすればOpenMPI対応版のRがビルドできるよ!

_ [R応用] Rmpiをインストールしよう

RmpiはRからMPIを使うためのパッケージなんだけど,最新の(0.6.9)をインストールして使おうとすると,core dumpしまくって大変なんだ.なのでバージョンを固定してインストールするよ.バージョンは0.6.6だ!

$ cd R-4.0.2
$ wget https://cran.r-project.org/src/contrib/Archive/Rmpi/Rmpi_0.6-6.tar.gz
$ ./bin/R CMD INSTALL ../Rmpi_0.6-6.tar.gz --configure-args="--with-mpi=/usr/mpi/gcc/openmpi --with-Rmpi-type=OPENMPI"

これで完了. みんなもOCTOPUSのRmpiでレッツ並列R!


2020年10月13日 [OSX] macOSのDockerでUbuntuを動かしてX Windowの画面に出す

_ [Docker] macOSのDockerでubuntu 18.04を動かす

Dockerで便利だよね.軽いし.でもDockerって直感的じゃないんだよね.起動コマンドもdocker runとかdocker startとか違いとか,docker attachとdocker execの違いとか,イメージとかコンテナとかの関係性も初見殺しっぽいし.イメージを取得/作成するにしてDockerfileを用意する場合とレポジトリから取得する場合もあるし. んで,今回はレポジトリからdockerコマンドで取得する方法をざっくり書いていくね.あとDocker for macはインストールしたものとして,話をずんずん進めていくよ.

まずコンテナの素であるDockerイメージがどれだけあるか確認するコマンド,docker imagesからだ.

nigawa:~ kido$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
xeyes               latest              13060792b6cd        19 hours ago        9.95MB
alpine              latest              a24bb4013296        4 months ago        5.57MB
nigawa:~ kido$

IMAGE IDはDockerイメージを特定するIDで,これを元にコンテナを作らなきゃいけないのね.コンテナが仮想OSのインスタンスね. で,ubuntu 18.04のイメージをレポジトリから持ってくるコマンドがこちら.

nigawa:~ kido$ docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
171857c49d0f: Pull complete
419640447d26: Pull complete
61e52f862619: Pull complete
Digest: sha256:646942475da61b4ce9cc5b3fadb42642ea90e5d0de46111458e100ff2c7031e6
Status: Downloaded newer image for ubuntu:18.04
nigawa:~ kido$
nigawa:~ kido$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
xeyes               latest              13060792b6cd        19 hours ago        9.95MB
ubuntu              18.04               56def654ec22        2 weeks ago         63.2MB
alpine              latest              a24bb4013296        4 months ago        5.57MB
nigawa:~ kido$

これでイメージは取得できた. で,普通に

docker run --name test_ubuntu1804 -itd ubuntu:18.04 /bin/bash

ってすると,test_ubuntu1804っていうCONTAINER NAMEのコンテナが作成,起動しちゃうんだけど,今回はX Windowアプリを画面に出したいのね.だからちょっと変える.

_ [Docker] DockerコンテナからのX Windowアプリの表示を許す

macOSはX WindowがXQuartz というX11の実装を用意している.これを起動しておく必要がある.んで,XQuartzの環境設定からセキュリティyを

  • 接続を認証(Authenticate connections
  • ネットワーク・クライアントからの接続を許可(Allow connections from network clients

のチェックを入れておくのだ.これで事前準備オッケー.

で,Dockerのイメージ作成からやりなおし.

docker run -it -d --name test_ubuntu1804 -e DISPLAY=$(hostname):0 -v ~/.Xauthority:/root/.Xauthority ubuntu:18.04

これでDISPLAYでXサーバのホスト名(localhostでも127.0.0.1でもオッケー)を指定し,macOSの.Xauthorityをubuntuの/root/.Xauthorityとしてマウントするの.そうするとX Windowアプリが表示されるようになるぜ.その前に,ubuntuのパッケージ郡を更新しておいてね.

nigawa:~ kido$ docker exec -it test_ubuntu1804 /bin/bash
root@ecef00f1fad9:/# apt-get -y update
...
root@ecef00f1fad9:/# apt-get -y upgrade
...
root@ecef00f1fad9:/# apt install x11-apps
...
root@ecef00f1fad9:/# xeyes

これでDocker ubuntuのX Windowアプリが動く環境をmacOSで作れたぜ! もしX Windowアプリが表示されないときはDockerを再起動すればいいよ!じゃあね!

xeyes