我剛開始學習如何使用OpenMP。我想弄清楚爲什麼下面的代碼不能與Visual Studio 2008並行運行。它編譯並運行正常。但是它在我的四核機器上只使用了一個核心。這是我嘗試移植到mex函數的代碼的一部分。任何指針讚賞。試圖知道爲什麼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;
}
}
你也應該考慮一下循環內的隨機數生成器的一些問題。根據它的實現,這可能會鎖定共享資源,如果解決了上述問題,則可以有效地序列化代碼。 – 2010-01-23 15:33:48