我正在使用并行程序包来获得更好的CPU利用率,我认为这会显着缩短计算时间。但是我得到了相反的结果,而我得到的4个核心的CPU利用率几乎达到了100%,时间结果表明使用并行产生的最坏结果是不使用它。怎么会这样?这是包裹的问题吗?我错过了别的什么吗?我的代码很大,所以我不能在这里介绍..
time without parallel 45 sec 1.04 min 1.5 min 6.14 min
time with parallel 1.3 min 1.7 min 2.3 min 14.5 min
number of variables 78 78 78 870
number of rows 30k 50k 70k 70k
答案 0 :(得分:2)
在进行并行处理之前,您应该尝试提高单核性能。如果没有看到您的代码,我们就无法给出任何具体的建议,但第一步应该是分析您的代码。有用的资源是 http://adv-r.had.co.nz/Performance.html和 https://csgillespie.github.io/efficientR/
一旦获得了良好的单核性能,就可以尝试并行处理。正如评论中暗示的那样,保持低通信开销至关重要。再说一次,如果没有看到你的代码,我们就无法给出任何具体的建议,但这里有一些一般的建议:
parallel
包就会默认执行此操作。如果由于某种原因需要负载平衡,那么您应该将任务分组到较少数量的块中,以便由负载平衡算法处理。