【发布时间】:2013-09-18 07:22:05
【问题描述】:
我想将一个大矩阵传递给 RcppArmadillo 函数(大约 30,000*30,000),并且感觉仅此传递就消耗了所有性能提升。 here 也提出了这个问题,并建议使用带有 copy_aux_mem = false 参数的高级构造函数的解决方案。这似乎也是一个很好的解决方案,因为我只需要从矩阵中读取行而不更改任何内容。我在正确实施解决方案时遇到问题。这可能只是一个简单的语法问题。
这是我当前的函数调用设置(当然是简化的):
#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::export]]
arma::vec test(arma::mat M) {
return(M.row(0))
}
对于大型矩阵 M(例如 M=matrix(rnorm(30000*30000), nrow=30000, ncol=30000)),这非常慢。所以我想使用记录在 here 中的高级构造函数。语法是 mat(aux_mem*, n_rows, n_cols, copy_aux_mem = true, strict = true) 和 copy_aux_mem 应该设置为 false到“按引用传递”。我只是不确定函数定义中的语法。如何在arma::vec test(arma::mat M) { 中使用它?
【问题讨论】:
-
我几乎可以肯定这也是一个多余的问题。