3 for Schleifen
-
Hallo zusammen,
ich hoffe ich bin hier im richtigen Unterforum gelandet;-)
Ich habe mal eine Frage zu OpenMP womit ich mich seit kurzem beschäftige.
Ich habe drei for Schleifen die parallelisiert werden müssen. Sieht mal ganz abstrakt so aus:void func() { #pragma omp parallel for shared(bla, aaa, bla2) for() { //tu was aufwändiges } #pragma omp parallel for shared(bla, bbb, bla2) for() { //tu was aufwändiges } #pragma omp parallel for shared(bla, ccc, bla2) for() { //tu was aufwändiges } //Ab hier warten //Mehr Zeugs zu tun }
Ich weiß jetzt nicht so ganz ob ich auf dem richtigen Weg bin aber ich hätte gerne folgendes:
Ich möchte, dass jede for Schleife parallel ausgeführt wird UND dass alle drei Schleifen parallel ausgeführt werden. Allerdings möchte ich an der Stelle //Ab hier warten darauf warten, bis alle Schleifen beendet sind. Ich hab so das Gefühl, da fehlt noch was oder?Wer hat eine Lösung?
-
Wenn ich dein Problem richtig verstanden habe, dann wären Threads die passende Wahl für dich, schau mal in der MSDN nach Create Thread http://msdn.microsoft.com/de-de/library/ms682453.aspx
-
Parallel for hast DU ja schon entdeckt.
Um Abschnitte parallel ablaufen zu lassen definierst Du sectionshttp://msdn.microsoft.com/en-us/library/16913heb.aspx
#pragma omp sections [clause[[,] clause] ...] new-line { [#pragma omp section new-line] structured-block [#pragma omp section new-line structured-block ] ... }