20

Rでインラインパッケージのcxxfunctionを使用する場合、cppコンパイラの最適化フラグをどのように変更しますか?

デフォルトでは、私のマシンでは、-g -O2. -O3しかし、最適化を使用して速度を上げたいと思います。Rcppそれが違いを生む場合は、プラグインを使用します。

独自のプラグインを作成しようとしましたが、cxxfunction のさまざまな引数を設定しようとしましたが、何も機能しませんでした。

R CMD SHLIB1つのオプションは、を使用する代わりに使用してコンパイルすることだと思いますcxxfunctioninlineしかし、ほとんどのテスト ケースで使用されているため、Rcpp は の使用を推奨しています。

ご協力ありがとうございます。説明が必要な場合はお知らせください

4

2 に答える 2

16

いくつかのオプションがあります。

  1. 最善の解決策は、R によるすべての使用のためにこれを変更して、たとえばファイルを作成し~/.R/Makevars、CFLAGS、CXXFLAGS などを設定することです。R CMD INSTALL ...これは、R CMD SHLIB ...などによるすべての使用に影響しcxxfunction()、インラインで使用されるため、ここでも機能します。

  2. inline および Rcpp に固有: プラグインを変更します。これがプラグイン システムである理由です。を参照してくださいRcpp:::Rcpp.plugin.maker()

  3. cxxfunction()からに戻すcfunction()ため、プラグインを使用せず、すべての引数を手動で設定します。

言うまでもなく、私はオプション 1 が好きで、自分で使用しています。

編集:私が過去に使用していた4番目の(そして大雑把な!!)方法は、編集$R_HOME/Makeconfおよび/またはMakeconf.site.

于 2011-04-26T12:31:03.587 に答える
1

ハックを提案できます。実際の cpp を呼び出し、最適化のために -O3 を渡すことを除いて、すべての引数をそのまま渡す小さなラッパー プログラム (cpp とも呼ばれます) を作成します。次に、プログラムが R の実行可能パス解決で最初に出現することを確認します。

于 2011-04-26T11:50:58.397 に答える