2012-12-24 18 views
11

Nie mogę znaleźć ich w Intel Intrinsic Guide v2.7. Czy wiesz, czy zestawy instrukcji AVX lub AVX2 je obsługują?Inteligencja rozproszenia w AVX

+2

Zgromadzone ładunki: http://software.intel.com/sites/products/documentation/studio/composer/en-us/2011Update/compiler_c/intref_cls/common/intref_bk_avx2_masked_gather.htm - I don” t widzimy rozproszonego sklepu instrinsics choć –

+2

From RWT: _ [AVX2 nie zawiera instrukcji rozproszonych (tj. adresowanych sklepów wektorowych), z powodu komplikacji z modelem zamawiania pamięci x86 i buforami ładowania/przechowywania.] (http: // www .realworldtech.com/haswell-cpu/2 /) _ – Stringer

Odpowiedz

15
  • Nie ma rozrzut lub zebrać instrukcje w oryginalnej instrukcji AVX zestawu.

  • AVX2 dodaje zbieranie, ale nie rozrzuca instrukcji.

  • AVX512F zawiera instrukcje dotyczące rozpraszania i zbierania.

  • AVX512PF dodatkowo zapewnia warianty pobierania i rozrzucania z wyprzedzeniem.

  • AVX512CD dostarcza instrukcje wykrywania konfliktów w adresach rozproszonych.

  • Intel MIC (inaczej Xeon Phi, Knights Corner) zawiera instrukcje zbierania i rozpraszania, ale jest oddzielnym koprocesorem i nie może normalnie pracować z kodem x86-64.

+0

Jaki kod x86_64 nie działa w KNC? – Jeff

+1

@Jeff No it does not! KNC ma nawet osobny typ maszyny ELF: –

+1

@Jeff: KNL (Knight's Landing) powinien uruchomić kod maszynowy x86_64, prawda? Będzie nawet dostępny jako procesor hosta, a nie tylko koprocesor. –

8

Jak wskazano w innej odpowiedzi, na razie nie można zaimplementować rozproszenia, nawet w przypadku AVX2. Jednak podręcznik do optymalizacji Intel dostarcza nam ręcznie napisaną wersję operacji rozproszonej. Jest na stronie 11-17 z podręcznika do optymalizacji Intela 2013. Zasadniczo robią to, że czytają indeks za każdym razem i zapisują go w rejestrze ogólnego przeznaczenia, powiedzmy, rax, a następnie przesyłają poprawną liczbę do rejestru xmm przy użyciu rzeczy takich jak vpalignr. Następnie przechowujemy wynik w pamięci za pomocą polecenia vmovss --- przenieś pojedynczy skalar do pamięci. Wydaje mi się, że będzie to miało niską wydajność, ale sądzę, że jest to jedyny sposób na rozproszenie rozproszenia danych w architekturze procesora X86. Na Xeon Phi rzeczy są piękne, zapewniają natywne wsparcie dla operacji rozpraszania, a pierwszym opiem jest oczywiście lokalizacja pamięci. Więc wierzę, że jeśli twój kod wymaga dużo zebrania i rozproszenia, przejście na Xeon Phi będzie dobrym wyborem. Proszę odpowiedzieć, aby powiedzieć mi, czy coś jest nie tak w mojej odpowiedzi.

Powodzenia!

xiangpisaiMM

+1

Dzięki za twój wgląd, moja nadzieja jest bardziej w AVX3 (ponieważ prawdopodobnie przyniesie rozproszenie natywne dzięki unifikacji instrukcji simd Core i MIC). – Stringer

+0

przesuń, a następnie przechowuj dźwięki wolniej niż za pomocą 'extractps', ponieważ element do wyodrębnienia jest stałą czasu kompilacji. A może ta sama prędkość, ale mniejszy rozmiar kodu, ponieważ wciąż musi korzystać z portu przetasowania. –

+0

@xian, Czy istnieje sposób, aby się z Tobą skontaktować? – Royi

Powiązane problemy