OpenMP in for-Scheife Methodenaufruf



  • Ich habe in einer for Schleife welche durch OpenMP parallelisiert werden soll einen Methodenaufruf. In dieser Methode werden einige Variablen angelegt und später in der Methode wird diesen ein Wert gegeben. Bei der Wertzuweisung knallt es dann (Speicherzugriffsfehler).

    1. Erste Frage liegt es daran das Prozessor 1 in dieser Methode an der Stelle der Wertzuweisung ist und Prozessor 2 an der Stelle der Initialisierung der Variable ist. Also Speicher für die Variable frei gemacht wird und gleichzeitig versucht wird dieser Variable ein Wert zuzuweisen?

    2. Wie kann ich diese Variable schützen?

    3. Ich habe momentan "einfach" diesen Methodenaufruf als kritischen Bereich markiert. Ergebnis war das die Berechnung mit OpenMP ca. doppelt so lange benötigte wie ohne. Nur die "Zuweisungen" bei denen es knallt als kritischen Bereich zu markieren reicht anscheinend nicht.

    Was ich auch probiert habe diese Variablen VOR dem Methodenaufruf zu erstellen und der Methode zu übergeben, brachte auch nichts.

    MfG
    Icy



  • Die Methodenaufrufe sollten schon vollkommen unabhängig voneinander sein. Wenn da jedesmal die Methode für dasselbe Objekt aufgerufen wird musst du innerhalb dieser Methode mit Synchronisierung (Critical Sections) arbeiten ... wobei sich dann die Frage stellt ob man die for-Schleife überhaupt parallelisieren kann. Bzw. ja man kann, aber ob es Sinn macht.

    MfG SideWinder



  • Ok, ich guck mir das Ganze nochmal an.

    Erstmal vielen Dank und ja wenn ich die Berreiche als Critical makiere bringt openMP nicht wirklich was.

    MfG
    icy


Anmelden zum Antworten