Ant*_*ico 4 parallel-processing fork r survey
能够在 Windows 上多线程会很棒,但也许这个问题比我想象的要难.. :(
里面survey:::svyby.default有一个块,lapply或者mclapply取决于multicore=TRUE你的操作系统。lapply无论如何,Windows 用户都会被迫进入循环,我想知道是否有任何方法可以mclapply代替……加快计算速度。
我不太了解并行处理的内部结构,但我做了一些实验,看看是否有任何 Windows 可接受的替代方案可行。首先我尝试覆盖 mclapply
mclapply <-
function( X , FUN , ... ){
clusterApply(
x = X ,
fun = FUN ,
cl = makeCluster( detectCores() ) , ... )
}
Run Code Online (Sandbox Code Playgroud)
接下来我用来fixInNamespace( svyby.default , "survey" )删除该行
if (multicore) parallel:::closeAll()
但这只是让我达到了
> svyby(~api99, ~stype, dclus1, svymean , multicore=TRUE )
Error in checkForRemoteErrors(val) :
3 nodes produced errors; first error: object 'svymean' not found
Run Code Online (Sandbox Code Playgroud)
引用 Rsurvey包的作者 Thomas Lumley 博士回应我的询问——
不可以。这种并行化方法依赖于 Windows 不支持的分叉。
有必要重写它以使用 clusterApply(),而且我很确定通信开销会消耗速度增益。通过分叉,子进程免费获得父进程数据的副本——这一切都由虚拟<->物理内存转换硬件完成——但使用集群方法,R 必须明确地将数据发送到子进程。
| 归档时间: |
|
| 查看次数: |
415 次 |
| 最近记录: |