Einsetzten der multi-core-Technik



  • Hi,

    wie können multi-core-Prozessoren eingesetzt werden? Ich habe bisher Erfahrung mit Cluster-Architekturen und sogenannten shared-memory-Systemen. Soll eine Programm mehr als ein Prozessor verwenden, muss eine entsprechende Bibliothek (z.B. MPI bzw. OpenMP) eingesetzt werden.
    Die Programme werden danach auch nicht einfach gestartet, sondern Starktskripte verwendet, die die Umgebung für das Programm entsprechend vorbereitet.

    Wie sieht das nun bei multi-core-Prozessoren aus? Von der Architektur entspricht diese Technik der shared-memory-Architektur. Kann ich demnach mit OpenMP parallelisieren? MPI sollte auf jeden Fall gehen, oder? Gibt es spezielle Bibliotheken für diese Technik? Was passiert, wenn ich ein sequentielles Programm auf solch einem Prozessor ausführe?

    MfG,
    K.B.



  • MPI und OpenMP funktionieren auf Multicores zwar sicher auch, aber der ueblichste Weg ist wohl, die Programme einfach Multithreaded zu schreiben.



  • Multi-Core ist ja im Grunde ein SMP-System. Funktioniert also analog. Der Kernel teilt die Prozesse auf die Prozessoren (Kerne) auf. MPI oder ähnliches dürfte unnötig sein.



  • Hmmm... mit mehreren threads hab ich bisher noch nicht gearbeitet. Was ist da empfehlenswert? Boost? Ich hab gesehen, dass es jede Menge Bibliotheken zur Thread-Programmierung gibt. Wichtig ist zum einen die Performance (deshalb will man die multi-core-Prozessoren nutzen) und dass das Paket betriebssystemunabhängig ist.

    @rüdiger:

    Der Kernel teilt die Prozesse auf die Prozessoren (Kerne) auf. MPI oder ähnliches dürfte unnötig sein.
    Ich vermute mal, dass ein Thread das gleiche wie ein Prozess ist. Ich kenne Anwendungen, bei denen absichtlich mehr Prozesse erzeugt wurdem, als Prozessoren zur Verfügung standen. Durch geschicktes Zuweisen der Prozesse auf gewisse Prozessoren wurde eine optimale Performance erreicht.
    Bsp: 4 Prozesse sind wenig rechenintensiv, 1 Prozess ist sehr rechenintensiv.
    Dann müsste ich dem System mitteilen können, dass die 4 ersteren Prozesse auf einen Core sollen, der rechenintensive auf den zweiten Core.
    Oder denke ich da in eine völlig falsche Richtung?



  • ich verwende meistens openMP, ist sehr nett, verteilt automatisch entsprechend der CPU-anzahl die berechnungen.



  • Karl Blau schrieb:

    Ich vermute mal, dass ein Thread das gleiche wie ein Prozess ist...

    Falsch vermutet 😡


Anmelden zum Antworten