こことここで関連する投稿を読み、ここで Dirk Eddelbuettel の講演を見ましたが、.log ファイルを取得することさえできませんgperftools
。と呼ばれる私のR
ファイルは次のRcpp_practice.R
とおりです。
library(Rcpp)
Sys.setenv("PKG_LIBS"="-lprofiler")
sourceCpp('eigen.cpp')
a <- matrix(rnorm(300^2), 300, 300)
getEigenValues(a)
の内容は次のeigen.cpp
とおりです。
#include <RcppArmadillo.h>
#include <gperftools/profiler.h>
// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::export]]
arma::vec getEigenValues(arma::mat M) {
return arma::eig_sym(M);
}
次に、ターミナル(私はOSXを使用しています)で:
CPUPROFILE="eigenprof.log" R -f "Rcpp_practice.R"
eigenprof.log
作業ディレクトリに座っているのを見たいと思っていましたが、そうではありません。また、フォームの他の投稿で見たメッセージが表示されませんPROFILE: interrupts/evictions/bytes = 012/34/567891
の最新バージョンがgperftools
インストールされていることを確認しました。($ brew upgrade google-perftools
与えるError: gperftools 2.5 already installed
)。
私は何が欠けていますか?
アップデート
@nrussell のものと一致するようにコードを変更した後、次のエラー メッセージが表示されます。
Error in dyn.load("/private/var/folders/6k/ffcchdq52kbb7d631b5vsqcw0000gn/T/RtmpCIdHkG/sourceCpp-x86_64-apple-darwin13.4.0-0.12.7/sourcecpp_6c3253d60384/sourceCpp_2.so") :
unable to load shared object '/private/var/folders/6k/ffcchdq52kbb7d631b5vsqcw0000gn/T/RtmpCIdHkG/sourceCpp-x86_64-apple-darwin13.4.0-0.12.7/sourcecpp_6c3253d60384/sourceCpp_2.so':
dlopen(/private/var/folders/6k/ffcchdq52kbb7d631b5vsqcw0000gn/T/RtmpCIdHkG/sourceCpp-x86_64-apple-darwin13.4.0-0.12.7/sourcecpp_6c3253d60384/sourceCpp_2.so, 6): Symbol not found: _ProfilerStart
Referenced from: /private/var/folders/6k/ffcchdq52kbb7d631b5vsqcw0000gn/T/RtmpCIdHkG/sourceCpp-x86_64-apple-darwin13.4.0-0.12.7/sourcecpp_6c3253d60384/sourceCpp_2.so
Expected in: flat namespace
in /private/var/folders/6k/ffcchdq52kbb7d631b5vsqcw0000gn/T/RtmpCIdHkG/sourceCpp-x86_64-apple-darwin13.4.0-0.12.7/sourcecpp_6c3253d60384/sourceCpp_2.so
Calls: sourceCpp -> source -> withVisible -> eval -> eval -> dyn.load
Execution halted
これはsourceCpp
、スクリプトを対話的に実行すると、行に表示されます。