rcpp sourceCpp 编译器设置

Rcpp sourceCpp compiler settings

我正在使用 Rcpp 来加速在 R(3.4,Windows7)中重复调用的函数,我希望更改编译器设置。

当我打电话时: sourceCpp("scoreseq1.1.cc", verbose=TRUE)

部分输出如下:

C:/RBuildTools/3.4/mingw_64/bin/g++ -I"C:/PROGRA~1/R/R-34~1.1/include" -O2 -Wall -mtune=core2 -c scoreseq1.1.cc -o scoreseq1.1.o

我想将 -mtune 更改为 haswell,将 -O2 更改为 -O3 以寻求一些性能改进。

有没有办法通过 sourceCppcppFunction 来做到这一点,我是否需要在 my.cc 文件中使用特殊的 header,或者我是否需要需要修改我系统上的一些文件(如果是,是什么文件?!)

谢谢!

不,你不能(很容易),而且通常不是来自函数。

这些设置 "fixed" 来自构建 R 本身时的设置。您可以编辑该文件——但每次重建/重新安装 R 时都必须这样做。

在我的盒子上,文件是 $(R RHOME)/etc/Makeconf

以防万一有人遇到类似问题。您可以在 C++ 源代码中执行此操作。以下覆盖命令行编译器设置:

void
__attribute__((optimize("-O3"),target("tune=haswell")))
foo() 
{
    // your code goes here
}

参考:https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html