Discussione:
Istruzioni AVX vs AVX2 vs FMA3 vs ADX
(troppo vecchio per rispondere)
2fast
2016-09-10 16:19:49 UTC
Permalink
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
Lorenz
2016-09-11 10:12:31 UTC
Permalink
Post by 2fast
Con l'ultima versione di y-cruncher 0.7.1.9465b e' stato
aggiunto il codice che usa le struzioni ADX presenti
Multi-Precision Add-Carry Instruction Extensions .
Queste me l'ero perse...che vantaggi portano in concreto
le ADX?
Post by 2fast
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)
E le TSX non le hanno piu' messe? :-)
2fast
2016-09-12 07:10:38 UTC
Permalink
Post by Lorenz
Queste me l'ero perse...che vantaggi portano in concreto
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
Lorenz
2016-09-12 09:07:42 UTC
Permalink
Post by 2fast
Post by Lorenz
Queste me l'ero perse...che vantaggi portano in concreto
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,
ADCX solo carry, ADOX solo overflow
(spero di aver capito bene, nel caso correggete)
Chissa' se qualche software se ne avvantaggia
nella pratica...
Post by 2fast
ho indicato solo le istruzioni per il calcolo, tralasciando
TSX , AES , VT, MPX . ne dimentico qualcuna ? (aheh)
Ah beh, se non lo sai tu... :D
2fast
2016-09-12 11:05:19 UTC
Permalink
Post by Lorenz
Chissa' se qualche software se ne avvantaggia
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
Lorenz
2016-09-12 11:21:34 UTC
Permalink
Post by 2fast
Post by Lorenz
Chissa' se qualche software se ne avvantaggia
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)
Ma il software deve supportarle in maniera specifica
come accade con le AVX?
2fast
2016-09-13 07:21:35 UTC
Permalink
Post by Lorenz
Ma il software deve supportarle in maniera specifica
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
Lorenz
2016-09-13 08:56:53 UTC
Permalink
Post by 2fast
Post by Lorenz
Ma il software deve supportarle in maniera specifica
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... )
Ok thanks... :-)

Loading...