Title: Compilare in parallelo
Author: Sandro Tosi
Last modified: 2004-12-14
La compilazione e` spesso un'attivita` molto lunga, in particolare per
progetti di una certa grandezza come il kernel Linux o le interfacce
grafiche come Gnome o Kde.
Su macchine multiprocessore o con architetture particolari
(Hyperthreading o multicore) potrebbe essere utile compilare parti del
codice in parallelo.
Il comando make consente di fare questo tramite l'opzione -j:
# make -j x
esegue in parallelo x job di compilazione. Il valore x e`
consigliabile sceglierlo pari al numero di processori della macchina.
A volte anche su una macchina a singolo processore si possono trarre
vantaggi dalla compilazione parallela, magari scegliendo il numero di
job x = 2.
Potrebbe essere interessante sfruttare un cluster (anche di ridotte
dimensioni) per la compilazione di un progetto molto voluminoso, in
quanto i processi di compilazione potrebbero essere migrati verso i
vari nodi del cluster, per poi effettuare il linking degli oggetti
sulla macchina che ha lanciato il comando. Inoltre e` anche possibile
usare cluster mosix, in quanto la memoria non e` condivisa tra i job.
L'utilizzo di un cluster, sebbene di elevato interesse a livello
implementativo, ha scarsa utilita` a livello pratico: la compilazione
di un applicazione, per voluminosa che sia (anzi, a maggior
ragione...) avviene molto di rado; e` dunque preferibile dedicare un
cluster per il calcolo e l'elaborazione, invece che alla
compilazione. Esiste comunque un progetto di un compilatore parallelo,
distcc (http://distcc.samba.org)
|