Compilieren mit mehreren CPUs

Für Fragen rund um die Ide und zum Debugger
Antworten
Mathias
Beiträge: 6208
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Compilieren mit mehreren CPUs

Beitrag von Mathias »

Wie hier beschrieben, lege ich den FPC-Compiler lahm.
Und wen ich mit "htop" gucke, compiliert er gemütlich mit einer CPU.
Kann der fpc-Compiler auch mehrere CPU-Kerne verwenden ?

Bei vielen C-Paketen, kann man einfach "make .j" oder "ninja -j"" eingeben, und dann geht die Post ab.
Oder funktioniert dies nur, weil "make" mehrere Instanzen des Compiler startet ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6216
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Compilieren mit mehreren CPUs

Beitrag von af0815 »

Es ist make das mehrere Instanzen startet. Vor allen muss make dabei eventuelle Abhängigkeiten auflösen (können).
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Mathias
Beiträge: 6208
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Compilieren mit mehreren CPUs

Beitrag von Mathias »

Es ist make das mehrere Instanzen startet. Vor allen muss make dabei eventuelle Abhängigkeiten auflösen (können).
Dies habe ich fast vermutet. :roll:

Ich habe gerade versucht make im Lazarus-Ordner zu probieren. Mit "make" gemütlich eine CPU. Mit "make -j20" wird mit Fehler abgebrochen.
So wie es scheint, kann man mit FPC nur eine CPU nutzen.
Aber da der Compiler im Alttag viel schneller als der von C ist, fällt dies nicht so ins Gewicht.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6216
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Compilieren mit mehreren CPUs

Beitrag von af0815 »

IMHO kann man / sollte man nie mehr CPU's angeben als man hat. einfach mal keine Zahl angeben, dann wird soviel wie möglich verwendet. Quelle: https://unix.stackexchange.com/question ... 20possible.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Mathias
Beiträge: 6208
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Compilieren mit mehreren CPUs

Beitrag von Mathias »

IMHO kann man / sollte man nie mehr CPU's angeben als man hat. einfach mal keine Zahl angeben, dann wird soviel wie möglich verwendet.
Das mit keiner Zahl kann auch in die Hose gehen. Compiliere mal den Linux-Kernel so, es wird dir das ganze System blockieren, so das sich nicht mal mehr der Mauszeiger bewegt. Gebe ich -j100 ein, dann läuft das System noch einigermassen.
So sind die Erfahrungen verschieden, so wie es auch in deinem Link steht.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

PascalDragon
Beiträge: 834
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Compilieren mit mehreren CPUs

Beitrag von PascalDragon »

Mathias hat geschrieben:
Di 11. Jul 2023, 13:48
Kann der fpc-Compiler auch mehrere CPU-Kerne verwenden ?
Kurze Antwort: Nein.

Lange Antwort: Da Units im Gegensatz zu zum Beispiel C Dateien nicht unabhängig voneinander sind, ist es nicht trivial ein funktionierende Implementierung zu erstellen. Noch dazu würde es Stand jetzt bedeuten, dass unter Linux gegen die C Bibliothek gelinkt werden muss, was wir für den Compiler selbst vermeiden möchten, da er hierdurch portabler ist.
FPC Compiler Entwickler

Antworten