问题标签 [parallel-foreach]
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 - 在列表的每个组件上并行执行数据修改步骤
我有一个包含两个 data.table 对象的列表。给出一个想法,一个表有 400,000 行和 7 个变量,另一个有 750,000 行和 12 个变量。这两个表没有相同的列。我对它们做了很多修改(每个步骤都有不同的步骤)。修改步骤包括计算总和、查找汇总值的百分位数、每组中的案例数、唯一长度等(每个步骤超过 20 步)。我用data.table
这些步骤的包。但是,我发现每个步骤都执行大约 20 个步骤(总共 > 40 个步骤)需要一些时间。我想知道如何使用并行处理来加快速度。我认为可以并行处理这些步骤,因为它们是在列表的不同组件上执行的。我进行了彻底的谷歌搜索以集思广益,但是,我没有找到有用的线索。有人做过吗?请提供一些启示,所以我将非常感激。谢谢
到目前为止,我已经做了这么多。Result
是包含两个 data.table 对象的列表。fun1 和 fun2 包含了我需要对每个 data.table 对象执行的一组步骤。性能方面我还没有看到任何收益(可能是由于开销?我不知道)。
r - 使用 doSNOW 的并行处理出错
Error in { : task 1 failed - "invalid connection"
为什么每次尝试将所有 4 个内核用于并行进程时都会出现此错误。
这是示例代码:
r - R 中的 doParallel - 提高了速度,但 CPU 并不总是被利用到 90%-100%
我正在尝试对它们运行许多线性回归和诊断并加快速度,我正在使用 R 编程语言中的doParallel包。
我遇到了一个有趣的问题。尽管我已经看到了性能的提升——正如预期的那样——CPU 的使用并不一致。
例如,如果我运行我的代码,所有内核的 CPU 利用率可能为30-40%。
如果我再次运行我的代码,CPU 利用率可能会上升到90%,而同时我没有进行任何更改。
在这两种情况下,我都不会同时运行其他任何东西。
有没有解释为什么核心一次使用 30%,另一次使用 90% 而我没有改变任何东西?
我正在运行 Windows XP、4GB 或 RAM,并且有一个 Inter(R) Xeon(R) CPU X5650 @ 3.67GHz。
我的代码看起来像:
r - R并行计算:选择将哪些对象分配到核心中
我有一个与 r 并行计算有关的问题。我正在使用类似的东西:
如何识别当前环境中的某些特定对象以分配到处理器内核中并用于某些功能?我不需要 R 将环境中的整个对象复制到不同的核心中,而只需要复制一些选定的对象。在我的项目中,我有很大的 R 对象,我不需要将它们复制/分发到核心中,以避免 ram 问题。有解决方案吗?
谢谢
r - 使用插入符号和方法训练时R崩溃= gamLoess
当我运行下面的代码时,R 崩溃了。如果我在 train 调用中注释掉 tuneGrid 行,则不会发生崩溃。我已经用另一个数据集尝试过这个,但仍然崩溃 R。崩溃消息是 R 会话中止 R 遇到致命错误会话被终止启动新会话。
代码是:
这发生在使用 R Studio 的 R3.2.1 和 3.2.2 中。
在 R gui 中,也会崩溃。
c - 并行处理 - `forking` 在 Mac OS 10.6.8 下失败
似乎fork
在Mac OS 10.6.8
. 该算法是用 R 编码的,我主要使用foreach包进行并行处理。代码在顺序运行(foreach
和%do%
)时运行良好,但在并行运行时(foreach
和%dopar%
)运行良好,即使并行运行的进程不通信。
foreach
一个月前我在同一台机器上使用过,它运行良好。在此期间已执行操作系统的更新。
错误信息
我收到了几种几乎随机出现的错误消息。此外,错误取决于代码是从终端运行(通过在R
环境中复制粘贴或使用R CMD BATCH
)还是从 R 控制台运行。
在终端上运行时,我得到
在 R 控制台上运行时,我得到
或者
使用完全相同的代码!请注意,尽管第二条错误消息与终端上收到的相同,print()
但屏幕上(通过函数)打印的内容数量却大不相同!
我试过的
我更新了软件包
foreach
,还重新启动了计算机,但这并没有太大帮助。我尝试了
print
几乎所有我能做的事情,但最终很难跟踪这个算法在做什么。例如,它经常通过关于丢失对象的错误而没有在调用对象之前的行dp
执行语句。print
dp
我尝试使用
%dopar%
但只注册了 1 个 CPU。终端上的输出没有变化,但在控制台上发生了变化。现在控制台给出了完全相同的错误,与终端同时出现。当我要求多个 CPU 时,我确保使用了多个 CPU。
我尝试使用
mclapply
代替foreach
和registerDoMC()
代替registerDoParallel()
来注册核心数。
额外信息
我的 R 版本是3.0.2 GUI 1.62 Snow Leopard build
. 我的机器有 16 个内核。
r - 使用 R 检测机器上可用的内核数
是否detectCores()
返回当时物理处理器的数量或可用处理器的数量?
我也为另一个脚本提供了一些专用核心,但我不确定是否detectCores()
只会使用可用资源,或者它是否会注册所有核心。
或者,getDoParWorkers()
获取可用内核数量的正确功能是什么?有什么帮助吗?我经历了这个线程,但没有找到正确的检测方法。
r - 为什么随机森林并行化后重要性会受到影响?
我现在正在使用 R 中的 randomForest 包。为了加快分类步骤,我对并行执行森林感兴趣。为此,我以与“foreach”小插图上指示的方式类似的方式使用了“foreach”包。这包括将树的总数除以您要使用的核心数,然后将它们与包“randomForest”的“组合”功能组合:
我将“平行”森林的结果与一个核心中生成的森林进行了比较。与测试集的预测能力似乎相似,但“重要性”值大大降低,这影响了变量选择的后续步骤。
我想知道为什么会发生这种情况,以及它是否正确或有任何错误。非常感谢!
r - foreach 中的导出变量
我无法将数据框导出到%dopar%
foreach 包中。如果我与 with%do%
一起使用,它会起作用registerDoSEQ()
,但registerDoParallel()
我总是得到:
kyphosis
这是一个使用包中的数据的可重现示例rpart
。我正在尝试将逐步回归并行化一点:
r - 如何确定 R 使用哪个并行处理包?
我正在探索并行编程,R
我对函数的工作原理有很好的理解foreach
,但我不明白parallel
, doparallel
, doMC
, doSNOW
, SNOW
,multicore
等之间的区别。
在做了一堆阅读之后,似乎这些包的工作方式因操作系统而异,我看到一些包使用多核这个词,而另一些则使用集群(我不确定它们是否不同),但除此之外它不是不清楚各自有什么优点或缺点。
我正在使用 Windows,我想并行使用复制权重计算标准误差,因此我不必一次计算每个复制(如果我有 n 个内核,我应该能够一次执行 n 个复制)。我能够使用 来实现它doSNOW
,但它看起来像plyr
R 社区一般使用doMC
,所以我想知道使用doSNOW
是否是一个错误。
问候,卡尔