在Eigen常见问题解答中指出you need to enable vectorization in the compiler。
我正在尝试使用RcppEigen开发R软件包。如果用户无需手动编译带有指定标志的程序包即可获得最佳性能,我希望这样做。
希望在Eigen库中实现向量化的R软件包的最佳实践是什么?
答案 0 :(得分:2)
完全按照FAQ的说明进行操作,并设置编译器标志。在测试了当前编译器支持的功能之后,您可能必须从脚本configure
启用这些功能-CRAN可能仍会告诉您这些标志不可移植。
此外,仅在此处修复术语,在我们这里没有“库”:RcppEigen仅使用Eigen的 headers ,该模板被设计为模板化的仅标头包。
答案 1 :(得分:1)
我也是一个初学者,许多时间试图理解Rcpp
可能与您@jds有关。我想在具有AVX架构的Dell Precision M2800上启用矢量化功能,因此我使用以下三次代码在{em> configure 文件中添加了-mavx2
标志:
CXXFLAGS= -O3 -std=c++11 -Wall -mavx2
此代码更改使我的代码(一系列双重嵌套的循环)从4.1s加速到1.4s!
通过使用 configure 和 clean 文件构建框架包来创建您的,了解如何修改sourceCpp
使用的编译器标志由@nrussell在How to change and set Rcpp compile arguments