可能重复:
R限制中的并行处理
我在R多核中编写了一些代码,我在24核机器上运行它.实际上只有12个核心,但它们是超线程的,所以看起来有24个.
这有点奇怪:所有线程都运行在同一个核心上!因此,他们每个人只使用少量的cpu,而不是每个都运行在单个核心上,并且咀嚼所有可用的核心.
为简单起见,我只运行4个线程:
mclapply( 1:30, function(size) {
# time consuming stuff that is cpu bound (think "forecast.ets" et al)
}, mc.cores = 4, mc.preschedule = F )
Run Code Online (Sandbox Code Playgroud)
在运行此之前,已经有一个R进程在一个核心上运行,使用该核心容量的100%:

接下来,我启动"多核过程",另外4个线程争夺同一个核心!:

......所以,当他们每个人能够获得100%的核心时,他们每人获得一个核心的12%,或大约1%的可用处理能力.此外,另一个R进程现在只获得50%的核心.
操作系统是64位的Ubuntu 12.04.硬件是英特尔.R是版本2.15.2"捣蛋"
思考?(我知道我可以使用降雪,但我有很多变数,而且我真的不想拥有sfExport所有这些!)
编辑:哦,我想某处有一些全局锁定?但是,为什么两个完全独立的R进程之间会发生冲突?我可以并行运行两个R进程,每个进程占用核心CPU的100%.
编辑2:感谢Dirk的指针,我重建了openblas,现在看起来更健康了!:
