Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 25 von 36
  1. #1
    Computer Schach Freak Avatar von Kullberg
    Registriert seit
    18.02.2005
    Beiträge
    3.463


    Standard Ryzen Schach Performance - BMI2 Problem

    Zum Vergleich AMD Ryzen gegen Intel Skylake habe ich folgende Tests durchgeführt:

    Hardware Intel: Xeon E3-1245v5 auf MSI C236A Workstation mit 2x 8 GB Samsung DDR4 ECC 2133
    Hardware AMD: Ryzen 1800X auf Asus Prime B350 plus mit 2x 8 GB Crucial DDR4 2133
    beide laufen unter Last auf allen logischen Kernen auf 3,7 GHz

    Ergebnis:
    Engine
    Intel
    AMD
    Unterschied
    Komodo 10.3
    7,75 Mn/s
    14,86 Mn/s
    92%
    asmFishW_2017_02_15_popcnt
    10,60 Mn/s
    19,21 Mn/s
    81%
    asmFishW_2017_02_15_bmi2
    10,91 Mn/s
    14,25 Mn/s
    31%
    Stockfish_8_x64_popcnt
    8,36 Mn/s
    16,51 Mn/s
    97%
    Stockfish_8_x64_bmi2
    8,69 Mn/s
    12,36 Mn/s
    42%


    Bei diesen Ergebnissen ist jeweils eine Ungenauigkeit von ein paar Prozent, da Schach Engines, die multi-threaded laufen, nicht deterministisch arbeiten.
    Es gibt unterschiedliche Kompiler Optionen - die popcnt Versionen nutzen die im Schach wertvolle Instruktion POPCNT aus dem Instruktionssatz SSE 4.2 - damit kann man z.B. mit einem Befehl zählen, wieviele Bauern auf dem Spielfeld sind. Die bmi2 Versionen nutzen darüberhinaus den BMI2-Instruktionssatz. Das sollte die Performance eigentlich verbessern - bei Intel klappt das auch, wie man an den Ergebnissen sieht. Beim Ryzen scheint da ein schwerwiegendes Problem zu sein.


    Edit:
    Im single-thread Modus (da läuft der Ryzen auf 4,1 GHz) gibt es folgende Ergebnisse:
    Stockfish_8_x64_popcnt 1,591 Mn/s, Stockfish_8_x64_bmi2 1,156 Mn/s. Diese Ergebnisse sind übrigens extrem genau - im single-thread Modus sind die Ergebnisse deterministisch. Also 27,3% Performance Verlust durch die BMI2 Option.
    Geändert von Kullberg (05.03.17 um 16:47 Uhr)
    Computer Schach Projekt
    http://rybkachess.com/

  2. Die folgenden 2 User sagten Danke an Kullberg für diesen nützlichen Post:

    hkrumb (18.03.17), Phantomias88 (30.01.18)

  3. Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.

  4. #2
    Kapitän zur See
    Registriert seit
    05.11.2007
    Ort
    Neckar-Odenwald Kreis
    Beiträge
    3.595


    • Systeminfo
      • Motherboard:
      • MSI X370 Carbon
      • CPU:
      • AMD Ryzen 7 1700X
      • Kühlung:
      • Noctua NH-D15
      • Gehäuse:
      • Fractal Design Define R5
      • RAM:
      • 16GB G.Skill Trident Z 3600
      • Grafik:
      • AMD RX480
      • Netzteil:
      • Enermax Platimax DF 600W

    Standard

    selbst compiliert?

  5. #3
    Bootsmann Avatar von YB0b
    Registriert seit
    04.08.2009
    Beiträge
    721


    Standard

    Ist Ryzen nciht 50% bis 100% schneller?

  6. #4
    Kapitän zur See
    Registriert seit
    05.11.2007
    Ort
    Neckar-Odenwald Kreis
    Beiträge
    3.595


    • Systeminfo
      • Motherboard:
      • MSI X370 Carbon
      • CPU:
      • AMD Ryzen 7 1700X
      • Kühlung:
      • Noctua NH-D15
      • Gehäuse:
      • Fractal Design Define R5
      • RAM:
      • 16GB G.Skill Trident Z 3600
      • Grafik:
      • AMD RX480
      • Netzteil:
      • Enermax Platimax DF 600W

    Standard

    4 vs 8 core, sollten also wohl eher Richtung 90% gehen

  7. #5
    Bootsmann Avatar von YB0b
    Registriert seit
    04.08.2009
    Beiträge
    721


    Standard

    Ahh jetzt hab ich es endlich kapiert.
    Welcher compiler wurde genutzt? Hast du mal in den changelog geschaut, wie es da bezüglich ryzen support aussieht?

  8. #6
    Bootsmann Avatar von FRAGdichSCHLAU
    Registriert seit
    04.01.2015
    Beiträge
    551


    • Systeminfo
      • Betriebssystem:
      • Linux Mint 18
      • Sonstiges:
      • Bill Gates ist ein Krebsmensch!
      • Notebook:
      • Lenovo Z70-80
      • Photoequipment:
      • Panasonic Lumix FZ100, FZ300, aber brauche wat neues.

    Standard

    Interessantes Ergebniss....Ohne speziell auf AVX2 und BMI2 einzugehen würde mich interessieren in welchem Zustand das SMT des Ryzens und das HT des Intels waren, an oder aus,oder teils/teils? (Ich weiß gar nicht ob man das smt deaktivieren kann wie beim Intel im Bios?)War das ein reiner "CPU vs. CPU"-Vergleich um mal das compilieren zu testen?

    Gibts noch eine weitere Testvariation mit abgeänderten Faktoren?
    Aber @TE...dennoch interessantes Ergebnis und danke.

  9. #7
    Banned Avatar von vinacis_vivids
    Registriert seit
    22.06.2004
    Beiträge
    3.250


    Standard

    Zitat Zitat von YB0b Beitrag anzeigen
    Ist Ryzen nciht 50% bis 100% schneller?
    Es geht um den BMI2 und da ist Ryzen nur 30-40% schneller statt der üblichen 90%.

    Ich schätze mal SMT Probleme. SMT on/off probieren.

  10. #8
    Computer Schach Freak Avatar von Kullberg
    Registriert seit
    18.02.2005
    Beiträge
    3.463
    Themenstarter


    Standard

    Die Programme hab ich nicht selbst kompiliert.
    AsmFish ist Freeware / open source, es ist eine assembler Version von Stockfish. https://github.com/lantonov/asmFish/...tables/Windows
    Stockfish ist auch Freeware / open source: https://stockfishchess.org/
    HT bzw. SMT ist an bei beiden Rechnern, ehrlich gesagt hab ich im BIOS des Asus Boards die Option zum deaktivieren nicht gefunden. Ein SMT Problem scheint das nicht zu sein. Wenn ich beim Ryzen 8 Threads wähle und affinities setze, so dass jeder Core auch nur einien Thread abkriegt, wird das Ergebnis schlechter - genauso, wie wenn man bei Intel HT ausschaltet.

    Edit: Komodo ist kommerziell: Komodo chess engine by Don Dailey, Larry Kaufman Mark Lefler
    Geändert von Kullberg (05.03.17 um 14:39 Uhr)
    Computer Schach Projekt
    http://rybkachess.com/

  11. #9
    Der letzte Lude
    Registriert seit
    09.12.2006
    Beiträge
    11.149


    Standard

    Zitat Zitat von Kullberg Beitrag anzeigen
    ...hab ich im BIOS des Asus Boards die Option zum deaktivieren nicht gefunden. ...
    Ist ein Xtreme Tweaker Menü vorhanden? Wenn ja sollte die Option dort zu finden sein.

    [Sammelthread] AMD Ryzen Sockel AM4 (OC-Listen, Links, FAQ) Overclocking-Laberthread =- - Seite 10
    Die grenzdebilen Wischfinger haben das Forum übernommen ^^

  12. #10
    Computer Schach Freak Avatar von Kullberg
    Registriert seit
    18.02.2005
    Beiträge
    3.463
    Themenstarter


    Standard

    Leider hat das Brett nur "AI Tweaker" - da gibt es die Möglichkeit nicht. Aber ich denke, die single-thread Tests (edit im 1. Post) zeigen, dass es mit SMT nicht zusammenhängt, sondern dass mit dem BMI2 Instruktionssatz was faul ist.
    Computer Schach Projekt
    http://rybkachess.com/

  13. #11
    Vizeadmiral Avatar von Phantomias88
    Registriert seit
    19.04.2008
    Ort
    PorscheTown
    Beiträge
    6.810


    • Systeminfo
      • Motherboard:
      • ASUS Sabertooth Gen3/R2.0
      • CPU:
      • AMD FX-8350 (Vishera)
      • Systemname:
      • DragonBooster III
      • Kühlung:
      • EK WB Supreme LTX
      • Gehäuse:
      • SuperFlower SF-2000 Big Tower
      • RAM:
      • 4x 8GB DDR3-1866 DualRank ECC
      • Grafik:
      • 2x XFX R7970 DD 925M 3GiB CfX
      • Storage:
      • 3x SSD SATA III native + 3 HDDs
      • Monitor:
      • Samsung FHD TV 37" 550cdm
      • Netzwerk:
      • FritzBox!
      • Sound:
      • onboard
      • Netzteil:
      • Corsair HX850 80+ [email protected]%
      • Betriebssystem:
      • Windows 10 x64 Pro 17134.228
      • Notebook:
      • ?
      • Handy:
      • HUAWAI P9 Light

    Standard

    Zitat Zitat von Kullberg Beitrag anzeigen
    Die Programme hab ich nicht selbst kompiliert.
    AsmFish ist Freeware / open source, es ist eine assembler Version von Stockfish. https://github.com/lantonov/asmFish/...tables/Windows
    Stockfish ist auch Freeware / open source: https://stockfishchess.org/
    HT bzw. SMT ist an bei beiden Rechnern, ehrlich gesagt hab ich im BIOS des Asus Boards die Option zum deaktivieren nicht gefunden. Ein SMT Problem scheint das nicht zu sein. Wenn ich beim Ryzen 8 Threads wähle und affinities setze, so dass jeder Core auch nur einien Thread abkriegt, wird das Ergebnis schlechter - genauso, wie wenn man bei Intel HT ausschaltet.

    Edit: Komodo ist kommerziell: Komodo chess engine by Don Dailey, Larry Kaufman Mark Lefler
    Bezüglich Zuordnung der SMT Threads evt. auch hier mal rein schauen: SMT/CMT-Kernzuordnen in Windows-Betriebssystemen
    Das Programm CorePairing ist vom user Helle53: bsp. https://abload.de/img/boinctn-grideinstein_atrc2.jpg

    Wie lässt man die Benchmarks laufen, einfach .exe ausführen klappt nicht bei asm und stockfish, es kommt das CMD Fenster aber dann bleibt es ruhig.

    ProcessLasso kannst für .exe Dateien Regel-Profile anlegen, einfach rechts-klick auf die .exe Datei und dann -> CPU Zugehörigkeit -> immer -> auswählen:
    https://abload.de/img/seti_opencl_fx-9590_p2okdt.jpg
    Damit kannst zwar SMT nicht abschalten aber die Last auf gerade oder ungerade Kerne festlegen.
    Geändert von Phantomias88 (07.03.17 um 17:49 Uhr)
    CPU: AMD FX-8350 1.3625Vid @ my style | MB: ASUS Sabertooth 990FX R2.0/Gen3 -> zwo x16 Lanes PCIE3.0 onboard
    RAM: 4x 8GiB DDR3-1866 CL13 2T ECC Crucial | GraKa: 2x XFX Radeon R7970 DD 925M 3GiB @ CrossfireX
    NT: Corsair HX850 80+ [email protected]% load | WaKü: EK WB Supreme LTX / 6l | Displays: Samsung 37" LCD Full HD @ 550cd/m²

  14. #12
    Computer Schach Freak Avatar von Kullberg
    Registriert seit
    18.02.2005
    Beiträge
    3.463
    Themenstarter


    Standard

    Ich hab selbst ein kleines Tool in C++ geschrieben, was Affinities automatisch optimal setzt - unabhängig von der Anzahl der Cores. Das verwende ich seit Jahren - und hab es gestern angepasst, dass es auch SMT bei AMD richtig benennt.
    AffPri.png
    Die Schach Engines werden üblicherweise durch eine GUI gesteuert. Eine Freeware GUI ist z.B. Arena: Arena Chess GUI for Linux and Windows - Welcome to Arena
    Man kann die Engine aber auch durch Anklicken starten und dann Textbefehle eingeben, die dem UCI-Protokoll entsprechen. Eine Abfolge von Befehlen sieht z.B. so aus:

    setoption name threads value 8
    setoption name hash value 2048
    go depth 30

    Bedeutet: verwende 8 Threads, 2048 MB Hash, rechne die Position (ohne Eingabe Grundstellung) bis zu einer Tiefe von 30 Halbzügen. Im Ergebnis steht dann time **** (verbrauchte milli Sekunden), nps (Knoten per Sekunde - der gesuchte Performance Wert), nodes (die Gesamtzahl von berechneten Knoten = Positionen) und score (Bewertung der Stellung in cp = centipawns = 1/100 Bauern.
    Computer Schach Projekt
    http://rybkachess.com/

  15. #13
    Computer Schach Freak Avatar von Kullberg
    Registriert seit
    18.02.2005
    Beiträge
    3.463
    Themenstarter


    Standard

    Bei meinem neuen Asrock AB350 Pro4 ist es nun möglich, SMT auszuschalten. Mit einem 1700X gibt es folgende Werte (alles asmFishW - die CPU läuft unter Last auf 3,5 GHz):

    mit SMT popcnt Version: 18,49 Mn/s
    mit SMT bmi2 Version: 13,69 MN/s
    ohne SMT popcnt Version: 13,48 Mn/s
    onhe SMT bmi2 Version: 9,41 Mn/s

    Somit sollte klar sein, dass es kein SMT Problem sein kann.
    Computer Schach Projekt
    http://rybkachess.com/

  16. #14
    Matrose
    Registriert seit
    20.06.2013
    Beiträge
    9


    Standard

    asmFish kannte ich als Projekt von tthsqe aus dem FAsm-Forum. Gestern sind neue Versionen veröffentlich worden und so habe ich auch mal getestet, jeweils 5 Durchläufe:

    Jeweils asmFishW-Version vom 15.3.2017, Windows7/64, Hash 2GB, Tiefe 30

    AMD Ryzen 7 1800X, 16 Threads, alle Kerne @3.7GHz, Asus Prime X370-Pro:
    Popcnt:
    18.215.946nps, 8cp, 2.118.569.234n, g1f3 e7e6
    18.307.576nps, 24cp, 1.232.887.103n, d2d4 e7e6
    18.275.286nps, 6cp, 1.650.093.853n, d2d4 g8f6
    18.279.639nps, 7cp, 2.532.077.382n, e2e4 e7e6
    18.244.647nps, 14cp, 1.976.132.497n, d2d4 e7e6
    BMI2:
    14.134.673nps, 11cp, 1.906.866.418n, d2d4 g8f6
    14.177.738nps, 20cp, 1.719.915.666n, d2d4 e7e6
    14.206.293nps, 12cp, 1.368.733.801n, e2e4 e7e5
    14.119.422nps, 18cp, 1.899.161.152n, g1f3 d7d5
    14.220.873nps, 14cp, 1.484.147.259n, g1f3 d7d5

    Intel i7-7700K, 8 Threads, alle Kerne @5.0GHz, Asus Prime Z270-A:
    Popcnt:
    12.830.001nps, 5cp, 1.148.002.859n, d2d4 g8f6
    12.890.656nps, 17cp, 1.268.621.023n, d2d4 e7e6
    12.839.685nps, 11cp, 1.334.903.602n, d2d4 e7e6
    12.825.199nps, 10cp, 1.358.714.454n, d2d4 g8f6
    12.834.243nps, 20cp, 1.790.710.651n, d2d4 g8f6
    BMI2:
    13.230.070nps, 16cp, 978.204.936n, d2d4 e7e6
    13.159.586nps, 14cp, 943.292.312n, d2d4 g8f6
    13.139.103nps, 15cp, 1.182.072.615n, e2e4 e7e6
    13.149.357nps, 13cp, 1.234.987.636n, d2d4 g8f6
    13.176.356nps, 8cp, 1.005.303.295n, d2d4 g8f6

    Bei der Knoten-Anzahl gibt es doch ganz schöne Unterschiede.
    Naja, wenigstens will Intel nicht den Gaul ziehen...

  17. #15
    Computer Schach Freak Avatar von Kullberg
    Registriert seit
    18.02.2005
    Beiträge
    3.463
    Themenstarter


    Standard

    Hast Du Werte für den Stromverbrauch des i7-7700K unter Last?
    Mein Ryzen 7 1800X liegt bei ca. 160W an der Steckdose, den kleinen Xeon hab ich nicht gemessen.

    Meine Werte waren mit den default Werten für Hash - deshalb sehen die auch etwas besser aus. AsmFishW ist allerdings in der Lage, large pages zu verwenden. Wenn man den Computer entsprechend konfiguriert und das in asmFishW auch einschaltet (Befehl = setoption name largepages value true), kriegt man bei größeren hash Werten eine deutlich bessere Performance. Damit das System das erlaubt, muss man in den group policies das Recht für "lock pages in memory" aktivieren und UAC deaktivieren oder die engine als Administrator laufen lassen.
    Computer Schach Projekt
    http://rybkachess.com/

  18. #16
    Matrose
    Registriert seit
    02.03.2009
    Beiträge
    21


    Standard

    Siehe: instlatx64

    Code:
    Intel Skylake:
    Inst 2017 BMI2  : BZHI r32, r32, r32            L:   0.45ns=  1.0c  T:   0.23ns=  0.50c
    Inst 2018 BMI2  : BZHI r64, r64, r64            L:   0.45ns=  1.0c  T:   0.23ns=  0.50c
    Inst 2019 BMI2  : MULX r32, r32, r32            L:   1.96ns=  4.3c  T:   0.53ns=  1.17c
    Inst 2020 BMI2  : MULX r64, r64, r64            L:   1.81ns=  4.0c  T:   0.45ns=  1.00c
    Inst 2021 BMI2  : PDEP r32, r32, r32            L:   1.36ns=  3.0c  T:   0.45ns=  1.00c
    Inst 2022 BMI2  : PDEP r64, r64, r64            L:   1.36ns=  3.0c  T:   0.45ns=  1.00c
    Inst 2023 BMI2  : PEXT r32, r32, r32            L:   1.36ns=  3.0c  T:   0.45ns=  1.00c
    Inst 2024 BMI2  : PEXT r64, r64, r64            L:   1.36ns=  3.0c  T:   0.45ns=  1.00c
    Inst 2025 BMI2  : RORX r32, r32, r32            L:   0.45ns=  1.0c  T:   0.23ns=  0.50c
    Inst 2026 BMI2  : RORX r64, r64, r64            L:   0.45ns=  1.0c  T:   0.23ns=  0.50c
    Inst 2027 BMI2  : SARX r32, r32, r32            L:   0.45ns=  1.0c  T:   0.23ns=  0.50c
    Inst 2028 BMI2  : SARX r64, r64, r64            L:   0.45ns=  1.0c  T:   0.23ns=  0.50c
    Inst 2029 BMI2  : SHLX r32, r32, r32            L:   0.45ns=  1.0c  T:   0.23ns=  0.50c
    Inst 2030 BMI2  : SHLX r64, r64, r64            L:   0.45ns=  1.0c  T:   0.23ns=  0.50c
    Inst 2031 BMI2  : SHRX r32, r32, r32            L:   0.45ns=  1.0c  T:   0.23ns=  0.50c
    Inst 2032 BMI2  : SHRX r64, r64, r64            L:   0.45ns=  1.0c  T:   0.23ns=  0.50c
    
    Ryzen:
    2017 BMI2       :BZHI r32, r32, r32          L:   0.28ns=  1.0c  T:   0.11ns=  0.38c
    2018 BMI2       :BZHI r64, r64, r64          L:   0.28ns=  1.0c  T:   0.09ns=  0.32c
    2019 BMI2       :MULX r32, r32, r32          L:   1.11ns=  4.0c  T:   0.56ns=  2.00c
    2020 BMI2       :MULX r64, r64, r64          L:   1.11ns=  4.0c  T:   0.56ns=  2.00c
    2021 BMI2       :PDEP r32, r32, r32          L:   5.00ns= 18.0c  T:   5.00ns= 18.00c
    2022 BMI2       :PDEP r64, r64, r64          L:   5.00ns= 18.0c  T:   5.00ns= 18.00c
    2023 BMI2       :PEXT r32, r32, r32          L:   5.00ns= 18.0c  T:   5.00ns= 18.00c
    2024 BMI2       :PEXT r64, r64, r64          L:   5.00ns= 18.0c  T:   5.00ns= 18.00c
    2025 BMI2       :RORX r32, r32, r32          L:   0.28ns=  1.0c  T:   0.13ns=  0.45c
    2026 BMI2       :RORX r64, r64, r64          L:   0.28ns=  1.0c  T:   0.11ns=  0.41c
    2027 BMI2       :SARX r32, r32, r32          L:   0.28ns=  1.0c  T:   0.11ns=  0.38c
    2028 BMI2       :SARX r64, r64, r64          L:   0.28ns=  1.0c  T:   0.09ns=  0.31c
    2029 BMI2       :SHLX r32, r32, r32          L:   0.28ns=  1.0c  T:   0.11ns=  0.38c
    2030 BMI2       :SHLX r64, r64, r64          L:   0.28ns=  1.0c  T:   0.09ns=  0.31c
    2031 BMI2       :SHRX r32, r32, r32          L:   0.28ns=  1.0c  T:   0.11ns=  0.38c
    2032 BMI2       :SHRX r64, r64, r64          L:   0.28ns=  1.0c  T:   0.09ns=  0.31c
    PDEP und PEXT sind 6 mal langsamer als Intel.
    Geändert von Octoploid (17.03.17 um 15:15 Uhr)

  19. #17
    Computer Schach Freak Avatar von Kullberg
    Registriert seit
    18.02.2005
    Beiträge
    3.463
    Themenstarter


    Standard

    Danke, damit ist das Problem erklärt. Die beiden Befehle werden zwar soweit ich weiß nur in der Erzeugung der möglichen Züge verwendet, aber bei der mageren Performance sollte man die dann tunlichst meiden. Interessanterweise sinkt übrigens der Stromverbrauch entsprechend, wenn man die BMI2 Versionen verwendet.
    AVX2 soll ja auch nicht überzeugend sein - da dürfte auch der Grund liegen, weshalb die neuen Prime Versionen zuwenig Last erzeugen.
    Computer Schach Projekt
    http://rybkachess.com/

  20. #18
    Matrose
    Registriert seit
    02.03.2009
    Beiträge
    21


    Standard

    Die andern BMI2 Befehle kann man ruhig benutzen. Und eigentlich erzeugen Compiler PEXT und PDEP nur äußerst selten. Man muß schon die intrinsics direkt aufrufen, um die beiden Befehle zu benutzen.
    PDEP und PEXT sind wahrscheinlich gar nicht im Silikon implementiert, sondern werden per Micrcode simuliert.

  21. #19
    Bootsmann Avatar von YB0b
    Registriert seit
    04.08.2009
    Beiträge
    721


    Standard

    Zitat Zitat von Octoploid Beitrag anzeigen
    Die andern BMI2 Befehle kann man ruhig benutzen. Und eigentlich erzeugen Compiler PEXT und PDEP nur äußerst selten. Man muß schon die intrinsics direkt aufrufen, um die beiden Befehle zu benutzen.
    PDEP und PEXT sind wahrscheinlich gar nicht im Silikon implementiert, sondern werden per Micrcode simuliert.
    "Man muß schon die intrinsics direkt aufrufen, um die beiden Befehle zu benutzen." Was meinst du damit?
    Um beide Befehle zusammen zu "benutzen" oder um (mindestens) einen der beiden Befehle zu "benutzen"?

  22. #20
    Matrose
    Registriert seit
    02.03.2009
    Beiträge
    21


    Standard

    Zitat Zitat von YB0b Beitrag anzeigen
    "Man muß schon die intrinsics direkt aufrufen, um die beiden Befehle zu benutzen." Was meinst du damit?
    Um beide Befehle zusammen zu "benutzen" oder um (mindestens) einen der beiden Befehle zu "benutzen"?
    Um PDEP oder PEXT zu generieren muss man _pext_u64(), _pdep_u64(), etc. direkt aufrufen.
    Ich kenne zumindest keinen Compiler der die beiden Befehle von sich aus erzeugt.

  23. #21
    Bootsmann Avatar von YB0b
    Registriert seit
    04.08.2009
    Beiträge
    721


    Standard

    Zitat Zitat von Octoploid Beitrag anzeigen
    Um PDEP oder PEXT zu generieren muss man _pext_u64(), _pdep_u64(), etc. direkt aufrufen.
    Ich kenne zumindest keinen Compiler der die beiden Befehle von sich aus erzeugt.
    Danke für die schnelle Antwort. Liegt es daran, dass die Befehle an sich nutzlos sind, weil es bessere alternativen gibt oder daran dass die Compiler noch nichts mit Ryzen anfangen könen?

  24. #22
    Matrose
    Registriert seit
    02.03.2009
    Beiträge
    21


    Standard

    Zitat Zitat von YB0b Beitrag anzeigen
    Danke für die schnelle Antwort. Liegt es daran, dass die Befehle an sich nutzlos sind, weil es bessere alternativen gibt oder daran dass die Compiler noch nichts mit Ryzen anfangen könen?
    Die Compiler sind einfach noch nicht schlau genug, die Situationen zu erkennen, in denen die Befehle vorteihaft wären.
    Falls sich das in Zukunft ändern sollte, würden natürlich die hohen Ryzen Latenzen berücksichtigt und deshalb alternative Assembler Befehle bevorzugt (mit -march=znver1).
    Die beiden Befehle sind nicht nutzlos, ganz im Gegenteil. Siehe zum Beispiel: chessprogramming - BMI2

  25. #23
    Matrose
    Registriert seit
    20.06.2013
    Beiträge
    9


    Standard

    Habe mir die BMI2-Exe angeschaut:
    PEXT.PNG
    Von den BMI2-Instruktionen wird nur PEXT verwendet (133-mal). Vor Jahren hatte ich ein Programm zur Ermittlung von Latenz/Durchsatz geschrieben, dann aber doch aus Faulheit auf die Veröffentlichungen von Agner Fog zurückgegriffen. Leider hat er aber zu Ryzen noch nichts gebracht; also habe ich mein altes Prog mal mit PEXT gefüttert. Der i7-7700K zeigt für die 3-Register-Variante brav 3 Latenz-Takte an, so wie A.Fog es für den Skylake (hier = Kaby Lake) auch angibt (die Mem-Variante ist ein Thema für sich). Der 1800X aber bringt mich zur Verzweiflung ! Fast jeder Durchlauf zeigt andere Werte an: Von 27 bis in die 80 ist alles dabei. Ich habe testweise noch POPCNT eingebaut; das ist stabil (alle Wald-und Wiesen-Instruktionen sowieso). Thread auf bestimmten Core festnageln brachte nichts. Ryzen scheint also mit PEXT ein Problem zu haben. Nun macht eine Instruktion nicht das komplette Programm unbrauchbar, aber ärgerlich (komisch) ist es schon. Das mit dem Microcode wäre eine Erklärung...

  26. #24
    Anime und Hardware Otaku Avatar von MENCHI
    Registriert seit
    23.08.2008
    Ort
    Bitz
    Beiträge
    13.488


    • Systeminfo
      • Motherboard:
      • GigaByte GA-EX58-Extreme
      • CPU:
      • Intel [email protected],15GHz
      • Systemname:
      • MENCHI-HTPC
      • Kühlung:
      • Noctua NH-U9S
      • Gehäuse:
      • SilverStone [email protected]
      • RAM:
      • 6x 4GB G.Skill 2400er RIPJAWS
      • Grafik:
      • ASUS TITAN [email protected],1GHz
      • Storage:
      • 240GB OCZ RevoDrive
      • Monitor:
      • Samsung UE55D6200
      • Netzteil:
      • ENERMAX 530W (Gold)
      • Betriebssystem:
      • Windows 7 Pro (64Bit)

    Standard

    RyZen = Bananen

    Muss noch reifen (bis Zen²)
    (\__/)
    (='.'=)
    (")_(")

  27. #25
    Vizeadmiral Avatar von Phantomias88
    Registriert seit
    19.04.2008
    Ort
    PorscheTown
    Beiträge
    6.810


    • Systeminfo
      • Motherboard:
      • ASUS Sabertooth Gen3/R2.0
      • CPU:
      • AMD FX-8350 (Vishera)
      • Systemname:
      • DragonBooster III
      • Kühlung:
      • EK WB Supreme LTX
      • Gehäuse:
      • SuperFlower SF-2000 Big Tower
      • RAM:
      • 4x 8GB DDR3-1866 DualRank ECC
      • Grafik:
      • 2x XFX R7970 DD 925M 3GiB CfX
      • Storage:
      • 3x SSD SATA III native + 3 HDDs
      • Monitor:
      • Samsung FHD TV 37" 550cdm
      • Netzwerk:
      • FritzBox!
      • Sound:
      • onboard
      • Netzteil:
      • Corsair HX850 80+ [email protected]%
      • Betriebssystem:
      • Windows 10 x64 Pro 17134.228
      • Notebook:
      • ?
      • Handy:
      • HUAWAI P9 Light

    Standard

    Zitat Zitat von Helle53 Beitrag anzeigen
    Habe mir die BMI2-Exe angeschaut:
    PEXT.PNG
    Von den BMI2-Instruktionen wird nur PEXT verwendet (133-mal). Vor Jahren hatte ich ein Programm zur Ermittlung von Latenz/Durchsatz geschrieben, dann aber doch aus Faulheit auf die Veröffentlichungen von Agner Fog zurückgegriffen. Leider hat er aber zu Ryzen noch nichts gebracht; also habe ich mein altes Prog mal mit PEXT gefüttert. Der i7-7700K zeigt für die 3-Register-Variante brav 3 Latenz-Takte an, so wie A.Fog es für den Skylake (hier = Kaby Lake) auch angibt (die Mem-Variante ist ein Thema für sich). Der 1800X aber bringt mich zur Verzweiflung ! Fast jeder Durchlauf zeigt andere Werte an: Von 27 bis in die 80 ist alles dabei. Ich habe testweise noch POPCNT eingebaut; das ist stabil (alle Wald-und Wiesen-Instruktionen sowieso). Thread auf bestimmten Core festnageln brachte nichts. Ryzen scheint also mit PEXT ein Problem zu haben. Nun macht eine Instruktion nicht das komplette Programm unbrauchbar, aber ärgerlich (komisch) ist es schon. Das mit dem Microcode wäre eine Erklärung...
    Was meint den der Instrustion Latency dump von AIDA64?

    Ein Auszug vom FX-9590:
    Inst 755 MMXP : PEXTRW r32, mm, im8 L: [diff. reg. set] T: 0.19ns= 0.92c
    Inst 756 MMXP : PINSRW mm, r32, im8 L: [diff. reg. set] T: 0.21ns= 1.00c
    Inst 757 MMXP : PEXTRW + PINSRW r32 L: 0.42ns= 2.0c T: 0.41ns= 1.92c
    Inst 758 AMD64 : PEXTRW r64, mm, im8 L: [diff. reg. set] T: 0.19ns= 0.92c
    Inst 759 AMD64 : PINSRW mm, r64, im8 L: [diff. reg. set] T: 0.21ns= 1.00c
    Inst 760 AMD64 : PEXTRW + PINSRW r64 L: 0.42ns= 2.0c T: 0.41ns= 1.92c
    Bin mir aber nicht sicher, ob es genau die Befehle sind, es gibt auch SSE 4.1 und AVX "PEXT".
    CPU: AMD FX-8350 1.3625Vid @ my style | MB: ASUS Sabertooth 990FX R2.0/Gen3 -> zwo x16 Lanes PCIE3.0 onboard
    RAM: 4x 8GiB DDR3-1866 CL13 2T ECC Crucial | GraKa: 2x XFX Radeon R7970 DD 925M 3GiB @ CrossfireX
    NT: Corsair HX850 80+ [email protected]% load | WaKü: EK WB Supreme LTX / 6l | Displays: Samsung 37" LCD Full HD @ 550cd/m²

Seite 1 von 2 1 2 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •