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


  • Mod

    Parallel for hast DU ja schon entdeckt.
    Um Abschnitte parallel ablaufen zu lassen definierst Du sections

    http://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 ]
    ...
    }
    

Anmelden zum Antworten