Hatena::ブログ(Diary)

驚異のアニヲタ社会復帰への道

Prima Project

2016-04-29

MikuHatsune2016-04-29

RでGPU を使う

RでGPUを使う時がきたようだ。

しかし、使える環境を整備するだけで1日潰れた。

 

OSubuntu 14.04

メモリは 32GB

CPUIntel(R) Xeon(R) CPU E5-1620 v3 @ 3.50GHz

GPUGeForce GTX 750 Ti が2枚

 

NVIDIA の準備

GTX 750 Ti のドライバーは361だが、apt-get でなれれば下でとってくる。

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update

CUDA ToolKit を入れる

こちらを参考にCUDA 7.5 にしておいた。

ダウンロードして

sudo dpkg -i cuda-repo-ubuntu1404_7.5-18_amd64.deb
sudo aptitude update
sudo aptitude install -y cuda
sudo reboot

# 再起動後
/usr/local/cuda-7.5/bin/cuda-install-samples .
cd NVIDIA_CUDA-7.5_Samples/1_Utilities/deviceQuery/
make
./deviceQuery

 

これでGPU を使う準備はできた。ここからCaffeやChainer などGPU ツールも使うことがたぶんできる。

RでGPU を使うためのR パッケージをインストールするが、こちらTask viewer のHPC一覧ではgputools, HiPLARM, rpud, magma, gcbd, OpenCL, WideLM, cudaBayesreg, permGPU, gmatrix, gpuR がある。

太字はがんばればインストールできたパッケージ、その他は依存関係をいろいろ入れてもできなかったパッケージ。

 

gputools

結局これになりそう。

普通にインストールしていたら、下のように言われてしまい、R.h がない。

classification.cu:24:14: error: R.h: No such file or directory
make: *** [classification.o] Error 1
ERROR: compilation failed for package ‘gputools’
* removing ‘/usr/local/lib64/R/library/gputools’

The downloaded source packages are in
    ‘/tmp/RtmpD9AnXS/downloaded_packages’
Updating HTML index of packages in '.Library'
Making packages.html  ... done
Warning message:
In install.packages("gputools") :
  installation of package ‘gputools’ had non-zero exit status

こちらを参考に下記を実行すると、うまく行く。

cd /usr/lib/R
sudo ln -s /usr/share/R/include .

やってみる。

行列積なのでO(n^2)のオーダーで時間がかかる。

あまり速くならない。3倍速くらい。

しかも途中で device memory allocation failed って言われるから小休止が必要。

library(gputools)
gpu.matmult <- function(n) {
    A <- matrix(runif(n * n), n ,n)
    B <- matrix(runif(n * n), n ,n)
    tic <- Sys.time()
    C <- A %*% B
    toc <- Sys.time()
    comp.time1 <- toc - tic
    cat("CPU: ", comp.time1, "\n")
    tic <- Sys.time()
    C <- gpuMatMult(A, B)
    toc <- Sys.time()
    comp.time2 <- toc - tic
    cat("GPU: ", comp.time2, "\n")
    return(c(comp.time1, comp.time2))
}

N <- c(5, 10, 50, 100, 500, 1000, 2000, 3000, 5000)

com <- mapply(gpu.matmult, N)

cols <- c("black", "blue")
matplot(N, t(com), type="l", lwd=2, lty=1, xlab="No. N", ylab="Computation time [sec]", col=cols, log="xy")
legend("topleft", legend=c("CPU", "GPU"), lty=1, lwd=2, col=cols)

f:id:MikuHatsune:20160429195721p:image

 

rpud

RでGPU使ってみたでイチオシの

rpudをやってみる。

CRAN からはないっぽいのでソースを落としてきてインストールする。

依存関係として

install.packages(c("coda", "SparseM"))

としておけばわりと簡単にインストールできる。

というわけでやってみたら

rpuDist(m) : No active license is found.

ファッ!?!?

お金がいるらしい。

 

OpenCL

依存パッケージをいれていたらインストールできた。

R内でCpp 的に書ける様子。ガチ勢。

 

permGPU

Bioconductor のBiobase をいれたらインストールできた。

mRNA の検定がt.test やwilcoxon.test などできるらしい。が、他の使い方はよくわからない。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/MikuHatsune/20160429/1461925574