代码之家  ›  专栏  ›  技术社区  ›  ivo Welch

R中的单进程(共享内存)多CPU并行性[关闭]

  •  4
  • ivo Welch  · 技术社区  · 6 年前

    我已经用了很多麦克拉普利和爱它。这是一个记忆的猪,但非常方便。唉,现在我有了一个不同的问题,不仅仅是令人难堪的相似性。

    r(esp unix r)是否可以在一台计算机上使用多个CPU核心,共享相同的内存空间,而无需复制完整的操作系统进程,从而

    1. 最小的过程开销;以及

    2. 一个CPU对全局数据的修改是否立即可供其他CPU使用?

    如果是,r是否可以像文件(flock)一样锁定一些内存?

    我怀疑答案是否定的,并且明确地了解这一点将非常有用。如果答案是肯定的,请指出正确的方向。

    当做,

    国际原子能机构

    2 回复  |  直到 6 年前
        1
  •  1
  •   Ralf Stubner    6 年前

    您可以使用 Rdsm 要使用的包 分布式 共享内存并行性,即使用相同内存空间的多个R进程。

    除此之外,您还可以使用多线程BLAS/LAPACK(例如OpenBLAS或英特尔MKL),您可以使用C/C++(也可能是FORTRAN)代码与OpenMP一起使用。见 assembling a matrix from diagonal slices with mclapply or %dopar%, like Matrix::bandSparse 例如。

        2
  •  1
  •   Carlos Santillan    6 年前

    您有没有看一下微软的r open(Linux版),以及定制的数学内核库(mkl)。

    https://mran.microsoft.com/documents/rro/multithread