我最近开始在R中使用Snowfall包。我在相当复杂的实现中成功地工作,如下所示(y循环并行处理):
increment x from 1:100 {
increment y from 1:100 {
increment z from 1:20 { }
increment q from 1:20 { }
}
}
我在2台或4台处理器计算机上运行它。理论上,我想我可以并行运行x,y,z和q循环。所以并行运行x计数器,然后对于每个并行x进程,并行运行y等。
我的问题是,使用这么少的处理器时这是否有意义?例如使用四个处理器,我想象的y循环计算将使进程以最大输出运行(在任何时间每个处理器平均25个),因此拆分进程的其他部分将不会节省时间。
答案 0 :(得分:0)
您应该只对外部循环进行并行化,因为您有足够的迭代来使用所有核心。如果迭代次数和内核数量可能不同,那么事情会变得棘手,但对于您的问题,并行化其他循环只会影响性能。
我写了一个关于并行运行嵌套循环的小插图:Nesting Foreach Loops。虽然您没有使用foreach
,但您可能会觉得它很有帮助。