我已经使用了mclapply并且非常喜欢它。这是一个记忆猪,但非常方便。唉,现在我有一个不同的问题,不仅仅是令人尴尬的平行。
R(esp Unix R)可以在一台计算机上使用多个CPU内核,共享相同的内存空间,而无需复制完整的OS进程,因此
最小的流程开销;和
一个CPU对全局数据的修改是否可以立即供其他CPU使用?
如果是,R可以像文件一样锁定一些内存(flock)吗?
我怀疑答案是否定的,明确地学习这将是非常有用的。如果答案是肯定的,请指出正确的方法。
的问候,
/ IAW
答案 0 :(得分:1)
您是否可以使用自定义Math Kernel Library(MKL)查看Microsoft的R Open(适用于Linux)。 我没有重写代码就看到了非常好的性能提升。
答案 1 :(得分:1)
您可以使用Rdsm包来使用分布式共享内存并行性,即使用相同内存空间的多个R进程。
除此之外,您还可以使用多线程BLAS / LAPACK(例如OpenBLAS或Intel MKL),并且您可以与OpenMP一起使用C / C ++(可能还有Fortran)代码。有关示例,请参阅assembling a matrix from diagonal slices with mclapply or %dopar%, like Matrix::bandSparse。