aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetInterp
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@cct.lsu.edu>2008-04-24 18:44:28 -0500
committerErik Schnetter <schnetter@cct.lsu.edu>2008-04-24 18:44:28 -0500
commit328cb2b00b38957e3a58c5edfe3bdd722407d0a7 (patch)
treea957ce85e870d30ec657a9cca6c2f9764065836a /Carpet/CarpetInterp
parentc588b344565dfadc1d8850036b80800f5400196f (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.cc14
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;