Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Per Huawei l’IA è una questione di storage. Presentate soluzioni dedicate e un SSD da 128 TB
Per Huawei l’IA è una questione di storage. Presentate soluzioni dedicate e un SSD da 128 TB
Inizia l’era dell’AI storage. Durante l’Innovative Data Infrastructure Forum 2024, Huawei ha presentato OceanStor A800, una soluzione innovativa pensata per i carichi di lavoro legati all’intelligenza artificiale generativa
Recensione Google Pixel Tablet: in ritardo ma un ottimo primo passo!
Recensione Google Pixel Tablet: in ritardo ma un ottimo primo passo!
Il Pixel Tablet di Google arriva finalmente anche in Italia e lo fa quasi un anno dopo il suo debutto negli USA e in alcuni paesi nel mondo. Un ritardo che sembra però aver giovato al device che arriva performante e con molte funzionalità uniche che possono renderlo decisamente appetibile.
ASUS ProArt PA32UCXR: 4K, Quantum Dot e Mini-LED i per professionisti dell'immagine
ASUS ProArt PA32UCXR: 4K, Quantum Dot e Mini-LED i per professionisti dell'immagine
Un monitor veramente completo, per funzionalità e prestazioni. La presenza di un colorimetro integrato consente di agevolare le operazioni di calibrazione, anche per il mantenimento periodico delle prestazioni
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-02-2008, 16:14   #21
MFSPO=DBGPOF
Bannato
 
Iscritto dal: Dec 2007
Messaggi: 42
Ho chiesto, e pare che così è meglio:

Codice:
int abs(int x)

{
	return ((x^(x>>31))-(x>>31));
}

Ultima modifica di MFSPO=DBGPOF : 13-02-2008 alle 16:20.
MFSPO=DBGPOF è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 16:27   #22
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1536
Quote:
Originariamente inviato da MFSPO=DBGPOF Guarda i messaggi
Ho chiesto, e pare che così è meglio:

Codice:
int abs(int x)

{
	return ((x^(x>>31))-(x>>31));
}
cross platform soprattutto
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 16:32   #23
MFSPO=DBGPOF
Bannato
 
Iscritto dal: Dec 2007
Messaggi: 42
Quote:
Originariamente inviato da Ufo13 Guarda i messaggi
cross platform soprattutto
vabbe, metto a posto

Codice:
int abs(int x)

{
	return ((x^(x>>((sizeof(int)<<3)-1)))-(x>>((sizeof(int)<<3)-1)));
}
Contento?
MFSPO=DBGPOF è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 17:11   #24
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3691
Guardate che io avevo barato.
L'implementazione piu' veloce e' esattamente quella che abbiamo imparato, ovvero usare la
funzione gia' disponibile nella stdlib.h (e nella math.h)

Ovvero
int abs(int x)
gia' dichiarata e pronta per tutti.

Il mio codice infatti non era altro che il Disassembly del codice generato da tale funzione.

Fra l'altro il codice generato dalla soluzione di MFSPO=DBGPOF e' easttamente equivalente, a parte il
CDQ generato dalla ABS di libreria
e il (SAR registro,31) generato dalla soluzione.
entrambi vogliono riempire un registro con quello che e' il bit piu' significativo, ovvero il segno, della nostra variabile in questione.

Usare la ABS di libreria secondo me e' quindi piu' veloce, piu' leggibile e piu' cross-platform di qualunque altro metodo.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 17:20   #25
MFSPO=DBGPOF
Bannato
 
Iscritto dal: Dec 2007
Messaggi: 42
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Guardate che io avevo barato.
L'implementazione piu' veloce e' esattamente quella che abbiamo imparato, ovvero usare la
funzione gia' disponibile nella stdlib.h (e nella math.h)

Ovvero
int abs(int x)
gia' dichiarata e pronta per tutti.

Il mio codice infatti non era altro che il Disassembly del codice generato da tale funzione.

Fra l'altro il codice generato dalla soluzione di MFSPO=DBGPOF e' easttamente equivalente, a parte il
CDQ generato dalla ABS di libreria
e il (SAR registro,31) generato dalla soluzione.
entrambi vogliono riempire un registro con quello che e' il bit piu' significativo, ovvero il segno, della nostra variabile in questione.

Usare la ABS di libreria secondo me e' quindi piu' veloce, piu' leggibile e piu' cross-platform di qualunque altro metodo.
Quoto gugoXX. Ho disassemblato la abs(x) della stdlib.h, e il codice x86 generato è pari pari quello proposto da gugoXX. La abs() di stdlib.h è la più veloce possibile.
MFSPO=DBGPOF è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 18:43   #26
Mr. X
Senior Member
 
L'Avatar di Mr. X
 
Iscritto dal: Nov 2005
Città: Arezzo
Messaggi: 1801
Ragazzi vedo che vi siete impegnati per darmi la soluzione...
Ovviamente ho fatto un attento profiling ed il collo di bottiglia è proprio il calcolo del valore assoluto che è da calcolarsi il più velocemente possibile... Ho provato anche ad utilizzare la funzione abs di libreria come dite voi ma la LUT continua ad essere la soluzione più veloce...
__________________
iMac 27" - Apple iPhone 4 16GB Nero
Ho concluso trattative con: cletopolonia - lele11 - Palli - darkn3o - Res3rator - andyxx - ABCcletta - DyingSweetly - streke - spiderman4 - mickyjenny - bottoni - tancrozio - perno
Mr. X è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 19:09   #27
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53967
Mi spieghi come hai fatto la lookup table per l'abs ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 19:36   #28
Mr. X
Senior Member
 
L'Avatar di Mr. X
 
Iscritto dal: Nov 2005
Città: Arezzo
Messaggi: 1801
Quote:
Originariamente inviato da cionci Guarda i messaggi
Mi spieghi come hai fatto la lookup table per l'abs ?
siccome il mio numero da "assolutizzare" va da -23000 a +23000 per ognuno di quesi numeri mi sono fatto una tabella lunga 46001 elementi mettendoci il risultato. Questa tabella l'ho generata con Matlab su un file di testo che poi ho dato in pasto al C.
__________________
iMac 27" - Apple iPhone 4 16GB Nero
Ho concluso trattative con: cletopolonia - lele11 - Palli - darkn3o - Res3rator - andyxx - ABCcletta - DyingSweetly - streke - spiderman4 - mickyjenny - bottoni - tancrozio - perno
Mr. X è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 19:45   #29
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53967
Sicuramente è molto veloce, ma fare il quadrato e poi la divisione era molto più lento ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 19:59   #30
Mr. X
Senior Member
 
L'Avatar di Mr. X
 
Iscritto dal: Nov 2005
Città: Arezzo
Messaggi: 1801
Quote:
Originariamente inviato da cionci Guarda i messaggi
Sicuramente è molto veloce, ma fare il quadrato e poi la divisione era molto più lento ?
Guarda ti faccio un piccolo schema:

Funzione abs di libreria => 16ms
Mia funzione citata nel primo post => 14ms
Quadrato e poi divisione => 13ms
LUT => 9ms

Se consideri che tale algoritmo lo voglio fare in real-time anche se formalmente più brutto preferisco la LUT.
__________________
iMac 27" - Apple iPhone 4 16GB Nero
Ho concluso trattative con: cletopolonia - lele11 - Palli - darkn3o - Res3rator - andyxx - ABCcletta - DyingSweetly - streke - spiderman4 - mickyjenny - bottoni - tancrozio - perno
Mr. X è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 20:11   #31
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53967
In real time intendi in so real time ? In tal caso ti capisco
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 20:32   #32
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12075
Quote:
Originariamente inviato da Mr. X Guarda i messaggi
Guarda ti faccio un piccolo schema:

Funzione abs di libreria => 16ms
Mia funzione citata nel primo post => 14ms
Quadrato e poi divisione => 13ms
LUT => 9ms

Se consideri che tale algoritmo lo voglio fare in real-time anche se formalmente più brutto preferisco la LUT.
ma non è tantissimo 9ms?
...spero che non sia per un'esecuzione sola...
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 20:34   #33
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3691
Quote:
Originariamente inviato da Mr. X Guarda i messaggi
siccome il mio numero da "assolutizzare" va da -23000 a +23000 per ognuno di quesi numeri mi sono fatto una tabella lunga 46001 elementi mettendoci il risultato. Questa tabella l'ho generata con Matlab su un file di testo che poi ho dato in pasto al C.
La prossima volta spiega bene il problema allora.
46KB*4 di memoria non sono nulla
4GB*4 potrebbero esserlo.

Nelle valutazioni quantitative devi anche considerare che quella lookup table sono sempre 200KB di cache che usi solo per il calcolo del valore assoluto, e che potrebbero essere usati per altro.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.

Ultima modifica di gugoXX : 13-02-2008 alle 20:38.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 20:42   #34
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12075
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
ma non è tantissimo 9ms?
...spero che non sia per un'esecuzione sola...
ho fatto una semplicissima prova in ruby sul mio A64 3000+@4000+ (2520mhz e RAM 186 mhz se non sbaglio):
Codice:
startTime = Time.new
for i in 0..1000000
  a = -2.abs
end
puts Time.new - startTime
risultato... 350 msec per un milione di iterazioni....
e ruby è notoriamente molto lento come implementazione (ho usato la versione 1.8.6 non la ben + veloce 1.9.0 )
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 20:42   #35
Mr. X
Senior Member
 
L'Avatar di Mr. X
 
Iscritto dal: Nov 2005
Città: Arezzo
Messaggi: 1801
Quote:
Originariamente inviato da cionci Guarda i messaggi
In real time intendi in so real time ? In tal caso ti capisco
Esatto
__________________
iMac 27" - Apple iPhone 4 16GB Nero
Ho concluso trattative con: cletopolonia - lele11 - Palli - darkn3o - Res3rator - andyxx - ABCcletta - DyingSweetly - streke - spiderman4 - mickyjenny - bottoni - tancrozio - perno
Mr. X è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 20:44   #36
Mr. X
Senior Member
 
L'Avatar di Mr. X
 
Iscritto dal: Nov 2005
Città: Arezzo
Messaggi: 1801
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
ma non è tantissimo 9ms?
...spero che non sia per un'esecuzione sola...
9ms impiega tutto l'algoritmo al cui interno ci sono diverse migliaia di valori assoluti
__________________
iMac 27" - Apple iPhone 4 16GB Nero
Ho concluso trattative con: cletopolonia - lele11 - Palli - darkn3o - Res3rator - andyxx - ABCcletta - DyingSweetly - streke - spiderman4 - mickyjenny - bottoni - tancrozio - perno
Mr. X è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 20:46   #37
Mr. X
Senior Member
 
L'Avatar di Mr. X
 
Iscritto dal: Nov 2005
Città: Arezzo
Messaggi: 1801
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
La prossima volta spiega bene il problema allora.
46KB*4 di memoria non sono nulla
4GB*4 potrebbero esserlo.

Nelle valutazioni quantitative devi anche considerare che quella lookup table sono sempre 200KB di cache che usi solo per il calcolo del valore assoluto, e che potrebbero essere usati per altro.
Ti ringrazio per la precisazione. Anche se prendesse 200KB di cache preferisco la velocità.
__________________
iMac 27" - Apple iPhone 4 16GB Nero
Ho concluso trattative con: cletopolonia - lele11 - Palli - darkn3o - Res3rator - andyxx - ABCcletta - DyingSweetly - streke - spiderman4 - mickyjenny - bottoni - tancrozio - perno
Mr. X è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 20:47   #38
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3691
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
ho fatto una semplicissima prova in ruby sul mio A64 3000+@4000+ (2520mhz e RAM 186 mhz se non sbaglio):
Codice:
startTime = Time.new
for i in 0..1000000
  a = -2.abs
end
puts Time.new - startTime
risultato... 350 msec per un milione di iterazioni....
e ruby è notoriamente molto lento come implementazione (ho usato la versione 1.8.6 non la ben + veloce 1.9.0 )
Occhio, non conosco Ruby, ma il C++ in quel caso avrebbe saltato la valutazione dell'ABS.
Avrebbe messo direttamente +2 nella variabile a.
Anzi, se tutto va bene, dato che la variabile a non e' usata, avrebbe proprio saltato tutta la riga...
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 20:48   #39
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3691
Quote:
Originariamente inviato da Mr. X Guarda i messaggi
Ti ringrazio per la precisazione. Anche se prendesse 200KB di cache preferisco la velocità.
Chiaro.
Quello che dico e' che nel complesso mangiare 200KB di cache potrebbe rallentare il sistema. Valuta bene.
Poi a me vedere un array che nella cella 1 c'e' scritto 1
nella cella 2 c'e' scritto 2
nella cella X c'e' scritto X
Mi fa irritare un po'... ma passa subito non preoccuparti.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 20:51   #40
Mr. X
Senior Member
 
L'Avatar di Mr. X
 
Iscritto dal: Nov 2005
Città: Arezzo
Messaggi: 1801
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Chiaro.
Quello che dico e' che nel complesso mangiare 200KB di cache potrebbe rallentare il sistema. Valuta bene.
Poi a me vedere un array che nella cella 1 c'e' scritto 1
nella cella 2 c'e' scritto 2
nella cella X c'e' scritto X
Mi fa irritare un po'... ma passa subito non preoccuparti.
__________________
iMac 27" - Apple iPhone 4 16GB Nero
Ho concluso trattative con: cletopolonia - lele11 - Palli - darkn3o - Res3rator - andyxx - ABCcletta - DyingSweetly - streke - spiderman4 - mickyjenny - bottoni - tancrozio - perno
Mr. X è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Per Huawei l’IA è una questione di storage. Presentate soluzioni dedicate e un SSD da 128 TB Per Huawei l’IA è una questione di storag...
Recensione Google Pixel Tablet: in ritardo ma un ottimo primo passo! Recensione Google Pixel Tablet: in ritardo ma un...
ASUS ProArt PA32UCXR: 4K, Quantum Dot e Mini-LED i per professionisti dell'immagine ASUS ProArt PA32UCXR: 4K, Quantum Dot e Mini-LED...
HUAWEI WATCH FIT 3: lo smartwatch che ridefinisce design e fitness! Recensione HUAWEI WATCH FIT 3: lo smartwatch che ridefinisc...
HONOR 200 Lite, lo smartphone economico per ritratti, selfie, e non solo. La recensione HONOR 200 Lite, lo smartphone economico per ritr...
Alpine Alpenglow, bolide da 340 cavalli ...
Tiscali lancia il suo 5G: 200GB di traff...
Microsoft Work Trend Index: 3 italiani s...
iPhone 16 Pro, il display potrebbe esser...
Speciale droni in offerta: DJI Mini 2 SE...
USA, guerra alle elettriche cinesi: Bide...
Le dimensioni contano: torna a 749€ il T...
Windows 10 21H2, supporto al termine per...
2 ASUS Vivobook in offerta! 429€ con Cor...
Apple a un passo dalla firma con OpenAI:...
Sennheiser HD 660S2: cuffie con specific...
Google Pixel 8 vs Pixel 8 Pro: cosa camb...
Apple MacBook Air, MacBook Pro e iMac in...
NVIDIA Grace Hopper è un successo...
Opel Astra GSe, la plug-in diventa Grand...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:25.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Served by www2v