diff options
author | Erik Schnetter <schnetter@cct.lsu.edu> | 2008-04-24 18:44:28 -0500 |
---|---|---|
committer | Erik Schnetter <schnetter@cct.lsu.edu> | 2008-04-24 18:44:28 -0500 |
commit | 328cb2b00b38957e3a58c5edfe3bdd722407d0a7 (patch) | |
tree | a957ce85e870d30ec657a9cca6c2f9764065836a /Carpet/CarpetInterp | |
parent | c588b344565dfadc1d8850036b80800f5400196f (diff) |
CarpetInterp: Remove problematic OpenMP parallelisation
The C++ STL is incompatible with OpenMP. Don't parallelise loops which access vector<bool>.
Diffstat (limited to 'Carpet/CarpetInterp')
-rw-r--r-- | Carpet/CarpetInterp/src/interp.cc | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/Carpet/CarpetInterp/src/interp.cc b/Carpet/CarpetInterp/src/interp.cc index ae9461698..9ebb438f2 100644 --- a/Carpet/CarpetInterp/src/interp.cc +++ b/Carpet/CarpetInterp/src/interp.cc @@ -502,12 +502,22 @@ namespace CarpetInterp { { vector<bool> filled(tmp.size(), false); for (size_t n=0; n<dist::size(); ++n) { -#pragma omp parallel for + //#pragma omp parallel for for (int i=0; i<recvcnt.AT(n); ++i) { assert (not filled.AT(recvdispl.AT(n)+i)); filled.AT(recvdispl.AT(n)+i) = true; } } + bool error = false; + for (int i=0; i<filled.size(); ++i) { + error = error or not (filled.AT(i)); + } + if (error) { + cerr << "error" << endl; + cerr << "recvdispl: " << recvdispl << endl; + cerr << "recvcnt: " << recvcnt << endl; + cerr << "filled: " << filled << endl; + } #pragma omp parallel for for (int i=0; i<filled.size(); ++i) { assert (filled.AT(i)); @@ -603,7 +613,7 @@ namespace CarpetInterp { { vector<bool> filled(source_map.size(), false); for (size_t n=0; n<dist::size(); ++n) { -#pragma omp parallel for + //#pragma omp parallel for for (int i=0; i<recvcnt.AT(n); ++i) { assert (not filled.AT(recvdispl.AT(n)+i)); filled.AT(recvdispl.AT(n)+i) = true; |