Wie Kompiliert man ein C++ Projekt auf mehreren Prozessorekernen?

... komplette Frage anzeigen

5 Antworten

Compiliere deine Quellen mit allen!! Fehlermeldungen und Warnungen, die der Compiler ausgeben kann. Beseitige zunächst die Fehler und dann auch systematisch sämtliche Warnungen! Speziell die Warnungen deuten auf kommende Probleme hin!

Wenn sich ein Projekt compilieren lässt, heißt das nicht, es sei fehlerfrei – das ist es nur bezüglich Syntax und logischer Fehler. Speziell die Warnungen können da so einiges zu Tage fördern … :-)

Manchmal muss man da eben auch Geduld haben!

Es ist jedenfalls ein Denkfehler zu glauben, wenn der Prozessor 4 Kerne besitzt, dass das System und der Compiler diese automatisch oder auf Befehl einsetzen und statt 14 Sekunden braucht der Compiler dann automatisch 1/4 dieser Zeit! Mit Verwaltungsoverhead + einiger sonstiger „Trödeleien“ wird er wohl auch auf 6 Sekunden kommen … :-)

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von julib5432112345
29.08.2016, 10:05

Warnung reaktivieren. Geht klar. Das mit dem Fehlerfreien kompilieren und Ausführen kenn ich. Bin dabei nen Speicherzugriffsfehler zu beheben... Recht interessant wozu GDB und vergleichbare Software in der Lage sind. Wenn ich das ganze aber auf dem Raspberry Pi kompiliere dauert es auch mal über eine Minute :/

0

14 Sekunden sind lächerlich. Setze Dich mit den Möglichkeiten beim Debuggen auseinander, dann musst Du auch nicht so häufig das Projekt neu bauen.

Wir haben Projektmappen, die trotz auf 50 Rechner verteiltem Build 10 bis 12 Minuten in Anspruch nehmen.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von julib5432112345
28.08.2016, 16:13

Ich sehe, dass 14 Sekunden im Vergleich dazu klein erscheinen, doch es wäre dennoch hilfreich zu Wissen wie man es auf verschiedene Kerne aufteilt, denn ich werde noch größere Projekte haben und ich würde gerne wissen wie es geht. Wenn Du Projekte auf sogar mehreren Rechnern verteilt kompilierst könntest Du mir doch helfen, oder?

1
Kommentar von wolfgang1956
29.08.2016, 06:58

Wir haben Projektmappen, die trotz auf 50 Rechner verteiltem Build 10 bis 12 Minuten in Anspruch nehmen.

Du hast den Grössten!!

Nur beantwortet weder dieser noch der vorangegangene Satz sein Problem!

0

Wie Kompiliert man ein C++ Projekt auf mehreren Prozessorekernen?

Wie soll das denn gehen?

Der Übersetzungsprozess ist doch ein sequentieller! Genau so wie dein Projekt?

Du könntest bestenfalls die Übersetzung der Module auf die Prozessorkerne verteilen ... aber das sollte doch wohl automatisch passieren?

Aber wenn du vernünftig modularisiert hast, wird doch nur der Modul übersetzt, der eine neueres Datum als das übersetzte Programm hat.

Ausnahme: Wenn include-Dateien verändert werden, müssen natürlich alle Dateien übersetzt werden, welche diese verwenden ...
Mit einer gut aufgebauten make-Datei wird das automatisch erledigt!

Nur bei parallelen Abläufen macht eine getrennte Übersetzung Sinn!

Oder wie willst du das Ende eines längeren Programms vor dem Anfang übersetzen?

Antwort bewerten Vielen Dank für Deine Bewertung

Wenn der Compiler das nicht macht, wirst du ihn wohl kaum dazu überreden können.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von julib5432112345
28.08.2016, 14:39

Aber mithilfe von make scheint eben dies ja irgendwie möglich zu sein.

0

Was möchtest Du wissen?