gpt4 book ai didi

c++ - MC 模拟中的 openmp 私有(private)/共享数据

转载 作者:搜寻专家 更新时间:2023-10-31 00:39:09 26 4
gpt4 key购买 nike

我正在使用蒙特卡洛方法模拟随机微分方程,原则上它非常适合 openMP,因为不同的实现不相互依赖。不幸的是,我的代码遇到了一些问题,一旦我打开 openMP,就会产生错误的结果。没有它,它工作得很好。我的“关键”循环如下所示:

double price = 0.0
#pragma omp parallel for private(VOld, VNew)
for (long i = 0; i < NSim; ++i){
VOld = S_0;
for (long index = 0; index < Nt; ++index){
VNew = VOld + (dt * r * VOld) + (sqrdt * sig * VOld * dW());
VOld = VNew;
}
double tmp = myOption.PayOff(VNew);
price += (tmp)/double(NSim);
}

如果有任何帮助,我将不胜感激。提前谢谢你:-)

最佳答案

一个常见的错误是忘记了每个线程都必须有自己的随机数生成器。如果不是这种情况,那么每次调用 dW 都会弄乱(共享的,而不是私有(private)的)随机数生成器的内部状态。

希望对您有所帮助。

关于c++ - MC 模拟中的 openmp 私有(private)/共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16744282/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com