Frage

(Sorry, wenn das klingt wie ein rant, aber es ist eine echte Frage und ich würde echte Antworten schätzen)

Ich verstehe, dass da C so alt ist, ist es vielleicht nicht sinnvoll gewesen, um es hinzuzufügen damals (MMX selbst gab es damals noch nicht zurück). Aber seitdem war es C99, und es gibt noch keinen Standard für die SIMD-Variablen (soweit ich weiß).

Mit dem "SIMD Variablen", ich meine, so etwas wie:

vec2_int a = {2, 2};
vec2_int b = {3, 3};
a += b;

Ich verstehe auch, dass dies mit structs und (theoretisch) durchgeführt werden kann der Compiler optimieren sollte es SIMD zu verwenden, wenn entsprechende sowieso.

Aber ich sehe vor kurzem einen Beitrag von Qt Labs , die ein Beispiel mit Typen wie „__m128i“ enthält (die eindeutig nicht-Standard aussehen), anstatt auf Optimierungen zu verlassen. In Anbetracht Qt bewirbt diese als stark Qt-Geschwindigkeit zu verbessern, vermute ich Compiler-Optimierungen unzureichend, für einige Programmierer zumindest zu sein.

Wenn es nur C ist, würde ich denken, C dumm wurde. Aber soweit ich weiß, neuere Sprachen wie C ++, Java und C # nicht enthalten diese auch nicht. C # hat Mono.SIMD aber es ist nicht eine primitive Art (und da C # ein „dezimal“ Schlüsselwort hat, ich glaube nicht, dass sie versuchen, Typen zu speichern).

Also hier ist, was ich zu bemerken: Sprachen mit Vektor primitiven Typen scheinen die Ausnahme und nicht die Regel zu sein. Weil Vektor primitive Typen so offensichtlich aussehen, ich vermute, es muß einige gute Gründe, diese Typen nicht enthalten.

Hat jemand hier wissen, warum diese Art so häufig ausgeschlossen? Einige Links zu rationalen gegen sich hinzufügen?

War es hilfreich?

Lösung

Da nicht alle Prozessoren SIMD-Befehle unterstützen. Sprachen wie C und C ++ (und sogar Java und C #) sind so konzipiert, auf verschiedene Arten von Hardware verwendet werden, wie Mikrocontroller, zusätzlich zu Desktop-Computern.

Derzeit Vektorisierung von Algorithmen ist nicht automatisch (obwohl das aktiv erforscht wird). Algorithmen, die „vektorisierbare“ müssen explizit geschrieben, um die Vorteile einer SIMD-Funktionen der Ausführungsumgebung.

sind
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top