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!