simd

Einzelbefehl, mehrere Daten (SIMD) ist das Konzept, dass jeder Befehl an einem kleinen Block oder Vektor von Datenelementen arbeitet. Zu den CPU-Vektor-Befehlssätzen gehören: x86 SSE und AVX, ARM NEON und PowerPC AltiVec. Um SIMD-Anweisungen effizient zu verwenden, müssen Daten in Form von Arrays vorliegen und in längeren Datenströmen auftreten. Naively "SIMD optimized" -Code überrascht oft, indem er langsamer als das Original läuft.
2
Antworten

Wählen Sie die eindeutige / Deduplizierung in SSE / AVX

Problem Gibt es rechnerisch machbare Ansätze zur intraregistralen Deduplizierung einer Menge von ganzen Zahlen mit x86 SIMD-Anweisungen? Beispiel Wir haben ein 4-Tupel-Register R1 = {3, 9, 2, 9} und möchten das Register R2 = {3, 9, 2, N...
25.05.2012, 18:54
1
Antwort

Vectorize eine Funktion in Clang

Ich versuche, die folgende Funktion mit clang gemäß dieser Referenz zu vektorisieren. Es nimmt einen Vektor von Byte-Array und wendet eine Maske entsprechend diesem RFC an. %Vor% Die folgenden Flags werden an clang übergeben: %Vor% D...
20.05.2016, 16:11
3
Antworten

Wie man den Compiler anweist, nicht ausgerichtete Lasten für __m128 zu generieren

Ich habe Code, der mit __m128 -Werten funktioniert. Ich verwende x86-64 SSE intrinsics auf diesen Werten und ich finde, dass wenn die Werte im Speicher nicht ausgerichtet sind, bekomme ich einen Absturz. Dies liegt an meinem Compiler (in dies...
24.11.2015, 09:04
1
Antwort

Block-Matching-Optimierung mit x86 / x64 Streaming SIMD Extension

Das wird die allererste SO Frage sein, die ich posten werde! %Vor% Ich versuche, eine "Block-Matching" -Implementierung für eine Stereo-Vision-Anwendung unter Verwendung von Intels SSE4.2- und / oder AVX-Eigenarten zu optimieren. Ich verwe...
11.04.2013, 16:09
7
Antworten

Wie viel Beschleunigung durch die Umwandlung von 3D-Mathematik in SSE oder andere SIMD?

Ich verwende 3D-Mathematik in meiner Anwendung ausgiebig. Wie viel Beschleunigung kann ich erreichen, indem ich meine Vektor / Matrix-Bibliothek in SSE, AltiVec oder einen ähnlichen SIMD-Code umwandle?     
22.09.2008, 14:55
4
Antworten

Schnelles Zählen der Anzahl der gesetzten Bits im __m128i-Register

Ich sollte die Anzahl der gesetzten Bits eines __m128i-Registers zählen. Insbesondere sollte ich zwei Funktionen schreiben, die in der Lage sind, die Anzahl der Bits des Registers auf folgende Weise zu zählen. Die Gesamtzahl der gesetzten Bi...
27.06.2013, 23:37
3
Antworten

Wie unter Verwendung von SSE 16-Bit-Ganzzahl durch 255 zu teilen?

Ich beschäftige mich mit der Bildverarbeitung. Ich muss den 16-Bit-Integer-SSE-Vektor durch 255 teilen. Ich kann den Shift-Operator nicht wie _mm_srli_epi16 () verwenden, weil 255 kein Vielfaches von Potenz 2 ist. Ich weiß natürlich, dass...
09.02.2016, 06:28
4
Antworten

fehlt NICHT in SSE, AVX?

Ist es meine Einbildung, oder fehlt eine Anweisung PNOT von SSE und AVX? Das heißt, eine Anweisung, die jedes Bit im Vektor umlegt. Wenn ja, gibt es eine bessere Möglichkeit, es als PXOR mit einem Vektor aller 1s zu emulieren? Ziemlich...
05.03.2017, 20:50
6
Antworten

SSE-Code, um die float-Variable basierend auf dem Vergleich auf 0.0f oder 1.0f zu setzen

Ich habe zwei Arrays: char* c und float* f und ich muss diese Operation ausführen: %Vor% Ich suche nach einem schnellen Weg, es zu tun: ohne Bedingungen und mit SSE (4.2 oder AVX) wenn möglich. Wenn float anstelle von char zu...
30.10.2013, 14:56
2
Antworten

SSE2-Code-Optimierung

Ich verwende SSE2-Intrinsics, um die Engpässe meiner Anwendung zu optimieren, und habe die folgende Frage: %Vor% Beim Microsoft C ++ Compiler wird dies nicht kompiliert, weil die Typen __m128i und unsigned int (übergeben an _mm_sll_ep...
03.11.2011, 13:33