RcppEigen 和矢量化
RcppEigen and Vectorization
在 Eigen 常见问题解答中,它指出 you need to enable vectorization in the compiler。
我正在尝试使用 RcppEigen 开发 R 包。如果用户无需手动编译带有指定标志的包即可获得最佳性能,我希望如此。
希望在 Eigen 库中启用矢量化的 R 包的最佳实践是什么?
完全按照常见问题解答中的说明进行操作并设置编译器标志。在测试当前编译器支持的内容后,您可能必须从脚本 configure
中打开它们——并且 CRAN 可能仍会告诉您这些标志不可移植。
此外,为了修正这里的术语,我们的 RcppEigen 中没有 "library":RcppEigen 仅使用 Eigen 中的 headers,它被设计为模板化 header-only 包。
我也是初学者,花了很多时间试图理解 Rcpp
可能与你有关@jds。我想在我的 Dell Precision M2800 上使用 AVX 架构启用矢量化,所以我使用以下块三次将 -mavx2
标志添加到我的 configure 文件中:
CXXFLAGS= -O3 -std=c++11 -Wall -mavx2
此代码更改将我的代码(一系列双嵌套 for 循环)从 4.1 秒加速到 1.4 秒!
了解如何通过使用 configure 和 clean[=27= 构建框架包来修改 sourceCpp
使用的编译器标志] 文件来创建你的 Makevars 文件,正如@nrussell 在
中所展示的那样
在 Eigen 常见问题解答中,它指出 you need to enable vectorization in the compiler。
我正在尝试使用 RcppEigen 开发 R 包。如果用户无需手动编译带有指定标志的包即可获得最佳性能,我希望如此。
希望在 Eigen 库中启用矢量化的 R 包的最佳实践是什么?
完全按照常见问题解答中的说明进行操作并设置编译器标志。在测试当前编译器支持的内容后,您可能必须从脚本 configure
中打开它们——并且 CRAN 可能仍会告诉您这些标志不可移植。
此外,为了修正这里的术语,我们的 RcppEigen 中没有 "library":RcppEigen 仅使用 Eigen 中的 headers,它被设计为模板化 header-only 包。
我也是初学者,花了很多时间试图理解 Rcpp
可能与你有关@jds。我想在我的 Dell Precision M2800 上使用 AVX 架构启用矢量化,所以我使用以下块三次将 -mavx2
标志添加到我的 configure 文件中:
CXXFLAGS= -O3 -std=c++11 -Wall -mavx2
此代码更改将我的代码(一系列双嵌套 for 循环)从 4.1 秒加速到 1.4 秒!
了解如何通过使用 configure 和 clean[=27= 构建框架包来修改 sourceCpp
使用的编译器标志] 文件来创建你的 Makevars 文件,正如@nrussell 在