2013年1月31日 星期四

利用R的Rmpi來做平行化運算..

筆電Toshiba Satellite C640, Linux Mint 13

速度, 本來需要578.18 secs, 加上平行化後只需209.99 secs.


R 程式碼
rm(list=ls())
library(snow)
myfun <- function(ii) {
    set.seed(ii*100)
    ret = mean(rnorm(10000))
    ret
}
cluster = makeCluster(4,type="MPI")

### Normal
tt0 = Sys.time()
aa = sapply(1:100000,myfun)
tt1 = Sys.time()
bb = parSapply(cluster,1:100000,myfun)
tt2 = Sys.time()

stopCluster(cluster)

cat(sprintf(" - %.4f, %.4f\n",difftime(tt1,tt0,units="secs"),difftime(tt2,tt1,units="secs")))

在unix上安裝自己的R

工作站的R是舊版的2.13.2


  1. 到CRAN下載R的source code
    $ wget http://cran.csie.ntu.edu.tw/src/base/R-2/R-2.15.2.tar.gz
  2. 解壓縮到暫存目錄後, 先用./configure來客制化, 比如我把R裝載~/software/R-2.15.2下面
    $ ./configure --with-x --prefix=/home/u00yhh00/software/R-2.15.2 --enable-R-shlib
  3. 接下來就是一連串的等待時間了, 利用make & make install來安裝
    $ make & make install
  4. 修改自己目錄下的.bashrc這個檔案, 設定路徑
    export PATH=/home/u00yhh00/software/R-2.15.2/bin:PATH
  5. 重新登入, 或者是下source指令
    $ source .bashrc
  6. 已經成功更新到2.15.2囉...

2013年1月27日 星期日

Linux的無線網路問題(筆電)

公司的一台Toshiba Satellite C640筆電, 想來灌灌linux...
但是~~~一台沒有實體wifi開關的機器居然跟我說

"Wireless is disable by hardware switch"!!!

這是哪招啊....(/‵Д′)/~ ╧╧

找到一篇網路上的文章(原文)
居然說把電池拔掉30秒鐘, 在開機就好了~~~
就好了!!就好了!!就好了!!就好了!!就好了!!就好了!!就好了!!就好了!!就好了!!就好了!!就好了!!就好了!!就好了!!就好了!!就好了!!就好了!!

2013年1月20日 星期日

MATLAB vs. R

MATLAB與R都是矩陣運算的程式語言, 各有優缺點...
這是這兩種語言的一些function說明與比較, 在R官方網頁可以下載~
http://cran.r-project.org/doc/contrib/Hiebeler-matlabR.pdf

2013年1月18日 星期五

vim小筆記

分割視窗
:split filename      - 水平分割
:vsplit filename     - 垂直分割
"Ctrl+w" x 2         - 兩個視窗彼此切換

2013年1月17日 星期四

修改matlab的複製貼上快捷鍵

最近又跑回來用matlab了, 還真有點不太習慣!!
第1件很奇怪的狀況是 copy/paste 的組合鍵不見了....
本來是Ctrl+C, Ctrl+V, 現在變成另外一種組合...
查了一下goolge, 發現這是Emacs Default Sets與Windows Default Sets這兩派的問題...
只要到Preferences | Keyboard | Shortcuts下, 把Emacs改成Windows就可以了...
我的matlab版本是2012b linux version, 想必windows的應該也是差不多吧...

Reference: http://www.mathworks.com/support/solutions/en/data/1-A38RTS/index.html?product=SL&solution=1-A38RTS

2013年1月10日 星期四

將遠端伺服器的GUI傳回本機client

由於要跑matlab, 但是又只有server端才有安裝..
勢必要連線到遠端跑程式, 再把圖形結果擷取下來...
但是要怎樣秀出X11 windows的畫面呢, 下面用X11 Forwarding的方法來達成..

[Linux]
  1. 修改client端的 /etc/ssh/ssh_config 這個檔案, 找到下面文字並修改成 X11Forward yes.
  2. 利用ssh連線到server, 例如: ssh -X user@hostname.
  3. 鍵入 echo $DISPLAY, 看是否會出現類似 localhost:10.0 這樣的訊息.
  4. 測試一下吧, 鍵入 xclock& 看會不會出現小時鐘.


所以現在可以跑matlab程式囉!!





資料來源:
http://www.techotopia.com/index.php/Displaying_Ubuntu_Linux_Applications_Remotely_(X11_Forwarding)

2013年1月9日 星期三

[R] 交互對談指令

其實是一個小技巧, 因為某人是程式白癡, 我又不可能幫他跑所有可能組合...
所以只能把程式丟給他跑, 為了要讓介面人性化一點, 決定要用"交談式"的參數輸入~~

舉例來說, 下面的小函數就可以由使用者決定一個方陣的大小...
只要把這個code給copy/paste到R去, 就可以用demo()來跑程式了...


demo <- font="font" function="function">
    cat(" - Please input the size of matrix: ")
    n = readLines(n=1)
    n = as.numeric(n)
    mat = matrix(1,ncol=n,nrow=n)
    print(mat)
}

> demo()
 - Please input the size of matrix: 3
     [,1] [,2] [,3]
[1,]    1    1    1
[2,]    1    1    1
[3,]    1    1    1