zoukankan      html  css  js  c++  java
  • R并行计算

    # 参考文献:
    https://cosx.org/2016/09/r-and-parallel-computing
    https://blog.csdn.net/sinat_26917383/article/details/52719232

    数据分析即服务(DAAS:Data Analyst as a Services)
    机器学习即服务(MLAS: machine learning as a services)

    #内存管理 
    memory.size(T)   	#查看系统分配R内存
    memory.size(F)   	#查看已使用内存    
    memory.limit() 	#查看内存上限   
    object.size()		#看每个变量占多大内存。  
    memory.size()		#查看现在的work space的内存使用  
    memory.limit()		#查看系统规定的内存使用上限。如果现在的内存上限不够用,可以通过memory.limit(newLimit)
    #更改到一个新的上限。注意,在32位的R中,封顶上限为4G,无法在一个程序上使用超过4G (数位上限)。这种时候,可以考虑使用64位的版本。  
    
    
    # apply实现方式
    # 原始
    system.time(
        res1.s <- lapply(1:len, FUN = function(x) { solve.quad.eq(a[x], b[x], c[x])})
    )
    
    # lilux
    library(parallel)
    # multicores on Linux
    system.time(
      res1.p <- mclapply(1:len, FUN = function(x) { solve.quad.eq(a[x], b[x], c[x])}, mc.cores = 2)
    )
    
    #windows
    #Cluster on Windows
    cores <- detectCores(logical = FALSE)
    cl <- makeCluster(cores)
    clusterExport(cl, c('solve.quad.eq', 'a', 'b', 'c'))
    system.time(
       res1.p <- parLapply(cl, 1:len, function(x) { solve.quad.eq(a[x], b[x], c[x]) })
    )
    stopCluster(cl)
    
    # for循环实现方式
    #原始
    # serial code
    res2.s <- matrix(0, nrow=len, ncol = 2)
    system.time(
        for(i in 1:len) {
            res2.s[i,] <- solve.quad.eq(a[i], b[i], c[i])
        }
    )
    
    # windows
    # foreach
    library(foreach)
    library(doParallel)
    # Real physical cores in the computer
    cores <- detectCores(logical=F)
    cl <- makeCluster(cores)
    registerDoParallel(cl, cores=cores)
    # split data by ourselves
    chunk.size <- len/cores
    system.time(
      res2.p <- foreach(i=1:cores, .combine='rbind') %dopar%
      {  # local data for results
         res <- matrix(0, nrow=chunk.size, ncol=2)
         for(x in ((i-1)*chunk.size+1):(i*chunk.size)) {
            res[x - (i-1)*chunk.size,] <- solve.quad.eq(a[x], b[x], c[x])
         }
         # return local results
         res
      }
    )
    stopImplicitCluster()
    stopCluster(cl)
    

      

  • 相关阅读:
    【Django总结】Django警告Not Found: /favicon.ico
    【性能学习】Windows自带性能监控工具perform
    【Linux学习】定时任务和后台运行相关命令
    【Python学习】Python 写Windows Service服务程序
    【Django总结】ORM
    【Python学习】Python requests.post方法中data与json参数区别
    【Pycharm学习】Pycharm散记
    【Pycharm学习】离线安装插件
    【Mysql学习】索引操作
    [HG]奋斗赛G
  • 原文地址:https://www.cnblogs.com/iupoint/p/10766387.html
Copyright © 2011-2022 走看看