View Full Version : crossMark: un bench per Mac e Win
Cecilia76
18-03-2005, 15:19
Salve a tutti,
finalmente è arrivato il mio nuovo PB! La prima cosa che ho fatto allora e' stato scrivere un programmino per fare dei benchmark sia su Win che su Mac. Si chiama fftMark e calcola delle trasformate di Fourier e delle trasformate wavelet. E' scritto in C++ ed è stato compilato con lo stesso compilatore (gcc 3.3) in entrambi i sistemi con le stesse flag.
Lo potete scaricare qui:
www.cryptosound.org/software.htm
Tanto per gradire vi posto i risultati sui miei sistemi:
Athlon 1400+ con 512 Mb RAM: 10.026 punti
PowerBook G4 1.67 Ghz con 1 Gb RAM: 14.96 punti
Postate numerosi!!!
Powerbook 15,2" 1.25Ghz Hd 80 Gb 4200 rpm 512 Mb RAM:
performance score: 10.2389
estimated cpu freq: 1279.86 Mhz
:)
Visto che ho anche Gentoo sul portatile.. Funziona la versione del programma per os X?
Adesso provo..
Se la risposta é no sarebbe gradito un port su Linux per testare :)
Il sistema e' quello in sign.
performance score: 16
estimated cpu freq: 2000 Mhz
Il programma sbaglia la frequenza del processore.
Allora visto che voglio far ridere Cesare posto anche i risultati con la mia bella Epia M9000 funzionante a 933MHz sotto Windows XP Sp2 e tanti servizi ed applicazioni attive:
http://img102.exs.cx/img102/9932/test13gg.png
Poi ne ho chiusa qualcuna.. lasciandone però altre, come Emule in funzione:
http://img102.exs.cx/img102/9039/test25pm.png
Dopo ho provato a downcloccare il sistema a 800MHz con WCpuId 3.0c che permette di farlo da un comodo menù al volo:
http://img102.exs.cx/img102/2872/test800mhz6oq.png
Ho impostato poi moltiplicatore a 8x uscendome con un clock di 1066MHz, ove il sistema è ancora rock solid:
http://img102.exs.cx/img102/4069/test1066mhz4fj.png
Ora, capisco che il mio sistema non è potente, ma le prestazioni in quel "estimated cpu freq" non si spiegano, a meno di non risentire di qualche mancata ottimizzazione per esempio la mancanza delle SSE, che nei core Ezra è deficitaria.
http://img22.exs.cx/img22/7391/c3ezra933mhzwcpuid334az.png
Gold2004
18-03-2005, 18:38
iBook G3 800
performance score: 5.48948
estimated cpu freq: 686.151 Mhz
Sul pc mi va in loop a 'testing fourier transform...'
P4 2.8, WinXp SP2
Saluti
Sul sistema nella sign:
performance score: 15.873
estimated cpu freq: 1984.13 Mhz
quei 100MHz in più come si spiegano?
Su pc c'è qualcosa che non va:
su un p4-2Ghz con 512Mb ram e win2000 con tutte le applicazioni chiuse il risultato è
[fftMark, ver. 1.00 - performance test]
written by Carmine Emanuele Cella, 2005
www.cryptosound.org - cecily@libero.it
200 cycle(s) to run for each test...
testing fourier transform... 459.343 sec.
testing wavelet transform... 0.657 sec.
testing noise generation... 0.891 sec.
average computation time... 153.63 sec.
performance score: 0.130183
estimated cpu freq: 16.2728 Mhz
mentre su mac, un Pbook 15" - 1.5Ghz e 1,5Gb di ram, sempre tutte le applicazioni chiuse, i risultati sono
performance score: 11.6505
estimated cpu freq: 1456.31 Mhz
è il performance test del pc che mi lascia perplesso!!
centino 1.6
performance score: 0.58872
estimated cpu freq: 73.59 mhz
a occhio mi sembra un bug :D
fai un fischio quando il programma è ok:)
Cecilia76
18-03-2005, 19:57
Allora ragazzi, cerco di rispondere alle domande.
Intanto grazie per l'interesse.
La differenza sostanziale di prestazioni si fa sentire solo sull'FFT: sotto OS X è spaventosamente più rapida. Per gli altri bench (wavelet e random) le cose sono più congruenti. Purtroppo però non è un baco: il codice dell'FFT è un codice molto studiato ed usato professionalmente tante volte. Credo che sia qualcosa legato all'architettura RISC o CISC.
In ogni caso, sto preparando una nuova versione senza FFT in modo da poter fare un indice di confronto tra i vari sistemi e lo distribuirò anche per Linux.
L'estimated cpu freq non deve necessariamente rispettare il clock del processore: è un valore relativo da confrontare con altre piattaforme: ad esempio sul mio centrino a 1.8 mi dice che la freq è 2.9/3 che più o meno corrisponde a quella di un p4.
Dalla prossima release cercherò di migliorare anche quest'aspetto.
Purtroppo penso che continuerò a fare un tool da linea di comando perchè mettere il carico di una GUI potrebbe vanificare i test.
A domani!!
C
Uhm..provato per sfizio...mi da un errore nella frequenza del processore, estimated a 475mhz...quando dovrebbe essere a 800mhz...
Per compeltezza, si tratta di un PowerBook Titanium G4 a 800mhz, con 512mb di ram, e OSX 10.3.6
Myname
iBook G4/1.33
------------------
[fftMark, ver. 1.00 - performance test]
written by Carmine Emanuele Cella, 2005
www.cryptosound.org - cecily@libero.it
200 cycle(s) to run for each test...
testing fourier transform... 3.27 sec.
testing wavelet transform... 1.1 sec.
testing noise generation... 1.63 sec.
average computation time... 2 sec.
performance score: 10
estimated cpu freq: 1250 Mhz
chiaramente
18-03-2005, 20:51
200 cycle(s) to run for each test...
testing fourier transform... 3.17 sec.
testing wavelet transform... 1.08 sec.
testing noise generation... 1.64 sec.
average computation time... 1.96333 sec.
performance score: 10.1868
estimated cpu freq: 1273.34 Mhz
ibook g4 768 ram 1.3 proc
iBook 12" 1.2 Ghz 512 Ram Mac 10.3.8
Prestazioni massime:
[fftMark, ver. 1.00 - performance test]
written by Carmine Emanuele Cella, 2005
www.cryptosound.org - cecily@libero.it
200 cycle(s) to run for each test...
testing fourier transform... 3.3 sec.
testing wavelet transform... 1.08 sec.
testing noise generation... 1.73 sec.
average computation time... 2.03667 sec.
performance score: 9.81997
estimated cpu freq: 1227.5 Mhz
Massima durata batterie:
200 cycle(s) to run for each test...
testing fourier transform... 6.63 sec.
testing wavelet transform... 1.87 sec.
testing noise generation... 3.45 sec.
average computation time... 3.98333 sec.
performance score: 5.02092
estimated cpu freq: 627.615 Mhz
E mo che avete tutti questi bei numerini? Gara a chi ce l'ha più lungo no? :D
Originariamente inviato da MacNeo
E mo che avete tutti questi bei numerini? Gara a chi ce l'ha più lungo no? :D
In quel caso vincerei io :D
Cecilia76
19-03-2005, 08:34
Lo spirito del test era confrontare diverse piattaforme e processori e provare a creare un indice di riferimento.
Sappiamo che sei tu che ce l'ha più lungo... :rolleyes:
C.
Cecilia76
22-03-2005, 12:01
Salve a tutti,
dopo un pò di fatica ho riscritto il codice per l'FFT nel programma di benchmark cross-platform.
Ora i risultati sembrano essere più congruenti anche se Mac OS X ha la peggio. Il link è lo stesso:
www.cryptosound.org/software.htm
ma il programma si chiama crossMark. Postate numerosi i vostri risultati!!!
I miei sono questi:
-----------------------------------------------------------------------------
IBM ThinkPad T42p: Intel Pentium-M 1.8 Ghz, 1.5 Gb ram, XP SP2
[crossMark, ver. 1.00 - performance test]
written by Carmine Emanuele Cella, 2005
www.cryptosound.org - cecily@libero.it
200 cycle(s) to run for each test...
testing wavelet transform... 1.241 sec.
testing fourier transform... 10.876 sec.
testing noise generation... 0.561 sec.
average computation time... 4.226 sec.
performance score: 47.3261
--------------------------------------------------------------------------------
PowerBook G4 1.67 Ghz, 1 Gb ram, Mac OS X 10.3.8
[crossMark, ver. 1.00 - performance test]
written by Carmine Emanuele Cella, 2005
www.cryptosound.org - cecily@libero.it
200 cycle(s) to run for each test...
testing wavelet transform... 1.63 sec.
testing fourier transform... 54.11 sec.
testing noise generation... 1.38 sec.
average computation time... 19.04 sec.
performance score: 10.5042
---------------------------------------------------------------------
Athlon 1400+, 512 Mb ram, XP SP2
[crossMark, ver. 1.00 - performance test]
written by Carmine Emanuele Cella, 2005
www.cryptosound.org - cecily@libero.it
200 cycle(s) to run for each test...
testing wavelet transform... 2.344 sec.
testing fourier transform... 99.703 sec.
testing noise generation... 0.797 sec.
average computation time... 34.2813 sec.
performance score: 5.83408
Ciao a tutti!
Cecilia76
22-03-2005, 12:13
Scusa MacNeo,
non volevo offendere :ave:
Piuttosto date una occhiata al nuovo 3d!
Cec
sembrano più congruenti?:confused:
da quel test sembra che un p4 1.8 mobile è 5 volte più veloce di un g4 1.67 e 10 volte più veloce di un xp1400........
Cecilia76
22-03-2005, 12:49
Non è un P4 mobile è un Pentium-M (centrino) che appunto dovrebbe andare come un 3.0 Ghz.
E' vero tuttavia che i valori su G4 sono bassi.
cdimauro
22-03-2005, 13:27
I benchmark sintetici non servono a nulla: vanno testate le applicazioni reali (FFT -> JPEG, Wavelet -> JPEG2000, Noise generator -> Filtro audio o video, ecc.).
Comunque ecco i risultati ottenuti su un Athlon64 3000+ (2Ghz) su Linux Red Hat Fedora Core 2 per x86-64.
Compilando il sorgente senza alcuna ottimizzazione (g++ crossMark.cpp), per x86 a 32 bit:
testing wavelet transform... 2.33 sec.
testing fourier transform... 110.4 sec.
testing noise generation... 0.97 sec.
average computation time... 37.9 sec.
performance score: 5.27704
Compilando il sorgente con alcune ottimizzazioni attivate e scegliendo Athlon-XP come architettura target (g++ -march=athlon-xp -O2 -ffast-math -funroll-all-loops -ftracer crossMark.cpp), per x86 a 32 bit:
testing wavelet transform... 0.98 sec.
testing fourier transform... 39.09 sec.
testing noise generation... 1.02 sec.
average computation time... 13.6967 sec.
performance score: 14.6021
Compilando il sorgente per Athlon64 senza alcuna ottimizzazione (g++ -march=athlon64 crossMark.cpp), per x86-64 a 64 bit:
testing wavelet transform... 2.28 sec.
testing fourier transform... 78.19 sec.
testing noise generation... 1.05 sec.
average computation time... 27.1733 sec.
performance score: 7.36016
Compilando il sorgente per Athlon64 con alcune ottimizzazioni (g++ -march=athlon64 -O2 -ffast-math -funroll-all-loops -ftracer crossMark.cpp), per x86-64 a 64 bit:
testing wavelet transform... 1 sec.
testing fourier transform... 38.97 sec.
testing noise generation... 1 sec.
average computation time... 13.6567 sec.
performance score: 14.6449
cdimauro
22-03-2005, 13:36
Originariamente inviato da Cecilia76
La differenza sostanziale di prestazioni si fa sentire solo sull'FFT: sotto OS X è spaventosamente più rapida. Per gli altri bench (wavelet e random) le cose sono più congruenti. Purtroppo però non è un baco: il codice dell'FFT è un codice molto studiato ed usato professionalmente tante volte. Credo che sia qualcosa legato all'architettura RISC o CISC.
Non credo. Comunque esistono diverse implementazioni dell'FFT: quella di quei sorgenti è una delle tante.
Ho notato che fai ampio uso di double nel codice: come mai? I dati sono single e non double...
In ogni caso, sto preparando una nuova versione senza FFT in modo da poter fare un indice di confronto tra i vari sistemi e lo distribuirò anche per Linux.
Con Linux ho già provato io: basta ricompilare... ;)
L'estimated cpu freq non deve necessariamente rispettare il clock del processore: è un valore relativo da confrontare con altre piattaforme: ad esempio sul mio centrino a 1.8 mi dice che la freq è 2.9/3 che più o meno corrisponde a quella di un p4.
La frequenza con Linux non appare: forse l'hai eliminata? ;)
Gold2004
22-03-2005, 13:40
Esimii programmatori, illuminatemi, cos'e' un FFT (ma anche un wavelet, che dal nome sempra una applet di quelle inutili che sit engono sul desktop^^)??
Grazie mille.
Saluti
edoardopost
22-03-2005, 13:52
Devo copiare i valori dalla finestra a mano per inserirli qui ?
Uhm...allora o cancello la vecchia discussione, oppure le unisco per dare una sequenza logica...
Cecilia scegli.
Myname
Il tuo bench test da risultati scarsi sul G4, nel test della trasformata di fourier, perchè in questi tipi di calcolo generalmente viene usata Altivec.
Il G4 nel calcolo FP puro va meno bene a causa dell'unica unità FP presente.
Nei test di distributed.NET ottimizzati per Altivec un G4 a 800 Mhz rivaleggia con un P4 a 2.3 Ghz...
Originariamente inviato da Hocico
Il tuo bench test da risultati scarsi sul G4, nel test della trasformata di fourier, perchè in questi tipi di calcolo generalmente viene usata Altivec.
Il G4 nel calcolo FP puro va meno bene a causa dell'unica unità FP presente.
Nei test di distributed.NET ottimizzati per Altivec un G4 a 800 Mhz rivaleggia con un P4 a 2.3 Ghz...
non esiste il p4 2.3.....
come hanno fatto a compararlo a un g4 800?:confused:
Originariamente inviato da riaw
non esiste il p4 2.3.....
come hanno fatto a compararlo a un g4 800?:confused:
Mi correggo, ricordavo male, a oltre 3 Ghz...:cool:
Links:
http://n0cgi.distributed.net/speed/query.php?cputype=all&arch=2&contest=rc572
http://n0cgi.distributed.net/speed/query.php?cputype=all&arch=0&contest=rc572
Ok unisco nella nuova discussione...
Myname
Cecilia76
22-03-2005, 22:54
Grazie Myname,
scusa se non ti rispondo ma ho la febbre e sono a letto.
1. Ho eliminato il valore della cpu freq perchè creava molta confusione.
Basta creare una scala con lo score ottenuto.
2. In ogni caso l'FFT è troppo problematica. Domani rilascierò una
versione senza FFT.
3. FFT e wavelet sono delle trasformate per portare dei dati da un
dominio ad un altro. Si usano anche nell'MP3 e nella compressione
JPEG.
4. Nella prossima versione salverò i dati in un file, ok?
Grazie a tutti, C.
cdimauro
23-03-2005, 08:39
Originariamente inviato da Hocico
Il tuo bench test da risultati scarsi sul G4, nel test della trasformata di fourier, perchè in questi tipi di calcolo generalmente viene usata Altivec.
Il G4 nel calcolo FP puro va meno bene a causa dell'unica unità FP presente.
Non credo che venga utilizzato l'Altivec compilando questi sorgenti né le estensioni SIMD per gli altri processori: molto probabilmente verrà usata esclusivamente l'FPU.
Nei test di distributed.NET ottimizzati per Altivec un G4 a 800 Mhz rivaleggia con un P4 a 2.3 Ghz...
Questo non vuol dire nulla a livello generale. Se prendiamo Maya, anche un vecchio Athlon XP ha la meglio su un G5. Ma questo si verifica in UN contesto, appunto.
Questo thread è stato aperto su alcuni SPECIFICI algoritmi: atteniamoci a questi.
cdimauro
23-03-2005, 08:48
Originariamente inviato da Cecilia76
2. In ogni caso l'FFT è troppo problematica. Domani rilascierò una
versione senza FFT.
Diciamo che l'implementazione non è delle migliori. :p
Personalmente farei un paio di cose:
1) eliminerei il C++ come linguaggio, che per lo scopo del progetto è ridondante: meglio usare il C, visto che l'obiettivo è quello di testare degli algoritmi "classici". Questo permetterà di focalizzare l'attenzione su alcuni dettagli implementativi;
2) cercherei in qualche testo di analisi numerica o calcolo numerico un'implementazione più efficiente di quella che hai usato.
Poi, avendo tempo, potresti inserire anche qualche test con la DCT, visto che attualmente è la trasformata più usata (dal JPEG all'MPEG4, ecc.). ;)
Anche di questa ne esistono diverse implementazioni (ce n'è una che sacrifica un po' la precisione, ma utilizza 11 moltiplicazioni anziché le canoniche 12, ad esempio).
Per le wavelet: ce ne sono centinaia :D, ma sarebbe interessante implementare la 9/7 (irreversibile) e la 5/3 (reversibile) che sono usate da JPEG 2000 e Motion JPEG 2000.
In generale: FFT, Wavelet, DCT, noise generator, ecc. si possono implementare non solo coi float (e in questo sarebbe preferibile adottare soluzioni che utilizzano solamente la precisione singola o quella doppia, senza "mischiare" i due tipi di dati), ma anche con aritmetica intera fixed point.
Fermo restando che, a mio avviso, questo tipo di benchmark non serve a nulla se non inserito in un contesto specifico.
Cecilia76
23-03-2005, 09:38
Grazie per i suggerimenti.
L'implementazione che hai visto è la seconda: la prima era sicuramente più efficiente ma dava risultati mostruosamente diversi tra G4 e Pentium-M.
Ho usato tanti testi di analisi numerica per l'implementazione; in ogni caso entrambe sono codice già usato commercialmente. Il riferimento è comunque Numerical recipes in C.
Se in ogni caso hai una implementazione migliore sarei felice di usarla.
Per quanto riguarda la DCT: non possiedo una implementazione; mi indichi un posto dove scaricarla.
Il C++ qui è usato solo per l'estensione del file ;) effettivamente è codice in C.
Ho scelto di usare float e non aritmetica intera proprio per vedere come rispondono i processori con questo tipo di calcolo.
Grazie ancora, C.
cdimauro
23-03-2005, 13:36
Originariamente inviato da Cecilia76
Grazie per i suggerimenti.
L'implementazione che hai visto è la seconda: la prima era sicuramente più efficiente ma dava risultati mostruosamente diversi tra G4 e Pentium-M.
Ho usato tanti testi di analisi numerica per l'implementazione; in ogni caso entrambe sono codice già usato commercialmente. Il riferimento è comunque Numerical recipes in C.
Ho capito. Numerical Recipes, però, è più orientato a chi vuol capire come funziona (agli studenti).
Se in ogni caso hai una implementazione migliore sarei felice di usarla.
Francamente è passata una decina d'anni da quando mi sono interessato all'FFT, per cui adesso non ricordo proprio... :(
Se sei ancora studente all'università, puoi controllare in biblioteca i test esistenti a riguardo, e le riviste scientifiche disponibili (ACM e IEEE su tutte: sono un'autentica miniera! :))
Per quanto riguarda la DCT: non possiedo una implementazione; mi indichi un posto dove scaricarla.
La trovi dentro i sorgenti di JPEG... :) Chiaramente è quella bidimensionale, che funziona su blocchi di dati 8x8, però puoi tirare fuori anche la versione monodimensionale, che funziona sempre su gruppi di 8 dati.
Per la versione "generale" (n dati anziché sempre e soltanto 8), dovresti consultare le fonti di cui sopra.
Il C++ qui è usato solo per l'estensione del file ;) effettivamente è codice in C.
Maggiormente sì, ma hai usato abbastanza alcuni costrutti del C++. Se puoi, "torna" al C. :)
Ho scelto di usare float e non aritmetica intera proprio per vedere come rispondono i processori con questo tipo di calcolo.
OK. Allora ti consiglio di non mischiare valori in double e single: usa soltanto uno dei due. :)
Anzi, potresti dichiarare con un typedef il tipo di dato da usare, così da rendere semplice la compilazione e i test con l'uno o l'altro tipo di dato.
Grazie ancora, C.
Di niente.
Ciao
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.