我最近开始在R中使用雪花包,我让它在一个相当复杂的实现中成功地工作,如下所示(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个),因此拆分进程的其他部分不会节省时间。
发布于 2013-09-13 03:02:54
您应该只并行化外部循环,因为您有足够的迭代来使用所有的核心。如果迭代和内核的数量不同,事情可能会变得棘手,但对于您的问题,并行化其他循环只会损害性能。
我写了一个关于并行运行嵌套循环的小插曲:Nesting Foreach Loops。虽然您没有使用foreach,但您可能会发现它很有帮助。
https://stackoverflow.com/questions/18772122
复制相似问题