
386
|
第
12
章
#>
#> value
plan(multiprocess)
tic("simulate pi - parallel")
sims_list <- future_map(draw_list, simulate_pi)
toc()
#> simulate pi - parallel: 26.33 sec elapsed
mean(unlist(sims_list))
#> [1] 3.14
前面的示例在 MacBook Pro 上运行,包含有四个物理内核和两个虚拟内核。当你并行运
行代码时,最佳情况是运行时间减少到 1/(物理内核数)。通过四个物理内核,你可以
看到并行运行时比单线程运行快得多,但不是单线程运行时的四分之一。内核间移动数
据总会花一些时间,因此你永远不会遇到最佳情况。每次迭代产生的数据越多,你在并
行化方面的速度提升就越少。
12.21.4 另请参阅
参见 12.22 节。
12.22 远程并行运行 R 代码
12.22.1 问题
你可以访问许多远程计算机,需要在它们之间并行运行代码。
12.22.2 解决方案
在多台机器上并行运行代码最初可能很难设置。但是,如果我们从一些关键预设条件开
始,那么该过程的成功概率要高得多。
首要条件是:
•
你可以使用以前生成的 SSH 密钥,从主机到每个远程节点进行保密通信(ssh)而无
须密码。
•
远程节点都安装了 R(理想情况下是 R 的相同版本)。
•
设置路径,以便你可以从 SSH 运行 Rscript。
•
远程节点安装了 furrr 包(该添加包将会安装 ...