当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R makeCluster 创建并行套接字集群


R语言 makeCluster 位于 parallel 包(package)。

说明

创建一组副本R并行运行并通过套接字进行通信。

用法

makeCluster(spec, type, ...)
makePSOCKcluster(names, ...)
makeForkCluster(nnodes = getOption("mc.cores", 2L), ...)

stopCluster(cl = NULL)

setDefaultCluster(cl = NULL)
getDefaultCluster()

参数

spec

适合集群类型的规范。

names

运行工作副本的主机名的字符向量R,或一个正整数(在这种情况下,副本数在‘⁠本地主机⁠’)。

nnodes

要分叉的节点数量。

type

支持的类型之一:请参阅“详细信息”。

...

要传递给生成工作人员的函数的选项。查看具体信息'。

cl

"cluster" 的对象。

细节

makeCluster 创建受支持类型之一的集群。默认类型 "PSOCK" 调用 makePSOCKcluster 。输入 "FORK" 调用 makeForkCluster 。其他类型传递给包 snow

makePSOCKcluster snow 包中 makeSOCKcluster 的增强版本。它在指定主机上运行 Rscript 以设置一个工作进程,该进程在套接字上侦听要计算的表达式,并返回结果(作为序列化对象)。

makeForkCluster 只是 Windows 上的一个存根。在类 Unix 平台上,它通过分叉创建工作进程。

当不需要设置任何选项时,工作线程通常与主线程在同一主机上运行。

支持多个选项(主要针对 makePSOCKcluster ):

master

master 的主机名,worker 知道的。这可能与主站所知的不同,并且在私有子网上,可能需要将其指定为数字 IP 地址。例如,macOS 可能会将机器检测为“⁠somename.local⁠’,这个名字只有它自己知道。

port

套接字连接的端口号,默认取自环境变量R_PARALLEL_PORT,然后在范围内随机选择一个端口11000:11999.

timeout

该端口的超时(以秒为单位)。这是失败前master和worker之间零通信的最长时间。默认值为 30 天(POSIX 标准仅要求支持最长 31 天的值)。

setup_timeout

工作节点在失败之前尝试连接到主节点的最大秒数。默认值为 2 分钟。下次尝试之前的等待时间从 0.1 秒开始,每次重试后增加 50%。

outfile

去哪里指挥stdoutstderr工作人员的连接输出。""表示没有重定向(这可能只对本地计算机上的工作人员有用)。默认为‘/dev/空’(‘无:’在 Windows 上)。另一种可能性是工作主机上的文件路径。文件将以追加模式打开,因为所有工作人员都登录到同一文件。

homogeneous

逻辑,默认 true。看注释'。

rscript

看注释'。

rscript_args

附加参数的字符向量Rscript--no-environ.

renice

为工作进程设置的数字‘niceness’,例如15 表示低优先级。 OS-dependent:详情请参阅psnice

rshcmd

要在主机上运行以在另一台主机上启动进程的命令。默认为 ssh

user

与另一台主机通信时使用的用户名。

manual

逻辑性强。如果为 true,则需要手动运行工作人员。

methods

逻辑性强。如果为 true(默认),工作线程将加载 methods 包:不加载它可以节省大约 30% 的集群启动 CPU 时间。

useXDR

逻辑性强。如果 true(默认)序列化将使用 XDR:其中要传输大量数据并且所有节点都是小端,如果将其设置为 false,则通信可能会快得多。

setup_strategy

特点。如果"parallel"(默认)如果可能的话,工作人员将在集群设置期间并行启动,现在适用于同构"PSOCK"包含所有工作人员的集群自动启动(manual = FALSE)在本地机器上。工作线程将在其他集群上按顺序启动,在所有集群上setup_strategy = "sequential"等等R3.6.0 及更早版本。此选项仅供专家使用(例如调试),并且可能会在 R 的未来版本中删除。

函数 makeForkCluster 通过分叉创建套接字集群(因此在 Windows 上不可用)。它支持选项 porttimeoutoutfile ,并始终使用 useXDR = FALSE 。强烈建议不要将 "FORK" 集群与 GUI front-ends 或多线程库一起使用。有关详细信息,请参阅mcfork

通过调用来关闭工人是一个很好的做法stopCluster:但是,一旦工作人员正在侦听命令的套接字变得不可用,工作人员将自行终止,如果主设备R会话已完成(或其进程终止)。

函数 setDefaultCluster 将集群注册为当前会话的默认集群。使用 setDefaultCluster(NULL) 会删除已注册的集群,就像停止该集群一样。

对于集群创建者来说,是 c("SOCKcluster", "cluster") 类的对象。

对于默认簇 setter 和 getter,注册的默认簇或NULL(如果没有这样的簇)。

注意

选项 homogeneous = TRUE 多年来一直被记录为“所有主机都运行相同的设置吗?”,但这显然比其作者的意图更具限制性,并且代码并不要求这样做。

目前的解释homogeneous = TRUE就是它Rscript可以在每个工作人员上使用相同的路径启动。该路径由选项给出rscript并默认为完整路径Rscript在主人身上。 (工作人员不需要运行相同版本的R作为主人,甚至也不作为彼此。)

对于 homogeneous = FALSE ,工作人员上的 Rscript 可在其默认 shell 路径中找到。

对于在单个多核主机上运行 master 和worker 的非常常见的用法,默认设置是合适的。

套接字 connection 用于从主进程到每个工作进程进行通信,因此当主进程启动时,可能需要增加最大连接数(默认为 128,但有些将被使用)。

作者

Luke Tierney and R Core.

Derived from the snow package.

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Create a Parallel Socket Cluster。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。