8.4 Rmpi

Rmpi 由卡尔顿大学的 Hao Yu 开发和维护

首先安装 openmpi-devel 开发环境(以 Fedora 30 为例)

yum install -y openmpi-devel
echo "export ORTED=/usr/lib64/openmpi/bin" >> ~/.bashrc
# 或者
echo "PATH=/usr/lib64/openmpi/bin:$PATH; export PATH" | tee -a ~/.bashrc
source ~/.bashrc

然后进入 R 安装 R 包 Rmpi

install.packages('Rmpi')

使用 Rmpi 包生成两组服从均匀分布的随机数

# 加载 R 包
library(Rmpi)
# 检测可用的逻辑 CPU 核心数
parallel::detectCores()
# 虚拟机分配四个逻辑CPU核 
# 1个 master 2个 worker 主机 cloud
mpi.spawn.Rslaves(nslaves=2)
#         2 slaves are spawned successfully. 0 failed.
# master (rank 0, comm 1) of size 3 is running on: cloud
# slave1 (rank 1, comm 1) of size 3 is running on: cloud
# slave2 (rank 2, comm 1) of size 3 is running on: cloud

调用 mpi.apply 函数

set.seed(1234)
mpi.apply(c(10, 20), runif)
[[1]]
 [1] 0.33684269 0.84638494 0.82776590 0.23707947 0.07593769 0.27981368
 [7] 0.45307675 0.02878214 0.32807421 0.92854275

[[2]]
 [1] 0.63474442 0.04025071 0.01996498 0.01922093 0.41258827 0.84150414
 [7] 0.74705002 0.07635368 0.32807392 0.94570363 0.89187667 0.67069020
[13] 0.92996997 0.22486589 0.22118236 0.15807970 0.65619450 0.16473730
[19] 0.85833484 0.11416449

用完要关闭

mpi.close.Rslaves()

pbdMPI 包处于活跃维护状态,是 pbdR 项目 的核心组件,能够以分布式计算的方式轻松处理 TB 级数据28

Rhpc 包同样基于 MPI 方式,但是集 Rmpi 和 snow 两个包的优点于一身,在保持 apply 编程风格的同时,能够提供更好的高性能计算环境,支持长向量,能够处理一些大数据。


  1. 2016年国际 R 语言大会上的介绍https://github.com/snoweye/user2016.demo 和2018年 JSM 会 上的介绍 https://github.com/RBigData/R_JSM2018↩︎