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
以寻求一些性能改进。
有没有办法通过 sourceCpp
或 cppFunction
来做到这一点,我是否需要在 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。
我正在使用 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
以寻求一些性能改进。
有没有办法通过 sourceCpp
或 cppFunction
来做到这一点,我是否需要在 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。