Ergebnis 1 bis 5 von 5

Thema: Parallelisieren in c++ oder f

  1. #1

    Parallelisieren in c++ oder f

    Weiß jemand wie man das am besten bewerkstelligen kann? Als Compiler nutze ich den gpp und g77. Bei uns an der Uni meinte jemand das dies mittels Intel-Compiler gehen soll, da ich nen Core2Duo und nen Quad Xeon zur Verfügung hätte. Ich möchte aber am besten den gpp und g77 weiternutzen.

  2. #2
    Dazu solltest du dich am besten etwas über die folgenden Themen informieren:
    Threads,
    Semaphore
    Monitore(Damit ist nicht dein Bildschirm gemeint)

    Das sollte dir zumindest einen Einblick in die Problematik geben.

  3. #3
    Ansonsten kann ich dieses tolle Werk empfehlen, welches nahezu alle Bereiche der Thread-Programmierung behandelt

    http://www.cs.umu.se/kurser/TDBC64/V...ead-primer.pdf

    Zudem gibt es sogar Beispielcode in C/C++, so dass man gleich mit der standard pthreads library anfangen kann.

  4. #4
    Ganz wichtig ist, daß du dich mit Threadsicherheit befaßt! Threads teilen sich den Speicherbereich und nicht threadsichere Funktionen können wunderbar obskure Bugs auslösen.

    Semaphore sind ein Mechanismus, um kritische Abschnitte (so nennt man, grob gesagt, Codeteile, die auf Daten zugreifen) zu sichern, Monitore sind noch einer, aber es gibt auch ganz einfache wie Locks und Spinlocks. (BTW: Ja, Spinlocks können bei SMP durchaus Sinn machen - wenn man exakt einen Kern stilllegen möchte, während der Rest weiterarbeitet.)


    Threads funktionieren übrigens auch auf Einkernsystemen, nur laufen dann eben die Threads abwechselnd statt komplett parallel. Der Effekt ist aber fast der selbe. (Tatsächlich ist Threading auf Einkernsystemen ein kleines bißchn übersichtlicher, eben weil es keine echte Parallelität gibt.)

  5. #5
    Da ich in letzter Zeit immer total viel zu tun hab, habe ich bis jetzt keine Zeit gefunden mich selber weiter damit zu beschäftigen.
    Hat da nicht einer von euch ein kleines Beispiel an das ich mich halten kann?
    Z.B. muss ich in einer Schleife zwei "fast" identische Berechnungen machen, wobei die eine aber nach n-Durchläufen unterbrochen wird und paar Parameter neu skaliert werden müssen (Skalierung hängt von der anderen Berechnung ab).

    Kann mir einer sagen wie man das in zwei Threads unterteilt?

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •