0

我最近开始在 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 个),因此拆分进程的其他部分不会节省时间。

4

1 回答 1

0

您应该只并行化外部循环,因为您有足够的迭代来使用所有内核。如果迭代次数和内核数量可能不同,事情可能会变得棘手,但对于您的问题,并行化其他循环只会损害性能。

我写了一个关于并行运行嵌套循环的小插曲:嵌套 Foreach 循环。尽管您没有使用foreach,但您可能会发现它很有帮助。

于 2013-09-12T19:02:54.147 回答