Ryzen vs. i7: Performance bei interkommunizierenden Threads?

Müs Lee

Commodore
Registriert
Feb. 2007
Beiträge
4.916
Moinsen,

eine Frage, die mich seit Erscheinen von Ryzen beschäftigt, ist die Performance der Prozessoren bei parallelisierten Aufgaben, die Kommunikation zwischen den Kernen/Prozessen benötigen, zB Simulationen. Man stolpert ja mehrfach über die Aussagen, dass der CCX von Ryzen direkt vom RAM-Takt abhängig und im Vergleich zum Pendant von Intel in Sachen Geschwindigkeit und Latenz im Nachteil sei. Das kann man auch beim CB-Test beobachten, wo der 1800X in Euler3d-CFD knapp von einem 7700k geschlagen wird und der 6800k seine Nase recht weit vor AMD platzieren kann. In Cinebench dagegen, wo kaum bis keine Kommunikation zwischen den Prozessen stattfindet, liegt der 1800X weit vor den üblichen Verdächtigen aus dem Hause Intel.

Was mich nun interessieren würde ist ein Benchmark, um die Prozessoren einmal quer durch den Garten zu testen. Euler3d-CFD ist stark von RAM-Geschwindigkeit und Timings sowie vom MB-Chipsatz abhängig, sprich verwertbare Vergleiche sind schwierig. Hat jemand gescheite Benchmarks dazu zur Hand? Ideal wäre ein Progrämmchen als .exe, das die User hier kurz laufen lassen könnten. Vielleicht hat ja jemand Zeit und Lust, sowas zu programmieren. Ich würds ja tun, habe aber leider recht wenig Programmiererfahrung und keinen Dunst von Parallelisierungsverfahren. Ich hätte da an ein Skript gedacht: Erstelle n^2 Knoten in einer zweidimensionalen, quadratischen Geometrie mit identischem Knotenabstand, linke Kante Randbedingung, rechte Kante Kraft drauf, lineares Hookesches Gesetz und Materialkonstanten definieren, ODE-System aufstellen, die Dehnung/Spannung via FDM berechnen. Aufteilen der Matrix in x, y je nach Kernanzahl zur parallelisierten Berechnung. Es geht sicherlich auch anders, das wäre nur mein Ansatz :)


Würde das hier überhaupt jemanden interessieren? Meist sind die User hier ja ziemlich benchfreudig :D
 
Zuletzt bearbeitet:
Benchfreudig bin ich schon...ich teste im Moment ach noch einige Spiele durch und Vergleiche die Frametimes...aber meine Programmierkentnisse halten sich in Grenzen ;).

Wenn man sowas macht, müssten ja eigentlich direkt die Kerne angesprochen werden usw...also ich kann sowas nicht....

Ich denke die "Problematik" mit der langsamen Inter CCX Komunikation ist nicht so dramatisch wie es klingt. Sonst wären die vier Kern Prozessoren mit 4+0 Komfiguration schneller als die 2+2 Varianten...es ist aber tendenziell das Gegenteil der Fall, weil scheinbar der doppelte Cache wichtiger ist.
 
Baal Netbeck schrieb:
Ich denke die "Problematik" mit der langsamen Inter CCX Komunikation ist nicht so dramatisch wie es klingt. Sonst wären die vier Kern Prozessoren mit 4+0 Komfiguration schneller als die 2+2 Varianten

Möglich, dass ich das in meinen Gedanken aufgebauscht habe, aber die meisten Benchmarks scheinen auf Aufgaben zu basieren, die wenig bis keine Kommunikation zwischen den einzelnen Prozessen/Kernen benötigen, sodass die Problematik daher nicht zum Tragen kommt. Bei der Simulation physikalischer Vorgänge ist genau das essentiell. Der Anwendungsbereich ist für den normalen Spieler oder Filmewandler sicher nicht sonderlich relevant, für mich dagegen schon eher - außerdem will ich es einfach wissen :D
 
Ich habe den Test nich parat, aber Es gab da dieses geschriebene Programm, das die latenzen getestet hat....grob gesagt, haben die Intel 8 Kerner immer 80ns zwischen den Kernen und unter 20ns bezogen auf die virtuellen Kerne.....Ryzen hatte 40ns innerhalb des CCX und 120ns dazwischen....virtuelle Kerne waren glaube ich 20ns.....alle Angaben ohne gewähr^^.
Ich weiß aber nicht mehr mit welchem Ram das getestet wurde...müsste ich suchen.
 
Schon mal daran gedacht, dass die Programme nicht auf den Ryzen optimiert sind und dessen Eigenarten nicht kennen? Was gab es dann auch für eine Konkurrenz von AMD? Praktisch keine... der Ryzen ist brandneu und kaum eine Software weiß wie man alles aus dem Ding ausquetscht.

Mfg David
 
Ich hab nochmal in den 1800X Test geschaut, und da steht: "Euler3D und Dolphin zum Beispiel können mit dem AMD-SMT noch nichts anfangen, ist dieses deaktiviert, zeigt sich deshalb dasselbe Ergebnis wie mit aktiviertem SMT."

Ich denke da kann noch viel optimiert werden oder ist inzwischen schon.
 
mir erschließt sich die behauptung nicht, die inter-CCX-kommunikation würde so sehr vom RAM-takt abhängen. wäre es so, dann müsste der ryzen so deutlich viel mehr von schnellerem RAM profitieren, als intel, oder? hab mich nicht groß damit beschäftigt, aber dermaßen viel stärker profitiert er eben nicht, zumindest nicht nach dem, was ich bisher gesehen habe.
 
Doch macht er, wenn man im CPU Limit läuft und eine 1080ti befeuert wird, ist der 3200er RAM heftig überlegen. Ich habe dazu ein YT Video geschaut was ich leider nicht mehr finde.

Bei einer 1060/1070 spielt der RAM keine Rolle aber wenn der Ryzen ins CPU Limit mit einer 1080ti läuft kann es je nach Spiel eine dramatische Steigerungen der fps geben.

Mfg David
 
@ nick: Ja, die noch nicht ausgereiften Programme/UEFIs/Compiler kommen natürlich dazu. Deren Wirkung ist im Moment aber schwer abzuschätzen, dazu müsste man den Trend der kommenden Monate/Jahre verfolgen und Statistik führen.

@ Baal: Ja, da tut sich viel. Trotzdem müsste bei idealem Verhalten der 1800X ohne SMT in Euler3d-CFD die 4-Kerner mit SMT deutlich und 6-Kerner zumindest etwas überholen oder gleichziehen. 8 Kerne sind immer noch 8 Kerne. SMT bringt wie viel, bestenfalls 30%? Bei Intel war es meist 20-25%, wenn ich mich recht entsinne. Die Posts zu den Latenzen hatte ich hier auch ein paar Mal gefunden, der erste gute Googlefund ist folgender: https://www.pcper.com/reviews/Proce...Core-i5/CCX-Latency-Testing-Pinging-between-t

@ smooth: Siehe hier: https://www.eteknix.com/amd-ryzen-ccx-interconnect-infinity-fabric-tied-to-memory-speeds/
 
Zuletzt bearbeitet:
Ich bin mir noch nicht sicher, aber in Rise of the Tomb Raider gab es ebenso deutliche Verluste durch SMT. Es kann also einfach sein, dass dieser Bug gefixed wurde...es könnte aber auch sein, dass sich noch mehr verändert hat.
Ergänzung ()

Vor allem die Verbesserung der Frametimes sieht vielversprechend aus. sowas ist wichtiger als ein besserer avg Wert und sollte auch auf CB mehr beachtung finden.
 
Sehe ich ganz anders. Frametimes halte ich für eher unwichtig - werden als zu wichtig hingestellt. Solange man nicht mit einer 2 Kern CPU zockt, will ich den sehen, der Ryzen und i7 auseinanderhalten könnte, wenn er blind an zwei Rechnern spielen müsste.
 
Müs Lee schrieb:
Man stolpert ja mehrfach über die Aussagen, dass der CCX von Ryzen direkt vom RAM-Takt abhängig
Nicht der CCX, sondern der Takt der internen Fabric über die auch die Kommunikation zwischen den CCX läuft, hängt direkt am RAM Takt. Da auch die PCIe Lanes von der Fabric kommen, wird bei RAM OC zuweilen deren Geschwindigkeit gedrosselt. Da sollte AMD beim nächsten Review des Designs mal besser ein paar flexible Taktteiler einbauen.

Baal Netbeck schrieb:
Ich denke die "Problematik" mit der langsamen Inter CCX Komunikation ist nicht so dramatisch wie es klingt. Sonst wären die vier Kern Prozessoren mit 4+0 Komfiguration schneller als die 2+2 Varianten...es ist aber tendenziell das Gegenteil der Fall, weil scheinbar der doppelte Cache wichtiger ist.
Was aber vom jeweiligen Programm abhängt und den Daten auf denen es arbeitet. Wenn die eben noch gut in den größeren L3 Cache der 2+2 Konfiguration passen, dann profitiert man von dem im Vergleich zur 4+0 größeren L3 Cache, sonst nicht. Pauschal kann man es also nur aufgrund weniger Tests nicht sagen wie sehr die Inter CCX Kommunikation bremst, aber der TE hat ja selbst schon Beispiele gefunden wo ein Intel 4 Kerner den RYZEN 8 Kerner überholt und Intels 6 und 8 Kerner ihn im Regen stehen lassen.

nicK-- schrieb:
Schon mal daran gedacht, dass die Programme nicht auf den Ryzen optimiert sind
Klar, nur ist die Frage wie diese Optimierungen praktisch aussehen können, denn wenn man die Kommunikation zwischen den CCX vermeiden will, dann kann man sich nur auf einen CCX und damit maximal 4 Kerne beschränken. Wegen des geringeren Taktes wird man dann aber auch wieder gegen einen i7-7700K verlieren. So einfach wird es also nicht sein und ich sehe es daher so, dass derzeit RYZEN nur dann im Vorteil ist, wenn die Aufgabe eben nicht viel Kommunikation zwischen den Threads der SW und damit denen der CPU erfordert. Erschwerend kommt noch hinzu, dass die SW die Geometrie der CPU, also welches Kern zu welchem CCX gehört, meines Wissens nach derzeit gar nicht auslesen kann.

smooth el 4a schrieb:
mir erschließt sich die behauptung nicht, die inter-CCX-kommunikation würde so sehr vom RAM-takt abhängen.
Dem ist aber so. ^
smooth el 4a schrieb:
wäre es so, dann müsste der ryzen so deutlich viel mehr von schnellerem RAM profitieren, als intel, oder?
Das ist ja nach allen Test auch der Fall, zumindest bei Spielen bei denen ja immer eine starke Kommunikation zwischen den Threads erforderlich ist, da es im Grunde ja immer Simulationen sind und alles was irgendwo passiert auch Einfluss auf alles andere nehmen kann.

nicK-- schrieb:
Also die Optimierung wird sicher nur in Richtung CCX gegangen sein, damit die Threads nicht ständig verschoben werden.

Schon beachtlich, man muss nur wissen wie.
Klar, nur muss man dazu erstens wissen welcher Kern zu welchem CCX gehört und dann braucht man entweder eine Aufgabe die nur zwischen einigen der SW Threads viel Kommunikation hat um diese auf den Kernen eines CCX zu halten oder man beschränkt sich eben generell nur auf die maximal 4 Kerne eines CCX, hat dann aber wenig davon eine CPU mit mehr als 4 Kernen zu haben, außer es laufen eben nebenbei noch andere Programme die dann die Kerne des / der andere CCX nutzen können. RYZEN hat in der Hinsicht eben klar einen Nachteil gegenüber den Intel CPUs, seine Stärken liegen klar bei Aufgaben wo jeder Thread der SW recht unabhängig auf einem eigenen Teil der Daten seine Berechnungen ausführen kann.
 
http://www.gamestar.de/artikel/ryze...t-mehr-leistung-unter-directx-12,3314847.html

Hier nochmal neue Ergebnisse zum Tomb Raider Patch....
Hier hat auch der 4 Kerner 1500X stark profitiert.
Um herauszufinden, ob es an SMT oder Inter-CCX-Komunikation liegt, wäre ein Test mit einem simulierten 4 Kerner super gewesen...Da hat man ja die Möglichkeit 2+2 oder 4+0 auszuwählen und SMT an und aus zu schalten....ich fürchte nur, dass das keiner gemacht hat.
 
Hab mal meinen 7700K mit Stock und 8 Threads laufen lassen. Was erreicht denn Ryzen hier?

CaseLab
Euler3D BENCHMARK
Version 2.2

Usage: e3dbm #steps #threads

>>> Reading 3D geometry file...

>>> Calling 3D FEM solver...
>> istp = 1
> Progress: ******************** ( 2.27 seconds )
> est. time remaining = 9.06 sec
>> istp = 2
> Progress: ******************** ( 2.28 seconds )
> est. time remaining = 6.82 sec
>> istp = 3
> Progress: ******************** ( 2.25 seconds )
> est. time remaining = 4.53 sec
>> istp = 4
> Progress: ******************** ( 2.33 seconds )
> est. time remaining = 2.28 sec
>> istp = 5
> Progress: ******************** ( 2.23 seconds )
> est. time remaining = 0.00 sec


Elapsed solution time : 11.36 seconds


Please email results and comments to caselab@gmail.com


Threads : 8
Benchmark Score : 8.803 Hz

Benchmark Finished.
 
Zuletzt bearbeitet:
Ich hätte da an ein Skript gedacht: Erstelle n^2 Knoten in einer zweidimensionalen, quadratischen Geometrie mit identischem Knotenabstand, linke Kante Randbedingung, rechte Kante Kraft drauf, lineares Hookesches Gesetz und Materialkonstanten definieren, ODE-System aufstellen, die Dehnung/Spannung via FDM berechnen. Aufteilen der Matrix in x, y je nach Kernanzahl zur parallelisierten Berechnung. Es geht sicherlich auch anders, das wäre nur mein Ansatz

Da hat man aber als Synchronisation nur eine Barrier pro Zeitschritt drinnen, und im Endeffekt muss die Kohärenz nur für den Rand von dem was jeder Prozessor berechnet (aka halo) sichergestellt werden. Deshalb hält sich bei solchen Stencilproblemen idr die benötigte Kommunikation zwischen Prozessoren in Grenzen, sofern man nicht etwas ziemlisch dummes macht.
 
Zuletzt bearbeitet:
IchoTolot schrieb:
Sehe ich ganz anders. Frametimes halte ich für eher unwichtig - werden als zu wichtig hingestellt. Solange man nicht mit einer 2 Kern CPU zockt, will ich den sehen, der Ryzen und i7 auseinanderhalten könnte, wenn er blind an zwei Rechnern spielen müsste.
Und das sehe ich ganz anders^^.
Mir ist klar, dass man generell keinen Unterschied spürt, aber es gibt eben doch reproduzierbare Unterschiede, die man fühlen und dann auch in einem Frametimediagramm sehen kann. Im "The Devision" Benchmark gab es auf meinem Ryzen 7 kurz nach start der Sequenz einen spürbaren Ruckler, der erst nach dem vierten Durchlauf weg war....mein alter i5 hat diesen nur mit stark gesenktem Takt....In "The Witcher 3" gibt es bei einem Lauf durch Novigrad auf meinem i5 ab und zu spürbare Ruckler....nicht an speziellen Stellen sondern scheinbar zufällig in der Nähe von NPC Ansammlungen....der Ryzen hat sowas praktisch nur wenn ich Kerne deaktiviere + den Takt senke. In beiden Fällen ist die GPU praktisch dauerhaft am limit und die durchschnittlichen FPS unterscheiden sich um sowas wie 96 zu 100 fps und 63 zu 64 fps.....

Ob die Frametimes um 2 oder um 6 ms hoch und runter schwanken spielt natürlich keine Rolle, solange die höchsten Frametimes weiterhin gut genug sind. Aber Ausreißer, die schlimm genug sind spüre ich schon und man kann sie nur mit Frametimeanalysen messen und eben nicht mit avg fps darstellen. Daher sehe ich gerade für CPU Tests Frametimes und Percentil Werte als das wichtigste Mittel zur Bewertung der Spieleperformance an.
Ergänzung ()

Wie bekomme ich denn den Benchmark zum laufen?
Ich habe diese Seite gefunden:
http://www.caselab.okstate.edu/research/euler3dbenchmark.html
Aber so ganz verstehe ich nicht wie ich das ausführen soll...Ich nehme an ich muss die .exe mit der Eingabeaufforderung aufrufen...aber irgendwas mache ich falsch :(

"
Ergänzung ()

CaseLab
Euler3D BENCHMARK
Version 2.2

Usage: e3dbm #steps #threads

Error when opening geometry input file
g3d"
Das bekomme ich als Fehlermeldung....und wenn ich mit <#5> <#16> dahinter versuche durchläufe und threads anzugeben sagt er er kann mit "<#" nix anfangen.
Ergänzung ()

Jetzt habe ich nochmal versuch einfach so die .exe zu starten und jetzt läuft der Benchmark an....aber er geht dann einfach nach 10 durchläufen aus ohne ein Ergebnis zu zeigen...
 
Zuletzt bearbeitet:
Du musst einfach nur die Zahl eingeben, also "exe" 5 8 oder so. Und das Archiv muss natürlich entpackt und die Datei im gleichen Verzeichnis sein.

Wirkliche Lags hab ich bisher in keinem Spiel gespürt, sei es Division oder Watch Dogs. Kannste dir auch ansehen, habs aufgenommen und OSD an. Ich jedenfalls fühle da gar nichts, ob das nun eine grade Schnur ist oder eben mehr die Wellen erscheinen. Für mich persönlich völlig unerheblich. Richtig heftige Lags würde ich auch spüren, aber die hab ich bisher in keinem Spiel erlebt. Einzige Ausnahme ist Ghost Recon und da haben diese Aussetzer auch Leute mit 6 und mehr Kernen, das liegt da am Spiel.

 
Zuletzt bearbeitet:
Ahh....nur die Zahlen ohne irgendwelche # oder so :)...Danke!
CaseLab
Euler3D BENCHMARK
Version 2.2

Usage: e3dbm #steps #threads

>>> Reading 3D geometry file...

>>> Calling 3D FEM solver...
>> istp = 1
> Progress: ******************** ( 2.23 seconds )
> est. time remaining = 8.92 sec
>> istp = 2
> Progress: ******************** ( 2.19 seconds )
> est. time remaining = 6.63 sec
>> istp = 3
> Progress: ******************** ( 2.21 seconds )
> est. time remaining = 4.42 sec
>> istp = 4
> Progress: ******************** ( 2.21 seconds )
> est. time remaining = 2.21 sec
>> istp = 5
> Progress: ******************** ( 2.21 seconds )
> est. time remaining = 0.00 sec


Elapsed solution time : 11.06 seconds


Please email results and comments to caselab@gmail.com


Threads : 16
Benchmark Score : 9.038 Hz

Benchmark Finished.

Allerdings läuft er im Moment auf 3,8GHz und der Speicher ist 2x16gb DR 2667 CL14.

Bezüglich der Ruckler....Ich will nicht behaupten, dass du welche hättest oder nicht....mit dem i7 7700K hast du die beste Spiele CPU, die es im Moment so gibt, daher bezweifle ich das du irgendwo Probleme hast.....und vor ein paar Tagen kam ein Patch raus, der die Frametimes stark verbessert hat...nicht dass es vorher ein Problem gewesen wäre aber jetzt ist es noch besser....der Benchmark ist zusätzlich nur so semi repräsentativ^^.....viel selbst spielen zum testen kann ich aber nicht...habe nur die Trial Version und wenig Interesse am eigentlichen Spiel....habe nur mal reingeschaut und den Benchmark laufen lassen.

In deinem Video sieht man einen Frametime Verlauf....aber ich sehe keine Skalierung....und diese ist doch der springende Punkt....sind die einzelnen Ausreißer nur von 10 auf 20ms oder gehen die auf 50ms hoch....50 ms ist in etwa der Wert, bei dem es mir selbst deutlich auffällt ohne vorher durch betrachten des Graphen beeinflusst zu sein. Wie ich auch oben schon geschrieben habe ist das Geschwanke nicht so wichtig, solange Grenzen eingehalten werden....ich bin Niemand, der behauptet zu sehen wenn Frametimes zwischen 5 und 15ms schwanken...aber Schwankungen auf 30 fallen mir je nach Spiel schon auf...Schwankungen auf 50ms deutlich....und ich kann mir auch gut vorstellen, das andere Menschen auch die 15ms sehen...vor allem mit 144HZ Monitor.
Ergänzung ()

Ähm....wie hast du den Frametime Verlauf ins Video bekommen? Ich habe nur Aussagen gefunden, wo das nachträglich eingefügt wurde....und wie man das einfügt habe ich auch nicht erfahren können...

Gute Nacht an Alle^^
 
Zuletzt bearbeitet:
Die Frametimes werden weiter oben noch als Zahl dargestellt, da kannst du das ablesen. Musst dir die Beta vom Afterburner und RTSS installieren, da kann man das aktivieren.
 
Zurück
Oben