问题标签 [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.
r - 如何使用 R 未来包在集群内进行并行计算?
我想for
在集群(多台机器)的节点内分配作业(带有循环)。我尝试使用 R 包future
来做到这一点。我不知道这是否是最好的方法;我尝试使用foreach
该doParallel
软件包,但没有成功。如何确定循环迭代次数何时大于集群节点数?
r - 未来在发送到远程时等待前一个未来结束
我执行以下操作将一堆模型发送到计算服务器。
未来等待第一个调用包装,然后发送下一个。我如何告诉未来它可以同时向远程发送多个作业?
这显然是可能的,因为我可以从不同的本地 R 会话将多个作业发送到同一个远程,或者如果我在调用plan(login)
之间再次调用。但是我如何指定拓扑,这样未来就不会等待,我也不必重复调用plan
?
r - rJava 对象将来是否可导出(R 中的异步计算包)
我正在尝试通过在 Linux 上使用多核计划来使用未来包加速我的 R 代码。在未来的定义中,我正在创建一个 java 对象并尝试将其传递给 .jcall(),但将来我会为 java 对象获得一个空值。谁能帮我解决这个问题。以下是示例代码-
基本上我正在处理大型流数据。在上面的代码中,我将流数据字符串发送到用户定义的函数进行统计分析并返回 3 个组件的列表。然后想将此列表发送到自定义 java 类 [java.custom.class] 以使用自定义 Java 方法 [CustomJavaMethod] 进行进一步处理。不使用未来我的代码运行良好。但是我在一分钟内获得了 12 条流记录,然后我的代码变慢了,观察到处理延迟。
目前我使用的是 16 核的 Unix。使用 future 包后,我的过程很快完成。我已经追溯了我的代码,在 .jcall 中发生了错误。
希望这能澄清我的痛苦。
r - R并行makeCluster()在Mac上无限挂起
当我尝试parallel
在我的 Mac 上使用 R 中的包时遇到了一些问题。
以下是并行包的正常工作方式。
当我运行这段代码时,cl = makeCluster(2)
无限挂起。我试图解决它但失败了。我还提到了其他一些帖子。几个潜在的原因包括内存不足、安装错误等。它们似乎不是这里的问题,因为我重新启动了会话,重新安装了 R,但问题仍然存在。
我想问题是关于 R 尝试连接到核心时的权限。这是我发现的。我用future
package查看了连接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 机器上运行(相同的操作系统,但硬件较旧)。我不知道这里发生了什么。任何帮助表示赞赏!谢谢!
r - 在 R 中运行并行计算时如何在工作人员上设置 .libPaths(检查点)
我使用 checkpoint 包进行可重现的数据分析。有些计算需要很长时间才能计算,所以我想并行运行它们。但是当并行运行时,检查点没有在工作人员上设置,所以我收到一条错误消息“没有名为 xy 的包”(因为它没有安装在我的默认库目录中)。
我如何确保每个工作人员都使用检查点文件夹中的包版本?我试图在 foreach 代码中设置 .libPaths 但这似乎不起作用。我还希望全局设置一次检查点/libPaths,而不是在每个 foreach 调用中设置一次。
另一种选择可能是更改 .Rprofile 文件,但我不想这样做。
{ 中的错误:任务 2 失败 - “没有名为 'stringr' 的包”
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,:
已达到已用时间限制
r - 未来等待在单核机器上执行
我有 2 台具有相同版本的 Ubuntu (16.04)、R (3.4.4) 和未来软件包 (1.10.0) 的机器。我正在运行下面的代码,它实现了异步编程
预期的行为是执行将几乎立即结束,留下待处理的承诺。在一台机器上发生这种情况,执行会立即发生。但是在我拥有的另一台机器上,执行等待 mehAsync 函数执行,5 秒后完成。
如前所述,两台机器几乎相同。它们之间的主要区别在于速度较慢的是单核机器。但是根据我的理解,该multisession
计划不应该需要多个内核。足够的资源来打开机器拥有的新 R 会话。
这里的具体问题是:
- 我对预期行为的理解是否错误,这对于单核机器来说是正常的吗?
- 我没有考虑到的其他哪些因素可能会影响这种行为?
- 由于没有错误/警告消息并且我自己和其他人无法在独立机器中复制,我该如何调试此问题?
注意:在尝试调查其他问题时出现了这个问题
r - downloadHandler 唯一地忽略同一用户正在进行的异步进程
我正在试验承诺,据我所知,正如本期所指出的,为同一用户运行的异步进程应该阻止所有其他会话内活动的执行。然而,这似乎不是一个普遍的原则。
在下面的示例应用程序中,我有一个人为绘制的绘图操作和一些其他元素,以查看它们如何交互。其中一个元素是downloadButton
/downloadHandler
对。在异步操作运行时,仍然可以按downloadButton
并获得输出,这对我来说是出乎意料的。我的问题是:
- 我可以在异步进程运行时停止 downloadHandler 处于活动状态吗?
- 为什么
downloadHandler
特别?
编辑:删除了有关 downloadButton 下载整个页面的附加信息,因为它不是问题的组成部分
r - 不在移动热点上时,R 中的并行处理挂起
我有 R-package 'parallel' 的常见问题,如此处所示。命令
每当我登录到 wifi 连接时,它就会挂在机器上。但是,当我从手机登录到移动热点时,它工作正常。
我已经阅读了所有寻求解决方案的帖子,但到目前为止,最好的办法是重新安装我的操作系统,我真的希望避免这种情况......
有任何想法吗?
我使用 R 版本 3.5.1,平台:x86_64-apple-darwin15.6.0(64 位)。
更新 1: 当连接关闭或我在 wifi 网络上时,上面命令的输出类似于:
在移动热点上,它看起来非常相似,但很成功: