"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Legends never die: GPUPI

mat 06.11.2014 - 01:52 394675 878 Thread rating
Posts

InfiX

she/her
Avatar
Registered: Mar 2002
Location: Graz
Posts: 13637
Zitat von s!LeNt_tR!ggEr
w00t ?

Xeon ohne Turbo aber so fix, passt das ???click to enlarge

häng drei nuller an und probiers nochmal :D

Code:
Device: Intel(R) Core(TM) i7 CPU         920  @ 2.67GHz (8 CUs, 2672 MHz)
OpenCL 1.2 AMD-APP (1573.4) is ready.

Compiling OpenCL kernels ... done.

Calculating 1.000.000th digit of PI. 4 iterations.

Allocated device memory : 16781312 Bytes
Batch Size              : 1M
Reduction Size          : 128

 00h 00m 00.275s Batch  1 finished.
 00h 00m 00.477s Batch  2 finished.
 00h 00m 00.670s Batch  3 finished.
 00h 00m 00.860s Batch  4 finished.
 00h 00m 00.860s PI value output -> 6C65E52CB

 Device time for   pi calculation:   0.837 s
 Device time for memory reduction:   0.023 s

wird schon passen.

s!LeNt_tR!ggEr

4 Sterne "Inhaber"
Avatar
Registered: May 2007
Location: Germany
Posts: 1414
Zitat von InfiX
häng drei nuller an und probiers nochmal :D

1M, wollte es nur der AMD CPU vor mir gleich tun ... :fresserettich:

InfiX

she/her
Avatar
Registered: Mar 2002
Location: Graz
Posts: 13637
das waren aber 32M :D

s!LeNt_tR!ggEr

4 Sterne "Inhaber"
Avatar
Registered: May 2007
Location: Germany
Posts: 1414
Zitat von InfiX
das waren aber 32M :D

Nope, 1M ! Guckst DU nochmal genau :D

https://www.overclockers.at/files/pi12_198360.jpg

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25373
Kleine Abhandlung zur Memory Reduction, um das endlich mal aufzuklären:

Bei parallelisierten Berechnungen können Ergebnisse nicht in ein und denselben Speicherbereich geschrieben werden, sonst Werte überschrieben werden. Das könnte zwar mit interner Speicher-Synchronisierung verbessert werden, ist aber deutlich langsamer. Deshalb entsteht nach der Berechnung eines Batches - also meist nach 20 Millionen Zwischenergebnissen - ein Speicherbereich, der alle parallel entstandenen Zwischenergebnisse darstellt. Diese 20 Millionen Werte mit der Präzision von "double double" (mehr dazu sehr grob beschrieben auf Wikipedia) müssen dann aufsummiert werden, um ein Zwischenergebnis zu erhalten, mit dem tatsächlich weitergerechnet werden kann. Das ist prinzipiell ein allgemein bekanntes Problem, dessen Lösung "Reduction" heißt. Die multiplen Ergebnisse werden also auf ein einziges Ergebnis reduziert, daher der Name.

Bei den ersten Versionen des Benchmarks, die gerade mal auf die Millionsten Stellen gekommen sind, war es kein Problem, die Reduction auf der CPU zu lösen. Bei 1 Millarde sieht es dann allerdings anders aus. Da dauert diese gut 30 Sekunden, teilweise länger. Bei 10 Millarden schon 5 Minuten und damit ein Drittel der Laufzeit. Deshalb musste ich schlussendlich diesen Vorgang ebenfalls parallelisiert auf die GPU verlegen. Dabei wird nicht nur die Bildung der Summe deutlich schneller, es müssen auch die Batches nicht über den PCIe-Bus transferiert werden, um vom Host aus (also von der CPU) lesbar zu sein.

Nun gibt es einige Möglichkeiten, wie eine Memory Reduction implementiert wird. Ich habe mich für ein komplettes Multi-Staging-Verfahren entschieden, dass in mehreren Durchgängen den Batch auf wirklich nur mehr genau eine Zahl (in doubledouble) reduziert. Das ist zwar meist nicht die schnellste Variante (obwohl sehr komplex), aber sie findet dafür komplett auf dem Device statt. Das wollte ich erreichen.

Dadurch wurde die "Memory Reduction" quasi ein Teil des Benchmarks, weil sie ja wichtig für die Berechnung ist, die möglichst CPU-unabhängig sein sollte. Es wird auch nur reine Device-Time berechnet, die Host-Berechnungen spielen bei der finalen Zeit nicht mit (weshalb der Bench eigentlich auch einige Zehntel länger dauert, als man denkt ;)).

InfiX

she/her
Avatar
Registered: Mar 2002
Location: Graz
Posts: 13637
Zitat von s!LeNt_tR!ggEr
Nope, 1M ! Guckst DU nochmal genau :D

https://www.overclockers.at/files/pi12_198360.jpg

Calculating 32.000.000th digit of PI.

Batch Size: 1M


guckst du mal genau ;)

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25373
Btw, die OpenCL 2.0-Implementierung ist auf den Intel CPUs mit Abstand die schnellste. Auch schneller als die via AMD APP. Es müssen allerdings die richtigen Treiber von Intel installiert werden, siehe FAQ.

s!LeNt_tR!ggEr

4 Sterne "Inhaber"
Avatar
Registered: May 2007
Location: Germany
Posts: 1414
@InfiX.

Ok ... Fehler gesucht und gefunden: Sitzt gerade vor dem PC , sorry ;)

unbenannt_198362.png

So passt das dann doch auch eher.

PS: DANKE mat für die Erklärung :cool:

InfiX

she/her
Avatar
Registered: Mar 2002
Location: Graz
Posts: 13637
Zitat von mat
Dadurch wurde die "Memory Reduction" quasi ein Teil des Benchmarks, weil sie ja wichtig für die Berechnung ist, die möglichst CPU-unabhängig sein sollte. Es wird auch nur reine Device-Time berechnet, die Host-Berechnungen spielen bei der finalen Zeit nicht mit (weshalb der Bench eigentlich auch einige Zehntel länger dauert, als man denkt ;)).

danke für die beschreibung, versteh zwar nicht viel aber ungefähr :D
aber eine frage noch, ist dieser wert teil der "score" oder ist das nur zur information, das hab ich ned ganz verstanden :D

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25373
Der Score ist das, was bei links neben "PI value output" steht, als nach der Berechnung der Batches. Darunter gibt es nur eine Auflistung, die verrät, woraus sich die Berechnungszeit zusammensetzt. Das könnte für das Optimieren des Benchmarks interessant sein, da die Berechnung selbst zu 100% ALU bound ist (also beschäftigt mit dem Jonglieren von Zahlen) und die Memory Reduction sollte deutlich mehr vom Speicher abhängig sein, da zB bei "1B" insgesamt 512 Milliarden Mal alleine im 1. Pass der Memory Reduction vom Speicher gelesen wird. Außerdem wird zusätzlich noch Shared-Speicher verwendet, ebenfalls ein Feature, das gut die Leistung von Grafikkarten zeigt.

InfiX

she/her
Avatar
Registered: Mar 2002
Location: Graz
Posts: 13637
ah ok, macht sinn, aber das könnte man evtl noch ein bissl prominenter hervorheben :D

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25373
Bzw, Massman von hwbot schaut sich den Benchmark gerade an. :)

Anon337

done
Registered: Sep 2000
Location: .
Posts: 2819
War jetzt sicher schon ein Jahr her, dass ich was gebencht hab :p
click to enlarge

Die CPU läuft (unter Last) auf 4,5 GHz.

Zitat von sichNix
bin seit dem 2500k stiller mitleser und habs nun endlich auch zu einem account geschafft. ;)

Herzlich willkommen :)

Neo-=IuE=-

Here to stay
Registered: Jun 2002
Location: Berndorf, NÖ
Posts: 3228
Zitat von mat
Jetzt wäre es noch super, wenn jemand mit einer AMD-CPU bencht. Da bin ich mir nicht sicher, ob der Device-Name korrekt ausgegeben wird.
Schaut bei mir richtig aus...
Aber was mir aufgefallen ist: Während dem Run ist der Stop-Button doppelt :)
click to enlarge

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25373
Zitat von Neo-=IuE=-
Schaut bei mir richtig aus...
Aber was mir aufgefallen ist: Während dem Run ist der Stop-Button doppelt :)
click to enlarge
Ich sehe es, aber ich kann es mir nicht erklären. Bei mir gibt es diesbezüglich keine Probleme, egal was ich mache. Kannst du es wiederholt nachvollziehen? OS?
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz