トップ «前の日記(2020年02月26日) 最新 次の日記(2020年10月13日)» 編集

役に立たない情報


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!