问题标签 [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 投票
1 回答
41 浏览

rcpp - 我可以使用 RcppNumerical 在重复的一维积分中躲避“抽象类”吗

我正在寻找用于二维数值积分的确定性线程安全 Rcpp 算法。RcppNumerical 为 Cubase 提供了一个用于多维集成的部分接口,但从我的试验来看,它在 RcppParallel 中似乎不是线程安全的,它可能使用了 Monte Carlo 方法。这让我回到了重复的一维积分。我已经成功地将它与(不是线程安全的)R 函数 Rdqags 一起使用,但是我对 RcppNumerical 的(可能是幼稚的)编码无法编译,因为嵌套类是抽象的。也许是由于 operator() 虚函数。

任何人都可以在 RcppNumerical 或其他替代方案中提出解决此问题的方法吗?

下面是我模拟来自https://github.com/yixuan/RcppNumerical的二维示例的测试代码。它给出了类似的错误

无法将变量“f2”声明为抽象类型“Normal2”

无法将变量“f1”声明为抽象类型“Normal1”

默里

0 投票
1 回答
184 浏览

c++ - RcppParallel 估计 R 中两个矩阵的行之间的距离

我正在尝试使用RcppParrallel来估计两个 3D 矩阵的行之间的距离并返回一个新矩阵。我看到了使用Parallel Distance Matrix Calculation的例子parallelFor,但这些计算来自matrix一个固定大小的计算。

例如,假设我有两个矩阵amat,并且bmatnrow它们之间的 可能不同,但ncol总是3。在 R 中,这些可能看起来像:

使用这个例子,预期的输出是 amatrixnrow = amat.row()*bmat.row() = 95 列(1 的row索引amat,2:4 的rowbmat,5 矩阵行之间的欧几里德距离。像这样:

这是我到目前为止的代码,在RcppParallel示例中得到启发

知道如何使用RcppParallel使其工作吗?显然,我使用并行是因为nrow并且amat往往bmat接近 1000 万。我正在使用基于foreachin 的其他例程R。但是,它需要很长时间(> 1 天)并且似乎不稳定。

谢谢...

编辑

这是我仅使用 Rcpp 的示例

0 投票
0 回答
75 浏览

r - RCPP 中 PRNG 的 dqrng 和 R API 之间的结果不一致

我正在尝试在 Rcpp 中实现粒子过滤器并使用 OpenMP 来并行化转换步骤。我正在使用这里的分发函数dqrng来创建线程安全的 RNG 。boost

R API 的代码可以在这里找到并在此处介绍dqrng

我遇到的问题是,使用 R API,我获得了正确的结果,并针对替代实现进行了验证,估计器的密度按预期大致呈正态分布。但是,对于该dqrng版本,估计器的密度似乎不正确,并获得了不同的结果。密度图如下所示。

dqrng 估计器的密度

使用 R API 的估计器密度

有谁知道为什么会这样?

0 投票
1 回答
132 浏览

r - 带有附加参数的 RcppParallel worker

这是我第一次尝试使用 RcppParallel 包,我必须使用C++17 (Ubuntu)

我试图靠近开发人员站点的ParallelFor示例,但我需要一个额外的(非迭代)参数用于 worker threshold

这是我当前的代码

但是我总是以相同的编译错误结束:

任何建议,如何解决此问题或替代方案,如何使其以所需的threshold参数运行?

0 投票
1 回答
106 浏览

c++ - RcppParallel 没有用于调用“转换”的匹配函数

我在CRAN上发布了一个包,它通过 RcppParallel 框架使用多个内核。它在r-devel-linux-x86_64-fedora-clangr-patched-solaris-x86上安装有问题。我收到以下错误消息(有几条与 std::transform 相关的类似消息,因此为简洁起见,我只介绍其中一条):

1.对于 r-patched-solaris-x86:

2.对于 r-devel-linux-x86_64-fedora-clang:

这是调用 std::tansform 和 std::exp 函数的函数的代码:

我的描述文件包括 SystemRequirements: GNU make

我的 makevars 文件具有以下标志

请帮我弄清楚如何解决错误。将是非常伟大的帮助!

0 投票
1 回答
116 浏览

r - 在 R 中并行化一个重要的 Gibbs 采样器:RcppThread 与 RcppParallel

概述:我对并行化(跨链)Gibbs 采样器感兴趣,以解决我已经通过 Rcpp/RcppEigen 串行实现的非平凡回归问题。我已经阅读了文档,RcppParallel并且RcppThread我想知道我对并行化此代码所涉及的挑战的理解是否准确,以及我提议的伪代码使用RcppThread是否可行。

编程挑战:这个回归问题需要在 Gibbs 采样器的每次迭代中反转一个更新的设计矩阵。因此,任何新矩阵(每个链一个)都需要是“线程安全的”。也就是说,没有一个线程写入另一个线程也可能尝试访问的内存的危险。如果这样做了,我可以通过给出Rcpp::parallelFor分配样本的唯一索引来绘制和存储回归系数样本 (beta)。我想知道在哪里/如何最好地初始化这些线程特定的矩阵?请参阅下文,了解我的整体概念理解,并首先猜测我如何基本上使用并行分配样本的样本原则来并行分配 X。笔记这是假设 Eigen 对象可以使用并发索引访问,就像我在RcppThread文档中看到的 std::vector<> 的内存访问一样。

0 投票
0 回答
33 浏览

performance - 如何使用 RcppParallel 调试持久的性能问题

Rcpp我有 c++ 代码,在其中我使用和并行化了一些蒙特卡洛模拟RcppParallelparallelFor正如预期的那样,执行速度比使用非并行循环时快得多。

但是,运行代码一两个晚上之后,停止它。我的电脑非常慢。即使我结束/杀死所有 R 进程并且只能通过重新启动来解决,这种情况仍然存在。

问题:由于问题仅在运行代码 1-2 天后出现,我无法生成 MWE。我在任务管理器中也看不到任何阻塞我的计算机的东西(事实上,它通常表明任务管理器本身占用了大部分 CPU)。关于从哪里开始寻找造成上述问题的原因的任何指示?

0 投票
1 回答
68 浏览

c++ - 在 RcppParallel 中访问开始和结束(例如计算向量的平均值)

我在尝试学习 RcppParallel 时遇到问题。我尝试修改代码形式https://rcppcore.github.io/RcppParallel/用于向量求和来计算向量的平均值,看看我是否理解一般原理。

我的代码如下所示。在 c(1,2,3,4,5) 上使用函数 parallelVectorMean() 会产生不一致且最常见的错误结果。我认为这与我不了解如何正确访问开始和结束以在加入期间相应地缩放我的部分均值有关。

我期待着向你们学习。

0 投票
0 回答
29 浏览

rcpp - RcppParallel 在工作人员中使用引用

我一直在尝试使用参考来提高速度。下面的(不工作的)简单示例可能不会看到任何改进。但是,我认为通过不将数据复制到单独的(成本)函数中,应该为一个不平凡的例子节省一些时间。

至于现在,我在 R 项目中将示例作为三个 c++ 文件:

标题

功能

并行工作者

0 投票
0 回答
289 浏览

r - RcppParallel(R)的安装问题

我是 rstanarm 的新手/学生,我在安装RcppParallel. 我已经尝试过devtools::install_github("RcppCore/RcppParallel")install.packages("RcppParallel", dependencies = TRUE)但我仍然收到非零错误。任何帮助将不胜感激。错误脚本粘贴在下面。谢谢你。另外,我使用Windows(不确定是否需要信息)。