Я только начал изучать, как использовать OpenMP. Я пытаюсь понять, почему следующий код не работает параллельно с Visual Studio 2008. Он компилируется и работает нормально. Однако он использует только одно ядро на моей четырехъядерной машине. Это часть кода, который я пытаюсь передать в mex-функцию MATLAB. Любой указатель оценивается.Попытка узнать, почему OpenMP-код не параллелен
#pragma omp parallel for default(shared) private(dz, t, v, ts_count) reduction(+: sum_v)
for(t = 0; t<T; t++)
{
dz = aRNG->randn();
v += mrdt* (tv - v) +
vv_v_sqrt_dt * dz +
vv_vv_v_dt*(dz*dz - 1.);
sum_v += v;
if(t == ts_count-1)
{
int_v->at_w(k++) = sum_v/(double)(t+1);
ts_count += ts;
}
}
Вы также должны уделить внимание вашему генератору случайных чисел в цикле. В зависимости от его реализации это может блокировать общий ресурс, эффективно сериализуя ваш код после того, как вы решите проблему выше. –