我的mac的R与openblas相关联.当我使用Armadillo在R或Rcpp中执行稀疏稀疏乘法时查看"%CPU"使用情况时,与密集密集乘法不同,它似乎不会使用多线程.速度方面,R或Armadillo中的单线程稀疏稀疏乘法似乎也比Matlab慢.
为了解决这个问题,我已经实现了FG Gustavson的算法(https://dl.acm.org/citation.cfm?id=355796),用于使用Armadillo的spMat容器在Rcpp中执行稀疏稀疏矩阵乘法.
我可以看到的改善(请参见下文),如果我不理它是直接执行该算法的行进行排序,然而,标准订货使得它比的r(慢市价修改mtall的评论).我不是Rcpp/RcppArmadillo/C++的专家,我正在寻找两个具体方面的帮助:
以编程方式,如何基于单线程应用程序使sp_sp_gc_ord函数更高效,更快速?
我在多线程跛脚企图sp_sp_gc_ord用的OpenMP导致R键崩溃.我已经注释掉了下面的omp命令.我看过关于OpenMP http://gallery.rcpp.org/tags/openmp/的 Rcpp画廊讨论,但无法弄清楚问题
我将不胜感激任何帮助.下面是一个可重现的代码示例和相应的微基准测试:
#### Rcpp functions
#include <RcppArmadillo.h>
#include<omp.h>
#include<Rcpp.h>
using namespace Rcpp;
using namespace arma;
// [[Rcpp::plugins(openmp)]]
// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::export]]
sp_mat sp_sp_gc_ord(const arma::sp_mat &A, const arma::sp_mat &B, double p){
// This function evaluates A * B where both A & B are sparse and the resultant
// product is also sparse
// define matrix sizes
const …Run Code Online (Sandbox Code Playgroud)