Angenommen, ich habe SSE SSE4.1- aber nicht AVX (2), was ist der schnellste Weg, um eine gepackte Speicherlayout wie diese zu laden (alle 32-Bit-Integer):Was ist der schnellste Weg, um eine SIMD-Sammlung ohne AVX (2) zu machen?
a0 b0 c0 d0 a1 b1 c1 d1 a2 b2 c2 d2 a3 b3 c3 d3
in vier Vektoren a, b, c, d
?
a: {a0, a1, a2, a3}
b: {b0, b1, b2, b3}
c: {c0, c1, c2, c3}
d: {d0, d1, d2, d3}
Ich bin nicht sicher, ob dies relevant ist oder nicht, aber in meiner eigentlichen Anwendung habe ich 16 Vektoren und als solche a0
und a1
sind 16 * 4 Bytes auseinander im Speicher.
Sie haben möglicherweise den Satz in meiner Frage über 16 Vektoren anstelle von 4 verpasst. Sollte ich wie 4 Transpositionen verwenden? – orlp
In der Tat - ohne zu wissen, was Sie mit all diesen Vektoren tun wollen, ist es schwierig, eine vollständige Lösung zu finden, aber ja, Sie können einfach die obigen Schritte für die restlichen 12 Vektoren in Gruppen von 4 wiederholen. –