《R语言与农业数据统计分析及建模》学习——并行计算

1、并行计算概念

        并行计算是指同时使用多种计算资源解决计算问题的过程。

        R语言是一个单线程的程序。在现代多核心处理器上,R无法有效利用所有计算内核。

        当下时代,我们需要处理的数据量日渐增大,R的计算模式限制了R处理大规模数据的能力。

2、R如何并行计算

        向量化编程:比较适合数据框的操作。

        并行化包:适合复杂的运算。适用于一个大问题可以被分解为并发执行的小问题。例如:有10万个结构相同的数据文件,想把每个文件的数据都读出来。对每个文件的数据各自进行一次线性回归。

3、parallel并行计算

        案例1:计算1到1000每个自然数的平方。

# 方法1
for(i in 1:1000){
  print(i*i)
}
# 方法2
num<-1:1000
num*num
# 方法3
square<-function(x){return(x^2)}
sapply(1:1000,square)
# 方法4
library(parallel)
total_cores<-detectCores()
print(total_cores)
cl<-makeCluster(total_cores-6)
num<-1:1000
parLapply(cl,num,square)
stopCluster

        案例2:正对1到2000000每个自然数除以13,如果余数大于5,则求该数平方,否则求开平发。

fun1<-function(x){
  if(x%%13){result<-x^2}
  else{result<-sqrt(x)}
  return(result)
}

total_cores<-detectCores()
total_cores
cl<-makeCluster(total_cores-6)
num<-1:2000000
parLapply(cl,num,fun1)
stopCluster(cl)

4、foreach并行计算

        案例:写一个function,实现对一个数取平方之后,再除以17,再乘以19。针对1至100000的自然熟,运行这个function。

library(foreach)
library(doParallel)
# 编写函数
func<-function(x){
  y<-(x^2)/17*19
  return(y)
}
# 启动集群作为foreach并行计算的后端
cl<-makeCluster(5)
registerDoParallel(cl)
# 并行计算方式
system.time(
  result<-foreach(x=1:100000,.combine = 'rbind' )%dopar% func(x)
)
stopCluster(cl)
result
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值