目次
Hint & Tips
統計解析ソフト R に関する情報
SAS から R への移行に関する情報
R のパッケージインストールに関する情報
rasterパッケージをインストールするには、SPというパッケージをインストールする必要があります。 また、R 2.9.1以上のバージョンであることが必要となります。
追加パッケージ(SP, raster)のインストールは以下のとおりです。
- R コマンドで、R を起動します。
- 次のコマンドで、sp パッケージをインストールします。
install.packages("sp", repos="https://cran.ism.ac.jp")
- 途中で、利用者環境のライブラリ格納用ディレクトリを作成するかどうかを聞いてきますので y とします。
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
- 同様に raster パッケージをインストールします。
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 版のインストールに比べると少しご面倒かと思いますが、以下の手順でお試しください。
手順
- 必要なライブラリをダウンロードする。
- ダウンロードしたライブラリ(ソースコード)をコンパイルして、ホーム ディレクトリ配下にインストールする。
- 配置したライブラリのパスを環境変数にセットする。
- rgdal パッケージをインストールする。
- 環境設定をログイン時に行うため、設定ファイルの変更を行う。
以下、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 の部分を自分の環境に合わせてください)
- rgdal-env
#%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などの環境設定を行う必要がありますので、 以下の手順でインストールします。
なお、プログラムの実行は確認しておりませんので、各自で動作確認をお願いします。
手順
- JAGSのソースコードをダウンロード
- SCP(SFTP)で科学技術計算システムに転送
- 端末を使って、科学技術計算システムにログイン
- 個人用ライブラリ格納用ディレクトリの作成
- JAGSのソースコードを展開
- JAGSのコンパイルとインストール
- 環境設定ファイルの作成
- 環境設定のロードとアンロード
- R2jagsパッケージのインストール
- Rの実行
インストール手順
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の箇所は、各自のログイン名に置き換えてください。)
- R2jags-env
#%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などの環境設定を行う必要がありますので、 以下の手順でインストールします。
なお、プログラムの実行は確認しておりませんので、各自で動作確認をお願いします。
手順
- OpenBUGSのソースコードをダウンロード
- SCP(SFTP)で科学技術計算システムに転送
- 端末を使って、科学技術計算システムにログイン
- 個人用ライブラリ格納用ディレクトリの作成
- OpenBUGSのソースコードを展開
- OpenBUGSのコンパイルとインストール
- 環境設定ファイルの作成
- 環境設定のロードとアンロード
- BRugs, coda, R2WinBUGS, R2OpenBUGSなどのパッケージインストール
- Rの実行
インストール手順
1.OpenBUGSのソースコードをダウンロードする
- OpenBUGS Home Page
注意: OpenBUGSのドメインが変更(openbugs.net)されており、多くのリンクが古いドメイン(openbugs.info)になっています。(キャッシング(金融)関係と思われるページが表示される) OpenBUGSのページ内のリンクも修正されていないことがありますのでご注意ください。
- Download Page
- OpenBUGS-3.2.2.tar.gz をダウンロード
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)を作成)
- 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
参考
R の並列化に関する情報
LinuxやMacOSでは、doMCパッケージをインストールすることで、マルチコア環境の並列化が可能です。
Windowsでは、doSNOWパッケージをインストールすることで、ループ処理を並列化することができます。
Rmpiを使った並列化も可能ですが、MPI環境(ライブラリ)のコンパイルや実行環境の設定などが必要です。
doMC
doMCパッケージを利用する場合、計算ノード(計算機)単体での並列計算(Type Aなら16並列)が可能です。
doMCパッケージのインストールは以下のとおりです。
- R コマンドで、R を起動します。
- 次のコマンドで、doMC パッケージをインストールします。
install.packages("doMC", repos="https://cran.ism.ac.jp")
- 初めてRパッケージをインストールする場合は、利用者環境のライブラリ格納用ディレクトリを作成するかどうかを聞いてきますので y とします。
参考 https://cran.r-project.org/web/packages/doMC/index.html
doSNOW
doSNOWパッケージのインストールは以下のとおりです。
- R コマンドで、R を起動します。
- 次のコマンドで、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でのコンパイルはできませんでした。)
なお、プログラムの実行は試しておりませんので、コンパイル後の動作確認をお願いします。
手順
- gcc + OpenMPI 環境設定(以下のコマンドを実行)
$ module load openmpi ($ は、フロントエンドサーバのコマンドプロンプト)
- Rを起動し、インストールコマンドを実行します。
> install.packages("Rmpi", repos="https://cran.ism.ac.jp", configure.args = paste("--with-mpi=/opt/local/openmpi")) (> は、Rのプロンプト)
- パッケージのインストール先は、/home/username/R/x86_64-unknown-linux-gnu-library/2.15/ 配下になります。
- 実行する場合も、OpenMPI 環境設定が必要ですので、環境設定コマンド(module load openmpi)を、最初に実行して下さい。
- バッチによる実行の際は、バッチ用スクリプトファイルの R プログラム実行の前に、環境設定コマンドを記述してください。
- rmpi-test.sh
#!/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パッケージインストール方法が分かりません。
こちらで確認できた手順をお知らせします。
手順
- CRANから、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 ($ は、フロントエンドサーバのコマンドプロンプト)
- パッケージのインストール先は、/home/username/R/x86_64-unknown-linux-gnu-library/2.15/ 配下になります。
- OpenMPI環境でインストールした Rmpi パッケージは上書きされ、OpenMPIでの利用はできなくなります。
- SGI MPT環境でRmpiを実行するには、実行環境の設定が必要です。(現在確認中ですが、実行するRプログラムに依存します)
SGI MPT(Message Passing Toolkit)環境で、Rmpi + doSNOW + foreachプログラムが実行できません。
Rmpi + doSNOWによる並列実行は、spawnによるプロセス生成を行う様な動作をするようです。 SGI MPT環境で、Rmpi + doSNOWを使ったプログラムを実行するには、複数の環境変数等を設定する必要があるようです。
こちらで確認できた手順をお知らせします。
ジョブスクリプトにて環境変数をセット
ジョブスクリプトで、環境変数を設定し実行します。
- MPI_UNIVERSE=host1 16, host2 16 (ホスト名とプロセス生成可能な数)
実行コマンド
- mpijob (SGI MPT環境では、mpijobコマンドを使ってください。mpirunは使用しない)
- spawnではなく、最初から複数プロセスを起動する場合(doSNOWを使わない場合?)は、-up, -np オプションは不要です。
- オプション -np 1 (起動プロセス数を 1 とします。Rmpiから Slaveプロセスが生成される)
- R –no-save -q -f ./dosnow-mpi-test.r > dosnow-mpi-test-32.txt (Rの実行)
- rmpi-mpt-test.sh
#!/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プログラム
- 並列数の指定は、使用するコア数から 1 を引いた値(この場合 31)にしてください。
- SGI MPT環境では、この指定が 32 だと、うまく動作しませんでした。
- dosnow-mpi-test.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) |
- 各1回の実行による参考値である。
- ICE X(OpenMPI + Rmpi+doSNOW)は、複数ノードでのOpenMPI実行環境が未整備のため、16coreを超える実行は不可(値は増加)
- ICE X(SGI MPT + Rmpi+doSNOW)は、親プロセスに1コア割り当てたため、並列数はそれぞれ1少ない(N_Cores - 1 = N_Slaves)
- Core i7は、4core 8スレッド、Core i5は、2core 4スレッドで、それ以上の性能向上は見られない
- NEC Core i7 3.4GHz は、動作周波数が高いため、他と比較して処理速度が速い
- Nの大きさやループ長等によるが、上記の計算では、16並列以上の性能向上は、極僅かである
- この例では、実効効率としては、8並列くらいまでが良いと思われる
Vim に関する情報
Vimに関する情報
vimでファイルを開くと、ファイルの拡張子によって、プログラムを見やすいように色分けした表示になりますが、ターミナルのバックグラウンドによっては、見辛い色になることがあります。
vimの設定によって、バックグラウンドの色に合わせた色合いに変更することができます。
vimのコマンドモードからコマンドを入力するか、.vimrcに設定します。
:set background=dark <= 暗い色のバックグラウンド :set background=light <= 明るい色のバックグラウンド
Vimは構文ハイライトによってテキストの一部を別の色で表示することができます。
この機能を有効または無効にするには、以下のコマンドを使います。
:syntax on <= 有効にする :syntax off <= 無効にする
これらのコマンドを.vimrcに設定しておくことで、常時ONまたはOFFとすることができます。
VimCryptによる暗号化メモ
Vimの暗号化機能(VimCrypt)を使って、ファイルの暗号化ができます。 これを使って、暗号化メモ(秘密メモ)を作成する方法を紹介します。
VimCrypt用の設定ファイル作成
VimCrypt用の設定ファイルを作成します。 設定ファイル $USER/.vimrc に set cm=blowfish2 の記述を追加します。(デフォルトのzipは非推奨。cryptmethod(cmと省略可))。
- .vimrc
set cryptmethod=blowfish2
必要に応じて、swapfile等を作成しない設定を追加します。別の設定ファイル(.vimencryptなど)を作成し、起動時に vim -u ~/.vimencrypt の様に、設定ファイルを読み込むことも可能です。
- .vimencrypt
source ~/.vimrc => -u オプションで起動する場合に、元の設定ファイルを読み込む。 set cm=blowfish2 => blowfish2暗号化を使用する。 set nobackup => バックアップファイル(faile.name~)を作成しない set noswapfile => swap(編集前の状態を保存する一時ファイル)を作成しない。 set nowritebackup => 上書き保存前の一時ファイルを作成しない set viminfo= => 編集情報、検索情報を保持する一時ファイルを作成しない。
暗号化ファイルの作成
- 内容を暗号化したいファイルを作成します。ファイルを作成するときに -x オプションをつけるか、ファイルを開いた状態で :X コマンドを入力し、パスワードを設定します。
:X 暗号化用のキーを入力してください: *************** もう一度同じキーを入力してください: *************** Vimの環境によっては英語表示となります。
- パスワードを設定した状態で、ファイルを保存すると暗号化されます。
:w "himitsu-memo.txt" [unix][blowfish2暗号化] 7L, 59C 書込み
暗号化されたファイルを開く
暗号化されたファイルを開く際に、パスワードの入力を求められます。
暗号キーが必要です: "himitsu-memo.txt" 暗号化用のキーを入力してください: ***************
パスワードを間違えると、復号されずにリードオンリー(書き込み不可)でファイルを読み込みます。
VimCrypt~02!?c??N?^Yu7L......の様に表示される。
SQLiteに関する情報
/lfs/username(ユーザ領域)でSQLite3のデータベースファイルを作成しても、“Error: database is locked”とエラーが出てデータベースが使用できません。 (/home/username では使用できます。)
/lfs と /home では、ファイルシステムの仕組みが異なります。 調べてみたところ、/lfs(lustre file system)では、SQLite からのファイルロックができないために、使用できないようです。
/home であれば使用できますが、/home も NFS ですので、複数のノードから同時にアクセスがあった場合(同じ DB を参照する複数のジョブを投入するなど)に、ロックできないなどのエラーが出る可能性があります。
/lfs ではなく、/home でのご使用をお願いいたします。
コンパイル時にライブラリのリンクを指定していないのが原因と考えられます。
C++のコンパイラは、icpc (Intel), g++ (GCC)があります。
ライブラリのリンクを指定しないでコンパイルを実行するとエラーとなります。
$ icpc test-prog.cpp /tmp/icpcciKPe6.o: In function `main': test-prog.cpp:(.text+0x45): undefined reference to `sqlite3_open' test-prog.cpp:(.text+0x52): undefined reference to `sqlite3_close' test-prog.cpp:(.text+0x6a): undefined reference to `sqlite3_errmsg'
-lsqlite3 として、sqlite3のライブラリをリンクするとエラーにならずに、コンパイルできます。
$ icpc test-prog.cpp -lsqlite3 または、 $ g++ test-prog.cpp -lsqlite3
とりあえず、/home 配下であれば、DB のオープン、クローズはできるようです。