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

47cmArmumfang schrieb:
Was das hier wieder für Diskussionen sind, meine Güte. Nur, weil Intel eine Art Monopolstellung im Bereich x86-CPUs inne hat(te), [...]
Also erst sich über die Diskussion echauffieren um dann mit einem "interessanten" Niveau mit "wettbewerbsbassenden Nerds" zu fabulieren.

Also erstmal wird hier über marktbeherrschende Stellung gesprochen, und bisher war es wohl eher Intel, welche den Wettbewerb gescheut haben, da sie sich nicht zu schade waren mit illegalen Methoden den Markt zu manipulieren.
 
  • Gefällt mir
Reaktionen: CableGuy82, Kodak, Smartbomb und 2 andere
DocWindows schrieb:
Ich glaube nicht dass die Wettbewerbshüter damit einverstanden wären. Das wäre eine harte Benachteiligung von AMD CPUs.
Apple iOS läuft nur auf Apple Rechnern und wo schreiten da die Wettbewerbshüter ein? Auch taugen die Treiber für AMDs und NVidias GPUs nur für deren eigenen GPUs, wo ist da das Problem?
Oberst08 schrieb:
Das könnte Intel natürlich machen. Aber dann bräuchte man sich nicht wundern, wenn niemand mehr die MKL nutzt. Denn wenn man für alle nicht Intel CPUs eh einen separaten Pfad braucht, warum den dann nicht auch für Intel nutzen?
Intel sollte das machen und wenn die Hersteller der SW dann die MKL nicht mehr nutzen weil Alternativen schneller sind, können sie sich den Aufwand die zu weiter zu entwickeln und optimieren ja künftig sparen. Aber ständig im Kreuzfeuer zu landen weil sie keine Validierung für die Optimierungen auf die neusten Befehlserweiterungen auf fremden CPUs machen sollen, wäre im Vergleich dazu wohl das kleinere Übel.
Neodar schrieb:
Es geht hier aber nicht um Optimierungen, sondern um das gezielte Ausbremsen der Konkurrenz, indem die Software bei Einsatz einer AMD CPU anders operiert, als mit Intel CPU.
Das ist eine ganz andere Nummer.
Ach und die muss man nicht wenigstens Validieren? Das sind komische Vorstellungen davon wie professionelle Softwareentwicklung funktioniert. Intel kann doch mit dem Aussperren von AMD bei der MKL nur gewinnen, dann müssen sie darauf nichts testen und die Vorwürfe der Benachteiligung wäre vorbei. AMD kann dann seinen Kunden eine eigene Alternative anbieten, müsste also seine eigene Version mal wieder auf Vordermann bringen oder eben eine OpenSource Alternativ empfehlen. Die Hersteller von Software die die MKL nutzt, müssen dann entscheiden ob diese auch weiter auf AMD CPU laufen können soll und dann eine Alternative zur MKL nutzen, ob die die MKL ganz ersetzen oder ihre SW künftig nur für Kunden mit Intel CPUs ist. Dies ist ja nicht verborten, Apple hat ja auch Software die nur auf Applehardware läuft und keiner, auch kein Wettbewerbshüter pisst sich deswegen in die Hose.
TrueAzrael schrieb:
So sehr ich deine Beiträge auch schätze, aber das klingt beinahe so als ob es keine marktbeherrschende Stellung geben kann so lange es auch nur eine Alternative gibt.
Wo beherrscht Intel den Markt mit der MKL, wenn es doch genug Alternativen gibt, auch OpenSource, die dann jeder selbst für seine CPU optimieren kann? Nein, eine marktbeherrschende Stellung sehe ich für die MKL nicht.
 
calluna schrieb:
Jetzt einen Pfad für Zen einzubauen wäre geradezu dumm von Intel und ergibt keinen Sinn
Ist aber wohl genau das was sie jetzt getan haben, nur halt (noch?) nicht für alle Funktionen.
[Edit: Bevor Das noch jemand falsch versteht: In dem extra Zen Code-Pfad scheint die neue MKL version durchaus avx zu nutzen und auch gute Performance zu liefern]

Jetzt mal ernsthaft: Liest sich denn niemand den verlinkten Originalpost durch bevor hier wild rumspekuliert wird?

https://danieldk.eu/Posts/2020-08-31-MKL-Zen.html
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: CableGuy82, Smartbomb, floTTes und 4 andere
Holt schrieb:
Apple iOS läuft nur auf Apple Rechnern und wo schreiten da die Wettbewerbshüter ein? Auch taugen die Treiber für AMDs und NVidias GPUs nur für deren eigenen GPUs, wo ist da das Problem?

Das Problem ist das du nicht differenzierst. Treiber sind z.B. dafür da um dem Betriebssystem und Programmen den Zugriff auf Grafikkarten zu ermöglichen. Das hat nichts mit einer Programmbibliothek zu tun die in Softwareprodukte integriert wird und die wiederum auf einer Vielzahl an Prozessoren ausgeführt wird.

Und was glaubst du was los wäre wenn Apple ihre Hardware von verschiedenen Anbietern einkaufen müsste und iTunes durch eine Programmbibliothek nur auf Hardware von Hersteller 1, aber nicht von Hersteller 2 läuft?

Wenn man schon Analogien anführt, sollten die doch wenigstens in einem möglichst ähnlichen Kontext sein.
 
  • Gefällt mir
Reaktionen: Smartbomb, Iscaran, Kalsarikännit und 3 andere
Ist eigentlich bekannt, welchen Mechanismus Intel verwendet um zu entscheiden welche Features auf intel CPUs verwendet werden? Werden da die Feature Flags der CPU ausgelesen oder ist da ne eigene Liste hinterlegt, welcher Pfad für welche CPU genutzt werden soll?

EDIT: Meine Vermutung wäre, dass Feature Flags ausgelesen werden, weil der workaround sonst nicht funktionieren würde, aber vielleicht missverstehe ich da was.
 
Zuletzt bearbeitet:
Dont feed the Intel calluna Troll!

Es wurden Fakten geliefert und Links. Anstatt diese zu lesen wird gesagt: unleserlich, ist ja von Intel, blablabla...

Fakt ist: Intel MKL machte (alte Version) folgendes:

if CPU == Intel; then avx(); else non-avx()

Die neue Version macht:

if CPU == Intel; then avx(); elif CPU == amd non-avx-amd(); else non-avx()

Was die Software machen müsste(!):

if AVX; then avx(); else non-avx


Und das Intel-Fan-Argument: "Was ist wenn AMD AVX falsch implementiert hat?" Ja dann ist AMD halt kacke und hat sich nicht an den Standard gehalten. Wäre mir aber neu und die Ergebnisse Zeigen: Ist nicht so!


@Unter mir:
Ja es KANN sein (und soll auch so sein, ist ja Intels Recht), dass ggf CPU Optimierungen für Intel ebenfalls nur auf Intel laufen, ich glaube damit sind wir alle fein. Es muss aber immer der schnellste Codepfad verwendet werden, unabhängig der CPU.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: CableGuy82, Smartbomb, Iscaran und 9 andere
Miuwa schrieb:
Ist eigentlich bekannt, welchen Mechanismus Intel verwendet um zu entscheiden welche Features auf intel CPUs verwendet werden? Werden da die Feature Flags der CPU ausgelesen oder ist da ne eigene Liste hinterlegt, welcher Pfad für welche CPU genutzt werden soll?

Das Ganze ist möglicherweise komplizierter als man denken würde. Es gibt anzeichen dafür, dass die MKL auch Informationen über für spezifische CPUs enthält. Evident ist aber, dass wenn die CPU nicht in der Liste ist, aber als Intel CPU erkannt wird, einfach das Feature Set ausgelesen und entsprechend der schnellste Codepfad verwendet wird. Das muss sie ja auch, sonst würden neue Intel CPUs auf alten MKL Versionen nicht schnell laufen.

Trotzdem muss man schon nochmal positiv festhalten, dass sich nach so langer Zeit langsam wirklich mal etwas tut. Mit ein wenig Glück ist die MKL in ein zwei weiteren Releases raus aus der Misere, was wirklich für alle Anwender sehr wünschenswert wäre.
 
  • Gefällt mir
Reaktionen: CableGuy82, Smartbomb, Fritzler und 2 andere
Salamimander schrieb:
Die neue Version macht:

if CPU == Intel; then avx(); elif CPU == amd non-avx-amd(); else non-avx()
Das lese ich nicht aus dem Post. Was dort steht ist, dass es für manche Funktionen einen extra Pfad für zen gibt -- der vermutlich auch avx verwendet -- aber bei anderen Funktionen noch die alte Intel/nicht Intel Unterscheidung getroffen wird.
 
  • Gefällt mir
Reaktionen: jonderson
Wie genau nun der SourceCode aussieht, weis auch nur Intel. Am einfachsten wäre aber eigentlich soetwas:

Code:
CPU_FEATURES=getFeatures();
CPU_FAMILY=getVendor();


getFastestCodePath(){
    for Path in CPU_FEATURES; do
        [...]
    done
}


CodePath=getFastestCodePath();

getFunctionsByVendor(){
    if CPU_FAMILY==AMD; then
        [...]
    elif CPU_FAMILY==Intel; then
        [...]
}

Ja da fehlt Kram, soll aber veranschaulichen was ich meine.
Es wird erstmal Pauschal der schnellste Pfad verwendet und im Anschluss gibt es dann die Optimierungen. Wie gesagt, der Zweite Part ist Intels Recht und damit habe ich kein Problem. Es muss aber Grundsätzlich das schnellste genommen werden, als "Default" und nicht das langsamste, weil Intel das so will... Das es jetzt bei Functions ggf sogar einen Ryzen Pfad gibt ist löblich, macht mir aber mehr Sorgen als alles andere :D (Insbesondere, weil es auch mit Faken des Vendor Problemfrei läuft)
 
  • Gefällt mir
Reaktionen: CableGuy82, Smartbomb, Iscaran und eine weitere Person
DocWindows schrieb:
Das hat nichts mit einer Programmbibliothek zu tun die in Softwareprodukte integriert wird und die wiederum auf einer Vielzahl an Prozessoren ausgeführt wird.

Und was glaubst du was los wäre wenn Apple ihre Hardware von verschiedenen Anbietern einkaufen müsste
Machen sie ja bald, wenn sie von x86 auf ARM umsteigen und auch dann werden deren SW Produkte noch weniger alle auf anderer Hardware als ihrer eigenen laufen. Keine Ahnung woher man eine Verpflichtung ableitet, dass Intel seine Software auch auf den CPUs anderer Hersteller lauffähig machen muss, geschweigen denn das sie auch noch optimal darauf laufen muss, 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. Niemand hindert AMD daran seine eigene Alternative zur MKL, die es ja gibt, selbst weiter zu entwickeln, auf seine neusten CPUs zu optimieren und die Hersteller von Software zu überzeugen diese dort an einzusetzen. Also warum machen sie es nicht? Warum wird Intel dafür kritisiert nicht die Arbeit zu machen die AMD machen sollte? Ich haben bisher kein schlüssiges Argument dafür gesehen, von Marktbeherrschung kann ja wohl angesichts der Alternativen, auch Open Source, kaum die Rede sein und weil es kein Treiber ist: Wo ist denn die Version von RYZEN Master die auch Intel CPUs übertakten kann? RYZEN Master ist ja auch kein Treiber!
 
  • Gefällt mir
Reaktionen: SeppoE
@Holt und @calluna

Wie um alles in der Welt kann man sowas verteidigen?

Intel tut sich aber auch aktuell keinen Gefallen um zu Gefallen...

Die gute Nachricht daran. Die Konkurrenz wird ernster genommen denn je.
Komisch das derlei News immer kurz vor Release neuer Zen CPUs kommen.
 
  • Gefällt mir
Reaktionen: CableGuy82 und Fritzler
Holt schrieb:
Niemand hindert AMD daran seine eigene Alternative zur MKL, die es ja gibt, selbst weiter zu entwickeln, auf seine neusten CPUs zu optimieren und die Hersteller von Software zu überzeugen diese dort an einzusetzen. Also warum machen sie es nicht?

Da stimme ich durchaus zu, aber trotzdem ist deine Kritik nicht differenziert. MKL ist die Implementation von (hauptsächlich, aber nicht nur) linearer Algebra. Das ist weder vergleichbar mit Treibern, noch mit Ryzen Master.

Es wäre ein leichtes für Softwarehersteller sich gegen Intel MKL und für OpenBLAS zu entscheiden. Zumindest in der Entwicklungsphase. Später umzusteigen dürfte schwieriger sein, aber nicht unmöglich.
 
  • Gefällt mir
Reaktionen: CableGuy82
Salamimander schrieb:
Dont feed the Intel calluna Troll!

Haha... sehr witzig, der Intel-Calluna-Troll mit der AMD-CPU und OpenBlas... und bald einem neuen MacBook mit ARM-CPU. ;-)

Mich erinnert das an den Ideologie-Verdacht bei politischen Diskussionen.

@Inxession

Ich verteidige es, weil ich es ganz genau so machen würde - und ich nehme da verschiedene Perspektiven ein, nicht nur meine als Kunde.
 
  • Gefällt mir
Reaktionen: CableGuy82
Kann man Euch noch irgendwie Unterstützen hier? Ich hätte noch einen Threadripper 3990x am Start, allerdings keine Ahnung, wie man den Test aufsetzen müsste etc.
 
DocWindows schrieb:
MKL ist die Implementation von (hauptsächlich, aber nicht nur) linearer Algebra.
Und, dies kann doch jeder selbst schreiben, die Welt ist voller Software die nur auf bestimmter Hardware läuft, wo gibt es eine rechtliche Grundlage die dies verbietet?
mae schrieb:
Wieso glaubst Du das?
Weil das hier im Thread jemand behauptet hat, aber AMD die gepflegt hat, umso besser. Wäre mal interessant ob und wie die auf schnell Intel CPUs läuft.
 
Miuwa schrieb:
Ist eigentlich bekannt, welchen Mechanismus Intel verwendet um zu entscheiden welche Features auf intel CPUs verwendet werden? Werden da die Feature Flags der CPU ausgelesen oder ist da ne eigene Liste hinterlegt, welcher Pfad für welche CPU genutzt werden soll?

Ja ist seit Jahren bekannt. Agner Fog (my own findings) Auch der Workaround ist alles andere als neu. Es wird für einzelne Architekturen optimiert was auch Sinn ergibt (unterschiedliche Latenzen bei gewissen Befehlen, Unterschiedliche L1,L2- Cachegrößen etc.). Allerdings fallen nicht bekannte Intel Modelle auf einen relativ gut optimierten Codepfad (default zB. AVX2), AMD Modelle auf den Legacy Codepfad.
 
  • Gefällt mir
Reaktionen: CableGuy82, floTTes und Miuwa
Holt schrieb:
Meine IL hat mit SaschaHa einen weiteren Eintrag, denn als Troll lasse ich mich nicht beleidigen.
Dann füge mich am besten direkt dazu. Ich fand seine Beschreibung eher generös. Mehr sage ich dazu besser nicht.

@calluna
Was versuchst du denn damit zu erreichen hier hundert mal nach Beweisen zu fragen?
Die juristische Bewertung können wir hier sicher nicht leisten. Da uns für die Beweisführung eben die vollständigen Beweise - die du verlangst - fehlen. Das liegt in der Natur der Sache.
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.
Die Frage die sich an dieser Stelle ergibt, um eine Moralische Bewertung zu treffen, und das wird an dieser Stelle von Intel-Verteidigern nicht einmal wirklich aufgeführt.
Gilt die intel-freundliche Annahme der Quelle "sgemm is not yet implemented", und damit die Annahme dass Intels Ziel irgendwann wäre gleiche Bedingungen bei gleichem Featureset zu schaffen.
Und das darf man ja nicht vergessen, wenn beide Lager AVX512 unterstützen, dann darf intel durchaus an der Umsetzung arbeiten, so dass sie die Ergebnisse des AVX512-Befehlssets schneller liefern.
Wenn aber wie hier wieder mal vorgefallen, es bei intel-Software, ausreicht sozusagen den CPU-Namen zu ändern damit die Software schneller läuft, dann ist es moralisch schwer zu verteidigen. Dass dies kein aktiver Prozess war um die Konkurrenz-CPU(oder möglicherweise sogar die eigenen alten Generationen) schlechter da stehen zu lassen, scheint unwahrscheinlich; bei diesem Unternehmen, welches solche Praktiken schon seit langem durchführt.
Und du bist da auch auf dem falschen Dampfer, es ist nicht intel vs AMD. Es ist immer intel vs den Konsumenten.
Das Ziel ist offensichtlich die eigenen aktuellen CPUs schneller erscheinen zu lassen, als sie tatsächlich sind.
Die Praxis ist gut vergleichbar mit den Dieselskandalen in der Autoindustrie. Wobei es dort wenigstens einen regen Konkurrenzkampf gibt. Und trotzdem hat man erkannt, dass es vor allem um Konsumententäuschung ging.
 
  • Gefällt mir
Reaktionen: CableGuy82, Baal Netbeck, rarp und eine weitere Person
Zurück
Oben