问题标签 [rcppparallel]

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 投票
0 回答
146 浏览

r - 在 CRAN R 包的多线程环境中打印到终端

我正在更新一个需要 C++ 编译的 CRAN 包。CRAN 禁止std::cout <<但允许Rcpp::Rcout <<。然而,后者在多线程环境中使程序崩溃。我正在使用RcppParallel多线程。Rcpp除了and之外,是否有其他选择而不导入新的 R 包RcppParallel

谢谢!

解决方案:放入Rcpp::Rcout << ...锁定tbb::spin_mutex范围。

0 投票
2 回答
500 浏览

c++ - 为多线程 unif_rand() 播种

我想unif_rand()在多线程环境中植入 R 的内部。下面的代码在 2 个线程内生成一个 2 列的均匀随机数矩阵。结果很有趣。

结果表明set.seed()控制小样本量的所有线程的随机性?最初我希望set.seed()在不超过 1 个线程中有效。我不想利用这个结论,因为它可能是绝对错误的。另一方面,是否有unif_rand()类似于std::srand()for的播种功能std::rand()

谢谢!

0 投票
1 回答
372 浏览

bootstrap-modal - rcppparallel bootstrap

我假设,或者更确切地说希望,我有一个单一的可解决问题,或者可能有许多较小的问题,应该放弃。无论哪种方式,我对 Rcpp 都比较陌生,并且对并行计算非常不了解,并且无法在线找到解决方案。

问题通常是,R 或 R 中的“致命错误”卡在一个循环中,比如 10 次迭代需要 5 分钟,而粗略地说,非并行版本将同时进行 5K 次迭代。

由于这个算法适合一个更大的项目,我调用了其他几个函数,这些都在 Rcpp 中,我只用“arma”对象重写了它们,因为这似乎可以帮助其他人,在这里。我还使用我在 Rcpp 中编写的“热图”优化器运行了优化部分,再次只在“arma”中没有改进 - 我还应该指出这返回为“arma::vec”。

所以我写回了我的“热算法”来解决优化问题,这完全是在 Rcpp-armadillo 中,当约束被写入优化器时,这大大简化了代码。此外,我删除了随机化,所以它只需要解决相同的优化;只是看看这是否是唯一的问题。毫无疑问,我仍然有同样的“致命错误”。

因为这里是代码:

0 投票
0 回答
154 浏览

r - 带有 Rcpp 和 nloptr 的 R 包

我一直在构建一个运行 RcppParallel 并从 cpp 并行调用 nloptr 的 r 包。目前,由于找不到“nloptrAPI.h”文件,该包将无法构建。

构建日志输出: * 检查 R 代码中的依赖关系... 注意 Imports 字段中的命名空间不是从以下位置导入的:'RcppArmadillo''nloptr'</p>

我的问题是是否有一个简单的解决方法。或者,如果我必须重写函数以从 cpp 版本调用“nlopt”并将“makevars”文件添加到包中。

src 仅包含我编写的函数和生成的 RcppExports。

0 投票
2 回答
260 浏览

c++ - 通过 std::shared_ptr 使用 Rcpp 和 RcppParallel 的线程安全函数指针

我想在 RcppPrallel 工作者中使用线程安全函数指针。但是我已经对这个小例子有疑问了。无论我是在包中使用它并添加SystemRequirements: C++11到说明文件中,还是在标准 cpp 文件中使用它并添加// [[Rcpp::plugins(cpp11)]]我都会得到相同的错误:'shared_ptr' is not a member of 'std'。谁能帮帮我吗?谢谢!

系统信息:

0 投票
2 回答
129 浏览

rcpp - 在公共工作者中调用“mypackage”函数

我知道我遇到的问题是线程安全问题。因为我现在拥有的代码将使用“seThreadOptions(1)”执行。我的问题是什么是克服这个问题的好习惯。

我知道这一点:带有 Rcpp 和 RcppParallel via std::shared_ptr 的线程安全函数指针将以某种方式发挥作用。而且我也一直在思考/尝试将内部功能作为并行工作者结构的一部分。实际上,我正在调用两个内部函数,我希望一个是可变的,另一个是恒定的,这让我倾向于认为我需要 2 个解决方案。

错误是 rstudio 中的 R 会话崩溃。这里有两件事需要注意: 1. 如果我设置线程选项(1),它运行良好。2. 如果我将“myfunc”移动到主 cpp 文件并简单地调用“myfunc”,这也可以正常运行。

下面是一个详细的例子:

第一个cpp文件:

二、cpp文件:

Makevars,因为我使用的是 Macintosh:

和命名空间:

0 投票
0 回答
99 浏览

rcppparallel - 我们可以将 Rcpp::List 或向量向量传递给 RcppParallel 函数吗?

我有一个 R 列表,我将其转换为 Rcpp 中的向量向量。现在我想使用 RcppParallel 来使用多个内核。我可以将这样的向量列表或向量传递给类似于 IntegerMatrix 或 IntegerVectors 的 RcppParallel 吗?

0 投票
1 回答
159 浏览

c++ - Rcpp 中的 std::mt19937

这个问题是通过win-builder-r在windows上测试我的R(RcppParallel)包引起的,至于我的mac没有问题。

"error: 'mt19937' is not a member of 'std'"

此外,此错误首先出现:

D:/Compiler/gcc-4.9.3/mingw_32/i686-w64-mingw32/include/c++/bits/c++0x_warning.h:32:2: error: #error 此文件需要编译器和库支持 ISO C++ 2011 标准。此支持目前是实验性的,必须使用 -std=c++11 或 -std=gnu++11 编译器选项启用。

可以从这个较早的帖子中找到一个最小的例子,使用最后一个:在公共工作者中调用'mypackage'函数

0 投票
1 回答
89 浏览

vector - 使用 RcppParallel 并行添加向量

我正在尝试使用 RcppParallel 并行化(大)向量的添加。这就是我想出的。

它似乎可以工作,但不能加快速度(至少在 4 核机器上不行)。

这可以更有效地实施吗?

非常感谢提前,

mce

0 投票
1 回答
567 浏览

r - 使用 Rcpp 和 R 函数将函数应用于多个组

foreach我正在尝试使用该包将一个函数应用于 r 中的多个组/ID 。使用并行处理 via 需要永远运行%dopar%,所以我想知道是否可以在via或其他包中运行applyor for 循环部分以使其更快。我不熟悉或其他可以做到这一点的软件包,所以我希望了解这是否可能。示例代码如下。我的实际功能更长,有超过 20 个输入,运行时间比我发布的还要长c++rcppc++

我很感激帮助。

编辑: 我意识到我最初的问题很模糊,所以我会努力做得更好。我有一个按组包含时间序列数据的表。每个组有 > 10K 行。我在c++viarcpp中编写了一个函数,该函数按组过滤表并应用一个函数。我想遍历独特的组并像rbind使用一样组合结果,rcpp以便它运行得更快。请参阅下面的示例代码(我的实际功能更长)

提前致谢。