AWS EC2上にRevolution R Openをインストールするメモ

AWS EC2上にRevolution R Openをインストールするメモ。

Revolution R OpenはRevolution Analytics社よりリリースされている、オープンソースかつ無料で使える、より高速なRです。

オリジナルのRはデフォルトではシングルスレッドで動作しますが、Revolution R Openはマルチスレッド処理に対応します。
また、オリジナルのRスクリプトも変更なく使えます。

http://revolutionanalytics.com/revolution-r-open

# 0. instance立ち上げ

EC2上にinstanceを立ち上げる。
とりあえず、お試しでm4.2xlarge (8 core)でも良いかも。

AWS m4.2xlarge
OS: Aamzon Linux

ツール、データはS3上に上げておくと、外部からダウンロードするより少し早いし、お財布にも少し優しい。

# 1. yum update

```bash
$ sudo yum -y update
```

# 2. swap設定

EC2instanceがt2.microのときswap領域を設定する

```bash
$ sudo dd if=/dev/zero of=/swap.img bs=1M count=2048
$ sudo chmod 600 /swap.img
$ sudo mkswap /swap.img
$ sudo bash -c 'echo "/swap.img    swap    swap    defaults    0    0" >> /etc/fstab'
```

swapを有効にする

```bash
$ sudo swapon -a
```

# 3. 日本時間に設定

```bash
$ sudo bash -c 'sed -e "s/ZONE=\"UTC\"/ZONE=\"Asia\/Tokyo\"/" < /etc/sysconfig/clock > /etc/sysconfig/clock.new'
$ sudo mv /etc/sysconfig/clock.new  /etc/sysconfig/clock
$ sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
$ sudo reboot
```

# 4. その他のツールのインストール

- jq
```bash
sudo yum -y install jq
```

- tmux
```bash
sudo yum -y install tmux
```

```bash
vi ~/.tmux.conf
```
```
set-window-option -g utf8 on # 日本語環境なら今のところ必須。
set-window-option -g mode-keys vi # コピーモードのキーマップ。標準はemacs
set-window-option -g automatic-rename off # ウィンドウ名が自動的に更新されないように
# t_Coを指定しているとtmuxでは色が正しくでないのでコメントに
#set t_Co=88
```

- mosh
```bash
sudo yum --enablerepo=epel install -y mosh
```
moshを使うならUDPの60000-61000を空けておく

- Install Git
```bash
sudo yum install -y git
```

- parallel
```bash
wget http://linuxsoft.cern.ch/cern/centos/7/cern/x86_64/Packages/parallel-20150522-1.el7.cern.noarch.rpm
sudo rpm -ivh parallel-20150522-1.el7.cern.noarch.rpm
```

- mpstat
```bash
sudo yum install -y sysstat
```

-P ALL ですべてのコアの情報が表示される。

```bash
mpstat -P ALL
```

- dstat

```bash
sudo yum install -y dstat
```

時間,CPU使用率,ロードアベレージ,メモリ使用量をファイルに保存するには

```bash
dstat -tclm --output dstat_log.csv
```

参考：dstat使ってみる - tweeeetyのぶろぐ的めも http://tweeeety.hateblo.jp/entry/20140121/1390275336

# 5.  Revolution R Open 3.2.2インストール(2015/12/25の時点)

```bash
sudo yum install -y gcc* curl-devel
```

```bash
wget https://mran.revolutionanalytics.com/install/RRO-3.2.2.el7.x86_64.rpm
sudo yum install -y RRO-3.2.2.el7.x86_64.rpm
wget https://mran.revolutionanalytics.com/install/RevoMath-3.2.2.tar.gz
tar zxvf RevoMath-3.2.2.tar.gz
cd RevoMath
sudo ./RevoMath.sh
```

Choose option 1 to install MKL and follow the onscreen prompts.

```bash
R
```
8coreなら半分の4coreをつかうようになる。（以下，起動時のメッセージ）

```
Multithreaded BLAS/LAPACK libraries detected. Using 4 cores for math algorithms.
```

## 適当にマルチスレッド関係のパッケージのインストール

```R
# INSTALL PARALLELR COMMON PACKAGES

install.packages("foreach", "iterators")

# REGISTER A PARALLEL BACKEND FOR PARALLEL COMPUTING

# Basic parallel backend for Windows
install.packages("doParallel")

# Basic parallel backend for Linux, OS X
install.packages("doMC")

# Cluster parallel backend (multiple nodes connected via snow network) for any platform
install.packages("doSNOW")
```

```R
install.packages("SuppDists")
```

## 動作確認
The Benefits of Multithreaded Performance with RRO · MRAN https://mran.revolutionanalytics.com/documents/rro/multithread/#mt-setget

```bash
wget https://gist.github.com/j-martens/a4d2fb38ed15147f7e47/raw/e0b283fd796c5d0f73646067e8eeb095b0c0e05d/mkl-benchmark-rro.R
wget https://gist.github.com/j-martens/834b021ef69953d6ff2c/raw/0114eb308fd399dcc59cb852cb1f437e5f467649/urbanek-benchmark-25.R
```

```bash
R --vanilla --slave < mkl-benchmark-rro.R
R --vanilla --slave < urbanek-benchmark-25.R
```