Parellele Programmierung



  • Hallo zusammen,

    ich habe gerade im WinAPI Forum den Tipp OpenMP für die Parellelisierung von Aufgaben innerhalb von Funktionen etc. bekommen.

    Ist es mit dem BCB2007 überhaupt möglich OpenMP anzusteuern, bzw. (wer es kennt) genauso einfach beispielsweise lange for-schleifen auf verschiedene Threads auszulagern und zu synchronisieren, damit einzelne Programmteile schneller abgearbeitet werden?

    Vielen Dank
    Stefan



  • StefanN schrieb:

    Ist es mit dem BCB2007 überhaupt möglich OpenMP anzusteuern, bzw. (wer es kennt) genauso einfach beispielsweise lange for-schleifen auf verschiedene Threads auszulagern und zu synchronisieren, damit einzelne Programmteile schneller abgearbeitet werden?

    Der C++Builder-Compiler unterstützt OpenMP noch nicht, daher muß man auf andere Parallelisierungsmethoden zurückgreifen. Für meine Zwecke habe ich mir z.B. eine Threadpool-Klasse erstellt, die Tasks abarbeiten kann und bei Veränderungen den GUI-Thread mittels Messages benachrichtigt. Das ist natürlich ein anderer Ansatz als OpenMP: die Threadpool-Klasse war eher für die Abarbeitung größerer Aufgaben im Hintergrund gedacht (z.B. die Kommunikation über die serielle Schnittstelle), wohingegen OpenMP auf Parallelisierung des aktuell laufenden Threads zielt - was in GUI-Anwendungen voraussetzt, daß dieser selbst getrennt vom GUI-Thread läuft.

    Der nächste C++-Standard soll, soweit ich weiß, auch irgendeine primitive Art der Parallelisierung unterstützen. Eigentlich dürfte sich so etwas wie OpenMP aber auch in heutigem C++ ohne spezielle Compilerdirektiven implementieren lassen.

    Zu deinem konkreten Fall: vielleicht könntest du mal ein paar kleine Auszüge posten, die demonstrieren, was du parallelisieren willst.



  • Hallo,

    danke für deine Antwort.
    Ich habe mir schon fast gedacht, dass Borland OpenMP nicht unterstützt.

    Ich würde gerne für mich lange und zeitraubende Schleifen parallelisieren. Aber wie gesagt, ich habe davon noch keine Ahnung. Habe nur ein Beispiel bei OpenMP (#pragma omp for usw...) für die Parellelisierung von for-Schleifen gesehen und gehofft, dieses auf mein Problem anwenden zu können. Meine Rechenzeit ist nämlich fast schon exponentiell.

    MFG
    StefanN



  • Der nächste Standard enthält eine Thread-Implementation, die sich stark an boost::thread anlehnt. Eine weitergehende Unterstützung von Parallelisierung ist mir nicht bekannt.
    Desweiteren gibt es noch boost::MPI.


Anmelden zum Antworten