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 |
类 |
细节
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
-
去哪里指挥
stdout
和stderr
工作人员的连接输出。""
表示没有重定向(这可能只对本地计算机上的工作人员有用)。默认为‘/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 上不可用)。它支持选项 port
、 timeout
和 outfile
,并始终使用 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 mcparallel 在单独的进程中异步计算 R 表达式
- R mcfork 分叉当前 R 进程的副本
- R mcaffinity 获取或设置当前进程的CPU亲和性掩码
- R mclapply 使用 Forking 的 lapply 和 mapply 并行版本
- R pvec 使用 Forking 并行化向量映射函数
- R children 用于管理分叉进程的低级函数
- R clusterApply 使用集群应用操作
- R RNGstreams Pierre L'Ecuyer 的 RngStreams 的实施
- R detectCores 检测CPU核心数
- R splitIndices 划分任务在集群中分布
- R SparkR partitionBy用法及代码示例
- R purrr accumulate 累积向量缩减的中间结果
- R purrr imap 将函数应用于向量的每个元素及其索引
- R purrr list_transpose 转置列表
- R purrr as_vector 将列表强制转换为向量
- R purrr map_if 有条件地将函数应用于向量的每个元素
- R purrr map2 映射两个输入
- R purrr map_depth 在给定深度映射/修改元素
- R SparkR printSchema用法及代码示例
- R purrr list_simplify 将列表简化为原子或 S3 向量
- R purrr rerun 多次重新运行表达式
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Create a Parallel Socket Cluster。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。