问题标签 [r-future]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1678 浏览

r - 如何使用 R 未来包在集群内进行并行计算?

我想for在集群(多台机器)的节点内分配作业(带有循环)。我尝试使用 R 包future来做到这一点。我不知道这是否是最好的方法;我尝试使用foreachdoParallel软件包,但没有成功。如何确定循环迭代次数何时大于集群节点数?

0 投票
1 回答
56 浏览

r - 未来在发送到远程时等待前一个未来结束

我执行以下操作将一堆模型发送到计算服务器。

未来等待第一个调用包装,然后发送下一个。我如何告诉未来它可以同时向远程发送多个作业?

这显然是可能的,因为我可以从不同的本地 R 会话将多个作业发送到同一个远程,或者如果我在调用plan(login)之间再次调用。但是我如何指定拓扑,这样未来就不会等待,我也不必重复调用plan

0 投票
2 回答
167 浏览

r - rJava 对象将来是否可导出(R 中的异步计算包)

我正在尝试通过在 Linux 上使用多核计划来使用未来包加速我的 R 代码。在未来的定义中,我正在创建一个 java 对象并尝试将其传递给 .jcall(),但将来我会为 java 对象获得一个空值。谁能帮我解决这个问题。以下是示例代码-

基本上我正在处理大型流数据。在上面的代码中,我将流数据字符串发送到用户定义的函数进行统计分析并返回 3 个组件的列表。然后想将此列表发送到自定义 java 类 [java.custom.class] 以使用自定义 Java 方法 [CustomJavaMethod] 进行进一步处理。不使用未来我的代码运行良好。但是我在一分钟内获得了 12 条流记录,然后我的代码变慢了,观察到处理延迟。

目前我使用的是 16 核的 Unix。使用 future 包后,我的过程很快完成。我已经追溯了我的代码,在 .jcall 中发生了错误。

希望这能澄清我的痛苦。

0 投票
2 回答
111 浏览

r - 为什么我的二级期货是串行执行的?

我正在尝试复制未来包的拓扑插图中的示例。去引用:

期货可以嵌套在 R 中,这样一个未来会创建另一组期货,依此类推。例如,这可能发生在嵌套的 for 循环中 [...]

有一部分作者使用plan(list(multicore, multicore))(进一步的论点并tweak省略)同步处理两个期货,每个期货同步处理四个期货。这应该等于同步处理的八个期货。

但是,当我尝试使用下面的代码重现这一点时,我看到第二级期货是按顺序处理的。我究竟做错了什么?

MCVE

期货执行的时间演变

期待

期待

会话信息

0 投票
2 回答
1559 浏览

r - R并行makeCluster()在Mac上无限挂起

当我尝试parallel在我的 Mac 上使用 R 中的包时遇到了一些问题。

以下是并行包的正常工作方式。

当我运行这段代码时,cl = makeCluster(2) 无限挂起。我试图解决它但失败了。我还提到了其他一些帖子。几个潜在的原因包括内存不足、安装错误等。它们似乎不是这里的问题,因为我重新启动了会话,重新安装了 R,但问题仍然存在。

我想问题是关于 R 尝试连接到核心时的权限。这是我发现的。我用futurepackage查看了连接core的具体过程。附件是代码及其返回。

Workers: [n = 2] 'localhost', 'localhost' Base port: 11303 Creating node 1 of 2 ... - 在 'localhost' 上设置节点启动 worker #1: '/Library/Frameworks/R.framework/Resources /bin/Rscript' --default packages=datasets,utils,grDevices,graphics,stats,methods -e 'parallel:::.slaveRSOCK()' MASTER=localhost PORT=11303 OUT=/dev/null TIMEOUT=2592000 XDR= TRUE
等待 'localhost' 上的 worker #1 重新连接

问题是本地主机永远不会连接回来......

以下是我的会话信息。我希望这有帮助。

R 版本 3.5.1 (2018-07-02)。
平台:x86_64-apple-darwin15.6.0(64 位)。
运行于:macOS High Sierra 10.13.6。

矩阵产品:默认。
BLAS:/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib。
LAPACK:/Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib

语言环境:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

附加的基础包:
[1] stats graphics grDevices utils datasets methods base

通过命名空间加载(未附加):
[1] compiler_3.5.1 parallel_3.5.1 tools_3.5.1 listenv_0.7.0 codetools_0.2-15 digest_0.6.16
[7] globals_0.12.2 future_1.9.0

有趣的是,相同的代码可以在我的旧 Mac 机器上运行(相同的操作系统,但硬件较旧)。我不知道这里发生了什么。任何帮助表示赞赏!谢谢!

0 投票
1 回答
867 浏览

r - 在 R 中运行并行计算时如何在工作人员上设置 .libPaths(检查点)

我使用 checkpoint 包进行可重现的数据分析。有些计算需要很长时间才能计算,所以我想并行运行它们。但是当并行运行时,检查点没有在工作人员上设置,所以我收到一条错误消息“没有名为 xy 的包”(因为它没有安装在我的默认库目录中)。

我如何确保每个工作人员都使用检查点文件夹中的包版本?我试图在 foreach 代码中设置 .libPaths 但这似乎不起作用。我还希望全局设置一次检查点/libPaths,而不是在每个 foreach 调用中设置一次。

另一种选择可能是更改 .Rprofile 文件,但我不想这样做。

{ 中的错误:任务 2 失败 - “没有名为 'stringr' 的包”

0 投票
0 回答
62 浏览

r - R Google Compute Engine 创建集群错误

我正在尝试创建一个包含在 GCE 上的虚拟机上的 R 集群。我遵循了googleComputeEngineR中的示例。我已经粘贴了下面的代码。

基本上,我可以创建虚拟机并建立对它们的 SSH 访问,但 socketConnection 一直超时。有什么想法可能是错的吗?

这是我得到的输出:

2018-10-10 20:27:20> 创建模板虚拟机

2018-10-10 20:27:22> 检查操作...待处理

2018-10-10 20:27:33> 运行中...

2018-10-10 20:27:53> 操作在 17 秒内完成

2018-10-10 20:27:53> 外部 IP 例如 cpu1:35.240.99.251

2018-10-10 20:27:53> ## VM r-base 在 35.240.99.251 运行

2018-10-10 20:27:53> 等待几分钟,让初始 docker 容器下载并安装,然后再登录。

2018-10-10 20:27:54> 虚拟机运行

2018-10-10 20:27:59> 创建模板虚拟机

2018-10-10 20:28:01> 检查操作...待处理

2018-10-10 20:28:21> 操作在 5 秒内完成

2018-10-10 20:28:22> 外部 IP 例如 cpu2:35.205.28.126

2018-10-10 20:28:22> ## VM r-base 在 35.205.28.126 运行

2018-10-10 20:28:22> 等待几分钟,让初始 docker 容器下载并安装,然后再登录。

2018-10-10 20:28:23> 虚拟机运行

2018-10-10 20:28:30> SSH 公钥上传到实例

2018-10-10 20:28:38> SSH 公钥上传到实例

2018-10-10 20:28:59> 外部 IP 例如 cpu1:35.240.99.251

socketConnection 中的错误(“localhost”,端口 = 端口,服务器 = TRUE,阻塞 = TRUE,:

已达到已用时间限制

0 投票
1 回答
55 浏览

r - 未来等待在单核机器上执行

我有 2 台具有相同版本的 Ubuntu (16.04)、R (3.4.4) 和未来软件包 (1.10.0) 的机器。我正在运行下面的代码,它实现了异步编程

预期的行为是执行将几乎立即结束,留下待处理的承诺。在一台机器上发生这种情况,执行会立即发生。但是在我拥有的另一台机器上,执行等待 mehAsync 函数执行,5 秒后完成。

如前所述,两台机器几乎相同。它们之间的主要区别在于速度较慢的是单核机器。但是根据我的理解,该multisession计划不应该需要多个内核。足够的资源来打开机器拥有的新 R 会话。

这里的具体问题是:

  • 我对预期行为的理解是否错误,这对于单核机器来说是正常的吗?
  • 我没有考虑到的其他哪些因素可能会影响这种行为?
  • 由于没有错误/警告消息并且我自己和其他人无法在独立机器中复制,我该如何调试此问题?

注意:在尝试调查其他问题时出现了这个问题

0 投票
0 回答
204 浏览

r - downloadHandler 唯一地忽略同一用户正在进行的异步进程

我正在试验承诺,据我所知,正如本期所指出的,为同一用户运行的异步进程应该阻止所有其他会话内活动的执行。然而,这似乎不是一个普遍的原则。

在下面的示例应用程序中,我有一个人为绘制的绘图操作和一些其他元素,以查看它们如何交互。其中一个元素是downloadButton/downloadHandler对。在异步操作运行时,仍然可以按downloadButton并获得输出,这对我来说是出乎意料的。我的问题是:

  • 我可以在异步进程运行时停止 downloadHandler 处于活动状态吗?
  • 为什么downloadHandler特别?

p>

编辑:删除了有关 downloadButton 下载整个页面的附加信息,因为它不是问题的组成部分

0 投票
0 回答
75 浏览

r - 不在移动热点上时,R 中的并行处理挂起

我有 R-package 'parallel' 的常见问题,如此处所示。命令

每当我登录到 wifi 连接时,它就会挂在机器上。但是,当我从手机登录到移动热点时,它工作正常。

我已经阅读了所有寻求解决方案的帖子,但到目前为止,最好的办法是重新安装我的操作系统,我真的希望避免这种情况......

有任何想法吗?

我使用 R 版本 3.5.1,平台:x86_64-apple-darwin15.6.0(64 位)。

更新 1: 当连接关闭或我在 wifi 网络上时,上面命令的输出类似于:

在移动热点上,它看起来非常相似,但很成功: