下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第R语言常用两种并行方法之snowfall详解上一篇博客(R中两种常用并行方法之parallel)中已经介绍了R中常见的一种并行包:parallel,其有着简单便捷等优势,其实缺点也是非常明显,就是很不稳定。很多时候我们将大量的计算任务挂到服务器上进行运行时,更看重的是其稳定性。
这时就要介绍R中的另一个并行利器——snowfall,这也是在平时做模拟时用的最多的一种方法。
针对上篇中的简单例子
首先是一个最简单的并行的例子,这个例子不需要载入任何依赖库、函数、对象等。相对也比较简单:
library(snowfall)#载入snowfall包
#并行初始化
sfInit(parallel=TRUE,cpus=detectCores()-1)
#进行lapply的并行操作
sfLapply(1:3,function(x)c(x,x^2,x^3))
#结束并行,返还内存等资源
sfStop()
语法基本也比较好理解,代码中的注释也有进行说明。sfLapply()的操作是与lapply()相对应的。类似地,还有sfSapply(),sfApply()等函数,其用法与apply组中的函数一致。
snowfall进阶
在实际操作时,我们进行的函数往往没有这么简单,往往还需要依赖一些其它的函数、变量、R包等,这时就不能用上述的方法简单的进行操作了。
下面给出一个具体实际的操作案例,来展示如何载入函数中依赖的对象等参数。
n-100
m-100
fun1-function(...){
fun2-function(...){
sfInit(parallel=TRUE,cpus=10)#初始化
sfLibrary(MASS)#载入依赖R包MASS
sfLibrary(ggplot2)#载入依赖R包ggplot2
sfExport("n","m")#载入依赖的对象
sfExport("fun1","fun2")#载入依赖的函数
#并行计算
result-sfLapply(1:10000,myfun)
#注意:myfun是自己定义的函数,里面需要用到包MASS,ggplot2;变量m,n;函数fun1,fun2。
sfStop()#结束并行
其实很简单,对于并行函数依赖的库,就是sfLibrary()进行载入,所以来的对象以及函数则使用sfExport()进行载入。
当函数或者对象非常多时,不方便一个一个单独输入,这时我们可将所有的对象与函数存到allfun.R文件夹中,然后再采用sfSource('allfun.R')将所有的对象与函数进行导入,方便快捷。
下面我们再来看看如何查看并行进度:
使用sfCat查看并行进度
这部分参考:Howtooutputamessageinsnowfall
我们只需在函数中添加sfCat()函数,即可查看并行进度,其示例代码如下所示:
sfInit(parallel=TRUE,cpus=2,slaveOutfile="test.txt")
sfLibrary(snowfall)
res-sfLapply(1:100,function(x){
sfCat(paste("Iteration",x),sep="\n")
sfStop()
需要注意的是,在初始化并行中,我们多加了一串命令:slaveOutfile="test.txt",这个表示其显示的进度会储存在test.txt文件中,其余部分基本没什么变化。
与Rcpp结合会遇到的问题
当我们进行模拟想要再次进行提速时,通常都会使用Rcpp将我们的R代码改成C++代码。平时在我们使用的时候,直接使用Rcpp::sourceCpp()就可以直接将我们的C++代码中的函数进行导入,然想要使用snowfall进行并行时则会遇到问题。
这里使用了两种方法来进行尝试:
使用sfSource('myCppfun.cpp')进行导入,会在导入的时候直接报错。
先使用Rcpp::sourceCpp('myCppfun.cpp')将函数读入变量空间,然后再使用sfExport("myCppfun")将函数。这样做在最后运行代码的时候会报错。
所以遇到这种问题,只能将我们的C++代码中的函数打包成一个包,然后直接在使用snowfall进行并行时,调取这个包来运行则不会报错。
关于如何
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江临安农村商业银行股份有限公司2027届校园招聘笔试参考题库及答案解析
- 2026年湖北省宜昌市公务员人员招聘考试参考试题与答案详解
- 某水泥厂节能降耗规范
- 2026四川内江经开区就业和社会保障服务中心招聘见习人员1人笔试参考题库及答案解析
- 2026山东淄博职业技术大学高层次人才招聘13人(第二批)考试备考题库及答案解析
- 2026年福建省五建建设集团有限公司招聘第二批工作人员9人考试模拟试题及答案解析
- 2026年芜湖智能传感器研究院有限公司专业技术人才招聘部分岗位补招笔试模拟试题及答案解析
- 2026年浙江省台州市公务员人员招聘笔试参考试题与答案详解
- 2026宁电投(石嘴山市)能源发展有限公司秋季招聘30人考试模拟试题及答案解析
- 2026重庆水利电力职业技术学院考核招聘事业单位人员(第二批)8人考试备考试题及答案解析
- 浪潮式发售(全新升级版) (杰夫·沃克)
- 中医红外热像采集与分析技术规范
- 定语从句专项训练50题可打印
- 重复经颅磁刺激治疗与护理
- 火灾与爆炸的预防措施
- 电力工程竣工验收报告及流程
- CFSLM治疗先天性重度上睑下垂的临床体会
- 2025年中国联通校园招聘笔试参考题库含答案解析
- 经导管主动脉瓣置换术围手术期共病诊治中国专家共识
- 钢结构监理实施细则
- 高填深挖路基监控量测施工方案 - 副本
评论
0/150
提交评论