SlideShare a Scribd company logo
RでGPU使ってみた

           Tokyo.R #19
            和田 計也

サイバー系
サイバー系


     はじめに



     ※この発表は個人の
     見解であり、所属する
     組織の公式見解では
     ありません。

2011/11/19            1
サイバー系


     アジェンダ

     1.      自己紹介
     2.      GPUの話
     3.      R上で動くGPU演算をしてくれるパッケージ紹介
     4.      ベンチマーク結果




2011/11/19                                     2
サイバー系


     自己紹介

  和田 計也(@wdkz)
         静岡県袋井市出身



  サイバー系企業でデータマイニングエンジニア職
         創立記念日が3月18日
         社長の出身地が福井県鯖江市



  前職はバイオベンチャー
         バイオマーカ探索してた
         学生時代は枯草菌の研究




2011/11/19                          3
サイバー系


     唐突ですが

      R遅!!ですね。
                あまりの遅さに気を失いかけたことありませんか?




                 そこで
                 GPUですよ
2011/11/19                                         4
サイバー系


     GPU

      GPUとは?
                Graphics Processing Unitの略
                3Dグラフィックスの表示に必要な計算処理(3D座標から2D座標へ
                 の座標変換など)を行う半導体チップ
                (最新のは)448コア




2011/11/19                                             5
サイバー系


     GPU

    東工大のスパコン、TSUBAME2.0にもGPUが使われています!




2011/11/19                                6
サイバー系


     GPGPU

    General-purpose computing on graphics processing
     units; GPUによる汎目的計算

                CUDA
                                  今日はこれ(一般的だから)



                ATI Stream




                OpenCL




2011/11/19                                                  7
サイバー系


     ちょっと待て




でもお高い
んでしょ?
2011/11/19            8
サイバー系


     高い…




      Amazonで(専用の)GPUカードだけ買うと
      しても28万くらいする..




       GPUカード搭載のサーバマシンだと90万弱もする..

2011/11/19                                  9
サイバー系


     じゃあどうするの?

             こんなのとかでも一応動く。
             Amazonだと5000円くらいから




             一応問題点
             ・デスクトップマシンもってない
             ・それなりのスペックでベンチマークしないと
              過小評価しちゃって二度と日の目を見ないかもしれんし。

                    それなりのスペック・・・①GPUカードに搭載されてるメモリ量
                                ②IO速度
                                ③倍精度浮動小数点計算


2011/11/19                                               10
サイバー系


     結局GPUはどうすればいいの?
            AWS(Amazon Web Service)で可能です




                                            これ




2011/11/19                                           11
サイバー系


     AWS Management Consoleから始める
            とりあえず試すだけなので「Spot Instances」でいいや




                                                よくわからん
                                                からこっち
                                                使ってみた




                                SAS美




2011/11/19                                            12
サイバー系


     AWS Management Consoleから始めるSAS美




        1時間0.665ドルからってかいてあるから、Max Priceのとこに
         「0.665」っていれてContinueボタン押しとく

2011/11/19                                         13
サイバー系


     3.1 Rのビルド

            まあ、あれだ。いろいろやるとこんな感じ↓で使えるように
             なった。




        詳しくは@KenTamagawa さんをフォロー
         するか本読んでね♪

2011/11/19                                     14
サイバー系


     AWS上のAmazon Linux AMIでRをコンパイル

     sudo yum install gccsudo
     sudo yum install gcc-gfortran                  何か絶望的にいろいろ入ってない
     sudo yum install gcc-c++
     sudo yum install readline-devel
     sudo yum install make
     wget ftp://ftp.u-aizu.ac.jp/pub/lang/R/CRAN/src/base/R-2/R-2.14.0.tar.gz
     tar -xvf R-2.14.0.tar.gz
     cd R-2.14.0                     ←このオプションつけとかないと後でGPU関連の
                                       パッケージがインストールできない。
     ./configure --enable-R-shlib
     make
     sudo make install




2011/11/19                                                                      15
サイバー系


     AWS上のAmazon Linux AMIでGPU関連のを入れる

     yum install libGLU-devel libXi-devel libXmu-devel freeglut-devel kernel-devel
                                                      必要なライブラリをいれて
     wget
        http://developer.download.nvidia.com/compute/cuda/4_0/drivers/devdriver_4.0
        _linux_64_270.41.19.run                     Developer Drivers for Linux
     sudo ./devdriver_4.0_linux_64_270.41.19.run    を入れて

     wget http://developer.download.nvidia.com/compute/cuda/4_0/toolkit/cudatoolkit
        _4.0.17_linux_64_rhel6.0.run
                                                     CUDAを入れて
     sudo sh cudatoolkit_4.0.17_linux_64_rhel6.0.run (Amazon Linux AMIのベースlinuxが何かよく
                                                      わからんかったけどredhat 6.0のでいけたわ~)
     wget
        http://developer.download.nvidia.com/compute/cuda/4_0/sdk/gpucomputingsdk_
        4.0.17_linux.run
     ./gpucomputingsdk_4.0.17_linux.run
                                                    GPU Computing SDKを入れる
     cd NVIDIA_GPU_Computing_SDK/C
     sudo make
                         *ここら辺のはもともとインストール済みっていう噂なんだけど,
                          全部入れ直してみた。
2011/11/19                                                                               16
サイバー系


     動作確認する・Win

  cd NVIDIA_GPU_Computing_SDK/C
  ./bin/linux/release/deviceQuery




     ここまでで、CUDAが動く環境
     が整った。次にR上でCUDAが
     利用することを考える



2011/11/19                              17
サイバー系


     RでGPUを使えるパッケージ

      Gputool
              http://brainarray.mbni.med.umich.edu/brainarray/rgpgpu/
              使える関数多い




      Rpud
              http://www.r-tutor.com/content/download
              Gputoolより高速だった
              svmはe1071パッケージのsvmに準拠
                   いろんなカーネルトリック使える
              こっち使ってみた




2011/11/19                                                                   18
サイバー系


     Rpudをインストール

     export CUDA_HOME=“/usr/local/cuda”
     export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${CUDA_HOME}/lib64“
     export PATH=${CUDA_HOME}/bin:${PATH}         環境変数を設定して
     export R_LIBS_USER="${HOME}/lib/R“

     R
                                                    必要なパッケージSparseMを
     >install.packages("SparseM")
                                                    インストールして
     >q(“no”)

     wget http://www.r-tutor.com/sites/default/files/rpud/rpud_0.1.1.tar.gz
     R CMD INSTALL rpud_0.1.1.tar.gz                 Rpudをいれて


     wget http://www.r-tutor.com/sites/default/files/rpud/rpudplus_0.1.1.tar.gz
     tar xvf rpudplus_0.1.1.tar.gz                  Rpudplusをいれる
     cd rpudplus_0.1.1
     ./install.sh                                   RPUSVMってのもあるので
                                                    お好きな人はどうぞ
2011/11/19                                                                            19
サイバー系


     (参考資料)gputoolsのインストール

            今回は使わなかったけど…
            前々々ページに記載してあるCUDAインストールまで完了しているとする

       R
       > install.packages(“gputools”)’




              お手軽♪
2011/11/19                                     20
サイバー系


     Rpudパッケージについて
            基本的に以下の4つの手法しか(まだ)実装されていません
            基本的に普通の関数と同様の引数で使えますので悩みません


                            CPUで計算               GPUで計算
                                                 (rpud)
              相関            cor                  rpuCor
              距離            dist                 rpuDist
              階層クラスタリング     hclust               rpuHclust
              SVM(トレーニング)   e1071::svm           rpuSvm
              SVM(予測)       e1071::predict.svm   predict.rpuSvm




2011/11/19                                                            21
サイバー系


     Rpudをちょっと使ってみる

     R
     >library(rpud) #これでrpudもrpudplusも両方読み込まれる
     >A <- runif(100000000); B <- runif(100000000)
     >system.time(cor (A, B), method=“pearson”)
                                        まずは通常のCPUで(ピアソンの)相関計数計算
     ># user system elapsed
     ># 1.858 0.003 1.860

     >system.time(gpuCor(A, B, method="pearson"))
     ># user system elapsed
                                        次にGPUで(ピアソンの)相関計数計算
     ># 1.858 0.002 1.860




2011/11/19
                                       ←     Kendall以外はCPUで処理されてた

                                                                      22
サイバー系


     Rpudをちょっと使ってみる・2

     R
     >library(rpud) #これでrpudもrpudplusも両方読み込まれる
     >A <- runif(100000000); B <- runif(100000000)
     >system.time(cor (A, B), method=“kendall”)
                                        まずは通常のCPUで(ケンドールの順位)相関計数計算
     ># user system elapsed
     ># 199.025 0.000 198.926

     >system.time(gpuCor(A, B, method=“kendall"))
     ># user system elapsed
                                       次にGPUで(ケンドールの順位)相関計数計算
     ># 4.262 2.183 6.581




              速っ!!
2011/11/19                                                           23
サイバー系


     ベンチマークのマシン構成
            CPUマシン
              Intel Xeon L5520@2.27GHz(L2 8M), 4Cores (8Threads) x 2
                                             なんだけど、シングルスレッドしか使わなかった
              32Gbyte メモリ


            CPUマシン
              Intel Xeon X5570@2.93GHz(L2 8M), 4Cores (8Threads) x 2
              24Gbyte メモリ
              Tesla M2050 x 2
               1.15GHz GPU (448 Cores)
               3Gbyte グローバルメモリ
               48Kbyte / blockの共有メモリ




2011/11/19                                                                  24
サイバー系


     ベンチマーク①

       >var.nums <- c(1000,5000,10000,50000,1e+5,5e+5,1e+6,5e+6)
       >for(i in 1:length(var.nums)){
       A <- runif(var.nums[i]); B <- runif(var.nums[i])
       +#CPUで計算
       +System.time(cor(A, B), method=“kendall”)
       +
       +#GPUで計算
       +System.time(rpuCor(A, B), method=“kendall”)
       }                                                ケンドールの順位相関係数計算時間
                                            30000


                                            25000


長いベクトル同士の相関係数                               20000
を算出。戻り値は長さ1のベクトル
                                  処理時間(秒)




                                                                    約40倍高速化
                                            15000
                                                                                                                      CPU
                                                                                                                      GPU
                                            10000


                                            5000


                                               0
                                                    0   1000000   2000000   3000000   4000000   5000000   6000000
                                                                            変数の数
2011/11/19                                                                                                                  25
サイバー系


     ベンチマーク②

       >var.nums <- c(1000,5000,10000,50000)
       >for(i in 1:length(var.nums)){
       A <- matrix(runif(var.nums[i]*100), var.num(i), 100)
       B <- matrix(runif(var.nums[i]*100), var.num[i], 100)
       +#CPUで計算
       +System.time(dist(A, B), method=“euclidean”)
       +
       +#GPUで計算
       +System.time(rpuDist(A, B), method=“euclidean”)                    ユークリッド距離計算時間
       }                                        300


                                                        250

   長い行 x 100列のマトリックス同士
                                                        200
   の距離を算出。
                                              処理時間(秒)




   戻り値はdistオブジェクト                                       150                        約7~8倍高速化                         CPU
   (結構大きい)                                                                                                          GPU
                                                        100


                                                         50


                                                          0
                                                              0   5000   10000  15000 20000 25000   30000   35000
                                                                              行数(列数は100に固定)

2011/11/19                                                                                                                26
サイバー系


     ベンチマーク③

       >var.nums <- c(1000,5000,10000,50000)
       >for(i in 1:length(var.nums)){
       A <- matrix(runif(var.nums[i]*100), var.num(i), 100)
       B <- matrix(runif(var.nums[i]*100), var.num[i], 100)
       +#CPUで計算
       d <- dist(A, B)
       +System.time(hclust(d), method=“complete”)
       +
       +#GPUで計算
       +System.time(rpuHclust(d), method=“complete”)                    完全連結法階層クラスタリング計算時間
       }                                     8000

                                                      7000

   長い行 x 100列のマトリックス同士 6000
   の距離を算出後階層クラスタリング。5000
                                            処理時間(秒)




   戻り値はhclustオブジェクト                                                                    約200~300倍高速化
                                                      4000
                                                                                                                      CPU
                                                      3000                                                            GPU

                                                      2000

                                                      1000

                                                         0
                                                             0   5000   10000     15000 20000 25000   30000   35000
                                                                                行数(列数は100に固定)

2011/11/19                                                                                                              27
サイバー系


     ベンチマーク④

       >var.nums <- c(1000,5000,10000,50000)
       >for(i in 1:length(var.nums)){
       A <- matrix(runif(var.nums[i]*100), var.num(i), 100)

       +#CPUで計算
       +System.time(svm(y=A[,1], x=A[,-1], scale=FALSE,
       type="eps-regression"))
       +
       +#GPUで計算
       +System.time(rpusvm(y=A[,1], x=A[,-1], scale=FALSE,                   ガウシアンカーネル利用SVM計算時間
       type="eps-regression"))                          3000

       }
                                                                  2500
                                                                                                                CPU
   長い行 x 100列のマトリックスを                                                                                           GPU
   生成して、1列目を目的変数に                                                 2000
                                                        処理時間(秒)
   それ以外を説明変数としてsvmで                                                                   約5~20倍高速化
                                                                  1500
   モデルを構築。パラメータは
   チューニングしていなくて                                                   1000
   デフォルト値を使用
                                                                   500


                                                                     0
                                                                         0    50000    100000 150000   200000   250000
                                                                                      行数(列数は100に固定)
2011/11/19                                                                                                            28
サイバー系


     明細




             27時間使って1500円くらい
2011/11/19                     29
サイバー系


     (参考) gputoolsパッケージ
       項目              説明
       gpuCor          各種相関係数の計算
       gpuCrossprod    行列のクロス積
       gpuDist         ベクトル間距離計算
       gpuDistClust    ベクトル間の距離と階層型クラスタリング計算
       gpuFastICA      独立成分分析
       gpuGlm          一般化線形モデル
       gpuGranger      ベクトルの階層型クラスタリングの実行
       gpuLm           線形モデル
       gpuMatMult      実行マトリックス乗算
       gpuMi           相互情報をベースにした B スプライン
       gpuQr           マトリックスの QR 分解の推定
       gpuSolve        マトリックスベクトル式の解の推定
       gpuSvd          特異値分解
       gpuSvmPredict   サポートベクターマシンスタイルの2値分類器
       gpuSvmTrain     データセットのサポートベクターマシンのトレイニング
       gpuTcrossprod   転置行列のクロス積
       gpuTtest        T 検定推定

2011/11/19                                             30
サイバー系


     最後に

             これはなかなか使えるな。
              メモリ使用量は少ないんだけどCPU時間がやたら長い処理に向く
              SVMとか階層クラスタリングとか
             ただし




              Rpud(Rpudplus)もgputoolsも商用利用するには
               作者からライセンスを購入して下さい。



2011/11/19                                            31

More Related Content

What's hot

【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
Masashi Komori
 
Stan超初心者入門
Stan超初心者入門Stan超初心者入門
Stan超初心者入門
Hiroshi Shimizu
 
変分ベイズ法の説明
変分ベイズ法の説明変分ベイズ法の説明
変分ベイズ法の説明
Haruka Ozaki
 
機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)
Kota Matsui
 
DSIRNLP#1 ランキング学習ことはじめ
DSIRNLP#1 ランキング学習ことはじめDSIRNLP#1 ランキング学習ことはじめ
DSIRNLP#1 ランキング学習ことはじめ
sleepy_yoshi
 
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
Shota Imai
 
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
Yuta Kikuchi
 
最適化計算の概要まとめ
最適化計算の概要まとめ最適化計算の概要まとめ
最適化計算の概要まとめ
Yuichiro MInato
 
Stanコードの書き方 中級編
Stanコードの書き方 中級編Stanコードの書き方 中級編
Stanコードの書き方 中級編
Hiroshi Shimizu
 
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
Deep Learning JP
 
組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画までShunji Umetani
 
[DL輪読会]Revisiting Deep Learning Models for Tabular Data (NeurIPS 2021) 表形式デー...
[DL輪読会]Revisiting Deep Learning Models for Tabular Data  (NeurIPS 2021) 表形式デー...[DL輪読会]Revisiting Deep Learning Models for Tabular Data  (NeurIPS 2021) 表形式デー...
[DL輪読会]Revisiting Deep Learning Models for Tabular Data (NeurIPS 2021) 表形式デー...
Deep Learning JP
 
CRF を使った Web 本文抽出
CRF を使った Web 本文抽出CRF を使った Web 本文抽出
CRF を使った Web 本文抽出
Shuyo Nakatani
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
 
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会
takehikoihayashi
 
Rでのtry関数によるエラー処理
Rでのtry関数によるエラー処理Rでのtry関数によるエラー処理
Rでのtry関数によるエラー処理
wada, kazumi
 
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
Yoshitake Takebayashi
 
ニューラルチューリングマシン入門
ニューラルチューリングマシン入門ニューラルチューリングマシン入門
ニューラルチューリングマシン入門
naoto moriyama
 
最高の統計ソフトウェアはどれか? "What’s the Best Statistical Software? A Comparison of R, Py...
最高の統計ソフトウェアはどれか? "What’s the Best Statistical Software? A Comparison of R, Py...最高の統計ソフトウェアはどれか? "What’s the Best Statistical Software? A Comparison of R, Py...
最高の統計ソフトウェアはどれか? "What’s the Best Statistical Software? A Comparison of R, Py...
ケンタ タナカ
 
【解説】 一般逆行列
【解説】 一般逆行列【解説】 一般逆行列
【解説】 一般逆行列
Kenjiro Sugimoto
 

What's hot (20)

【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
 
Stan超初心者入門
Stan超初心者入門Stan超初心者入門
Stan超初心者入門
 
変分ベイズ法の説明
変分ベイズ法の説明変分ベイズ法の説明
変分ベイズ法の説明
 
機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)
 
DSIRNLP#1 ランキング学習ことはじめ
DSIRNLP#1 ランキング学習ことはじめDSIRNLP#1 ランキング学習ことはじめ
DSIRNLP#1 ランキング学習ことはじめ
 
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
 
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
 
最適化計算の概要まとめ
最適化計算の概要まとめ最適化計算の概要まとめ
最適化計算の概要まとめ
 
Stanコードの書き方 中級編
Stanコードの書き方 中級編Stanコードの書き方 中級編
Stanコードの書き方 中級編
 
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
 
組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで
 
[DL輪読会]Revisiting Deep Learning Models for Tabular Data (NeurIPS 2021) 表形式デー...
[DL輪読会]Revisiting Deep Learning Models for Tabular Data  (NeurIPS 2021) 表形式デー...[DL輪読会]Revisiting Deep Learning Models for Tabular Data  (NeurIPS 2021) 表形式デー...
[DL輪読会]Revisiting Deep Learning Models for Tabular Data (NeurIPS 2021) 表形式デー...
 
CRF を使った Web 本文抽出
CRF を使った Web 本文抽出CRF を使った Web 本文抽出
CRF を使った Web 本文抽出
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会
 
Rでのtry関数によるエラー処理
Rでのtry関数によるエラー処理Rでのtry関数によるエラー処理
Rでのtry関数によるエラー処理
 
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
 
ニューラルチューリングマシン入門
ニューラルチューリングマシン入門ニューラルチューリングマシン入門
ニューラルチューリングマシン入門
 
最高の統計ソフトウェアはどれか? "What’s the Best Statistical Software? A Comparison of R, Py...
最高の統計ソフトウェアはどれか? "What’s the Best Statistical Software? A Comparison of R, Py...最高の統計ソフトウェアはどれか? "What’s the Best Statistical Software? A Comparison of R, Py...
最高の統計ソフトウェアはどれか? "What’s the Best Statistical Software? A Comparison of R, Py...
 
【解説】 一般逆行列
【解説】 一般逆行列【解説】 一般逆行列
【解説】 一般逆行列
 

Similar to RでGPU使ってみた

JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
yaegashi
 
GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -
zgock
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む2bo 2bo
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825hiro345
 
OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾外道 父
 
Starting qt5beta at_raspberry_pi Qtnagoya#6
Starting qt5beta at_raspberry_pi Qtnagoya#6Starting qt5beta at_raspberry_pi Qtnagoya#6
Starting qt5beta at_raspberry_pi Qtnagoya#6
Kazuo Asano (@kazuo_asa)
 
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CD
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CDAzure DevOps で実現する Unity アプリのハイパフォーマンス CI/CD
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CD
yaegashi
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみました
Shuntaro Saiba
 
20230511_Node-RED_Park_vol11_kitazaki_v1.pdf
20230511_Node-RED_Park_vol11_kitazaki_v1.pdf20230511_Node-RED_Park_vol11_kitazaki_v1.pdf
20230511_Node-RED_Park_vol11_kitazaki_v1.pdf
Ayachika Kitazaki
 
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計maebashi
 
(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する
Kohei KaiGai
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
Masahito Zembutsu
 
S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較
真治 米田
 
サーバ構築自動化 On aws sqaleの場合
サーバ構築自動化 On aws   sqaleの場合サーバ構築自動化 On aws   sqaleの場合
サーバ構築自動化 On aws sqaleの場合Ryo Kuroda
 
Osc10do linux nextstep
Osc10do linux nextstepOsc10do linux nextstep
Osc10do linux nextstepsmokey monkey
 
Osc2013 tokyospring
Osc2013 tokyospringOsc2013 tokyospring
Osc2013 tokyospring
Masataka Tsukamoto
 
Next-L Enju 開発ワークショップ #10
Next-L Enju 開発ワークショップ #10Next-L Enju 開発ワークショップ #10
Next-L Enju 開発ワークショップ #10Kosuke Tanabe
 
AWSとGPUインスタンスのご紹介
AWSとGPUインスタンスのご紹介AWSとGPUインスタンスのご紹介
AWSとGPUインスタンスのご紹介
Yasuhiro Matsuo
 

Similar to RでGPU使ってみた (20)

Pdp11 on-fpga
Pdp11 on-fpgaPdp11 on-fpga
Pdp11 on-fpga
 
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
 
GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
 
OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾
 
Starting qt5beta at_raspberry_pi Qtnagoya#6
Starting qt5beta at_raspberry_pi Qtnagoya#6Starting qt5beta at_raspberry_pi Qtnagoya#6
Starting qt5beta at_raspberry_pi Qtnagoya#6
 
Puppet on AWS
Puppet on AWSPuppet on AWS
Puppet on AWS
 
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CD
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CDAzure DevOps で実現する Unity アプリのハイパフォーマンス CI/CD
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CD
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみました
 
20230511_Node-RED_Park_vol11_kitazaki_v1.pdf
20230511_Node-RED_Park_vol11_kitazaki_v1.pdf20230511_Node-RED_Park_vol11_kitazaki_v1.pdf
20230511_Node-RED_Park_vol11_kitazaki_v1.pdf
 
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
 
(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 
S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較
 
サーバ構築自動化 On aws sqaleの場合
サーバ構築自動化 On aws   sqaleの場合サーバ構築自動化 On aws   sqaleの場合
サーバ構築自動化 On aws sqaleの場合
 
Osc10do linux nextstep
Osc10do linux nextstepOsc10do linux nextstep
Osc10do linux nextstep
 
Osc2013 tokyospring
Osc2013 tokyospringOsc2013 tokyospring
Osc2013 tokyospring
 
Next-L Enju 開発ワークショップ #10
Next-L Enju 開発ワークショップ #10Next-L Enju 開発ワークショップ #10
Next-L Enju 開発ワークショップ #10
 
AWSとGPUインスタンスのご紹介
AWSとGPUインスタンスのご紹介AWSとGPUインスタンスのご紹介
AWSとGPUインスタンスのご紹介
 

More from Kazuya Wada

オンラインTVサービスの分析事例
オンラインTVサービスの分析事例オンラインTVサービスの分析事例
オンラインTVサービスの分析事例
Kazuya Wada
 
DeployR使ってみた話
DeployR使ってみた話DeployR使ってみた話
DeployR使ってみた話
Kazuya Wada
 
道玄坂Lt#2 wdkz
道玄坂Lt#2 wdkz道玄坂Lt#2 wdkz
道玄坂Lt#2 wdkz
Kazuya Wada
 
ハイレゾの話
ハイレゾの話ハイレゾの話
ハイレゾの話
Kazuya Wada
 
Shiny-Serverあれこれ
Shiny-ServerあれこれShiny-Serverあれこれ
Shiny-Serverあれこれ
Kazuya Wada
 
データサイエンティストカジュアルトーク by wdkz
データサイエンティストカジュアルトーク by wdkzデータサイエンティストカジュアルトーク by wdkz
データサイエンティストカジュアルトーク by wdkz
Kazuya Wada
 
R-3.0.0でGLM
R-3.0.0でGLMR-3.0.0でGLM
R-3.0.0でGLM
Kazuya Wada
 
はじめてのShiny
はじめてのShinyはじめてのShiny
はじめてのShiny
Kazuya Wada
 
JuliaでGLM
JuliaでGLMJuliaでGLM
JuliaでGLM
Kazuya Wada
 
Rで触れる日本経済~RでVAR編~
Rで触れる日本経済~RでVAR編~Rで触れる日本経済~RでVAR編~
Rで触れる日本経済~RでVAR編~
Kazuya Wada
 
RのffでGLMしてみたけど...
RのffでGLMしてみたけど...RのffでGLMしてみたけど...
RのffでGLMしてみたけど...
Kazuya Wada
 
そろそろRStudioの話
そろそろRStudioの話そろそろRStudioの話
そろそろRStudioの話
Kazuya Wada
 
RでつくるWebアプリ~rApache編~
RでつくるWebアプリ~rApache編~RでつくるWebアプリ~rApache編~
RでつくるWebアプリ~rApache編~
Kazuya Wada
 
Rでウォーリを探してみた
Rでウォーリを探してみたRでウォーリを探してみた
Rでウォーリを探してみた
Kazuya Wada
 
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Kazuya Wada
 
RのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみたRのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみた
Kazuya Wada
 
Tokyo.R#16 wdkz
Tokyo.R#16 wdkzTokyo.R#16 wdkz
Tokyo.R#16 wdkz
Kazuya Wada
 

More from Kazuya Wada (17)

オンラインTVサービスの分析事例
オンラインTVサービスの分析事例オンラインTVサービスの分析事例
オンラインTVサービスの分析事例
 
DeployR使ってみた話
DeployR使ってみた話DeployR使ってみた話
DeployR使ってみた話
 
道玄坂Lt#2 wdkz
道玄坂Lt#2 wdkz道玄坂Lt#2 wdkz
道玄坂Lt#2 wdkz
 
ハイレゾの話
ハイレゾの話ハイレゾの話
ハイレゾの話
 
Shiny-Serverあれこれ
Shiny-ServerあれこれShiny-Serverあれこれ
Shiny-Serverあれこれ
 
データサイエンティストカジュアルトーク by wdkz
データサイエンティストカジュアルトーク by wdkzデータサイエンティストカジュアルトーク by wdkz
データサイエンティストカジュアルトーク by wdkz
 
R-3.0.0でGLM
R-3.0.0でGLMR-3.0.0でGLM
R-3.0.0でGLM
 
はじめてのShiny
はじめてのShinyはじめてのShiny
はじめてのShiny
 
JuliaでGLM
JuliaでGLMJuliaでGLM
JuliaでGLM
 
Rで触れる日本経済~RでVAR編~
Rで触れる日本経済~RでVAR編~Rで触れる日本経済~RでVAR編~
Rで触れる日本経済~RでVAR編~
 
RのffでGLMしてみたけど...
RのffでGLMしてみたけど...RのffでGLMしてみたけど...
RのffでGLMしてみたけど...
 
そろそろRStudioの話
そろそろRStudioの話そろそろRStudioの話
そろそろRStudioの話
 
RでつくるWebアプリ~rApache編~
RでつくるWebアプリ~rApache編~RでつくるWebアプリ~rApache編~
RでつくるWebアプリ~rApache編~
 
Rでウォーリを探してみた
Rでウォーリを探してみたRでウォーリを探してみた
Rでウォーリを探してみた
 
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
 
RのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみたRのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみた
 
Tokyo.R#16 wdkz
Tokyo.R#16 wdkzTokyo.R#16 wdkz
Tokyo.R#16 wdkz
 

RでGPU使ってみた

  • 1. RでGPU使ってみた Tokyo.R #19 和田 計也 サイバー系
  • 2. サイバー系 はじめに ※この発表は個人の 見解であり、所属する 組織の公式見解では ありません。 2011/11/19 1
  • 3. サイバー系 アジェンダ 1. 自己紹介 2. GPUの話 3. R上で動くGPU演算をしてくれるパッケージ紹介 4. ベンチマーク結果 2011/11/19 2
  • 4. サイバー系 自己紹介  和田 計也(@wdkz)  静岡県袋井市出身  サイバー系企業でデータマイニングエンジニア職  創立記念日が3月18日  社長の出身地が福井県鯖江市  前職はバイオベンチャー  バイオマーカ探索してた  学生時代は枯草菌の研究 2011/11/19 3
  • 5. サイバー系 唐突ですが  R遅!!ですね。  あまりの遅さに気を失いかけたことありませんか? そこで GPUですよ 2011/11/19 4
  • 6. サイバー系 GPU  GPUとは?  Graphics Processing Unitの略  3Dグラフィックスの表示に必要な計算処理(3D座標から2D座標へ の座標変換など)を行う半導体チップ  (最新のは)448コア 2011/11/19 5
  • 7. サイバー系 GPU  東工大のスパコン、TSUBAME2.0にもGPUが使われています! 2011/11/19 6
  • 8. サイバー系 GPGPU  General-purpose computing on graphics processing units; GPUによる汎目的計算  CUDA 今日はこれ(一般的だから)  ATI Stream  OpenCL 2011/11/19 7
  • 9. サイバー系 ちょっと待て でもお高い んでしょ? 2011/11/19 8
  • 10. サイバー系 高い… Amazonで(専用の)GPUカードだけ買うと しても28万くらいする.. GPUカード搭載のサーバマシンだと90万弱もする.. 2011/11/19 9
  • 11. サイバー系 じゃあどうするの? こんなのとかでも一応動く。 Amazonだと5000円くらいから 一応問題点 ・デスクトップマシンもってない ・それなりのスペックでベンチマークしないと 過小評価しちゃって二度と日の目を見ないかもしれんし。 それなりのスペック・・・①GPUカードに搭載されてるメモリ量 ②IO速度 ③倍精度浮動小数点計算 2011/11/19 10
  • 12. サイバー系 結局GPUはどうすればいいの?  AWS(Amazon Web Service)で可能です これ 2011/11/19 11
  • 13. サイバー系 AWS Management Consoleから始める  とりあえず試すだけなので「Spot Instances」でいいや よくわからん からこっち 使ってみた SAS美 2011/11/19 12
  • 14. サイバー系 AWS Management Consoleから始めるSAS美  1時間0.665ドルからってかいてあるから、Max Priceのとこに 「0.665」っていれてContinueボタン押しとく 2011/11/19 13
  • 15. サイバー系 3.1 Rのビルド  まあ、あれだ。いろいろやるとこんな感じ↓で使えるように なった。  詳しくは@KenTamagawa さんをフォロー するか本読んでね♪ 2011/11/19 14
  • 16. サイバー系 AWS上のAmazon Linux AMIでRをコンパイル sudo yum install gccsudo sudo yum install gcc-gfortran 何か絶望的にいろいろ入ってない sudo yum install gcc-c++ sudo yum install readline-devel sudo yum install make wget ftp://ftp.u-aizu.ac.jp/pub/lang/R/CRAN/src/base/R-2/R-2.14.0.tar.gz tar -xvf R-2.14.0.tar.gz cd R-2.14.0 ←このオプションつけとかないと後でGPU関連の パッケージがインストールできない。 ./configure --enable-R-shlib make sudo make install 2011/11/19 15
  • 17. サイバー系 AWS上のAmazon Linux AMIでGPU関連のを入れる yum install libGLU-devel libXi-devel libXmu-devel freeglut-devel kernel-devel 必要なライブラリをいれて wget http://developer.download.nvidia.com/compute/cuda/4_0/drivers/devdriver_4.0 _linux_64_270.41.19.run Developer Drivers for Linux sudo ./devdriver_4.0_linux_64_270.41.19.run を入れて wget http://developer.download.nvidia.com/compute/cuda/4_0/toolkit/cudatoolkit _4.0.17_linux_64_rhel6.0.run CUDAを入れて sudo sh cudatoolkit_4.0.17_linux_64_rhel6.0.run (Amazon Linux AMIのベースlinuxが何かよく わからんかったけどredhat 6.0のでいけたわ~) wget http://developer.download.nvidia.com/compute/cuda/4_0/sdk/gpucomputingsdk_ 4.0.17_linux.run ./gpucomputingsdk_4.0.17_linux.run GPU Computing SDKを入れる cd NVIDIA_GPU_Computing_SDK/C sudo make *ここら辺のはもともとインストール済みっていう噂なんだけど, 全部入れ直してみた。 2011/11/19 16
  • 18. サイバー系 動作確認する・Win cd NVIDIA_GPU_Computing_SDK/C ./bin/linux/release/deviceQuery ここまでで、CUDAが動く環境 が整った。次にR上でCUDAが 利用することを考える 2011/11/19 17
  • 19. サイバー系 RでGPUを使えるパッケージ  Gputool  http://brainarray.mbni.med.umich.edu/brainarray/rgpgpu/  使える関数多い  Rpud  http://www.r-tutor.com/content/download  Gputoolより高速だった  svmはe1071パッケージのsvmに準拠  いろんなカーネルトリック使える  こっち使ってみた 2011/11/19 18
  • 20. サイバー系 Rpudをインストール export CUDA_HOME=“/usr/local/cuda” export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${CUDA_HOME}/lib64“ export PATH=${CUDA_HOME}/bin:${PATH} 環境変数を設定して export R_LIBS_USER="${HOME}/lib/R“ R 必要なパッケージSparseMを >install.packages("SparseM") インストールして >q(“no”) wget http://www.r-tutor.com/sites/default/files/rpud/rpud_0.1.1.tar.gz R CMD INSTALL rpud_0.1.1.tar.gz Rpudをいれて wget http://www.r-tutor.com/sites/default/files/rpud/rpudplus_0.1.1.tar.gz tar xvf rpudplus_0.1.1.tar.gz Rpudplusをいれる cd rpudplus_0.1.1 ./install.sh RPUSVMってのもあるので お好きな人はどうぞ 2011/11/19 19
  • 21. サイバー系 (参考資料)gputoolsのインストール  今回は使わなかったけど…  前々々ページに記載してあるCUDAインストールまで完了しているとする R > install.packages(“gputools”)’ お手軽♪ 2011/11/19 20
  • 22. サイバー系 Rpudパッケージについて  基本的に以下の4つの手法しか(まだ)実装されていません  基本的に普通の関数と同様の引数で使えますので悩みません CPUで計算 GPUで計算 (rpud) 相関 cor rpuCor 距離 dist rpuDist 階層クラスタリング hclust rpuHclust SVM(トレーニング) e1071::svm rpuSvm SVM(予測) e1071::predict.svm predict.rpuSvm 2011/11/19 21
  • 23. サイバー系 Rpudをちょっと使ってみる R >library(rpud) #これでrpudもrpudplusも両方読み込まれる >A <- runif(100000000); B <- runif(100000000) >system.time(cor (A, B), method=“pearson”) まずは通常のCPUで(ピアソンの)相関計数計算 ># user system elapsed ># 1.858 0.003 1.860 >system.time(gpuCor(A, B, method="pearson")) ># user system elapsed 次にGPUで(ピアソンの)相関計数計算 ># 1.858 0.002 1.860 2011/11/19 ← Kendall以外はCPUで処理されてた 22
  • 24. サイバー系 Rpudをちょっと使ってみる・2 R >library(rpud) #これでrpudもrpudplusも両方読み込まれる >A <- runif(100000000); B <- runif(100000000) >system.time(cor (A, B), method=“kendall”) まずは通常のCPUで(ケンドールの順位)相関計数計算 ># user system elapsed ># 199.025 0.000 198.926 >system.time(gpuCor(A, B, method=“kendall")) ># user system elapsed 次にGPUで(ケンドールの順位)相関計数計算 ># 4.262 2.183 6.581 速っ!! 2011/11/19 23
  • 25. サイバー系 ベンチマークのマシン構成  CPUマシン  Intel Xeon L5520@2.27GHz(L2 8M), 4Cores (8Threads) x 2 なんだけど、シングルスレッドしか使わなかった  32Gbyte メモリ  CPUマシン  Intel Xeon X5570@2.93GHz(L2 8M), 4Cores (8Threads) x 2  24Gbyte メモリ  Tesla M2050 x 2  1.15GHz GPU (448 Cores)  3Gbyte グローバルメモリ  48Kbyte / blockの共有メモリ 2011/11/19 24
  • 26. サイバー系 ベンチマーク① >var.nums <- c(1000,5000,10000,50000,1e+5,5e+5,1e+6,5e+6) >for(i in 1:length(var.nums)){ A <- runif(var.nums[i]); B <- runif(var.nums[i]) +#CPUで計算 +System.time(cor(A, B), method=“kendall”) + +#GPUで計算 +System.time(rpuCor(A, B), method=“kendall”) } ケンドールの順位相関係数計算時間 30000 25000 長いベクトル同士の相関係数 20000 を算出。戻り値は長さ1のベクトル 処理時間(秒) 約40倍高速化 15000 CPU GPU 10000 5000 0 0 1000000 2000000 3000000 4000000 5000000 6000000 変数の数 2011/11/19 25
  • 27. サイバー系 ベンチマーク② >var.nums <- c(1000,5000,10000,50000) >for(i in 1:length(var.nums)){ A <- matrix(runif(var.nums[i]*100), var.num(i), 100) B <- matrix(runif(var.nums[i]*100), var.num[i], 100) +#CPUで計算 +System.time(dist(A, B), method=“euclidean”) + +#GPUで計算 +System.time(rpuDist(A, B), method=“euclidean”) ユークリッド距離計算時間 } 300 250 長い行 x 100列のマトリックス同士 200 の距離を算出。 処理時間(秒) 戻り値はdistオブジェクト 150 約7~8倍高速化 CPU (結構大きい) GPU 100 50 0 0 5000 10000 15000 20000 25000 30000 35000 行数(列数は100に固定) 2011/11/19 26
  • 28. サイバー系 ベンチマーク③ >var.nums <- c(1000,5000,10000,50000) >for(i in 1:length(var.nums)){ A <- matrix(runif(var.nums[i]*100), var.num(i), 100) B <- matrix(runif(var.nums[i]*100), var.num[i], 100) +#CPUで計算 d <- dist(A, B) +System.time(hclust(d), method=“complete”) + +#GPUで計算 +System.time(rpuHclust(d), method=“complete”) 完全連結法階層クラスタリング計算時間 } 8000 7000 長い行 x 100列のマトリックス同士 6000 の距離を算出後階層クラスタリング。5000 処理時間(秒) 戻り値はhclustオブジェクト 約200~300倍高速化 4000 CPU 3000 GPU 2000 1000 0 0 5000 10000 15000 20000 25000 30000 35000 行数(列数は100に固定) 2011/11/19 27
  • 29. サイバー系 ベンチマーク④ >var.nums <- c(1000,5000,10000,50000) >for(i in 1:length(var.nums)){ A <- matrix(runif(var.nums[i]*100), var.num(i), 100) +#CPUで計算 +System.time(svm(y=A[,1], x=A[,-1], scale=FALSE, type="eps-regression")) + +#GPUで計算 +System.time(rpusvm(y=A[,1], x=A[,-1], scale=FALSE, ガウシアンカーネル利用SVM計算時間 type="eps-regression")) 3000 } 2500 CPU 長い行 x 100列のマトリックスを GPU 生成して、1列目を目的変数に 2000 処理時間(秒) それ以外を説明変数としてsvmで 約5~20倍高速化 1500 モデルを構築。パラメータは チューニングしていなくて 1000 デフォルト値を使用 500 0 0 50000 100000 150000 200000 250000 行数(列数は100に固定) 2011/11/19 28
  • 30. サイバー系 明細 27時間使って1500円くらい 2011/11/19 29
  • 31. サイバー系 (参考) gputoolsパッケージ 項目 説明 gpuCor 各種相関係数の計算 gpuCrossprod 行列のクロス積 gpuDist ベクトル間距離計算 gpuDistClust ベクトル間の距離と階層型クラスタリング計算 gpuFastICA 独立成分分析 gpuGlm 一般化線形モデル gpuGranger ベクトルの階層型クラスタリングの実行 gpuLm 線形モデル gpuMatMult 実行マトリックス乗算 gpuMi 相互情報をベースにした B スプライン gpuQr マトリックスの QR 分解の推定 gpuSolve マトリックスベクトル式の解の推定 gpuSvd 特異値分解 gpuSvmPredict サポートベクターマシンスタイルの2値分類器 gpuSvmTrain データセットのサポートベクターマシンのトレイニング gpuTcrossprod 転置行列のクロス積 gpuTtest T 検定推定 2011/11/19 30
  • 32. サイバー系 最後に  これはなかなか使えるな。  メモリ使用量は少ないんだけどCPU時間がやたら長い処理に向く  SVMとか階層クラスタリングとか  ただし  Rpud(Rpudplus)もgputoolsも商用利用するには 作者からライセンスを購入して下さい。 2011/11/19 31