sse

Pliki nagłówkowe dla x86 SIMD

Które pliki nagłówkowe zapewniają wewnętrzne elementy dla różnych rozszerzeń zestawów instrukcji x86 SIMD (MMX, SSE, AVX, ...)? Wydaje się niemożliwe, aby znaleźć taką listę w Internecie. Popraw mnie, jeśli się mylę.

Jak sprawdzić, czy procesor obsługuje zestaw instrukcji SSE3?

Czy poniższy kod jest poprawny, aby sprawdzić, czy procesor obsługuje zestaw instrukcji SSE3? Używanie funkcji IsProcessorFe ... ewInstructions = (CPUInfo[2] & 0x1) || false; return bSSE3NewInstructions; } return false; }

Pierwsze kroki z instrukcjami Intel X86 SSE SIMD

Chcę dowiedzieć się więcej o używaniu SSE . Czego można się nauczyć, poza oczywistym czytaniem podręczników programisty Architektur Intel® 64 i IA-32 ? Głównie interesuje mnie praca z wbudowanymi funkcjami GCC X86.

Jakie jest znaczenie "non temporal" dostępu do pamięci w x86

Jest to pytanie nieco na niskim poziomie. W zestawie x86 znajdują się dwie instrukcje SSE: MOVDQA xmmi, m128 I M ... NT w movntdqa oznacza Non-Temporal, a poza tym jest to to samo co MOVDQA. Moje pytanie brzmi, co oznacza nie-czasowy ?

Dlaczego Skalar SSE sqrt(x) jest wolniejszy niż rsqrt(x) * x?

Profilowałem część naszej podstawowej matematyki na Intel Core Duo i patrząc na różne podejścia do pierwiastka kwadratowego z ... elów testowych: to, co naprawdę próbuję zmierzyć, to wydajność Skalar do użycia w kodzie, który nie może być wektoryzowany.)

SSE intrinsic functions reference [zamknięta]

Czy ktoś wie o referencji wymieniającej działanie funkcji wewnętrznych SSE dla gcc, czyli funkcji w pliki nagłówkowe? Dzięki.

Używanie instrukcji procesora AVX: słaba wydajność bez " / arch: AVX"

Mój kod C++ używa SSE i teraz chcę go poprawić, aby wspierać AVX, gdy jest dostępny. Wykrywam więc, kiedy AVX jest dostępny i ... trinsics i generuje kod SSE bez żadnych opcji kompilatora, takich jak /arch:SSE. Ale dla AVX to nie działa z jakiegoś powodu.

Jak określić, czy pamięć jest wyrównana?

Jestem nowy w optymalizacji kodu za pomocą instrukcji SSE/SSE2 i do tej pory nie zaszedłem zbyt daleko. Według mojej wiedzy p ... iepodpisanych pamięć do rejestrów SSE wydaje się być strasznie wolna (nawet wolniejsza niż zwykły kod C). Z góry dziękuję...

Najszybszy sposób na wykonanie poziomej sumy wektora zmiennoprzecinkowego na x86

Masz wektor trzech (lub czterech) pływów. Jaki jest najszybszy sposób ich podsumowania? Czy SSE (movaps, shuffle, add, movd) ... "spróbuj uporządkować rzeczy tak, aby można było zsumować cztery wektory na raz" nie będzie akceptowane jako odpowiedź. :-)

Jak wykryć dostępność SSE/SSE2/AVX/AVX2/AVX-512/AVX-128-FMA/KCVI w czasie kompilacji?

Próbuję zoptymalizować niektóre obliczenia macierzy i zastanawiałem się, czy jest możliwe wykrycie w czasie kompilacji, jeśli ... Corner Vector Optymalizacja instrukcji. Biblioteki takie jak FFTW wykrywają/wykorzystują te nowsze optymalizacje instrukcji.

W jaki sposób dane wektora są wyrównane?

Jeśli chcę przetwarzać dane w {[0] } z SSE, potrzebuję wyrównania 16 bajtów. Jak mogę to osiągnąć? Czy muszę pisać własny alokator? A może domyślny alokator jest już wyrównany do granic 16 bajtów?

Rozwijanie pętli w celu osiągnięcia maksymalnej przepustowości dzięki Ivy Bridge i Haswell

Obliczam osiem produktów dot na raz z AVX. W moim obecnym kodzie robię coś takiego (przed rozwinięciem): Ivy-Bridge / Sand ... &c[5*vec_size], tmp5); _mm256_storeu_ps(&c[6*vec_size], tmp6); _mm256_storeu_ps(&c[7*vec_size], tmp7); }

Dlaczego ten kod SSE 6 razy wolniejszy bez VZEROUPPER na Skylake?

Próbowałem rozgryźć problem wydajności w aplikacji i w końcu zawęziłem go do naprawdę dziwnego problemu. Poniższy fragment ko ... ochę mieszać z montażem i instrukcje float są tak samo złe jak podwójne. Nie mogłem też wskazać problemu na jedną instrukcję.

Programowanie równoległe z wykorzystaniem architektury Haswell [zamknięty]

Chcę się dowiedzieć o programowaniu równoległym z wykorzystaniem mikroarchitektury procesora Intela Haswell. O używaniu SIMD ... . 2, AVX2 w asm / C / C++ / (jakieś inne langy)?. Czy możesz polecić książki, tutoriale, Zasoby Internetowe, kursy? Dzięki!

Jak używać instrukcji Fused Multiply-Add (FMA) z SSE / AVX

Dowiedziałem się, że niektóre procesory Intel / AMD potrafią jednocześnie mnożyć i dodawać z SSE / AVX:FLOPS na cykl dla sand ... ll)? Czy _mm_add_ps(sum, _mm_mul_ps(a1, b1)) jest automatycznie konwertowana na pojedynczą instrukcję FMA lub mikroprocesor?

SSE, intrinsics, and alignment

Napisałem klasę wektorową 3D używając wielu kompilatorów SSE. Wszystko działało dobrze, dopóki nie zacząłem instalować klas m ... inicji klasy nie wystarczy? Jaki jest najlepszy sposób radzenia sobie z problemami wyrównania wynikającymi z SSE intrinsics?

C++ SSE SIMD framework [zamknięty]

Czy ktoś zna otwartoźródłową bibliotekę C++ x86 SIMD? Intel dostarcza dokładnie to, czego potrzebuję w ich zintegrowanej bi ... e. EDIT Znam już wewnętrzne elementy dostarczane przez kompilatory. Potrzebuję wygodnego interfejsu, by z nich korzystać.

Korzystanie z instrukcji SSE

Mam pętlę napisaną w C++, która jest wykonywana dla każdego elementu Wielkiej tablicy liczb całkowitych. Wewnątrz pętli masku ... e, jeśli mój kod będzie działał na innym procesorze? Czy nadal będzie działać lub te instrukcje są specyficzne dla procesora?

najlepsza wieloplatformowa metoda uzyskania wyrównanej pamięci

Oto kod, którego zwykle używam do wyrównania pamięci z Visual Studio i GCC inline void* aligned_malloc(size_t size, size_t ... nej funkcji _mm_free, chociaż w niektórych implementacjach można przekazać wskaźniki z _mm_malloc do standardu free / delete.

Wspólne techniki SIMD

Gdzie mogę znaleźć informacje o popularnych sztuczkach SIMD? Mam zestaw instrukcji i wiem, jak napisać nietrudny kod SIMD, al ... hnik SIMD też są dobre:) ARMv6 jest najbardziej ciekawe dla mnie, ale x86 (SSE,...) / Neon (W ARMv7) / inne też są dobre.