News Intel MKL 2020.2: Neuer AMD-Workaround schneller als Zen-Kernel

Es gibt überhaupt keinen Grund, um die CPU Hersteller abzufragen, sondern nur die von der jeweiligen CPU unterstützten Features und Befehlssätze. Es sei denn, man will dem Konkurrenten absichtlich damit Schaden zufügen.
 
  • Gefällt mir
Reaktionen: Otsy und jonderson
Hab mir mal die Mühe gemacht und die Linuxversion der Windowsversion gegenübergestellt.
Die Windowsversion scheint diese Funktion noch nicht zu haben, wie man hier schön sehen kann.
Links Windows, rechts Linux.
2020-09-28_10h08_42.png


Dafür hat die Windowsversion aber noch deutlich mehr Vendorchecks drin.
2020-09-28_10h10_00.png


Wo man sich bei Linux auf den Vendor Check innerhalb der regulären CPU-Erkennung beschränkt, macht man bei der Windowsversion zusätzlich in verschiedensten Funktionen diese Checks. So wie es in früheren Versionen auch war.

Bin daher mal gespannt ob die Windowsversion auch noch diese universelle CPU-Erkennungsroutine bekommt, oder ob Windowsversionen einer Software dem jeweiligen Linuxpendant gegenüber im Nachteil sein werden, sollte ein AMD-Prozessor zum Einsatz kommen.

hoxi schrieb:
Es gibt überhaupt keinen Grund, um die CPU Hersteller abzufragen, sondern nur die von der jeweiligen CPU unterstützten Features und Befehlssätze

Doch ,den gibt es. Wenn du, wie Intel es macht, deinen Kunden die deine Produkte kaufen eine Bibliothek zur Verfügung stellen willst, und anderen Leuten die anderer Firmen Kunden sind nicht.
 
  • Gefällt mir
Reaktionen: Iscaran, floTTes und Forum-Fraggle
mace1978 schrieb:
Was versuchst du denn damit zu erreichen hier hundert mal nach Beweisen zu fragen?

Ich fragte nach einem Beleg für eine Behauptung, das ist ja wohl immer legitim! (Und sollte jeder tun, anstatt etwas unbesehen zu glauben.)

Und Ned Flanders Beitrag hatte ich nicht gesehen, bevor ich danach gefragt habe, sondern nur die andere verlinkte Quelle im Artikel... und dort war es nur eine Vermutung, keine Tatsache.
 
calluna schrieb:
AMD hat eine eigene Lib, die nur für Zen gedacht ist... und AMD sollte ohnehin in diesem Bereich mehr liefern, vor allem bei der GPU... denn da hat Nvidia das bessere Paket aus Hard- und Software.
Wer kommt für die anfallenden Entwicklungskosten auf und was soll eine solche Spaltung des Marktes für den Kunden bringen?
 
  • Gefällt mir
Reaktionen: jonderson
@Wadenbeisser

Ich verstehe deine Frage nicht... für den Kunden ist das schlecht; aber aus Sicht des Zulieferers ist das eine Produktpflege, die unter Umständen kaufentscheidend sein kann, so wie CUDA bei Nvidia. Das sind eben verschiedene Perspektiven und es ist nicht ersichtlich, warum man den Konkurrenten Vorteile durch eigene Software verschaffen soll, wenn hier Hardware und Software zusammen ein Produkt bilden? (Aus der Perspektive des Unternehmens, nicht der Kunden!)
 
mace1978 schrieb:
Und im Fall von Intel fällt es aber auf der Ebene auch schwer von im Zweifel für den Angeklagten zu sprechen,
da Intel nicht nur Gelegenheitstäter ist, sondern nachgewiesener Weise jedes Mittel recht ist um seine Marktmacht zu festigen.

Dazu mal etwas Grundlegendes: ich weiß, für manche ist bei unserem Hobby AMD und Intel so etwas wie das Imperium und die Rebellen.. und der eine hat mehr Sympathie für Intel, der andere für AMD, obwohl beides amerikanische Unternehmen sind, die sich letztendlich nicht wirklich unterscheiden. ;-)

Aber bei allem, was Intel bisher getan hat, ist dieses Unternehmen im Vergleich zu anderen Unternehmen, wie etwa VW, Nestle, Shell und so weiter, geradezu harmlos.

Und überleg einmal, was "jedes Mittel recht" bedeutet.
 
  • Gefällt mir
Reaktionen: MIWA P3D und floTTes
Holt schrieb:
Wieso sollte Intel seine Lib überhaupt für CPUs der Konkurrenz optimieren? Soll doch AMD eine eigene Lib oder wenigstens einen Plug In für die mkl anbieten die dann auf AMD CPUs genutzt wird, damit das Thema endlich beerdigt werden kann. Muss etwa Intels Treiber für die Xe demnächst auch noch für die Radeon GPUs optimiert sein? Doch wohl hoffentlich nicht.

Du hast das Thema nicht verstanden. Da wird nichts optimiert! Intel deaktiviert durch diese Erkennung in der Software die Nutzung von AVX wenn keine Intel CPU erkannt wird. Obwohl AMD CPUs AVX ebenso voll unterstützen! Das wäre so als würde eine Video Player Software bei Erkennung einer IGPU (integrierten Grafikkarte in der CPU) von AMD die Hardware Beschleunigung der Videos deaktivieren obwohl sie es kann!
 
calluna schrieb:
Ich fragte nach einem Beleg für eine Behauptung, das ist ja wohl immer legitim! (Und sollte jeder tun, anstatt etwas unbesehen zu glauben.)
Das ist nur nicht was passiert ist. Es wurden klare Indizien aufgezeigt. Deine Position konnte man nur interpretieren als, solange es keine Beweise gibt ist alles koscher.
Die Indizien wurden weder Argumentativ, noch durch Beweise entkräftet und die Historie, die intel in der Sache hat von dir auch völlig ignoriert.
Sich nun als der kritische Geist darzustellen, der nicht alles direkt glaubt, ist doch ziemlich selbst beschönigend.


calluna schrieb:
für manche ist bei unserem Hobby AMD und Intel so etwas wie das Imperium und die Rebellen.. und der eine hat mehr Sympathie für Intel, der andere für AMD, obwohl beides amerikanische Unternehmen sind, die sich letztendlich nicht wirklich unterscheiden. ;-)
Auch das ist durchaus eine völlige Fehldarstellung. Man kann zwar nur spekulieren, was AMD gemacht hätte, wenn sie in Intels Lage gewesen wären. Tatsache ist aber, dass Intel juristisch mehrfach wegen Vergehen gegen Kartellrecht und unlautere Wettbewerbspraxis belangt wurde. AMD nicht.
So zu tun, als ob diese Unternehmen gleich wären, ist absoluter Nonsense.
Und wie gesagt, handelt es sich bei diesen Angelegenheiten meistens um Fälle von intel vs den Konsumenten und nicht intel vs AMD. AMD hätte auch zu ihren Hochzeiten gar nicht das liefern können, was der Weltmarkt an CPUs verlangt hätte. AMD hätte vielleicht die eine oder andere CPU teurer verkaufen können, an der Marktbeherrschenden Stellung von intel hätte sich auch ohne die Praxis nichts geändert.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: jonderson
@DocWindows

Von denen verlangt aber auch keiner das sie mit einem deutlich geringeren Entwicklungsbudget als bei Intel oder Nvidia mit beiden gleichzeitig konkurrieren und jeweils einen gleichwertigen Entwicklungsumfang stemmen sollen.

Genau deshalb die Frage wer für eine realitätsferne Forderung aufkommen soll.

Des weiteren die Frage warum es dem Kunden egal sein soll durch die Spaltung softwareseitig an einen Hersteller gebunden zu sein und sich damit selbst vom Wettbewerb zwischen den Herstellern auszuschließen. Der Software Hersteller will schließlich ebenfalls Kosten sparen und setzt dann eben wie bisher auf die libs von der die meisten Kunden profitieren. Diese Vorgehensweise sieht man ja auch im GPU Umfeld mit CUDA.

Der Kunde ist bei der Spaltung am Ende also immer der Verlierer.
 
Gamefaq schrieb:
Intel deaktiviert durch diese Erkennung in der Software die Nutzung von AVX wenn keine Intel CPU erkannt wird.
Weil sie sonst validieren müssten ob dies stabil ist und die Ergebnisse auch wirklich immer stimmen, denn es ist ja Intels lib und Intel wäre schuld wenn dem nicht so ist. Warum sollte sich Intel diese mühe machen? Soll doch AMD dies selbst für seine keinen Lib machen.
 
Gamefaq schrieb:
Du hast das Thema nicht verstanden. Da wird nichts optimiert! Intel deaktiviert durch diese Erkennung in der Software die Nutzung von AVX wenn keine Intel CPU erkannt wird.
Was ist für dich "mkl_blas_def_dgemm_kernel_zen", wenn das keine Optimierung für AMD sein soll? Und warum läuft diese dann so gut auf AMD-Prozessoren?
 
  • Gefällt mir
Reaktionen: floTTes und Miuwa
Holt schrieb:
, denn um neue Befehle zu verwenden, muss man diese eben auch validieren. Sonst stürzt sie am Ende ab oder liefert falsche Ergebnisse und dies sollte schon gar nicht passieren.
Ich kann nicht sagen, ob es generell mehr oder weniger Aufwand für Intel wäre AMD CPUs einfach genauso wie unbekannte Intel-CPUs zu behandeln. Meine Vermutung nach wäre es simpler, aber da müsste man schon sehr genaue Einblicke in die MKL Entwicklung und den Support haben um das abschließend und mit etzter Sicherheit beantworten zu können.

Dieses spezielle Argument (zusätzlicher Validierungsaufwand) scheint mir hier aber nicht zu greifen. Wenn Intel AMD CPUs supporten will, aber Angst davor hat, dass dort nicht alle Instruktionen korrekt umgestzt sind, dann müssten sie ihren Code so oder so auf AMD CPUs validieren - egal ob dort die AVX Instruktionen verwendet werden oder nicht (es könnte ja auch in den SSE befehlen ein fehler sein). Wenn Intel allerdings AMD-CPUs offiziell überhaupt nicht unterstützt oder nur wenn sie "korrekt" arbeiten, dann ist überhaupt keine Validierung auf AMD CPUs nötig.

In beiden Fällen macht es für die Validierung keinen Unterschied, ob auf AMD CPUs der AVX oder der reine x64 Pfad ausgeführt wird (Ich nutze die Bezeichnung AVX hier repräsentativ für was auch immer der höchste Befehlssatzlevel ist, der nominell von einer bestimmten CPU unterstützt wird).
 
mace1978 schrieb:
Deine Position konnte man nur interpretieren als, solange es keine Beweise gibt ist alles koscher.

Konnte man meine Position tatsächlich nur so interpretieren? Vermutlich hast du "Indizien" dafür, dass ich die Einstellung habe: "...solange es keine Beweise gibt, ist alles koscher".

PS: und ich muss keine Indizien mit Beweisen entkräften. Wenn jemand eine Tatsache behauptet, dann ist derjenige auch eine Begründung für die Behauptung schuldig.

mace1978 schrieb:
So zu tun, als ob diese Unternehmen gleich wären, ist absoluter Nonsense.

Mein Pessimismus in dieser Hinsicht stammt aus meiner Zeit, als ich selbst in den USA in der Halbleiterbranche gearbeitet habe... und hat viel mit amerikanischer Unternehmenskultur zu tun. Ich glaube einfach nicht, dass die Menschen, die für AMD arbeiten, grundsätzlich andere sind bzw. dort die Zusammensetzung an Persönlichkeiten eine andere ist.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: floTTes
Holt schrieb:
Weil sie sonst validieren müssten ob dies stabil ist und die Ergebnisse auch wirklich immer stimmen, denn es ist ja Intels lib und Intel wäre schuld wenn dem nicht so ist. Warum sollte sich Intel diese mühe machen? Soll doch AMD dies selbst für seine keinen Lib machen.

Das ist eine Ausrede. Intel muss nichts validieren weil die Software gar nicht davon ausgeht das etwas anderes als eine (Intel) CPU die AVX kann genutzt wird! Denn dafür ist diese Software da, explizit diese Berechnungen durchzuführen und für die Beschleunigung der Berechnungen AVX zu nutzen.
 
  • Gefällt mir
Reaktionen: Iscaran
Wadenbeisser schrieb:
Von denen verlangt aber auch keiner das sie mit einem deutlich geringeren Entwicklungsbudget als bei Intel oder Nvidia mit beiden gleichzeitig konkurrieren und jeweils einen gleichwertigen Entwicklungsumfang stemmen sollen.

Genau deshalb die Frage wer für eine realitätsferne Forderung aufkommen soll.

Aha, aber von Intel verlangt man dass sie Entwicklungsaufwand betreiben von dem ihr Konkurrenz profitiert?

Wadenbeisser schrieb:
Des weiteren die Frage warum es dem Kunden egal sein soll durch die Spaltung softwareseitig an einen Hersteller gebunden zu sein und sich damit selbst vom Wettbewerb zwischen den Herstellern auszuschließen.

Der Kunde kauft ein Produkt und wenn das Produkt ihm nicht mehr passt, kauft er ein anderes.
Sobald er sich für ein Produkt, z.B. Matlab, entscheidet ist er doch eh für eine Zeit an diesen Hersteller gebunden.
Verstehe das Problem Intel/AMD daher nicht. Das ist doch nachgelagert.

Derjenige der verliert ist der Softwarehersteller der Bibliotheken nutzt die nur die CPU eines bestimmten Herstellers performant unterstützt, ein Kunde aber eine andere CPU einsetzen will. Dann hat er eben einen Kunden weniger. Soviel auch zum Thema Wettbewerb. Hier hat nämlich ein potenzieller Wettbewerber die Möglichkeit es besser zu machen und Kunden zu gewinnen.
 
calluna schrieb:
Ich verteidige es, weil ich es ganz genau so machen würde - und ich nehme da verschiedene Perspektiven ein, nicht nur meine als Kunde.
Dann wärst du ein ziemlich schlechter Entwickler. Optimierungen setzt man je nach Feature-Set ein, nicht je nach Vendor.

Wenn die CPU AVX kann, soll per default der AVX Pfad laufen, nicht der unoptimierte Pfad. Wenn die Intel CPU spezifisch bei AVX noch etwas besonders abkürzen kann, dann sollte die Lib im AVX Pfad dieses Extra nutzen.

Entwickler, die auf Vendor oder Device IDs optimieren, sollten Branche wechseln.
Ergänzung ()

Holt schrieb:
Weil sie sonst validieren müssten ob dies stabil ist und die Ergebnisse auch wirklich immer stimmen, denn es ist ja Intels lib und Intel wäre schuld wenn dem nicht so ist. Warum sollte sich Intel diese mühe machen? Soll doch AMD dies selbst für seine keinen Lib machen.
Nein, müssten sie nicht validieren. Intel garantiert doch eh schon nur die Funktionalität auf Intel CPUs.

Bzw anders herum, wenn sie den AVX Pfad validieren müssten, dann müssten sie auch den non-AVX Pfad validieren. Der Aufwand ist also so circa der gleiche.

Was Intel bisher betrieb, war einfach stümperhaftes Softwaredesign im Zeichen des Dominanzmissbrauchs.
 
  • Gefällt mir
Reaktionen: Iscaran, Beneee, blackboard und 3 andere
Miuwa schrieb:
Ich kann nicht sagen, ob es generell mehr oder weniger Aufwand für Intel wäre AMD CPUs einfach genauso wie unbekannte Intel-CPUs zu behandeln. Meine Vermutung nach wäre es simpler, aber da müsste man schon sehr genaue Einblicke in die MKL Entwicklung und den Support haben um das abschließend und mit etzter Sicherheit beantworten zu können.
Man kann sich schon recht sicher sein, dass mehr Validierungen auch mehr Aufwand sind und wenn neue Befehle verwendet werden, dann muss man dies validieren, sonst hat man am Ende womöglich ein Problem und hat fahrlässig gehandelt, wen man es nicht einmal getestet hat. Von daher ist es auf jeden Fall einfacher für Intel bei jeder CPU die nicht von Intel ist nur die Basisbefehle zu nutzen.
Miuwa schrieb:
Dieses spezielle Argument (zusätzlicher Validierungsaufwand) scheint mir hier aber nicht zu greifen.
Wieso nicht? Machst du die Validierung dann für lau damit sie gemacht wurde? Wenn das jemand bei Intel machen muss, dann kostet es Geld, so einfach ist das und Intel verdient keinen Cent an den von AMD verkauften CPUs.
Miuwa schrieb:
Wenn Intel AMD CPUs supporten will
Eben, wenn, aber wieso sollten sie überhaupt? Sie supporten nur, was eben Basis ist und damit ist die Performance halt nicht optimal, der Aufwand aber eben auch praktisch 0 und gut.
Miuwa schrieb:
Wenn Intel allerdings AMD-CPUs offiziell überhaupt nicht unterstützt oder nur wenn sie "korrekt" arbeiten, dann ist überhaupt keine Validierung auf AMD CPUs nötig.
Wer sagt denn, wenn sie korrekt arbeiten? Das erste wäre doch, dass eine SW abstützt, dann kommt der Hersteller der Software und sagt, der Absturz kommt von der MKL, Intel hat also Mist gebaut. Dann muss Intel hingehen, die Sache untersuchen und beweisen, dass aber in Wahrheit AMD Schuld ist, was Kosten und Imageverlust bedeutet, denn natürlich wird dies nicht jeder mitbekommen oder glauben. Also wäre es besser, MKL auf anderen CPUs gar nicht laufen zu lassen, aber dann haben die Hersteller der SW die die MKL nutzt mehr Aufwand und daher hat man wohl diesen Kompromiss drin, dass die zwar läuft, aber eben ohne die neusten Befehlserweiterungen um diese nicht auch noch validieren zu müssen.
Ergänzung ()

Powl_0 schrieb:
Bzw anders herum, wenn sie den AVX Pfad validieren müssten, dann müssten sie auch den non-AVX Pfad validieren. Der Aufwand ist also so circa der gleiche.
Auch so, zwei Codepfade zum Preise von einem, wo gibt es denn dies Sonderangebot gerade?
 
Zurück
Oben