ubuntuusers.de

C Programme im Terminal für dual core aufmachen

Status: Ungelöst | Ubuntu-Version: Ubuntu 10.04 (Lucid Lynx)
Antworten |

newhippie

Anmeldungsdatum:
4. Januar 2009

Beiträge: 248

Wohnort: Leipzig

Hallo, ich habe auf Anhieb nicht die Antwort auf meine Frage gefunden, da ich aber sicher bin, dass die Antwort auf der Oberfläche liegt, frage ich gleich nach.

Ist es möglich eine in C/C++ geschriebene Anwendung (selbst "Hello World" o.ä.) im Terminal so aufzurufen, dass der Prozess auf zwei Kerne verteilt wird.

Mir geht es um ein Programm, welches eine Nährung berechnen soll und dafür etwa 10^15 Schritte braucht. Unda da würde es mit zwei schneller gehen.

Jemand eine Idee?

Danke

Sid_Burn

Anmeldungsdatum:
23. Oktober 2004

Beiträge: 2159

Wenn das programm nicht so geschrieben wurde das es Forkt oder Threads nutzt dann ist es nicht möglich das es auf zwei Kernen läuft, die programme müssen dafür geschrieben werden. Wurden Sie aber dementsprechend geschrieben passiert das automatisch ohne zutun.

newhippie

(Themenstarter)

Anmeldungsdatum:
4. Januar 2009

Beiträge: 248

Wohnort: Leipzig

Also ist es nicht möglich, dass das Terminal die Rechenleistung automatisch aufteilt?

Geht es vielleicht mit irgend einem Hilfswerkzeug?

Aber danke für die fixe Antwort. Traurig natürlich...

Sid_Burn

Anmeldungsdatum:
23. Oktober 2004

Beiträge: 2159

newhippie schrieb:

Also ist es nicht möglich, dass das Terminal die Rechenleistung automatisch aufteilt?

Das Terminal selber teilt sowieso nichts auf. Aber nein soetwas kann das System nicht automatisiert tuen. Soetwas muss expplizit Programmiert werden.

Geht es vielleicht mit irgend einem Hilfswerkzeug?

Nein.

newhippie

(Themenstarter)

Anmeldungsdatum:
4. Januar 2009

Beiträge: 248

Wohnort: Leipzig

Danke, na dann geht's los ))))

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

Moderne C-Compiler können Programme in gewissem Rahmen automatisch parallelisieren, wenn man entsprechende Optimierungen aktiviert. Zudem verstehen moderne C-Compiler meist auch OpenMP, so dass man mit Glück zur Parallelisierung nur ein paar Stellen mit entsprechenden OpenMP-Pragmas annotieren muss, anstatt sich mit der PThread-API herumzuschlagen.

kringel

Avatar von kringel

Anmeldungsdatum:
7. September 2005

Beiträge: 2434

Wohnort: Gummersbach

Ich habe jetzt "im Terminal" mal so verstanden, dass es ja durchaus Optionen für gcc gibt. Ich finde das Thema auch sehr spannend.

Sowas wie zum Beispiel:

gcc -pthread

Nur, ich glaube das müsste man dann im Quelltext auch verwenden, also diesen anpassen, oder? Habe noch etwas gefunden bei http://old.nabble.com/Complier-options-for-multi-core-architecture-systems-tt19666751.html#a19666751

Parallelism is not a magic wand that you can just wave over code. It requires careful study and design on the part of the programmer, in that algorithms have to be chosen and implemented that can be split into separate independent work units. gcc since 4.2 supports OpenMP which does allow some loops to be automatically parallelized, but again this requires specific programmer action to add markup to the code to direct the compiler.

On the other hand, you don't need any special compiler support to write multi-threaded programs, using whatever thread API your platform supports (e.g. pthreads.)

Antworten |