小编Gho*_*osh的帖子

稀疏矩阵 - 稀疏矩阵乘法算法.R的性能改进

我的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)

r openmp sparse-matrix armadillo rcpp

5
推荐指数
0
解决办法
250
查看次数

标签 统计

armadillo ×1

openmp ×1

r ×1

rcpp ×1

sparse-matrix ×1