- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读 vignette为 rgen包提供了从一些常见分布中采样的头文件。在第一段中,它说:
Please note, these samplers, just like the ones in armadillo cannot be used in parallelized code as the underlying generation routines rely upon R calls that are single-threaded.
最佳答案
这些函数使用 R 的随机数生成器,不能在并行代码中使用,因为这会导致未定义的行为。未定义的行为几乎可以导致任何事情。从我的角度来看,如果程序崩溃,你很幸运,因为这清楚地告诉你出了问题。
HPC task view列出了一些适合并行计算的 RNG。但是您不能通过 rgen 或 RcppDist 提供的发行版轻松使用它们。 .相反,可以执行以下操作:
rgen
的多元正态分布的复制函数调整它的签名,使其需要 std::function<double()>
作为 N(0, 1)
的来源分布式随机数。 // [[Rcpp::depends(RcppArmadillo)]]
#include <RcppArmadillo.h>
// [[Rcpp::plugins(cpp11)]]
// [[Rcpp::depends(dqrng)]]
#include <xoshiro.h>
#include <dqrng_distribution.h>
// [[Rcpp::plugins(openmp)]]
#include <omp.h>
inline arma::mat rmvnorm(unsigned int n, const arma::vec& mu, const arma::mat& S,
std::function<double()> rnorm = norm_rand){
unsigned int ncols = S.n_cols;
arma::mat Y(n, ncols);
Y.imbue( rnorm ) ;
return arma::repmat(mu, 1, n).t() + Y * arma::chol(S);
}
// [[Rcpp::export]]
arma::mat defaultRNG(unsigned int n, const arma::vec& mu, const arma::mat& S) {
return rmvnorm(n, mu, S);
}
// [[Rcpp::export]]
arma::mat serial(unsigned int n, const arma::vec& mu, const arma::mat& S) {
dqrng::normal_distribution dist(0.0, 1.0);
dqrng::xoshiro256plus rng(42);
return rmvnorm(n, mu, S, [&](){return dist(rng);});
}
// [[Rcpp::export]]
std::vector<arma::mat> parallel(unsigned int n, const arma::vec& mu, const arma::mat& S, unsigned int ncores = 1) {
dqrng::normal_distribution dist(0.0, 1.0);
dqrng::xoshiro256plus rng(42);
std::vector<arma::mat> res(ncores);
#pragma omp parallel num_threads(ncores)
{
dqrng::xoshiro256plus lrng(rng); // make thread local copy of rng
lrng.jump(omp_get_thread_num() + 1); // advance rng by 1 ... ncores jumps
res[omp_get_thread_num()] = rmvnorm(n, mu, S, [&](){return dist(lrng);});
}
return res;
}
/*** R
set.seed(42)
N <- 1000000
M <- 100
mu <- rnorm(M)
S <- matrix(rnorm(M*M), M, M)
S <- S %*% t(S)
system.time(defaultRNG(N, mu, S))
system.time(serial(N, mu, S))
system.time(parallel(N/2, mu, S, 2))
*/
> system.time(defaultRNG(N, mu, S))
user system elapsed
6.984 1.380 6.881
> system.time(serial(N, mu, S))
user system elapsed
4.008 1.448 3.971
> system.time(parallel(N/2, mu, S, 2))
user system elapsed
4.824 2.096 3.080
N <- 100000
更多地转向矩阵运算和
M <- 1000
我得到:
> system.time(defaultRNG(N, mu, S))
user system elapsed
16.740 1.768 9.725
> system.time(serial(N, mu, S))
user system elapsed
13.792 1.864 6.792
> system.time(parallel(N/2, mu, S, 2))
user system elapsed
14.112 3.900 5.859
关于r - "These samplers cannot be used in parallelized code",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54142833/
我正在寻找使用变量 sampler 的方法在 JSR223 Sampler、JSR223 PreProcessor、JSR223 PostProcessor 和所有其他 JSR223 脚本中。 还有一
我正在使用 AVPlayer 通过本地文件和在线 URL 播放声音。但是我报错了,找不到原因。我搜索但找不到解决方案。这是我的错误: Terminating app due to uncaught e
我想获取一个音频文件的bitRate,sampleRate,channelCount 我使用代码 @SuppressLint("NewApi") public void GetSampleR
我已经在 ubuntu 14.0.4 上安装了 Jmeter,但我无法在采样器列表中看到操作系统进程采样器。你能告诉我如何在 ubuntu 中获取 jmeter 的操作系统进程采样器吗? 我需要运行
我正在尝试通过 TCP 采样器将消息从 Jmeter 发送到服务器我已经配置了 IP、端口号和发送到消息框的消息,然后我开始访问服务器,此时我在 Jmeter 中收到以下警告。 同时让我知道 Jmet
我正在阅读 vignette为 rgen包提供了从一些常见分布中采样的头文件。在第一段中,它说: Please note, these samplers, just like the ones in
我有一个 jmx 脚本,其中每个肥皂请求都有一个 header 管理器。我想提取具有值的 SOAPAction 字段:"http://****.svc"并将其作为 http 采样器的名称。 我需要编码
我想使用“scikits.samplerate”,但安装失败。我正在使用适用于 Python 3.51 的 Windows10(64 位)和 Anaconda。 首先,我遵循了这个指令: https:
我在 JMeter 的线程组下设置了一个 TCP 采样器。数据是从 CSV 文件中选取的。第一行数据为鉴权数据,后面各行为实参数据。像下面这样的东西, AAAAAAA21 BBBBBBBCCCCCCC
我正在尝试使用 TCP 采样器运行一个简单的测试 当使用默认的 TCPClient 类时,在响应超时时间过去后,我从服务器收到了正确的响应,然后在采样器结果中出现错误 500: Response co
我有一个关于 TCP 采样器的问题:有没有一种方法可以发送一个 TCP 请求,并在不等待答案的情况下继续下一步的操作? 我想这样做是因为我发送了一个“pong”请求,如果这个“pong”得到的响应不能
一段时间以来我一直遇到这个问题,并编写了以下可以作为应用程序的主视图 Controller 文件运行的 swift 文件。执行后,它将播放一段短促的 1kHz 正弦波。它将同时从音频接口(interf
我有一个由函数 lda.collapsed.gibbs.sampler 生成的模型,来自 lda 包,我需要知道顶部单词的“相关性”。使用时 top.topic.words(result$to
我正在将 BSF Sampler 与此 javascript 一起使用: var tokenPass = '1234'; var serialNo = '1234578740905549583'; v
我是一个编程新手,有必要编写程序来使用 JMeter 进行负载测试,因为我找不到现有的 GUI 工具来执行我想做的事情。 我正在尝试使用 JMeter 插件“JMeter WebSocket Samp
我自己在 Jmeter 中面临同样的问题。 Mozilla firefox 正在自动打开,给定的 URL 不会自动打开。 我的测试计划是 线程组 jp@gc - Firefox 驱动程序配置 jp@g
在this demo Sampler of the Grid widget ,源代码选项卡显示调用名为 ComponentRenderer 的类的代码。 Map countryRatings = ne
我是 Audiokit 的初学者。我正在尝试使用 Audiokit 对和声实现泛音系列效果。我正在使用 Midi Sampler 和 AKappleSequencer 来演奏不同的音符。在泛音系列中,
我必须使用 JMeter 中的 Jmeter - WebDriver Sampler 提供凭据来登录网站。这是我的脚本, WWDS.browser.get('http://login.salesfor
我必须连续播放音频循环,并且能够不间断地即时重新加载音频文件。我已经尝试过这些解决方案: 使用 AKAudioPlayer 及其“replace(file:)”方法 -> 问题:替换文件超慢(1 秒)
我是一名优秀的程序员,十分优秀!