Newsgroup: it.comp.hardware.cpu
Titolo: Istruzioni AVX vs AVX2 vs FMA3 vs ADX

Con l'ultima versione di y-cruncher 0.7.1.9465b e' stato
aggiunto il codice che usa le struzioni ADX presenti
in alcuni processori Intel Broadwell e Skylake (e successivi):
Multi-Precision Add-Carry Instruction Extensions .
 
Riepilogo nuove istruzioni per processori Intel :
2011 Sandy Bridge (2a gen) : AVX
2013 Haswell (4a gen) : AVX , AVX2 , FMA3 , BMI
2015 Broadwell/Skylake (5a e 6a) : AVX , AVX2 , FMA3 , BMI , ADX
2016 Kaby Lake (7a gen) : AVX , AVX2 , FMA3 , BMI , ADX (** da confermare)
 
Riepilogo istruzioni AMD :
2011 Bulldozer (1a gen) : AVX , FMA4 , XOP
2012 Piledriver (2a gen) :  AVX , FMA4 , XOP
2014 Steamroller (3a gen) :  AVX , FMA4 , XOP
2015 Excavator (4a gen) :  AVX , FMA4 , XOP , AVX2
2017 Zen : AVX , AVX2 , ADCX (** da confermare)
 
Grazie al programma y-cruncher e' facile fare
confronti tra i vari set di istruzioni, riassumo alcuni
test eseguiti con Core i7-4790K e Core i5-6600K .
 
Y-CRUNCHER v0.7.1
1 miliardo di cifre (nel programma digitare 0-1-6)
tempi della sola elaborazione (computational time)
 
Core i5-6600K (Skylake) 4 core / 4 thread 4,0 GHz (turbo 4,2)
32GB DDR4-2400 CL14
 
 112.618 sec - ADX
 113.326 sec - AVX2/FMA3
 224.203 sec - AVX
 281.145 sec - SSE4.1
 297.440 sec - SSE3
 
Core i7-4790K (Haswell) 4 core / 8 thread 4,2 GHz (turbo 4,4)
16GB DDR3-1600 CL9
 
 124.733 sec  AVX2/FMA3
 233.625 sec  AVX
 272.954 sec  SSE4.1
 289.848 sec  SSE3
 
Disattivando l'HyperThreading sul Core i7-4790K
i tempi peggiorano del 10% :
 
135.273 sec    AVX2/FMA3
254.210 sec    AVX
 
Passando dalla piattaforma Haswell con DDR3-1600
a quella Skylake con DDR4-2400 , a parita' di core fisici
e thread (senza HyperThreading) , c'è un miglioramento
del 20% .
 
Ciao
Luca
 
 
 


 
E le TSX non le hanno piu' messe? :-)

 le ADX?
 
e' un set di istruzioni per il calcolo aritmetico, in realta'
sono solo due, ADCX e ADOX che affiancano l'esistente ADC
 
la differenza e' che ADC imposta sia il flag overflow che carry,
mentre le nuove li settano individualmente:
ADCX solo carry, ADOX solo overflow
(spero di aver capito bene, nel caso correggete)
 
 ho indicato solo le istruzioni per il calcolo, tralasciando
TSX , AES , VT, MPX . ne dimentico qualcuna ? (aheh)
 
 
ciao
luca
 
 


 
Ah beh, se non lo sai tu... :D

 nella pratica...
 
ho citato apposta y-cruncher perche' l'autore e' molto
attento nell'impiegare le ultime novita' in fatto di estensioni,
con le nuove ADX c'e' un ulteriore miglioramento dell'1%
rispetto all'utilizzo delle sole istruzioni AVX2
(certo e' poco, ma sempre meglio di niente)
 
pare che anche Zen avra' un set equivalente
 
 
ciao
luca
 
 

 (certo e' poco, ma sempre meglio di niente)
 
Ma il software deve supportarle in maniera specifica
come accade con le AVX?

 come accade con le AVX?
 
certo, al posto di usare l'istruzione ADC si usera' ADCX
o ADOX in base a cio' che si vuole ottenere, da quanto ho capito
(e non sono pratico di assembler), differenziando con
due istruzioni si può incrementare il parallelismo
 
comunque il miglioramento piu' evidente avviene
con le AVX2+FMA3  , il raddoppio delle prestazioni di picco
garantisce il dimezzamento dei tempi di elaborazione,
e da quanto ho notato, con un piccolissimo aumento
dei consumi (devo rimisurare, se interessa... )
 
ciao
luca
 
 
 

2fast ha pensato forte :

Ok thanks... :-)