问题标签 [snowfall]

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 投票
3 回答
3388 浏览

r - 并行运行时写入全局环境

我有一个单元格、值和坐标的 data.frame。它驻留在全球环境中。

因为我的自定义函数需要将近一秒钟来计算单个单元格(并且我有数万个单元格要计算),所以我不想重复计算已经有值的单元格。我的以下解决方案试图避免这种情况。每个单元格都可以独立计算,为并行执行而尖叫。

我的函数实际上做的是检查是否有指定单元格编号的值,如果它是 NA,它会计算它并插入它来代替 NA。

我可以使用 apply 系列函数运行我的魔法函数(结果是value对应的),并且从内部,我可以毫无问题地读写(它在全局环境中)。cellapplycont.values

现在,我想并行运行它(使用snowfall),我无法从单个核心读取或写入这个变量。

问题:当并行执行函数时,什么解决方案能够从工作人员(核心)内部读取/写入驻留在全局环境中的动态变量。有没有更好的方法来做到这一点?

0 投票
2 回答
2058 浏览

r - 在 AWS 中使用雪(和降雪)在 R 中进行并行处理

关于我之前的类似 SO 问题,我尝试在 AWS 上使用雪/降雪进行并行计算。

我所做的是:

  • sfInit()函数中,我将公共 DNS 提供给socketHosts参数,如下所示 sfInit(parallel=TRUE,socketHosts =list("ec2-00-00-00-000.compute-1.amazonaws.com"))
  • 返回的错误是Permission denied (publickey)
  • 然后我按照http://www.imbi.uni-freiburg.de/parallel/的“无密码安全外壳 (SSH) 登录”部分中的说明(我认为是正确的!)
  • 我只是将我在 AWS 上创建的 .pem 文件的内容放入我想从我的主 AWS 实例和主 AWS 实例连接的 AWS 实例的 ~/.ssh/authorized_keys 中

有什么我错过的吗?如果用户可以分享他们在 AWS 上使用雪的经验,我将非常感激。

非常感谢您的建议。

更新:我只是想更新我发现的针对我的具体问题的解决方案:

  • 我使用 StarCluster 设置我的 AWS 集群:StarCluster
  • snowfall在集群的所有节点上安装包
  • 从主节点发出以下命令
  • hostslist <- list("ec2-xxx-xx-xxx-xxx.compute-1.amazonaws.com","ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com")
  • sfInit(parallel=TRUE, cpus=2, type="SOCK",socketHosts=hostslist)
  • l <- sfLapply(1:2,function(x)system("ifconfig",intern=T))
  • lapply(l,function(x)x[2])
  • sfStop()
  • ip 信息确认 AWS 节点正在被使用
0 投票
3 回答
705 浏览

iphone - 在没有 opengl 和 cocos2D 的情况下创建粒子。降雪应用

好吧,我想在没有 openGL 或 cocs2D 的情况下创建像 (snow) 这样的粒子,我发现这个示例代码被调用snowfall,在这个代码中有这个:

我想知道这段代码是否会损害性能或内存(可能是因为它使用了计时器)?如果这不是一个好主意,我听说我们可以在 iphone 上使用 CAReplicator 但 CAReplicatorDemo 仅适用于苹果文档上的 mac :/对不起我的英语我是法国人:/

0 投票
1 回答
2840 浏览

r - 如何在降雪时输出消息?

我正在 Windows 7 上使用降雪包进行模拟研究。

我喜欢每 10 次运行向主 R 控制台打印一条消息以监控进度,但它没有这样做。IE。什么都没有打印

任何帮助都感激不尽。

0 投票
2 回答
323 浏览

r - 如何通过集群中的字符串名称初始化库?

我想通过以字符串表示的名称来初始化集群中的库。

此代码工作正常:

这段代码会产生错误:4 nodes produced errors; first error: object 'expr' not found

所以sfClusterEval尝试评估expr而不是expr包含的表达式。我无法理解应该将哪种类型的表达式传递给sfClusterEval函数,它substitute在它的主体中使用

这个问题看起来很简单,但我无法解决它,需要有人的建议。

更新:

有关更简单示例的进一步调查细节。我觉得真相就在眼前。此代码工作正常

但是这个调用产生了错误:4 个节点产生了错误;第一个错误:找不到对象“lib”

回答:

该变量lib应事先导出到集群。之后,它可以被删除。

感谢 Richie,为您提供了最初的想法!

0 投票
0 回答
271 浏览

r - 为传递给“apply()”的向量的每个元素返回一个单独的矩阵

搜索了一下,还没有找到解决这个问题的优雅方法。

我正在尝试使用“降雪”包在多个内核上运行模拟。这使用 sfApply()、sfSapply 或 sfLapply()。为了克服使用“降雪”的复杂性,现在让我们简化一下,只考虑并行的 apply()、sapply() 和 lapply() 函数。

我有一个生态模拟,其结果以矩阵形式返回。简而言之,我正在模拟不同大小和强度的干扰事件对分布在多个斑块上的个体的影响。例如,我的模拟输出类似于

我有一个平均值,以及模拟运行的总体规模的 95% 置信区间的下限和上限。每次运行都有长度(DisturbancePatchesPercent)受干扰事件影响的补丁数量。对于单次运行,干扰具有均匀的强度。

我正在尝试使用 apply 函数在多种不同的干扰强度下运行此模拟。所以我把我的模拟放在一个函数中,然后将我想要模拟的干扰强度的向量传递给该函数。问题是,我不知道如何让函数返回每个干扰强度的结果矩阵(如上模拟)。我希望我能找到一种方法来制作将要创建的多个矩阵的数组,但未能弄清楚这一点

有任何想法吗??

下面是一个可重现的示例,我已经玩弄了它以弄清楚一般概念。我非常接近这个模拟示例,但我能做的最好的事情就是创建一个不同示例矩阵的列表。但是列表中的四个元素都具有相同的名称,所以我不知道如何单独访问它们

0 投票
2 回答
958 浏览

r - 并行进程的通信:我有哪些选择?

我正在尝试更深入地研究 R 例程的并行化。

关于一堆“工人”进程的沟通,我有什么选择

  1. 各个工人之间的沟通?
  2. 工人与“主人”进程的沟通?

AFAIU,没有主进程和所有工作进程都可以访问的“共享环境/共享内存”,对吧?

到目前为止,我想出的最好的想法是将通信建立在读取和写入 JSON 文档到硬盘驱动器的基础上。这可能是个坏主意;-) 我选择.json.Rdata文件,因为 JSON 似乎经常用于软件间通信,所以我想采用那个“标准”。

期待学习更好的选择!

仅供参考:我通常基于基础包parallel和contrib包snowfall的功能进行并行化,主要依靠功能sfClusterApplyLB()来完成工作

编辑

我应该说我在 Windows 上运行,但也非常感谢基于 Linux 的答案/提示!

0 投票
2 回答
1894 浏览

r - 在多个内核上运行不同的程序

希望这是一个我忽略了答案的简单问题,但是在今天早上的搜索中,我一无所获。

我的计算机上有四个内核,并且希望在 R 中通过多个内核同时运行不同的程序(循环)。如果我打开四个 R 会话,它们会自动放置在不同的核心上,还是我需要想办法用降雪来做到这一点?

我之前已经成功使用降雪来运行相同的程序,但之前使用了不同的值。但是降雪会让我在不同的内核上运行完全不同的程序吗?我可以将每个模拟循环设置为不同的功能(即:func1、func2、func3、func4),然后让降雪将每个功能分配给不同的核心吗?

谢谢你的帮助

0 投票
1 回答
853 浏览

r - 降雪的 R 并行计算 - 从不同的工作人员写入文件

我正在使用 snowfall 1.84 包进行并行计算,并希望每个工作人员在计算期间将数据写入自己的单独文件。这可能吗 ?如果是这样怎么办?

我正在使用“SOCK”类型的连接,例如 sfInit(parallel=TRUE, ...,type="SOCK" ),并且希望代码独立于平台(unix/windows)。

我知道可以使用 sfInit 中的“slaveOutfile”选项来定义写入日志文件的文件。但这是出于调试目的,所有从属/工作人员必须使用相同的文件。我需要每个工人都有自己的输出文件!!!

我需要编写的数据是大型数据帧,而不是简单的诊断消息。这些数据帧需要由从属进程输出,不能发回主进程。任何人都知道我怎么能做到这一点?

谢谢

0 投票
0 回答
793 浏览

r - 降雪 sfApply() 比 apply() 慢

我是 R 中的多核新手,正在尝试降雪包以测试是否可以加快应用功能。

不知道出了什么问题,但我的 sfApply() 的多核实现总是比 apply() 慢 2 倍

任何帮助是极大的赞赏!提前致谢。

单核示例 - 在我的 PC 中完成大约 1.3 秒:

降雪实施 - 在我的 PC 中接近 3 秒: