问题标签 [mclapply]

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 回答
628 浏览

r - R - 并行运行时获取工作人员名称

我正在并行运行一个函数。为了获得有关工作状态的进度更新,我希望一名但只有一名工作人员定期报告其进度。我对如何做到这一点的自然想法是让工作人员执行的功能检查工作人员的名称,并且仅在名称与特定值匹配时才提供状态更新。但是,我找不到可靠的方法来提前确定这一点。例如,在 Julia 中,有一个简单的myid()函数可以提供工人的 ID(即 1、2 等)。我正在寻找 R 中的等价物。到目前为止,我发现的最好的方法是让每个工人打电话Sys.getpid(). 但是,我不知道编写脚本的可靠方法,以便我提前知道分配给工作人员的 pid 是什么。我要编写的基本功能脚本如下所示,除了我正在寻找的 R 等效于该myid()函数:

0 投票
2 回答
820 浏览

r - 在 Linux 中使用 mclapply 时,R 中出现奇怪的段错误

我遇到了这个奇怪的段错误并且零线索如何解决它。我正在运行一些马尔可夫链蒙特卡罗算法(一种近似分布的顺序算法)。我并行化了这个算法的每一次迭代。所以它就像

现在奇怪的是,当我的数据集大小相对适中时,算法可以毫无问题地运行。然后我增加数据集大小(80,000 个观察值,不是超大),该算法适用于前一千次迭代,然后因segfault错误而停止。我在下面粘贴了错误:

我用谷歌搜索过,有些人确实segfalut在 R 中遇到了这个问题,他们通常建议是一些版本冲突,应该重新安装 R。但就我而言,奇怪的是我的算法在前一千次迭代中运行良好。我也在没有并行化的情况下运行它,它也可以正常工作。

任何人都可以提出一些可能的原因吗?现在我完全没有方向了。

谢谢!

0 投票
0 回答
329 浏览

c++ - R 3.4 and mclapply strange behavior - is this a bug?

I am not sure if this is a bug, so I prefer to post it here before filing.

After upgrading to from R 3.3.3 to R 3.4 I encounter the following message with mclapply:

Assertion failure at kmp_runtime.cpp(6480): __kmp_thread_pool == __null. OMP: Error #13: Assertion failure at kmp_runtime.cpp(6480). OMP: Hint: Please submit a bug report with this message, compile and run commands used, and machine configuration info including native compiler and operating system versions. Faster response will be obtained by including all program sources. For information on submitting this issue, please see

Note that this behavior was not present in R 3.3.3 on the same machine and all the batch was working without any errors. Also note that I tried this with all possible values for enableJIT(X) with the same result.

The batch to (hopefully) reproduce it is here:

The data for the reproducible example is here: https://www.dropbox.com/s/2enoeapu7jgcxwd/z.Rdata?dl=0

The sessionInfo():

Thank you in advance for help/hints, Yan

EDIT: Slight edit, it turns out that this code cannot really reproduce the issue... However, I leave it here following the advice of data.table developer just in case someone else finds it helpful.

0 投票
0 回答
968 浏览

r - R:mclapply/pblapply 与 lapply - 用例

我正在寻求有关此示例的帮助。它可能与pbapply包无关,而是与mclapply(). 但是,也许有人知道这里发生了什么。

问题

唯一的区别是使用pblapply()/mclapply()而不是lapply()(我在 macOS 上)。在此示例中,该pblapply()方法返回NULL,而lapply()尝试工作正常。

有趣的一点是,它的行为只与我使用lda(). glm()其他使用或其他建模方法的示例工作正常。

似乎并行应用调用甚至没有从这里开始(基于它完成的速度)。

sperrorest()是一个通用框架(因此这里不应该是问题),我很困惑为什么该示例使用顺序方法(lapply())而不是并行方法(pblapply())。

此外,foreach()使用 apply* 函数而不是使用相同的方法可以正常工作。因此,我假设它与lda()并行 apply* 调用无关且相关。

笔记:

该示例在两个内核上运行,因此它应该在任何机器上运行。

首先,请做devtools::install_github("pat-s/sperrorest@mclapply-vs-lapply")

代码(可重现)

0 投票
4 回答
7268 浏览

mclapply - 为什么这个错误出现“所有计划的核心在用户代码中遇到错误”是它与服务器的核心处理器有关吗?

我们正在分析测序数据,同时过滤和修剪 fastq 文件遇到以下错误。以下错误是由于处理命令的核心不可用吗?

colnames<-( , value = c("cs103_R1_dada.fastq", "cs110_R1_dada.fastq", 中的错误*tmp*:尝试在小于二维的对象上设置 'colnames' 另外:警告消息:在 mclapply(seq_len(n), do_one , mc.preschedule = mc.preschedule, : 所有调度的核心在用户代码中遇到错误 >

0 投票
0 回答
275 浏览

r - 为什么 R 中的 mclapply 函数比 Rcpp + OpenMP 更高效?

我有一个与 OpenMP 并行的循环(EstimateUniques)函数。我建议多线程应该比多处理更高效,但是当我将此函数与“mclapply”的简单运行进行比较时,它显示出较低的性能。在 C++ 中实现与 R 相同级别的并行化的正确方法是什么?难道我做错了什么?

性能比较(以秒为单位的时间):

代码:

示例.cpp 文件:

我尝试在 OpenMP 中使用其他类型的调度,但结果更差。

0 投票
2 回答
1989 浏览

r - R mclapply vs foreach

我使用 mclapply 进行所有“令人尴尬的并行”计算。我发现它干净且易于使用,当参数mc.cores = 1mc.preschedule = TRUE我可以插入browser()函数内部mclapply并像在常规 R 中一样逐行调试时。这对更快地将代码投入生产有很大帮助。

提供什么不foreach提供mclapply?我有理由考虑编写 foreach 代码吗?

如果我理解正确,两者都可以使用multicore我出于性能原因喜欢使用的并行计算方法(允许分叉)。

我已经看到foreach在各种包中使用,并阅读了它的基础知识,但坦率地说,我觉得它并不容易使用。我也无法弄清楚如何browser()foreach函数调用中工作。(是的,我已经用 foreach %dopar% 阅读了这个线程浏览器模式,但没有帮助我让浏览器正常工作)。

0 投票
0 回答
475 浏览

r - 使用 mclapply 和 data.table 进行 R 内存管理

我有一个非常大的数据对象 X(说 10+ GB)。我想在对象内部的类别中并行执行一些操作以使它们快速运行(例如,预测模型的许多拟合)。就 RAM 使用而言,是否更有效:

1)将整个data.table对象传递给子进程,然后对整个对象进行操作(例如子集,但可以是其他事情),然后对较小的数据集进行密集操作。因为我们在分叉,这是否意味着如果我们不修改它,孩子们就不会复制 X 吗?例如,如果我们对 X 进行子集化并将其分配给 v(如下例所示),子进程是否只为 v 使用额外的 RAM,或者它是否在子进程中复制了 X,因此所有生成的子进程都有效地消耗除了父级之外,RAM 的大小为 X。

2)将父项中的数据拆分为一个列表,其中每个元素都包含执行密集操作所需的数据,然后只将所需的内容传递给子分叉进程?这种方法意味着我们在运行 mclapply 之前有效地将父级中使用的内存量加倍,因为该列表有效地包含原始大数据表中的所有相同数据,但正确拆分。

这是一个玩具示例,在没有 mclapply 的情况下,通常在 data.table 中通常是微不足道的,但要点如下:

帮助澄清我对 R 中如何将内存用于具有大数据的分叉进程的理解将不胜感激。

0 投票
1 回答
63 浏览

r - 在嵌套列表 R 中列出所有有错误消息的索引

mclapply用来并行运行我的代码。下面是我的代码片段。当我设置mc.preschedule = FALSE时,它会存储错误并转到列表中的下一项。我想看看列表中的所有元素都有哪些相关的错误消息。

以下是列表中一项的错误消息。

有没有办法可以列出包含任何错误消息的所有索引?

0 投票
1 回答
179 浏览

sparklyr - mclapply 和 spark_read_parquet

作为论坛的活跃用户,我相对较新,但首先要感谢大家的贡献,因为多年来我一直在寻找答案......

今天,我有一个问题没有人解决或者我无法找到......

作为测试系统的一部分,我正在尝试从 s3(AWS)并行读取文件以触发(本地计算机)。我使用过 mclapply,但是当设置超过 1 个核心时,它会失败......

示例:(相同的代码在使用一个内核时有效,但在使用 2 个内核时失败)

new_rdd_global <- mclapply(seq(file_paths), function(i){spark_read_parquet(sc, name=paste0("rdd_",i), path=file_paths[i])}, mc.cores = 1)

new_rdd_global <- mclapply(seq(file_paths), function(i){spark_read_parquet(sc, name=paste0("rdd_",i), path=file_paths[i])}, mc.cores = 2) 警告消息:在 mclapply (seq(file_paths), function(i) { : 所有计划的核心在用户代码中遇到错误

有什么建议???

提前致谢。