tokyo.r 白熱教室「これからのrcppの話をしよう」

27
Tokyo. 白熱教室 「これからのRcppの話をしよう」 29勉強会@東京(#TokyoR) @teramonagi

Upload: tera-monagi

Post on 15-Jan-2015

4.956 views

Category:

Technology


0 download

DESCRIPTION

第29回R勉強会@東京(#TokyoR)の資料

TRANSCRIPT

Page 1: Tokyo.R 白熱教室「これからのRcppの話をしよう」

Tokyo. 白熱教室 「これからのRcppの話をしよう」

第29回 勉強会@東京(#TokyoR)

@teramonagi

Page 2: Tokyo.R 白熱教室「これからのRcppの話をしよう」

2

Rcpp て何?

Page 3: Tokyo.R 白熱教室「これからのRcppの話をしよう」

Rcppって?

3 (出所)CRAN・Rcppパッケージのサイトより

Page 4: Tokyo.R 白熱教室「これからのRcppの話をしよう」

Rcppって?

4 (出所)CRAN・Rcppパッケージのサイトより

R言語の中で C++が使える

Page 5: Tokyo.R 白熱教室「これからのRcppの話をしよう」

どのくらい 凄いのか?

5

Page 6: Tokyo.R 白熱教室「これからのRcppの話をしよう」

魔・獣・召・喚 6 (出所)DeNA・神撃のバハムート・オフィシャルサイトより

Page 7: Tokyo.R 白熱教室「これからのRcppの話をしよう」

1:R言語&C++(C言語) の昔の連携法

7

Page 8: Tokyo.R 白熱教室「これからのRcppの話をしよう」

グワーッ!!! 8

Page 9: Tokyo.R 白熱教室「これからのRcppの話をしよう」

.C・.Callという2つの方法 • .C関数による呼び出し

–生のCで書かんといかん –R側で関数を呼ぶのがとても手間

• .Call関数による呼び出し – (R側の)メモリ管理を自分でしないといけない –SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP

• 共通 –ShellからR CMD SHLIBで共有ライブラリ化&

dyn.load関数でR側にロード

9

Page 10: Tokyo.R 白熱教室「これからのRcppの話をしよう」

コード・サンプル(.Call版)

10 (出所)第7回R勉強会@東京「RとC/C++の連携」 written by @sfchaos

Page 11: Tokyo.R 白熱教室「これからのRcppの話をしよう」

くわしくはこちら

11 (出所)第7回R勉強会@東京「RとC/C++の連携」 written by @sfchaos

Page 12: Tokyo.R 白熱教室「これからのRcppの話をしよう」

幾人もの勇者が帰らぬ人となった

12

Page 13: Tokyo.R 白熱教室「これからのRcppの話をしよう」

2:Rcppの今

13

Page 14: Tokyo.R 白熱教室「これからのRcppの話をしよう」

♥♥Heaven♥♥ 14

Page 15: Tokyo.R 白熱教室「これからのRcppの話をしよう」

インストールのお話

• 本資料の対象OS:windows 7 64bit

–Mac:Xcode, gfortranあたり入れとけ

–Linux: r-base-dev or 開発系入れとけ

• 要するにC++コンパイラが必要

• わかんなかったら

–「Frequently Asked Questions about Rcpp」(PDF)

–Stackoverflowを「Rcpp」+関連用語検索

15

Page 16: Tokyo.R 白熱教室「これからのRcppの話をしよう」

Rを入れます

16 (出所)CRAN

Page 17: Tokyo.R 白熱教室「これからのRcppの話をしよう」

Rtoolsを入れます

17

(出所)CRAN、C++コンパイラ+linuxコマンド少々が入る。デフォルトのインストール先でOK、インストール済みのRのバージョンをcompatibilityに合わせる。C:¥Rtools¥binとC:¥Rtools¥gcc-ver¥binにはパスを通しておいた方が良い(今回の例では不要。ただしinlineパッケージを使う際には必要となる。よくpythonのパスと競合する点に注意)

Page 18: Tokyo.R 白熱教室「これからのRcppの話をしよう」

Rstudioもいれます

18 (出所)RStudio、Recommendされた版で良いかと。インストール先もデフォルトでOK

Page 19: Tokyo.R 白熱教室「これからのRcppの話をしよう」

Rstudioを起動してC++書きます

19

Page 20: Tokyo.R 白熱教室「これからのRcppの話をしよう」

C++のコード(fibCpp.cpp)

20

Page 21: Tokyo.R 白熱教室「これからのRcppの話をしよう」

Rのコード(script.R)

21 ※ここではfibCpp.cppはこのスクリプトと同じフォルダに保存してあるとする

Page 22: Tokyo.R 白熱教室「これからのRcppの話をしよう」

計算を実行して速度比較

22

3000倍高速…!?!?

Page 23: Tokyo.R 白熱教室「これからのRcppの話をしよう」

23

Page 24: Tokyo.R 白熱教室「これからのRcppの話をしよう」

これからの Rcppの話をしよう 24

Page 25: Tokyo.R 白熱教室「これからのRcppの話をしよう」

Rcppついに書籍化

25 (出所)Amazon.com

Page 26: Tokyo.R 白熱教室「これからのRcppの話をしよう」

JSSにRcppEigen掲載

26 (出所)Jounal of Statistical Software

Page 27: Tokyo.R 白熱教室「これからのRcppの話をしよう」

Rcppのこれからの活躍にご期待ください

27