Forum: Compiler & IDEs C compiler und parallitätsausnutzung


von daniel (Gast)


Lesenswert?

wäre doch theoretisch denkbar, dass der Compiler die Codezeile
f(a(), b());
auf einem Dualcore System .. a() auf einem Prozessor und
b() auf anderem berechnet.
Theoretisch .. kennt jemand dies auch aus Praxis?
Und wenn welche C Compiler tun das?

gruss, daniel

von Der Dude (Gast)


Lesenswert?

Klar ist das möglich. Wenn Du Dir so einen Compiler baust.

von Mathi (Gast)


Lesenswert?

Das geht zwei Methoden auf einem Dualcore gleichzeitig zu berechnen. 
Aber nicht mit einem "normalen" C-Compiler. Der muss parallelisieren 
können. Auf share-memory-Systemen, wie einem Dualcore, nimmt man dafür 
open-mp. Ob das der gcc oder ein anderer Standardcompiler kann, kann ich 
Dir net sagen.

Hoffe das hilft!

von Mathi (Gast)


Lesenswert?


von Uhu U. (uhu)


Lesenswert?

Die einfachste Methode sowas hinzubekommen ist die paralelle Übersetzung 
von jeweils zwei Modulen. M$s Build-Tool macht das standardmäßig.

von Εrnst B. (ernst)


Lesenswert?

@Uhu: Es geht nicht darum, zwei Files gleichzeitig kompilieren zu 
lassen, dass kann make auch seit urzeiten (make -j4 ...) oder mehrere 
Rechner gleichzeitig an einem Projekt kompilieren zu lassen (z.B. mit 
distcc, dmake, ...)

Sondern darum, dass das kompilierte Programm zur Laufzeit automatisch 
neue Threads startet, die dann einzelne Funktionen berechnen.

In C ist sowas schwierig, obwohl GCC mit __attribute__(_pure_) schon 
gewisse Grundlagen dafür mitbringt.

In Sprachen ohne Seiteneffekte (Haskel, SML, ...) geht das deutlich 
einfacher, da gibt es auch entsprechende automatisch parallelisierende 
Compiler.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.