InfiX
she/her
|
w00t ?
Xeon ohne Turbo aber so fix, passt das ???![click to enlarge](/attachment.php?attachmentid=198361&thumb=150) häng drei nuller an und probiers nochmal ![:D](/images/smilies/biggrin.gif) 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"
|
häng drei nuller an und probiers nochmal ![:D](/images/smilies/biggrin.gif) 1M, wollte es nur der AMD CPU vor mir gleich tun ...
|
InfiX
she/her
|
das waren aber 32M
|
s!LeNt_tR!ggEr
4 Sterne "Inhaber"
|
|
mat
AdministratorLegends never die
|
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 ![;)](/images/smilies/wink.gif) ).
|
InfiX
she/her
|
|
mat
AdministratorLegends never die
|
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"
|
@InfiX. Ok ... Fehler gesucht und gefunden: Sitzt gerade vor dem PC , sorry ![;)](/images/smilies/wink.gif) So passt das dann doch auch eher. PS: DANKE mat für die Erklärung
|
InfiX
she/her
|
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](/images/smilies/biggrin.gif) aber eine frage noch, ist dieser wert teil der "score" oder ist das nur zur information, das hab ich ned ganz verstanden
|
mat
AdministratorLegends never die
|
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
|
ah ok, macht sinn, aber das könnte man evtl noch ein bissl prominenter hervorheben
|
mat
AdministratorLegends never die
|
Bzw, Massman von hwbot schaut sich den Benchmark gerade an.
|
Anon337
done
|
War jetzt sicher schon ein Jahr her, dass ich was gebencht hab ![:p](/images/smilies/tongue.gif) Die CPU läuft (unter Last) auf 4,5 GHz. bin seit dem 2500k stiller mitleser und habs nun endlich auch zu einem account geschafft. ![;)](/images/smilies/wink.gif) Herzlich willkommen
|
Neo-=IuE=-
Here to stay
|
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 ![:)](/images/smilies/smile.gif)
|
mat
AdministratorLegends never die
|
Schaut bei mir richtig aus... Aber was mir aufgefallen ist: Während dem Run ist der Stop-Button doppelt ![:)](/images/smilies/smile.gif)
![click to enlarge](/attachment.php?attachmentid=198364&thumb=150) 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?
|