Newsgroup: it.comp.lang.c
Titolo: Compialtore ottimizzato per P4

Sto cercando, come da oggetto un compilatore per C che tiri fuori il massimo
delle prestazioni dal mio P4.
Mi hanno consigliato ICC 8.1, ma ho visto sul sito che è un compilatore per
C++, non C.
Suggerimenti?

 gcc con opzione -mcpu=i686
Mi pare di ricordare di aver letto da qualche parte che il gcc ottimizza
molto bene, quindi puo` essere una buona scelta.
Ho letto anche (e non ricordo dove, tanto per cambiare) che il compilatore
C/C++ di Intel va molto bene (ma ovviamente non e` gratuito).
Per ottimizzare _veramente_ bene, consiglio 3 cose:
   1) leggiti _bene_ il manuale del GCC; l'ottimizzazione non si ottiene
      solo generando codice per il proprio processore, ma facendo cose
      come lo "srotolamento dei loop" e simili; il manuale del GCC
      descrive tutte le opzioni utili;
   2) il processore non e` il traguardo, ma la partenza: cerca di sfruttare
      anche la cache usando strutture dati appropriate (array), scrivi
      cicli piccoli che possano entrare in cache, riduci le allocazioni
      dinamiche di memoria, usa i buffer con accortezza, ecc...
   3) scegli accuratamente le strutture dati e gli algoritmi: ci fai ben
      poco con un codice altamente ottimizzato se poi usi un algoritmo
      di complessita` esponenziale!
Saluti,
Marco

      di complessita` esponenziale!
Sicuramente dovrei studiarmi bene questi parametri, ma la domanda sorge 
spontanea:
perchè l'inferiorità del P4 rispetto al P3 è da attribuirsi per forza ad 
inesattezze (o mancate ottimizzazioni) di compilazione, stanti le premesse 
di cui sopra?
Comunque, visto che in questo momento quello del confronto tra P3 e P4 non è 
il mio obbiettivo prioritario, se qualche anima pia mi sa indicare 
"istruzioni precise" (leggi: "esatta sequenza di parametri di compilazione") 
per far spingere al massimo il P4, è ovviamente ben accolta!
Comunque il mio programma non fa niente di trascendentale, in particolare:
- generazione di numeri primi, e operazioni su grandi numeri (ordine intorno 
ai 1024-bit) con libreria OpenSSL 0.9.7e.
- rilevamento di tempi mediante codice assembler (che legge da un registro 
del processore la fotografia del clock di sistema).
Questo è quanto...
Grazie
    Fabbro 

 ai 1024-bit) con libreria OpenSSL 0.9.7e.
Chiamalo niente di particolare! Per operare a 1024 bit ci vogliono un
sacco di calcoli! Cmq mi viene un dubbio... sei sicuro che le OpenSSL
siano compilate bene? Magari stai usando una versione precompilata
per i386 o i486. Prova, in caso, a ricompilarle per P4.
Saluti,
Marco

 privato.
io ho letto un commento interessnate: la pipeline dei processori p4 e' 
molto piu' lunga di quella dei p3. Se il programma richiede di svuotare 
spesso la pipeline spesso questo si traduce in una enorme perdita di 
prestazioni.
Inoltre so che amd ha acquistato anni fa una serie di brevetti dei 
vecchi processori alpha per quando riguarda l'aritmetica in floating 
point, che e' piu' performante a livello di ciruiteria di quella dei 
pentium.

 per i386 o i486. Prova, in caso, a ricompilarle per P4.
Ca**o !  A questo non ci avevo proprio pensato...
provvederň, grazie della dritta
    Fabbro