一直以来,总觉得并行计算是种很高深的技术,需要系统性的学习才能掌握。直到最近工作中进行大量循环计算,动辄十几个小时,实在是被整崩溃了,于是百度了一下,惊喜的发现R有很傻瓜的并行计算用法,完全满足基本的计算需求,这里简单记录一下。
R语言的并行可以用parallel包,这个包是自带的,不用下载,直接library即可。它本质上相当于打开多个R控制台,然后将任务拆分后让这些控制台计算,等各部分计算完成后再合在一起呈现出来。
完成一次并行计算需要的函数主要有:makeCluster、clusterExport、clusterEvalQ、clusterApply、parLapply、parSapply、parApply等。
makeCluster(spec, type, ...)用于创建并行集合。参数spec可以理解为线程数,或并行计算“打开R控制台”的数量;参数type默认值为"PSOCK",是一种组织并行计算的底层结构,这个参数还可以选"FORK"。
clusterEvalQ(cl = NULL, expr)用于在各线程中运行一些表达式,通常是用于加载各种包。参数cl表示要调用的并行集合(即makeCluster函数的运行结果);参数expr表示表达式。
clusterExport(cl = NULL, varlist, envir = .GlobalEnv) 用于导入需要的变量。参数cl表示要调用的并行集合&