chithanh schrieb:
Schlechtes Beispiel. RDRAND ist eine Instruktion, die Anwendungen als Zufallsquelle tunlichst vermeiden sollten. Der Linux-Kernel etwa traut dieser Funktion standardmäßig nicht, kryptographisch sicheren Zufall zu erzeugen. Ordentlich programmierte Anwendungen nutzen daher die Funktionen des Betriebssystems, mit wenigen Ausnahmen bei denen ein besonderer dafür Grund vorhanden ist (z.B. systemd).
Die RDRAND-Probleme hat AMD übrigens mit BIOS-Updates behoben. Es ist wie bereits gesagt auch nicht Intels Aufgabe, auf AMD-Systemen zu testen. Wenn da irgendwo ein Bug sein sollte ist das an AMD, dort Abhilfe zu schaffen.
Wenn wir schonmal beim Whataboutismus sind:
https://www.golem.de/news/skylake-u...r-alptraum-bug-in-intel-cpus-1706-128582.html
Wie du schon schreibst, man sollte wissen was man tut, wenn man RDrand nutzt. Wenn man für nicht kryptografische Zwecke schnell gute Entropie ist RDrand rein zufällig genau der Befehl dazu.
AMD hat die Problematik zwar mit einem µCode Update behoben, das aber auch nur für Zen. Als Software Anbieter kann man sich da aber nicht drauf verlassen.
Für mehr Zufall kann man in Linux den Hardware Random Generator nach Belieben einbinden. Als auf meinem Jaguar RDrand weggepatcht wurde, war das nicht so lustig..
Ansonsten ist ein Beispiel um aufzuzeigen, dass die Übertragung von hoch optimiertem Code auf andere Plattformen nicht zwingend funktionieren muss und das anhand eines Befehls der vor kurzem Medial die Runde gemacht hat.
Ned Flanders schrieb:
Also das FZ Jülich, die mit dem neuen EPYC HPC, haben das wohl getestet und für gut befunden.
Ich empfinde das aber nach wie vor für wenig überraschend, denn schlüssig erklärt warum x86-64 AVX2 Code auf Intel laufen, auf AMD aber nicht hast du noch immer nicht erklärt.
Im Wissenschaftlichem Rechnen hat man meist den Quellcode und kann den genutzten Compilern ein march=native mitgeben. An kritischen Stellen schreibt man da gegebenenfalls etwas Inlineassembler und testet dann alles durch bevor man es auf dem großem System laufen lässt.
Eben jenes Compilat welches auf die Architektur des Großrechners zugeschnitten wurde, willst du nicht auf einem "vergleichbarem" Intel laufen lassen. Da hat man auch hohe Chancen, dass man da doch 1-2 kritische Differenzen findet.
Insofern, dein Beispiel ist unwissentlich genau der Problemfall den ich beschreibe
Diablokiller999 schrieb:
Wow, mit der Begründung kann Intel also komplett den Dienst auf einer AMD-CPU verweigern. Schließlich kann sich Intel nie 100%ig sicher sein, ob nicht auch die ALU/AGU-Implementierungen oder MOV bei AMD "richtig" implementiert sind. Wenn AMD sagt, sie unterstützen einen Befehl, dann ist das so. Falls AMD dann Probleme bei der Implementierung fest stellt, ist das ihr Problem.
Genau deswegen hat sich ja eingebürgert, dass die Hersteller von Prozessoren ihre eigenen Compiler pflegen und die Compiler Dritter um Patches/fixes für ihre eigenen CPUs erweitern. Egal ob Visual C-Compiler, llvm, gcc, diese Compiler enthalten Optimierungen von Intel für Intel und genauso Patches von AMD für AMD. Was auch Mitigations für CPU Bugs umfasst.
Der AMD Compiler enthält deswegen auch genauso wenig Profile für Intel CPUs wie der ICC für AMD CPUs...
Atent123 schrieb:
es auch bei Intel CPUs große Variationen beim Feature Set gibt, müssen sie eine solche Anfrage eh durchführen.
Wieso denn? Intel weiß sehr genau was ihre CPUs können und die compiler flags gehen sowieso nach der CPU Generation..
Hallo32 schrieb:
@HaZweiOh
Annahme: Intel blockt AMD bei MKL komplett.
Was ist die Alternative für AMD?
OpenBLAS oder BLIS oder ...?
Sind die Libs für die unterstützten Betriebssysteme durch Matlab verfügbar? Falls crosscompile, welche Auswirkung hat es auf die Performance?
Wie sieht die Performance der Libs aus?
Egal welche Mathebibliothek, der Mathekernel der MKL ist in oftmals überlegen. Nach den Messungen vom BLIS Projekt selbst , ist die MKL selbst auf ARM CPUs mitunter deutlich fixer als Blis. Die große Ausnahme ist Blis auf Epyc, da ist die MKL aus bekannten Gründen recht lahm. Das dürfte aber auch anders aussehen, wenn man die Nutzung neuerer Befehlserweiterungen erzwingt.
https://github.com/flame/blis/blob/master/docs/Performance.md
HaZweiOh schrieb:
Leider ist juristischer Sachverstand im Technik-Bereich wohl ziemlich schwach ausgeprägt. Selbst in einem alten c't-Artikel kam der Autor mit der fixen Idee um die Ecke, dass Intel kein Monopol bei
Compilern hätte.
Stimmt auch, Intel hat kein Monopol aus Compiler. Für Intel CPUs liefert der ICC meist trotzdem den schnellsten Code. Wobei in vielen Fällen der GCC, Visual C Compiler, llvm in Schlagweite sind.
aldaric schrieb:
Es ist ja generell ironisch eine Vendor Abfrage zu machen, obwohl man dann eine Feature Abfrage macht.... man weiß schon was man da tut, vor allem in Hinblick darauf, dass man Tech-Magazine darauf hinweist doch bitte diese Software für Benchmarks zu benutzen.
Wo hast die die Featureabfrage her?
Die einzige Funktion die in der MKL enthalten ist und Featureabfragen macht dient dazu AVX Featurelevel zu unterscheiden. Hauptsächlich weil es verschiedene Featurelevel für AVX512 gibt. Der Rest ist ne Abfrage auf die CPU Generation.