OpenMP und vector
-
Hallo,
ich will mit OpenMP folgende Schleife parallelisireren:
#pragma omp parallel for for (int i = 0; i < n; ++i) { Object o(i); if (find(i) == end) continue; int j = f(i) if (j > t) myvector.push_Back(j); }
Leider produziert das einen Laufzeitfehler. Ich vermute, es liegt an der gemeinsamen Verwendung von myvector. Wie löse ich das?
-
Entweder synchronisierst du den Schreibzugrif auf den vector, oder Du lässt jeden Thread einen eigenen vector befüllen und reduzierst die am ende zu einem zusammen.
Schreiben aus mehreren Threads in den selben vector geht nicht.
-
Dafür ist openMp ungeeignet. Schau dir mal http://www.threadingbuildingblocks.org/
an.