いくつかの計算を行ってから double をループ外の double 変数に追加する並列コードがあります。std::atomic を使用してみましたが、 std::atomic < double > 変数の算術演算はサポートされていません。
double dResCross = 0.0;
std::atomic<double> dResCrossAT = 0.0;
Concurrency::parallel_for(0, iExperimentalVectorLength, [&](size_t m)
{
double value;
//some computation of the double value
atomic_fetch_add(&dResCrossAT, value);
});
dResCross += dResCrossAT;
簡単に書く
dResCross += value;
明らかに意味をなさない。私の質問は、コードをシリアルにせずにこの問題を解決するにはどうすればよいですか?