r语言rcpp 无法加载_使用Rcpp简单快速地提高R中大矩阵乘法的运算速度

概述

本文的内容主要来自这个回答和一些经验。

R自带的矩阵运算方法速度不算太快,在做两个大矩阵相乘时显得尤为明显。提高R矩阵乘法的方法有多种,例如

  1. 使用base包自带的crossprod和tcrossprod函数,他们分别相当于 t(x) %*% y和x %*% t(y),这个方法能够略微提高运算速度;
  2. 使用Rcpp编译的c++函数(调用一些库例如Eigen、Armadillo)提高运算效率;
  3. 更改R的底层矩阵运算库,使用更为高效的库。例如计算机是Intel的处理器可以使用他们家的MKL库(使用MKL编译R),或者使用针对所有处理器开源的OpenBLAS库。这个方法最为彻底,能够全方位地提升R的矩阵运算速度(不只是乘法),但是需要一定的动手能力;
  4. 使用GPU进行计算。

其中,2、3、4方法可以结合起来,分别从软件、软件底层、硬件上来提升速度,可以极大地加快运算速度。

Rcpp方法的操作步骤

本文具体展示了第二个方法。因为这个方法简单,但是能够极大地提高矩阵乘法速度。

第一步,在R里面安装Rcpp,RcppArmadillo,RcppEigen三个包,同时安装microbenchmark包用以之后的速度测试;如果是Windows环境,需要安装Rtool工具以编译Rcpp文件,安装的时候务必勾选上“Add rtools to system PATH”,否则无法运行。

第二步,在工作目录下新建“matrix_multiplication.cpp”文件,里面粘贴如下内容,并保存关

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值