Moderatore: Staff

Trotto@81 ha scritto:Ma è possibbile sfruttare al massimo le cpu multi core durante la compilazione dei nostri programmi?


d4z_c0nf ha scritto:Trotto@81 ha scritto:Ma è possibbile sfruttare al massimo le cpu multi core durante la compilazione dei nostri programmi?
make -j numero_di_core
così mandi in parallelo n job, 1 per core.
rock


Mario Vanoni ha scritto:d4z_c0nf ha scritto:Trotto@81 ha scritto:Ma è possibbile sfruttare al massimo le cpu multi core durante la compilazione dei nostri programmi?
make -j numero_di_core
così mandi in parallelo n job, 1 per core.
rock
No sempre vero/usabile.
Solo se il Makefile del programma lo ha previsto,
per esempio il kernel in parte (bzImage e modules),
make -j 2 modules_install fallisce (installazione parallela).
Altri progarmmi (la maggioranza) non lo gradiscono.





lyapunov ha scritto:Ma la regola non era -j <numeroCore+1> ?

Vito ha scritto:Ma se si dà solo make che succede?

Mario Vanoni ha scritto:Per esperienza
make -j numero_dei_pocessori+1
non porta niente, spesso rallenta, ideale e`
make -j numero_dei_processori
Importa di piu` la grandezza del/dei (*) loro L2 cache
e la memoria totale disponibile, piu` grandi sono, meglio.
(*) Core 2 hanno L2 cache in comune,
macchine con 2 XEON ogni CPU ha la sua L2 cache.
Le P4 HT hanno 2 CPU, ma la stessa L2 cache insieme.


davide77 ha scritto:La spiegazione è che, quando compili, la prima fase è la lettura dal disco, che, se è la fase più lenta, ti lascia in wait un processo su un core con conseguente perdita di tempo utile, mentre se hai una "scorta" di processi già pronti da compilare riduci il tempo di attesa.



Visitano il forum: ildiama e 1 ospite