PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pi-Berechnung, selbst kompiliert


Aqualon
2004-10-29, 00:20:37
Falls jemand hier mitmachen möchte und selbst keinen Compiler installiert hat, kann er sich melden, welche Build mit welchen Flags er haben möchte (bzw. welches System er hat) und ich compilier die gewünschte Version.

Möglich sind momentan GCC 3.3.4 und ICC 8.0.055 für Linux, sowie MSVC++ 13.10.3052 für Windows (jeweils die 32Bit x86-Version)


Das von klutob verlinkte Programm (http://www.forum-3dcenter.org/vbulletin/showpost.php?p=2387025&postcount=17), immer gestartet mit nice -n -19 und 1048576 berechneten Stellen.

Direktlink zu dem Programm: http://www.myownlittleworld.com/pi/program.html

1. gcc -Os -march=i386 pi_fftcs.c fftsg_h.c -lm -o pi_css5_i386


Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
Number of digits of pi to calculate?
1000000
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00424975
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 1.32 sec
precision= 80: 1.32 sec
precision= 176: 1.32 sec
precision= 352: 1.32 sec
precision= 688: 1.32 sec
precision= 1392: 1.32 sec
precision= 2784: 1.32 sec
precision= 5584: 1.32 sec
precision= 11168: 1.32 sec
precision= 22336: 1.32 sec
precision= 44688: 1.32 sec
precision= 89408: 1.32 sec
precision= 178816: 1.32 sec
precision= 357648: 1.32 sec
precision= 715312: 1.32 sec
precision= 1430640: 1.32 sec
writing pi1048576.txt...
25.05 sec. (real time)


2. gcc -Os -march=i486 pi_fftcs.c fftsg_h.c -lm -o pi_css5_i486


Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
Number of digits of pi to calculate?
1000000
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00424975
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 1.28 sec
precision= 80: 1.28 sec
precision= 176: 1.28 sec
precision= 352: 1.27 sec
precision= 688: 1.28 sec
precision= 1392: 1.28 sec
precision= 2784: 1.28 sec
precision= 5584: 1.28 sec
precision= 11168: 1.28 sec
precision= 22336: 1.28 sec
precision= 44688: 1.28 sec
precision= 89408: 1.28 sec
precision= 178816: 1.28 sec
precision= 357648: 1.28 sec
precision= 715312: 1.28 sec
precision= 1430640: 1.28 sec
writing pi1048576.txt...
24.32 sec. (real time)


3. gcc -Os -march=i586 pi_fftcs.c fftsg_h.c -lm -o pi_css5_i586


Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
Number of digits of pi to calculate?
1000000
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00424975
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 1.24 sec
precision= 80: 1.25 sec
precision= 176: 1.24 sec
precision= 352: 1.25 sec
precision= 688: 1.24 sec
precision= 1392: 1.25 sec
precision= 2784: 1.24 sec
precision= 5584: 1.25 sec
precision= 11168: 1.24 sec
precision= 22336: 1.25 sec
precision= 44688: 1.24 sec
precision= 89408: 1.25 sec
precision= 178816: 1.24 sec
precision= 357648: 1.25 sec
precision= 715312: 1.24 sec
precision= 1430640: 1.25 sec
writing pi1048576.txt...
23.66 sec. (real time)


4. gcc -Os -march=i686 pi_fftcs.c fftsg_h.c -lm -o pi_css5_i686


Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
Number of digits of pi to calculate?
1000000
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00424975
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 1.23 sec
precision= 80: 1.22 sec
precision= 176: 1.23 sec
precision= 352: 1.23 sec
precision= 688: 1.22 sec
precision= 1392: 1.23 sec
precision= 2784: 1.23 sec
precision= 5584: 1.22 sec
precision= 11168: 1.23 sec
precision= 22336: 1.22 sec
precision= 44688: 1.23 sec
precision= 89408: 1.23 sec
precision= 178816: 1.22 sec
precision= 357648: 1.23 sec
precision= 715312: 1.22 sec
precision= 1430640: 1.23 sec
writing pi1048576.txt...
23.31 sec. (real time)


5. gcc -Os -march=prescott pi_fftcs.c fftsg_h.c -lm -o pi_css5_prescott


Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
Number of digits of pi to calculate?
1000000
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00424975
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 1.27 sec
precision= 80: 1.27 sec
precision= 176: 1.27 sec
precision= 352: 1.27 sec
precision= 688: 1.27 sec
precision= 1392: 1.27 sec
precision= 2784: 1.27 sec
precision= 5584: 1.27 sec
precision= 11168: 1.27 sec
precision= 22336: 1.27 sec
precision= 44688: 1.26 sec
precision= 89408: 1.27 sec
precision= 178816: 1.27 sec
precision= 357648: 1.27 sec
precision= 715312: 1.27 sec
precision= 1430640: 1.27 sec
writing pi1048576.txt...
24.18 sec. (real time)


6. gcc -Os -march=athlon pi_fftcs.c fftsg_h.c -lm -o pi_css5_athlon


Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
Number of digits of pi to calculate?
1000000
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00424975
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 1.22 sec
precision= 80: 1.22 sec
precision= 176: 1.22 sec
precision= 352: 1.22 sec
precision= 688: 1.22 sec
precision= 1392: 1.22 sec
precision= 2784: 1.22 sec
precision= 5584: 1.22 sec
precision= 11168: 1.22 sec
precision= 22336: 1.22 sec
precision= 44688: 1.22 sec
precision= 89408: 1.22 sec
precision= 178816: 1.22 sec
precision= 357648: 1.22 sec
precision= 715312: 1.22 sec
precision= 1430640: 1.22 sec
writing pi1048576.txt...
23.21 sec. (real time)


7. gcc -Os -march=pentium4 pi_fftcs.c fftsg_h.c -lm -o pi_css5_p4


Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
Number of digits of pi to calculate?
1000000
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00424975
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 1.27 sec
precision= 80: 1.25 sec
precision= 176: 1.25 sec
precision= 352: 1.25 sec
precision= 688: 1.26 sec
precision= 1392: 1.25 sec
precision= 2784: 1.25 sec
precision= 5584: 1.25 sec
precision= 11168: 1.26 sec
precision= 22336: 1.25 sec
precision= 44688: 1.25 sec
precision= 89408: 1.25 sec
precision= 178816: 1.25 sec
precision= 357648: 1.26 sec
precision= 715312: 1.25 sec
precision= 1430640: 1.25 sec
writing pi1048576.txt...
23.86 sec. (real time)



8. gcc -Os -march=pentium4 -mno-sse2 pi_fftcs.c fftsg_h.c -lm -o pi_css5_p4nosse2


Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
Number of digits of pi to calculate?
1000000
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00424975
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 1.16 sec
precision= 80: 1.15 sec
precision= 176: 1.15 sec
precision= 352: 1.16 sec
precision= 688: 1.15 sec
precision= 1392: 1.15 sec
precision= 2784: 1.16 sec
precision= 5584: 1.15 sec
precision= 11168: 1.16 sec
precision= 22336: 1.15 sec
precision= 44688: 1.15 sec
precision= 89408: 1.16 sec
precision= 178816: 1.15 sec
precision= 357648: 1.16 sec
precision= 715312: 1.15 sec
precision= 1430640: 1.16 sec
writing pi1048576.txt...
21.95 sec. (real time)


Kann jemand erklären, warum die Berechnung ~8% schneller abläuft, wenn ich SSE2 deaktivere?

System:

Intel Celeron "Northwood" 2GHz
Asus P4P8T i865G
512MB RAM DDR400
Gentoo 2004.1 Kernel 2.6.7, GCC 3.3.4

Weitere Werte mit anderen Flags kommen später.

Aqua

Edit: Das bisher schnellste Kompilat:

gcc -O3 -ffast-math -march=pentium4 -mno-sse -mno-sse2 -pipe
-fomit-frame-pointer pi_fftcs.c fftsg_h.c -lm -o pi_css5_p4o3


Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
Number of digits of pi to calculate?
1000000
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00424975
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 1.01 sec
precision= 80: 1.00 sec
precision= 176: 1.01 sec
precision= 352: 1.01 sec
precision= 688: 1.01 sec
precision= 1392: 1.00 sec
precision= 2784: 1.01 sec
precision= 5584: 1.00 sec
precision= 11168: 1.01 sec
precision= 22336: 1.01 sec
precision= 44688: 1.00 sec
precision= 89408: 1.01 sec
precision= 178816: 1.01 sec
precision= 357648: 1.00 sec
precision= 715312: 1.01 sec
precision= 1430640: 1.00 sec
writing pi1048576.txt...
18.89 sec. (real time)


Edit: Komische Sache, das Build, das gestern noch ~1s gebraucht hat, braucht heute über 1,3s und auch die anderen Builds sind um einiges langsamer. Das versteh wer will...

Aqualon
2004-10-29, 16:51:29
Irgendwie ist das Teil Panne. Bei einem Test mit 2^32 Stellen hat er gestern 32s pro precision-Stufe gebraucht. Heute mit einem Compiliervorgang im Hintergrund sind es nur noch 20s...

Auch die Bestmarke bei 2^20 Stellen liegt deswegen bei 17,23 Sekunden.

Aqua

Gohan
2004-10-29, 17:02:21
gcc -O3 -mcpu=7450 pi_fftcs.c fftsg_h.c -lm -o pi_css5

Number of digits of pi to calculate?
1000000
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00587898
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 1.10 sec
precision= 80: 1.09 sec
precision= 176: 1.08 sec
precision= 352: 1.11 sec
precision= 688: 1.09 sec
precision= 1392: 1.08 sec
precision= 2784: 1.09 sec
precision= 5584: 1.10 sec
precision= 11168: 1.06 sec
precision= 22336: 1.07 sec
precision= 44688: 1.08 sec
precision= 89408: 1.09 sec
precision= 178816: 1.11 sec
precision= 357648: 1.09 sec
precision= 715312: 1.08 sec
precision= 1430640: 1.09 sec
writing pi1048576.txt...
20.47 sec. (real time)

Aqualon
2004-10-29, 17:17:49
tux pi_css5_src # nice -n 19 ./pi_css5_p4o3
Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
Number of digits of pi to calculate?
1000000
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00424975
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 0.95 sec
precision= 80: 0.96 sec
precision= 176: 0.95 sec
precision= 352: 0.95 sec
precision= 688: 0.95 sec
precision= 1392: 0.96 sec
precision= 2784: 0.95 sec
precision= 5584: 0.96 sec
precision= 11168: 0.96 sec
precision= 22336: 0.95 sec
precision= 44688: 0.96 sec
precision= 89408: 0.95 sec
precision= 178816: 0.95 sec
precision= 357648: 0.97 sec
precision= 715312: 0.96 sec
precision= 1430640: 0.95 sec
writing pi1048576.txt...
17.86 sec. (real time)


Irgendwie hat die Zeitmessung wohl nen ziemliche Fehler. Der Bench hat nur 10-20% der CPU-Zeit bekommen (laut top-Anzeige) und die niedrigste Priorität und ist trotzdem nur minimal langsamer. Auch bei 2^32 Stellen ändert sich daran nix.

Aqua

klutob
2004-10-29, 17:36:25
@Aqualon
Komisch hier läuft das Ganze relativ reproduzierbar ab (0,03s Abweichung = unter 0,2% Fehler). Btw. was erhoffst du dir von -ffastmath in diesem Zusammenhang?

date
Fri Oct 29 17:21:56 CEST 2004
....
nice -n -19 ./pi_css5
Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
Number of digits of pi to calculate?
1000000
initializing...
nfft= 262144
radix= 10000
error_margin= 0.0037835
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 0.80 sec
precision= 80: 0.79 sec
precision= 176: 0.79 sec
precision= 352: 0.79 sec
precision= 688: 0.80 sec
precision= 1392: 0.79 sec
precision= 2784: 0.79 sec
precision= 5584: 0.79 sec
precision= 11168: 0.79 sec
precision= 22336: 0.79 sec
precision= 44688: 0.79 sec
precision= 89408: 0.80 sec
precision= 178816: 0.79 sec
precision= 357648: 0.79 sec
precision= 715312: 0.80 sec
precision= 1430640: 0.79 sec
writing pi1048576.txt...
14.82 sec. (real time)




Hier noch eine Performanceübersicht von bisherigen Resultaten.
http://www.myownlittleworld.com/pi/performance.html


/€dit
Aqualon, bei den hier aufgetretenen Lastspitzen würde ich mich persönlich nicht mehr am Load von "top" orientieren. Habe nochmal mit dem Sys nachgemessen.


time nice -n -19 ./pi_css5
Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
Number of digits of pi to calculate?
1000000
initializing...
nfft= 262144
radix= 10000
error_margin= 0.0037835
calculating 1048576 digits of PI...

.....
writing pi1048576.txt...
14.76 sec. (real time)

real 0m24.784s
user 0m14.795s
sys 0m0.016s


Stimmt doch, oder?

Aqualon
2004-10-29, 17:44:29
@Aqualon
Komisch hier läuft das Ganze relativ reproduzierbar ab (0,03s Abweichung = unter 0,2% Fehler). Btw. was erhoffst du dir von -ffastmath in diesem Zusammenhang?
Das ergibt bei mir reproduzierbar geringere Werte (auch wenn sie noch im Messfehlerbereich liegen).

Kannst du bitte einmal mehrere Instanzen gleichzeitig starten (min. 2)? Normalerweise müssten die Werte sich deutlich verschlechtern, wenn die CPU komplett ausgenutzt wird, tun sie aber zumindest bei mir nicht.

Aqua

klutob
2004-10-29, 18:22:41
So hier ein Screen.

http://img99.exs.cx/img99/170/Bildschirmphoto3.jpg


Bei 6 gleichzeitigen Tasks geht dieRealzeit von ~2:15min denke i.O (inklusive Eingabe der zu berechnenden Stellen). Mußte die Priorität der einzelnen Tasks zurücknehmen, da ich sonst nicht alle Prozesse hätte annähernd gleichzeitig starten können (Mauslag!).
/€dit1
Das sich die Userzeiten bei mehreen Tasks nicht großartig verändern finde ich eigentlich logisch.
Dem jeweils aktuellen Prozeß (Iteration) werden IMHO die gesamten Rechenkapazitäten zur Verfügung gestellt, deshalb sollte sich die Userzeit bei mehren Instanzen doch nur wenig ändern?

/€dit2
Habe mir nochmal die Performancereihe auf
http://www.myownlittleworld.com/pi/performance.html
genauer angeschaut. Zumindest bestätigt Gohan mit seinem Dual G4
das dort aufgeführte Ergebnis für den Powermac. Ich denke, die mit dem Programm erzielten Werte, kann man durchaus ernst nehmen. :)

Aqualon
2004-10-29, 21:24:07
Dann hatte ich ein Verständnisproblem, wenn das Programm nur die tatsächlich verbrauchte Zeit misst und nicht die Zeit zwischen Start und Ende, sind die Werte natürlich so in Ordnung.

Aqua

Gast
2004-10-30, 00:34:59
Man sollte die vorkompilierten Programme benutzen. Dann sind die Werte reproduzierbarer.
http://www.myownlittleworld.com/pi/program.html

Je nachdem welchen Compiler mit entsprechender Version und Flags man verwendet, kann es zu unterschiedlichen Werten führen.

Aqualon
2004-10-30, 03:15:24
Hier mal die Werte der vorkompilierten Versionen

pi_css5.i386:


Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00518126
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 0.92 sec
precision= 80: 0.91 sec
precision= 176: 0.91 sec
precision= 352: 0.91 sec
precision= 688: 0.90 sec
precision= 1392: 0.91 sec
precision= 2784: 0.91 sec
precision= 5584: 0.91 sec
precision= 11168: 0.91 sec
precision= 22336: 0.91 sec
precision= 44688: 0.91 sec
precision= 89408: 0.90 sec
precision= 178816: 0.91 sec
precision= 357648: 0.91 sec
precision= 715312: 0.91 sec
precision= 1430640: 0.91 sec
writing pi1048576.txt...
17.01 sec. (real time)


pi_css5.i686:


Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00349245
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 1.12 sec
precision= 80: 1.12 sec
precision= 176: 1.11 sec
precision= 352: 1.12 sec
precision= 688: 1.13 sec
precision= 1392: 1.11 sec
precision= 2784: 1.12 sec
precision= 5584: 1.12 sec
precision= 11168: 1.11 sec
precision= 22336: 1.12 sec
precision= 44688: 1.12 sec
precision= 89408: 1.11 sec
precision= 178816: 1.12 sec
precision= 357648: 1.12 sec
precision= 715312: 1.11 sec
precision= 1430640: 1.12 sec
writing pi1048576.txt...
21.05 sec. (real time)


Kurz gesagt, der Intel-Compiler 5.01 ist um 20% langsamer als die GCC 2.95.3 Version (veraltet sind sowieso beide Versionen).

Aqua

Dj-Atzy
2004-10-30, 08:34:34
Geht das Teil nicht unter Windows:confused: Oder bin ich zu blöd das zum laufen zu kriegen? :|

Aqualon
2004-10-30, 10:12:42
Geht das Teil nicht unter Windows:confused: Oder bin ich zu blöd das zum laufen zu kriegen? :|
Die Windows-Version funktioniert bei mir einwandfrei. Was geht denn bei dir nicht?

Aqua

Gohan
2004-10-30, 11:22:34
Da es mir so viel Spaß macht :)

Jan-Zureks-Computer:~ jan$ /Users/jan/Documents/Downloads/pi_css5.1/pi_css5 1000000
Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00587898
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 1.06 sec
precision= 80: 1.05 sec
precision= 176: 1.06 sec
precision= 352: 1.07 sec
precision= 688: 1.06 sec
precision= 1392: 1.05 sec
precision= 2784: 1.07 sec
precision= 5584: 1.07 sec
precision= 11168: 1.05 sec
precision= 22336: 1.10 sec
precision= 44688: 1.08 sec
precision= 89408: 1.08 sec
precision= 178816: 1.09 sec
precision= 357648: 1.08 sec
precision= 715312: 1.05 sec
precision= 1430640: 1.07 sec
writing pi1048576.txt...
20.08 sec. (real time)

klutob
2004-10-30, 13:51:40
Der Vergleich zwischen selbstkompilierter/optimierter Version und fertiger Binary, zeigen doch recht gut die Möglichkeiten der Plattformoptimierung.

GCC 3.4 (CFLAGS -O3 -funroll-loops -ftracer -fprefetch-loop-arrays -march=athlon-xp -pipe -fomit-frame-pointer)

nice -n -19 ./pi_css5
Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
Number of digits of pi to calculate?
1000000
initializing...
nfft= 262144
radix= 10000
error_margin= 0.0037835
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 0.78 sec
precision= 80: 0.78 sec
precision= 176: 0.77 sec
precision= 352: 0.78 sec
precision= 688: 0.78 sec
precision= 1392: 0.77 sec
precision= 2784: 0.78 sec
precision= 5584: 0.77 sec
precision= 11168: 0.78 sec
precision= 22336: 0.77 sec
precision= 44688: 0.78 sec
precision= 89408: 0.77 sec
precision= 178816: 0.78 sec
precision= 357648: 0.78 sec
precision= 715312: 0.77 sec
precision= 1430640: 0.78 sec
writing pi1048576.txt...
14.52 sec. (real time)

Linux Binary mit ICC-5.01 (aktuell 8.05)

nice -n -19 ./pi_css5.i686 1000000
Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00349245
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 0.82 sec
precision= 80: 0.81 sec
precision= 176: 0.82 sec
precision= 352: 0.81 sec
precision= 688: 0.82 sec
precision= 1392: 0.81 sec
precision= 2784: 0.82 sec
precision= 5584: 0.81 sec
precision= 11168: 0.81 sec
precision= 22336: 0.81 sec
precision= 44688: 0.82 sec
precision= 89408: 0.81 sec
precision= 178816: 0.82 sec
precision= 357648: 0.81 sec
precision= 715312: 0.81 sec
precision= 1430640: 0.82 sec
writing pi1048576.txt...
15.24 sec. (real time)


Linux Binary mit GCC-2.95 für i386

nice -n -19 ./pi_css5.i386 1000000
Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00518126
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 0.86 sec
precision= 80: 0.85 sec
precision= 176: 0.85 sec
precision= 352: 0.85 sec
precision= 688: 0.86 sec
precision= 1392: 0.85 sec
precision= 2784: 0.85 sec
precision= 5584: 0.85 sec
precision= 11168: 0.85 sec
precision= 22336: 0.85 sec
precision= 44688: 0.85 sec
precision= 89408: 0.85 sec
precision= 178816: 0.85 sec
precision= 357648: 0.86 sec
precision= 715312: 0.85 sec
precision= 1430640: 0.85 sec
writing pi1048576.txt...
15.93 sec. (real time)


Unter VMware Windows i686 Binary :)

nfft= 262144
radix= 10000
error_margin= 0.00564615
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 1.27 sec
precision= 80: 1.15 sec
precision= 176: 1.21 sec
precision= 352: 1.15 sec
precision= 688: 1.21 sec
precision= 1392: 1.15 sec
precision= 2784: 1.21 sec
precision= 5584: 1.21 sec
precision= 11168: 1.15 sec
precision= 22336: 1.21 sec
precision= 44688: 1.16 sec
precision= 89408: 1.20 sec
precision= 178816: 1.16 sec
precision= 357648: 1.21 sec
precision= 715312: 1.15 sec
precision= 1430640: 1.21 sec
writing pi1048576.txt...
22.85 sec. (real time)

/€dit
Sodele nochmal mit dem aktuellen ICC-8.05 kompiliert (gleiche Optionen wie die verlinkte Binary also -O2).



nice -n -19 ./pi_css5_intelicc
Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
Number of digits of pi to calculate?
1000000
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00337333
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 0.81 sec
precision= 80: 0.81 sec
precision= 176: 0.80 sec
precision= 352: 0.81 sec
precision= 688: 0.81 sec
precision= 1392: 0.81 sec
precision= 2784: 0.80 sec
precision= 5584: 0.81 sec
precision= 11168: 0.81 sec
precision= 22336: 0.80 sec
precision= 44688: 0.81 sec
precision= 89408: 0.80 sec
precision= 178816: 0.81 sec
precision= 357648: 0.81 sec
precision= 715312: 0.80 sec
precision= 1430640: 0.81 sec
writing pi1048576.txt...
15.09 sec. (real time)

Gohan
2004-10-30, 14:47:59
System wäre auch ganz nett :)

klutob
2004-10-30, 15:04:51
Ok, ja das fehlte natürlich.

cat /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 6
model : 10
model name : AMD Athlon(tm) XP 2800+
stepping : 0
cpu MHz : 2115.975
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mmxext 3dnowext 3dnow
bogomips : 4210.68

XP2600@FSB 184

Aqualon
2004-10-31, 12:12:57
Interessant finde ich, dass bei deinem Athlon XP der Intel-Compiler 5.01 vor dem GCC 2.95.3 liegt, während er auf meinem P4 Celeron doch deutlich zurückliegt.

Ich lade mir gerade den ICC 8.1 runter, werde die Werte dafür später nachliefern.

Edit: Beim ICC 8.1 hat die Installation unter Gentoo nicht geklappt, deswegen die Werte vom ICC 8.0.055.

icc pi_fftcs.c fftsg_h.c -o pi_css5_icc_o2g6 -O2 -tpp6

Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
Number of digits of pi to calculate?
1000000
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00337333
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 1.25 sec
precision= 80: 1.24 sec
precision= 176: 1.25 sec
precision= 352: 1.25 sec
precision= 688: 1.24 sec
precision= 1392: 1.25 sec
precision= 2784: 1.24 sec
precision= 5584: 1.25 sec
precision= 11168: 1.25 sec
precision= 22336: 1.24 sec
precision= 44688: 1.25 sec
precision= 89408: 1.24 sec
precision= 178816: 1.25 sec
precision= 357648: 1.25 sec
precision= 715312: 1.25 sec
precision= 1430640: 1.24 sec
writing pi1048576.txt...
23.60 sec. (real time)


icc pi_fftcs.c fftsg_h.c -o pi_css5_icc_o2xN -O2 -xN


Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
Number of digits of pi to calculate?
1000000
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00611182
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 0.90 sec
precision= 80: 0.91 sec
precision= 176: 0.90 sec
precision= 352: 0.91 sec
precision= 688: 0.90 sec
precision= 1392: 0.91 sec
precision= 2784: 0.91 sec
precision= 5584: 0.90 sec
precision= 11168: 0.91 sec
precision= 22336: 0.90 sec
precision= 44688: 0.91 sec
precision= 89408: 0.90 sec
precision= 178816: 0.91 sec
precision= 357648: 0.90 sec
precision= 715312: 0.91 sec
precision= 1430640: 0.90 sec
writing pi1048576.txt...
17.04 sec. (real time)


icc pi_fftcs.c fftsg_h.c -o pi_css5_icc_o3xNipo -O3 -xN -ipo


Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
Number of digits of pi to calculate?
1000000
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00611182
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 0.89 sec
precision= 80: 0.89 sec
precision= 176: 0.90 sec
precision= 352: 0.89 sec
precision= 688: 0.90 sec
precision= 1392: 0.89 sec
precision= 2784: 0.89 sec
precision= 5584: 0.90 sec
precision= 11168: 0.89 sec
precision= 22336: 0.89 sec
precision= 44688: 0.90 sec
precision= 89408: 0.89 sec
precision= 178816: 0.89 sec
precision= 357648: 0.90 sec
precision= 715312: 0.89 sec
precision= 1430640: 0.89 sec
writing pi1048576.txt...
16.84 sec. (real time)


icc pi_fftcs.c fftsg_h.c -o pi_css5_icc_o3xNipo -O3 -xN -ipo mit PGO

Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
Number of digits of pi to calculate?
1000000
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00611182
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 0.88 sec
precision= 80: 0.88 sec
precision= 176: 0.88 sec
precision= 352: 0.88 sec
precision= 688: 0.88 sec
precision= 1392: 0.88 sec
precision= 2784: 0.88 sec
precision= 5584: 0.88 sec
precision= 11168: 0.88 sec
precision= 22336: 0.88 sec
precision= 44688: 0.88 sec
precision= 89408: 0.88 sec
precision= 178816: 0.88 sec
precision= 357648: 0.88 sec
precision= 715312: 0.88 sec
precision= 1430640: 0.88 sec
writing pi1048576.txt...
16.63 sec. (real time)


Aqua

Gast
2004-11-02, 23:23:24
Meine Ergebnisse:

Athlon 64 3000+

pi_css5.i386.exe
Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00611182
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 0.80 sec
precision= 80: 0.80 sec
precision= 176: 0.80 sec
precision= 352: 0.80 sec
precision= 688: 0.78 sec
precision= 1392: 0.80 sec
precision= 2784: 0.78 sec
precision= 5584: 0.80 sec
precision= 11168: 0.80 sec
precision= 22336: 0.78 sec
precision= 44688: 0.80 sec
precision= 89408: 0.80 sec
precision= 178816: 0.78 sec
precision= 357648: 0.80 sec
precision= 715312: 0.80 sec
precision= 1430640: 0.78 sec
writing pi1048576.txt...
14.86 sec. (real time)

pi_css5.i686.exe
Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00564615
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 0.75 sec
precision= 80: 0.75 sec
precision= 176: 0.75 sec
precision= 352: 0.75 sec
precision= 688: 0.73 sec
precision= 1392: 0.75 sec
precision= 2784: 0.75 sec
precision= 5584: 0.73 sec
precision= 11168: 0.75 sec
precision= 22336: 0.75 sec
precision= 44688: 0.73 sec
precision= 89408: 0.75 sec
precision= 178816: 0.75 sec
precision= 357648: 0.73 sec
precision= 715312: 0.75 sec
precision= 1430640: 0.73 sec
writing pi1048576.txt...
13.98 sec. (real time)

Die Werte differenzieren bei jedem Lauf in einem Bereich von etwa +-0,4 Sekunden. Von 10 Durchläufen habe ich den niedrigsten genommen.
Wahrscheinlich liegt es am C&Q-Feature?

klutob
2004-11-02, 23:40:26
@Gast
Fein, fein.
Könntest du es einrichten, daß Programm einmal mit dem aktuellen icc-8.x/gcc-3.4 zu kompilieren und zu benchen?
Würde mich brennend interessieren, wieviel Potential diese CPU noch unter 32/64Bit aufzeigen kann. :)

Aqualon
2004-11-02, 23:40:59
Die Werte differenzieren bei jedem Lauf in einem Bereich von etwa +-0,4 Sekunden. Von 10 Durchläufen habe ich den niedrigsten genommen.
Wahrscheinlich liegt es am C&Q-Feature?
Das habe ich auch schon festgestellt. Manchmal kommt bei allen Werten dasselbe Ergebnis raus, manchmal unterscheiden sie sich um 10% untereinander und manchmal sind die Werte auf unnachvollziehbare Weise um 50% langsamer.

Ich hab bisher auch immer mehrfach gemessen und wenn 2-3mal hintereinander ungefähr dasselbe rausgekommen ist, dieses Ergebnis genommen.

C'n'Q könnte wenn dann beim ersten Durchlauf eine Rolle spielen, aber spätestens beim 2. Start direkt danach, sollte der Prozessor auf vollen Touren laufen.

Aqua

Gast
2004-11-02, 23:43:52
Hier die Werte mit K6-2 500:

Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00611182
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 10.17 sec
precision= 80: 10.16 sec
precision= 176: 10.10 sec
precision= 352: 10.11 sec
precision= 688: 10.16 sec
precision= 1392: 10.16 sec
precision= 2784: 10.16 sec
precision= 5584: 10.11 sec
precision= 11168: 10.27 sec
precision= 22336: 10.11 sec
precision= 44688: 10.21 sec
precision= 89408: 10.27 sec
precision= 178816: 10.22 sec
precision= 357648: 10.11 sec
precision= 715312: 10.16 sec
precision= 1430640: 10.10 sec
writing pi1048576.txt...
190.59 sec. (real time)

Dauert sehr lange. :D

Gast
2004-11-02, 23:50:28
@Gast
Fein, fein.
Könntest du es einrichten, daß Programm einmal mit dem aktuellen icc-8.x/gcc-3.4 zu kompilieren und zu benchen?
Würde mich brennend interessieren, wieviel Potential diese CPU noch unter 32/64Bit aufzeigen kann. :)
Könnt ihr bitte die Versionen, die ihr haben wollt, anbieten?
Ich teste dies auch.

Das habe ich auch schon festgestellt. Manchmal kommt bei allen Werten dasselbe Ergebnis raus, manchmal unterscheiden sie sich um 10% untereinander und manchmal sind die Werte auf unnachvollziehbare Weise um 50% langsamer.

Ich hab bisher auch immer mehrfach gemessen und wenn 2-3mal hintereinander ungefähr dasselbe rausgekommen ist, dieses Ergebnis genommen.

C'n'Q könnte wenn dann beim ersten Durchlauf eine Rolle spielen, aber spätestens beim 2. Start direkt danach, sollte der Prozessor auf vollen Touren laufen.

C'n'Q taktet dynamisch in sehr kurzen Abschnitten.
Habe es jetzt mit CrystalCPUID auf 1,8 GHz fest getaktet. Ergebnisse und Schwankungen sind wieder gleich.
Keine Ahnung woran es liegen könnte.

Aqualon
2004-11-03, 00:27:28
Hier mal mein Windows-Rechner (PIII 1GHz, 256MB SDRAM, SIS630, Windows XP)

cl -O2 -G6 pi_fftcs.c fftsg_h.c -o pi_css5
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3052 for 80x86


Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
Number of digits of pi to calculate?
1000000
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00611182
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 3.09 sec
precision= 80: 3.10 sec
precision= 176: 3.09 sec
precision= 352: 3.09 sec
precision= 688: 3.09 sec
precision= 1392: 3.12 sec
precision= 2784: 3.09 sec
precision= 5584: 3.10 sec
precision= 11168: 3.12 sec
precision= 22336: 3.10 sec
precision= 44688: 3.10 sec
precision= 89408: 3.08 sec
precision= 178816: 3.09 sec
precision= 357648: 3.08 sec
precision= 715312: 3.09 sec
precision= 1430640: 3.11 sec
writing pi1048576.txt...
57.87 sec. (real time)


Die mit GCC 2.95.3 vorkompilierte pi_css5.i386.exe


Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00611182
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 3.06 sec
precision= 80: 3.06 sec
precision= 176: 3.05 sec
precision= 352: 3.06 sec
precision= 688: 3.04 sec
precision= 1392: 3.04 sec
precision= 2784: 3.04 sec
precision= 5584: 3.06 sec
precision= 11168: 3.04 sec
precision= 22336: 3.06 sec
precision= 44688: 3.05 sec
precision= 89408: 3.06 sec
precision= 178816: 3.05 sec
precision= 357648: 3.06 sec
precision= 715312: 3.06 sec
precision= 1430640: 3.05 sec
writing pi1048576.txt...
57.08 sec. (real time)

Peinlich, peinlich für den MSVC++ Compiler, vom 5 Jahre alten GCC abgezockt zu werden...

Die mit dem Intel 5.0 C++ vorkompilierte pi_css5.i686.exe


Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00564615
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 2.95 sec
precision= 80: 2.98 sec
precision= 176: 2.97 sec
precision= 352: 2.98 sec
precision= 688: 2.97 sec
precision= 1392: 2.97 sec
precision= 2784: 3.00 sec
precision= 5584: 2.98 sec
precision= 11168: 2.95 sec
precision= 22336: 2.95 sec
precision= 44688: 2.98 sec
precision= 89408: 2.95 sec
precision= 178816: 2.98 sec
precision= 357648: 2.96 sec
precision= 715312: 2.96 sec
precision= 1430640: 2.95 sec
writing pi1048576.txt...
55.44 sec. (real time)


Wenigstens auf Intel ist noch Verlass ;)

Auffällig ist, wie stark lastabhängig das Programm unter Windows ist. Schnell mal in ein anderes Fenster gewechselt, schon dauert es doppelt so lange für eine precision.

Aqua

Dj-Atzy
2004-11-04, 19:03:17
Geht das Teil nicht unter Windows:confused: Oder bin ich zu blöd das zum laufen zu kriegen? :|


Die windows version funzt bei mir auch aber ich mein diese Datein ob die unter windows funzen.

Aqualon
2004-11-05, 02:34:28
Meinst du die Source Code Dateien in http://www.myownlittleworld.com/pi/files/pi_css5_src.tgz?

Die kannst du auch unter Windows mit einem C-Compiler compilieren und danach ausführen.

Aqua

Dj-Atzy
2004-11-05, 14:34:33
Achso. Danke und wo finde ich einen C-Compiler (freeware)

klutob
2004-11-05, 14:55:30
^^
Opensource inkl. IDE:
http://www.bloodshed.net/download.html

Intel ICC (produziert derzeit den schnellsten Code für die Pentiumplattform). Frei, bei nichtkomerziellen Gebrauch.
http://www.intel.com/software/products/compilers/cwin/index.htm

Gast
2004-11-05, 16:38:43
hab mir das source gezogen und einfach im Makefile -march mit meinen Prozessor ersetzt (K8)
ergebnis reproduzierbar bei 11 Sekunden. Opteron 144. Junx wieso sind eure Kisten so lahm? ;)

Gast
2004-11-05, 16:40:10
time ./pi_css5 1048576
Calculation of PI using FFT and AGM, ver. LG1.1.2-MP1.5.2a.memsave
initializing...
nfft= 262144
radix= 10000
error_margin= 0.00378351
calculating 1048576 digits of PI...
AGM iteration
precision= 48: 0.64 sec
precision= 80: 0.60 sec
precision= 176: 0.61 sec
precision= 352: 0.62 sec
precision= 688: 0.61 sec
precision= 1392: 0.61 sec
precision= 2784: 0.60 sec
precision= 5584: 0.61 sec
precision= 11168: 0.60 sec
precision= 22336: 0.61 sec
precision= 44688: 0.61 sec
precision= 89408: 0.60 sec
precision= 178816: 0.61 sec
precision= 357648: 0.60 sec
precision= 715312: 0.60 sec
precision= 1430640: 0.61 sec
writing pi1048576.txt...
11.40 sec. (real time)

real 0m12.185s
user 0m11.429s
sys 0m0.012s

Ich nochmal. Das ganze Unter Debian Linux Mit Kernel 2.6.8-amd64-k8

GloomY
2004-11-06, 01:40:57
hab mir das source gezogen und einfach im Makefile -march mit meinen Prozessor ersetzt (K8)
ergebnis reproduzierbar bei 11 Sekunden. Opteron 144. Junx wieso sind eure Kisten so lahm? ;)Du hast einen 64 Bit Prozessor und ein 64 Bit Betriebssystem. Dämmert's? ;)

Gohan
2004-11-06, 08:54:57
Bis jetzt hat der G4 ein sehr gutes pro-Mhz Verhältniss, bei den 32 Bittern.