rasterパッケージをインストールするには、SPというパッケージをインストールする必要があります。 また、R 2.9.1以上のバージョンであることが必要となります。
追加パッケージ(SP, raster)のインストールは以下のとおりです。
install.packages("sp", repos="https://cran.ism.ac.jp")
Warning in install.packages("sp", repos = "https://cran.ism.ac.jp") : 'lib = "/opt/local/R/2.15.1-sp1/lib64/R/library"' is not writable Would you like to use a personal library instead? (y/n) y Would you like to create a personal library ~/R/x86_64-unknown-linux-gnu-library/2.15 to install packages into? (y/n) y
install.packages("raster", repos="https://cran.ism.ac.jp")
参考 https://cran.r-project.org/web/packages/raster/index.html
rgdal パッケージは、Windows, Mac OS X用は、バイナリー版のパッケージとなっているため、Rからパッケージインストールが可能です。
Linuxの場合(科学技術計算システムでご利用の場合)は、ソースコードからコンパイルするため、必要なライブラリ(gdal, proj)が無いと、エラーとなります。
rgdal は、これらのライブラリをRから呼び出すため、実行時もこれらのライブラリを参照します。
Windows 版のインストールに比べると少しご面倒かと思いますが、以下の手順でお試しください。
手順
以下、Linuxのコマンドから実行します。 ($ はコマンドプロンプトですので、入力は必要ありません)
ソースコードを展開するディレクトリを作成し、作成したディレクトリに移動
$ mkdir src $ cd src
必要なソースコードをダウンロードする
$ wget https://github.com/OSGeo/proj.4/archive/4.9.2.tar.gz $ wget http://download.osgeo.org/gdal/1.11.3/gdal-1.11.3.tar.gz $ wget https://cran.ism.ac.jp/src/contrib/rgdal_1.1-3.tar.gz
ライブラリのソースコードを展開する
$ tar zxvf proj.4-4.9.2.tar.gz $ tar zxvf gdal-1.11.3.tar.gz $ tar zxvf rgdal_1.1-3
ライブラリ proj をコンパイルし、インストール
$ cd proj.4-4.9.2
ライブラリのインストール先ディレクトリを --prefix
で指定
(/home/username の部分を自分の環境に合わせてください)
$ ./configure --prefix=/home/username/Lib/ $ make $ make install $ cd ..
ライブラリ gdal をコンパイルし、インストール
$ cd gdal-1.11.3
ライブラリのインストール先ディレクトリを --prefix
で指定
(/home/username の部分を自分の環境に合わせてください)
libexpat ライブラリは、32bit版と64bit版があるため、
--with-expat=builtin
を指定します。
$ ./configure --prefix=/home/username/Lib/ --with-expat=builtin $ make $ make install $ cd ..
インストールしたライブラリのPATHを設定する (/home/username の部分を自分の環境に合わせてください)
$ setenv PATH /home/username/Lib/bin:$PATH $ setenv LD_LIBRARY_PATH /home/username/Lib/lib:$LD_LIBRARY_PATH
コマンドラインからRのパッケージをインストールする このとき、projライブラリの場所を指定する必要があります。 (/home/username の部分を自分の環境に合わせてください)
$ R CMD INSTALL --configure-args='--with-proj-lib=/home/username/Lib/lib' rgdal
実行時の環境変数をセットするために、rgdal-env というファイルをホームいディレクトリ直下に作成します。(/home/username の部分を自分の環境に合わせてください)
#%Module###################################################################### ## ## freeware rgdal-env Module ## proc ModulesHelp { } { puts stderr " freeware rgdal-env modulefile" } set version 0.1 set prefix /home/username/Lib set suplib /home/username/Lib/lib set exec_prefix ${prefix}/bin prepend-path PATH ${exec_prefix} prepend-path MANPATH ${prefix}/share/man prepend-path LD_LIBRARY_PATH ${suplib}
環境変数を読み込むために、以下のコマンドを実行します。
module load ./rgdal-env
環境設定を解除するには、以下のコマンドを実行します。
module unload ./rgdal-env
R2jags パッケージに必要な JAGS ライブラリをインストールする必要があります。
JAGSライブラリを個人のホームディレクトリにインストールし、LD_LIBRARY_PATHなどの環境設定を行う必要がありますので、 以下の手順でインストールします。
なお、プログラムの実行は確認しておりませんので、各自で動作確認をお願いします。
手順
インストール手順
1.JAGSのソースコードをダウンロードする
JAGS ホームページから、ソースコード(JAGS-3.4.0.tar.gz)をダウンロードします。
http://mcmc-jags.sourceforge.net/ http://sourceforge.net/projects/mcmc-jags/files/latest/download?source=files
2.ダウンロードしたファイルを、科学技術計算システムに転送します。
SCP(SFTP)を使って、科学技術計算システム(scion.cc.affrc.go.jp)にファイルを転送します。 (WinSCPなど)
scion.cc.affrc.go.jpには、作業用ディレクトリ(workやsrcなど)を作成しておくとよいでしょう。
コマンドでの転送例: (作業ディレクトリ work に転送)
scp JAGS-3.4.0.tar.gz username@scion.cc.affrc.go.jp:work/ Password: パスワードを入力
3.端末(PuTTY)を使って、scion.cc.affrc.go.jp にログイン
SSHクライアント端末(PuTTYなど)で、ログインしてから、以下の作業を行います。
4.個人用ライブラリ格納用ディレクトリを作成
個人用のライブラリを格納するためのディレクトリを作成します。
mkdir Lib
5.JAGSのソースコードを展開
cd work tar zxvf JGAS-3.3.0.tar.gz
6.JAGSのコンパイルとインストール
以下の手順で、コンパイルとインストールを行います。
cd ~/work/JGAS-3.3.0
以下のコマンドは、一行です。(ライブラリ格納場所を指定します。usernameの2箇所は、各自のログイン名に置き換えてください。)
./configure CC=icc CXX=icpc F77=ifort --with-blas="-L${MKLROOT}/lib/intel64 -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lpthread" --libdir=/home/username/Lib/lib64 --prefix=/home/username/Lib/
コンパイルします。
make
インストールします。
make install
7.環境設定用ファイルを作成します。
インストールしたJAGSライブラリを使用するためLD_LIBRARY_PATHなどの環境設定を行うための、設定ファイルを作成します。 (vimなどのエディタで、以下の内容のファイル(R2jags-env)を作成。usernameの箇所は、各自のログイン名に置き換えてください。)
#%Module###################################################################### ## ## freeware R2jags-env Module ## proc ModulesHelp { } { puts stderr " freeware r2jags-env modulefile" } set version 0.1 set prefix /home/username/Lib set suplib /home/username/Lib/lib64 set exec_prefix ${prefix}/bin prepend-path PATH ${exec_prefix} prepend-path MANPATH ${prefix}/share/man prepend-path LD_LIBRARY_PATH ${suplib}
8.環境設定のロード(およびアンロード)
環境設定ファイルの読み込みを行います。(R実行前に必ず読み込む。usernameの箇所は、各自のログイン名に置き換えてください。)
module load /home/username/R2jags-env
環境設定を解除するには、module unload とします。
module unload /home/username/R2jags-env
9.R2jagsパッケージのインストール
環境設定を読み込んだ後にRを実行して、パッケージのインストールを行います。 (端末上で環境設定を1度ロードすると、ログアウトするまで有効です)
module load /home/username/R2jags-env R
Rのプロンプトから、以下のコマンドで、パッケージのインストールを実行
> install.packages("R2jags", repos="https://cran.ism.ac.jp")
実行すると、rjagsパッケージも同時にインストールされます。
10.R実行
環境設定ファイルが読み込まれていない場合は、設定をロードしてRを起動します。
module load /home/username/R2jags-env R
パッケージを読み込みます。
> library(R2jags) 要求されたパッケージ coda をロード中です 要求されたパッケージ lattice をロード中です 要求されたパッケージ R2WinBUGS をロード中です 要求されたパッケージ boot をロード中です 次のパッケージを付け加えます: '‘boot’' The following object(s) are masked from ‘package:lattice’: melanoma 要求されたパッケージ rjags をロード中です Linked to JAGS 3.3.0 Loaded modules: basemod,bugs 要求されたパッケージ abind をロード中です 要求されたパッケージ parallel をロード中です 次のパッケージを付け加えます: '‘R2jags’' The following object(s) are masked from ‘package:coda’: traceplot
参考
個人環境に OpenBUGS を導入し、環境設定して利用可能です。
OpenBUGSを個人のホームディレクトリにインストールし、コマンドサーチPATHやLD_LIBRARY_PATHなどの環境設定を行う必要がありますので、 以下の手順でインストールします。
なお、プログラムの実行は確認しておりませんので、各自で動作確認をお願いします。
手順
インストール手順
1.OpenBUGSのソースコードをダウンロードする
注意: OpenBUGSのドメインが変更(openbugs.net)されており、多くのリンクが古いドメイン(openbugs.info)になっています。(キャッシング(金融)関係と思われるページが表示される) OpenBUGSのページ内のリンクも修正されていないことがありますのでご注意ください。
2.ダウンロードしたファイルを、科学技術計算システムに転送します。
SCP(SFTP)を使って、科学技術計算システム(scion.cc.affrc.go.jp)にファイルを転送します。 (WinSCPなど)
scion.cc.affrc.go.jpには、作業用ディレクトリ(workやsrcなど)を作成しておくとよいでしょう。
$ mkdir -p src/OpenBUGS
コマンドでの転送例: (作業ディレクトリ src/OpenBUGS に転送)
$ scp OpenBUGS-3.2.2.tar.gz username@scion.cc.affrc.go.jp:src/OpenBUGS/ Password: パスワードを入力
3.端末(PuTTY)を使って、scion.cc.affrc.go.jp にログイン
SSHクライアント端末(PuTTYなど)で、ログインしてから、以下の作業を行います。
4.個人用ライブラリ格納用ディレクトリを作成
個人用のライブラリを格納するためのディレクトリを作成します。
$ mkdir Lib
5.OpenBUGSのソースコードを展開
作業ディレクトリに移動
$ cd src/OpenBUGS
ファイルの展開
$ tar zxvf OpenBUGS-3.2.2.tar.gz
6.JAGSのコンパイルとインストール
以下の手順で、コンパイルとインストールを行います。(usernameの箇所は、各自のログイン名に置き換えてください)
$ cd OpenBUGS-3.2.2
コンパイル準備(ホームディレクトリ配下にインストール)
注意: フロントエンドサーバのデフォルトのGCCバージョン(gcc 4.3.4)ではコンパイルに失敗するため、GCC 4.6.3の環境を読み込みます。
$ module load gcc463
インストール先にホームディレクトリ配下(/home/USERNAME/Lib)を指定し、configureスクリプトを実行し、コンパイルとインストールを行います。
$ ./configure --prefix=/home/username/Lib $ make $ make install
インストールされたファイル
Lib ├── bin │ ├── OpenBUGS │ └── OpenBUGSCli ├── lib │ └── libOpenBUGS.so └── share ├── doc │ └── openbugs-3.2.2 │ ├── Developer │ ├── Examples │ ├── GeoBUGS │ │ ├── Examples │ │ └── Manuals │ ├── Manuals │ └── Reliability │ ├── Examples │ └── Manuals └── man └── man1
7.環境設定用ファイルを作成します。
インストールしたOpenBUGSを使用するためコマンドサーチPATHやLD_LIBRARY_PATHなどの環境設定を行うための、設定ファイルを作成します。 (vimなどのエディタで、以下の内容のファイル(openbugs-env)を作成)
#%Module###################################################################### ## ## freeware openbugs-env Module ## proc ModulesHelp { } { puts stderr " freeware openbugs-env modulefile" } set version 0.1 set prefix /home/username/Lib set suplib /home/username/Lib/lib set exec_prefix ${prefix}/bin prepend-path PATH ${exec_prefix} prepend-path MANPATH ${prefix}/share/man prepend-path LD_LIBRARY_PATH ${suplib}
8.環境設定のロード(およびアンロード)
環境設定ファイルの読み込みを行います。(R実行前に必ず読み込む)
$ module load /home/username/openbugs-env
環境設定を解除するには、module unload とします。
$ module unload /home/username/openbugs-env
9.パッケージのインストール
環境設定を読み込んだ後にRを実行して、BRugs, coda, R2WinBUGS, R2OpenBUGSなどのパッケージをインストールします。 (端末上で環境設定を1度ロードすると、ログアウトするまで有効です)
$ module load /home/username/openbugs-env $ R
Rのプロンプトから、以下のコマンドで、パッケージのインストールを実行
> install.packages("BRugs", repos="https://cran.ism.ac.jp") > install.packages("coda", repos="https://cran.ism.ac.jp") > install.packages("R2WinBUGS", repos="https://cran.ism.ac.jp") > install.packages("R2OpenBUGS", repos="https://cran.ism.ac.jp")
10.R実行
環境設定ファイルが読み込まれていない場合は、設定をロードしてRを起動します。
$ module load /home/username/openbugs-env $ R
パッケージを読み込みます。
> library(R2OpenBUGS) > library(BRugs) Welcome to BRugs connected to OpenBUGS version 3.2.2 > library(R2WinBUGS) Loading required package: coda Loading required package: lattice Loading required package: boot Attaching package: ‘boot’ The following object is masked from ‘package:lattice’: melanoma Attaching package: ‘R2WinBUGS’ The following objects are masked from ‘package:R2OpenBUGS’: as.bugs.array, attach.all, attach.bugs, bugs, bugs.data, bugs.log, detach.all, detach.bugs, monitor, read.bugs, write.model
参考
LinuxやMacOSでは、doMCパッケージをインストールすることで、マルチコア環境の並列化が可能です。
Windowsでは、doSNOWパッケージをインストールすることで、ループ処理を並列化することができます。
Rmpiを使った並列化も可能ですが、MPI環境(ライブラリ)のコンパイルや実行環境の設定などが必要です。
doMC
doMCパッケージを利用する場合、計算ノード(計算機)単体での並列計算(Type Aなら16並列)が可能です。
doMCパッケージのインストールは以下のとおりです。
install.packages("doMC", repos="https://cran.ism.ac.jp")
参考 https://cran.r-project.org/web/packages/doMC/index.html
doSNOW
doSNOWパッケージのインストールは以下のとおりです。
install.packages("doSNOW", repos="https://cran.ism.ac.jp")
参考 https://cran.r-project.org/web/packages/doSNOW/index.html
openMPIのパスを指定しても、コンパイルに失敗してしまいます。
こちらで確認できた手順についてお知らせします。(gcc + openMPI でのコンパイルは成功しましたが、IntelやPGIでのコンパイルはできませんでした。)
なお、プログラムの実行は試しておりませんので、コンパイル後の動作確認をお願いします。
手順
$ module load openmpi ($ は、フロントエンドサーバのコマンドプロンプト)
> install.packages("Rmpi", repos="https://cran.ism.ac.jp", configure.args = paste("--with-mpi=/opt/local/openmpi")) (> は、Rのプロンプト)
#!/bin/sh #PBS -q small #PBS -l select=1:ncpus=16:mpiprocs=16 #PBS -N rmpi #PBS -l walltime=1:00:00 #PBS -V eval `/usr/bin/modulecmd bash load /opt/local/modules/sp1/openmpi` cd $PBS_O_WORKDIR R --vanilla < rmpi-sample.r > rmpi-sample-16.txt
なお、他の MPI の並列化プログラムを実行する際は、module unload openmpi で環境設定を外してください。 (正常に動作しない場合があります。)
SGI MPT(Message Passing Toolkit)環境へのRmpiパッケージインストール方法が分かりません。
こちらで確認できた手順をお知らせします。
手順
$ cd R-Work (作業用ディレクトリに移動) $ wget https://cran.ism.ac.jp/src/contrib/Rmpi_0.6-3.tar.gz ($ は、フロントエンドサーバのコマンドプロンプト)
$ setenv CC mpicc $ setenv ORTED /opt/openmpi/bin/orted $ R CMD INSTALL --no-test-load --configure-args="--with-Rmpi-type=OPENMPI --with-Rmpi-libpath=$MPI_ROOT/lib --with-Rmpi-include=$MPI_ROOT/include" ./Rmpi_0.6-3.tar.gz ($ は、フロントエンドサーバのコマンドプロンプト)
SGI MPT(Message Passing Toolkit)環境で、Rmpi + doSNOW + foreachプログラムが実行できません。
Rmpi + doSNOWによる並列実行は、spawnによるプロセス生成を行う様な動作をするようです。 SGI MPT環境で、Rmpi + doSNOWを使ったプログラムを実行するには、複数の環境変数等を設定する必要があるようです。
こちらで確認できた手順をお知らせします。
ジョブスクリプトにて環境変数をセット
ジョブスクリプトで、環境変数を設定し実行します。
実行コマンド
#!/bin/sh #PBS -q large #PBS -l select=2:ncpus=16:mpiprocs=16 #PBS -N rmpi #PBS -l walltime=1:00:00 #PBS -V cd $PBS_O_WORKDIR eval `/usr/bin/modulecmd bash load R` # -- Generate MPI_UNIVERSE host list from $PBS_NODEFILE export MPI_UNIVERSE=`uniq -c $PBS_NODEFILE | awk '{ print $2 " " $1 ", " }' | tr -d "\n" | sed -e 's/, $//'` mpijob -np 1 R --no-save -q -f ./dosnow-mpi-test.r > dosnow-mpi-test-32.txt
実際にテストしたRプログラム
# ライブラリの読み込み library(Rmpi) library(doSNOW) # 並列数の指定 n_slaves <- 31 # 乱数発生数の指定 N <- 10^6 # 並列化クラスタの作成 cl <- makeCluster(n_slaves, type = "MPI") registerDoSNOW(cl) # 計算の実行 result <- system.time(foreach(i = 1:1000,.combine = "cbind") %dopar% { sum(rnorm(N)) }) # クラスタの終了 stopCluster(cl) # 結果の表示 core.d <- c(n_slaves,result[3]) names(core.d) <- c("Slaves","ProcTime") print(core.d) # MPI終了処理 .Last <- function(){ if (is.loaded("mpi_initialize")){ if (mpi.comm.size(1) > 1){ print("Please use mpi.close.Rslaves() to close slaves") mpi.close.Rslaves(comm=1) } } print("Please use mpi.quit() to quit R") mpi.quit() }
※ SGI MPT環境でのRmpiプログラム実行については、Rmpiに含まれている .Rprofileが必要なケースなど、不明な点があり、現在、確認中です。
SGI MPT環境でのRmpiプログラム実行について、上記プログラム中の # MPI終了処理(mpi.close.Rslavesやmpi.quitなど)を行わない場合、以下のようなメッセージが出ます。
MPT: MPI_COMM_WORLD rank 0 has terminated without calling MPI_Finalize() aborting job
doMC, doSNOW, Rmpi + doSNOWによる並列化比較
乱数をN個発生させて合計するだけのループ処理を比較した。
N <- 10^6 result <- system.time(foreach(i = 1:1000,.combine = "cbind") %dopar% { sum(rnorm(N)) })
SGI UV2000 Xeon E5-4650L 8cores 2.6GHz 32CPU 256cores | SGI ICE X Xeon E5-2670 8cores 2.6GHz 2CPU 16cores | NEC Mate Windows 8 Core i7 3770 3.4GHz | HP s5350jp Windows 7 64bit Core i7 860 4cores 2.8GHz | MacBook Air Mid 2011 Core i5 2557M 2cores 1.7GHz | |||
---|---|---|---|---|---|---|---|
Cores | doMC | doSNOW (SOCK) | OpenMPI + Rmpi + doSNOW | SGI MPT + Rmpi + doSNOW | doSNOW | doSNOW | doMC |
1 | 100.511 | 101.264 | 110.975 | 77.97 | 100.95 | 102.763 | |
2 | 50.445 | 51.162 | 55.782 | 39.51 | 54.14 | 60.451 | |
4 | 25.482 | 27.276 | 28.196 | 21.08 | 31.86 | 48.301 | |
8 | 12.99 | 13.996 | 14.431 | 15.92 | 23.2 | 47.869 | |
16 | 6.931 | 7.563 | 8.006 | ||||
32 | 4.104 | 4.451 | 8.284 | 4.141 (31slaves) | |||
64 | 3.247 | 3.605 | 2.276 (63slaves) | ||||
128 | 1.461 (127slaves) |