- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下玩具示例为 parallelFor
工作正常( f2
是 f1
的并行版本):
// [[Rcpp::depends(RcppParallel)]]
// [[Rcpp::depends(RcppArmadillo)]]
#include <RcppArmadillo.h>
#include <RcppParallel.h>
#include <iostream>
#define vector NumericVector
using namespace Rcpp;
using namespace RcppParallel;
// compute values i/i+1 for i = 0 to n-1
// [[Rcpp::export]]
vector f1(int n) {
vector x(n);
for(int i = 0; i < n; i++) x[i] = (double) i/ (i+1);
return x;
}
struct mytry : public Worker {
vector output;
mytry(vector out) : output(out) {}
void operator()(std::size_t begin, std::size_t end) {
for(int i = begin; i < end; i++) output[i] = (double) i/ (i+1);
}
};
// [[Rcpp::export]]
vector f2(int n) {
vector x(n);
mytry A(x);
parallelFor(0, n, A);
return x;
}
#define vector NumericVector
来自
#define vector arma::vec
这不再起作用了。代码编译运行,
f1
没问题,但是
f2
返回的向量只包含未初始化的值。
最佳答案
这里的问题——你的类应该通过引用而不是值来获取向量。
这是因为,当使用 RcppParallel
时,您通常会在某处为某个对象预先分配内存,然后填充该对象——因此并行工作人员应该引用您想要填充的那个对象。
所以你的 worker 应该看起来像(正如你所指出的):
struct mytry : public Worker {
vector& output;
mytry(vector& out) : output(out) {}
void operator()(std::size_t begin, std::size_t end) {
for(int i = begin; i < end; i++) output[i] = (double) i/ (i+1);
}
arma::vec
或
std::vector
,当按值将其传递给工作人员时,您实际上是将一个全新的向量复制到类中,然后填充该(临时的、复制的)向量——因此原始向量实际上从未被填充。
关于rcpp - RcppArmadillo 和 RcppParallel 的同居,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26234055/
我想编写代码使用 RcppParallel 计算 v^T Av。这里 v 是一个大小为 n 的 vector ,A 是一个 n×n 矩阵。我的想法是以并行方式评估 Av,然后计算该 vector 与
我写了下面的代码来训练自己使用 RcppParallel。这只是一个玩具示例。 // [[Rcpp::depends(RcppParallel)]] #include #include #incl
灵感来自文章 http://gallery.rcpp.org/articles/parallel-distance-matrix/ ,我尝试使用 RcppParallel 在高维参数空间中运行强力搜索
我正在尝试使用 RcppParallel 并行添加(大)向量。这就是我想出的办法。 // [[Rcpp::depends(RcppParallel)]] #include #include #in
我有一个矩阵,我想为它计算第 i 行和每隔一行(即我想要 i成对距离矩阵的第 th 行)。 #include #include #include #include //#include #i
以下玩具示例为 parallelFor工作正常( f2 是 f1 的并行版本): // [[Rcpp::depends(RcppParallel)]] // [[Rcpp::depends(RcppA
我正在学习在我的工作中使用 RcppParallel,并试图安装一个使用 Rcpp.package.skeleton() 制作的简单包。该软件包包含三个源文件,即 Rcpp 的 HelloWorld
我需要与 RcppParallel::RMatrix 合作.以前我曾与 Rcpp只要。但现在为 RcppParallel我需要一份文件,例如 Rcpp拥有。 例如 我 Rcpp::NumericMat
我是 C++ 编程的新手,正在尝试通过 R 试验 Rcpp。我创建了一个函数来从一个字符串中生成所有可能的 k-mers。它以它的串行形式运行良好: #include #include #incl
我有一个任务需要处理一个大型矩阵(数百万行,数百列)字符串。每行操作都是独立的。因此,我想利用一些并行计算来提高整个项目的速度。 如果我为数值矩阵构建myWorker,如下所示,我能够编译代码而不会出
我正在使用此 Rcpp 代码执行 quickselect在值向量上,即在 O(n) 时间内从向量中获取第 k 个最大元素(我将其保存为 qselect.cpp): // [[Rcpp::depends
概览:我对并行化(跨链)Gibbs 采样器感兴趣,以解决我遇到的非平凡回归问题 already implemented通过 Rcpp/RcppEigen 串行。我已阅读 RcppParallel 的文
我想在 RcppPralel worker 中使用线程安全函数指针。但是我已经对这个小例子产生了疑问。无论我是在包中使用它并在 DESCRIPTION 文件中添加 SystemRequirements
我是一名优秀的程序员,十分优秀!