# 参考文献:
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)

  1. #内存管理
  2. memory.size(T) #查看系统分配R内存
  3. memory.size(F) #查看已使用内存
  4. memory.limit() #查看内存上限
  5. object.size() #看每个变量占多大内存。
  6. memory.size() #查看现在的work space的内存使用
  7. memory.limit() #查看系统规定的内存使用上限。如果现在的内存上限不够用,可以通过memory.limit(newLimit)
  8. #更改到一个新的上限。注意,在32位的R中,封顶上限为4G,无法在一个程序上使用超过4G (数位上限)。这种时候,可以考虑使用64位的版本。
  9.  
  10. # apply实现方式
  11. # 原始
  12. system.time(
  13. res1.s <- lapply(1:len, FUN = function(x) { solve.quad.eq(a[x], b[x], c[x])})
  14. )
  15.  
  16. # lilux
  17. library(parallel)
  18. # multicores on Linux
  19. system.time(
  20. res1.p <- mclapply(1:len, FUN = function(x) { solve.quad.eq(a[x], b[x], c[x])}, mc.cores = 2)
  21. )
  22.  
  23. #windows
  24. #Cluster on Windows
  25. cores <- detectCores(logical = FALSE)
  26. cl <- makeCluster(cores)
  27. clusterExport(cl, c('solve.quad.eq', 'a', 'b', 'c'))
  28. system.time(
  29. res1.p <- parLapply(cl, 1:len, function(x) { solve.quad.eq(a[x], b[x], c[x]) })
  30. )
  31. stopCluster(cl)
  32.  
  33. # for循环实现方式
  34. #原始
  35. # serial code
  36. res2.s <- matrix(0, nrow=len, ncol = 2)
  37. system.time(
  38. for(i in 1:len) {
  39. res2.s[i,] <- solve.quad.eq(a[i], b[i], c[i])
  40. }
  41. )
  42.  
  43. # windows
  44. # foreach
  45. library(foreach)
  46. library(doParallel)
  47. # Real physical cores in the computer
  48. cores <- detectCores(logical=F)
  49. cl <- makeCluster(cores)
  50. registerDoParallel(cl, cores=cores)
  51. # split data by ourselves
  52. chunk.size <- len/cores
  53. system.time(
  54. res2.p <- foreach(i=1:cores, .combine='rbind') %dopar%
  55. { # local data for results
  56. res <- matrix(0, nrow=chunk.size, ncol=2)
  57. for(x in ((i-1)*chunk.size+1):(i*chunk.size)) {
  58. res[x - (i-1)*chunk.size,] <- solve.quad.eq(a[x], b[x], c[x])
  59. }
  60. # return local results
  61. res
  62. }
  63. )
  64. stopImplicitCluster()
  65. stopCluster(cl)

  

R并行计算的更多相关文章

  1. R︱并行计算以及提高运算效率的方式(parallel包、clusterExport函数、SupR包简介)

    要学的东西太多,无笔记不能学~~ 欢迎关注公众号,一起分享学习笔记,记录每一颗"贝壳"~ --------------------------- 终于开始攻克并行这一块了,有点小兴 ...

  2. R多线程并行计算

    先上代码案例: 主要的操作: library(parallel);#加载并行计算包 cl <- makeCluster(8);# 初始化cpu集群 clusterEvalQ(cl,library ...

  3. R︱foreach+doParallel并行+联用迭代器优化内存+并行机器学习算法

    要学的东西太多,无笔记不能学~~ 欢迎关注公众号,一起分享学习笔记,记录每一颗"贝壳"~ --------------------------- 接着之前写的并行算法paralle ...

  4. [原]CentOS7安装Rancher2.1并部署kubernetes (二)---部署kubernetes

    ##################    Rancher v2.1.7  +    Kubernetes 1.13.4  ################ ##################### ...

  5. 利用python进行数据分析2_数据采集与操作

    txt_filename = './files/python_baidu.txt' # 打开文件 file_obj = open(txt_filename, 'r', encoding='utf-8' ...

  6. Django项目:CRM(客户关系管理系统)--81--71PerfectCRM实现CRM项目首页

    {#portal.html#} {## ————————46PerfectCRM实现登陆后页面才能访问————————#} {#{% extends 'king_admin/table_index.h ...

  7. R与并行计算(转)

    文章摘要 本文首先介绍了并行计算的基本概念,然后简要阐述了R和并行计算的关系.之后作者从R用户的使用角度讨论了隐式和显示两种并行计算模式,并给出了相应的案例.隐式并行计算模式不仅提供了简单清晰的使用方 ...

  8. R语言使用 multicore 包进行并行计算

    R语言是单线程的,如果数据量比较大的情况下最好用并行计算来处理数据,这样会获得运行速度倍数的提升.这里介绍一个基于Unix系统的并行程序包:multicore. 我们用三种不同的方式来进行一个简单的数 ...

  9. R语言并行计算中的内存控制

    R语言使用向量化计算,因此非常容易在集群上进行并行计算.parallel 包提供了非常方便的函数用来进行并行计算,但有一个问题是并行时对于内存中的对象会拷贝多份,因此会比较占内存,这里提供一个比较简易 ...

随机推荐

  1. c++ 指针与const的三种组合

    三种形式 const int a=1; int b=2: 1 const int * ptr1=&a; 2  int * const ptr2 = b; 3 const int * const ...

  2. hbase 概念

    在hbase里面有几个通俗的名称会经常出现 1)Hregion = region 2)Hregionserver = regionserver 3)Hmaster = master 4)Hmamsto ...

  3. .NET界面控件DevExpress发布v18.2.8|附下载

    DevExpress Universal Subscription(又名DevExpress宇宙版或DXperience Universal Suite)是全球使用广泛的.NET用户界面控件套包,De ...

  4. struts校验

    Struts2 校验框架 Struts2 和Struts1同样也提供了校验框架,但在Struts2 已经不再把校验框架做为一个插件,而是已经内置到了Struts2中,而且配置起来更为简单方便,功能也更 ...

  5. jsp脚本的九个内置对象

    JSP脚本中包含9个内置对象, 这9个内置对象都是Servlet API 接口实例, 只是JSP规范对它们进行了默认初始化(由JSP 页面对应Servlet 的jspService()方法来创建这些实 ...

  6. 第十七周翻译-SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志

    SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志 作者:Tony Davis,2012/01/27 翻译:赖慧芳 译文: 该系列   本文是Stairway系列的一部分:SQL ...

  7. gulp的使用(一)之gulp的基础了解

    Gulp是一个工具.用于项目构建. Gulp简介: 多个开发者共同开发一个项目,每位开发者负责不同的模块,这就会造成一个完整的项目实际上是由许多的“代码版段”组成的: 使用less.sass等一些预处 ...

  8. VMware三种网络介绍

    前言 很多人安装虚拟机的时候,经常遇到不能上网的问题,而vmware有三种网络模式,对初学者来说也比较眼花聊乱,今天我就来基于虚拟机3种网络模式,帮大家普及下虚拟机上网的背景知识.(博文原创自http ...

  9. day14 生成器迭代器

    迭代器(iterator) 可迭代对象: 可以使用迭代器取出数据的对象 判断一个对象是否是可迭代对象,就看这个对象有没有实现__iter__方法 所有的容器类型(包括字符串)都是可迭代的 迭代器的使用 ...

  10. JODA-TIME获取本月的第一天及最后一天

    1.获取当前时间: LocalDate now = LocalDate.now(); 2.本月第一天: LocalDate firstDayOfCurrentMouth = now.dayOfMont ...