2009-07-07 12 views
9

Jaki jest mój najlepszy zakład do obliczenia iloczynu iloczynu wektora x z dużą liczbą wektorów y_i, gdzie x i y_i mają długość 10k lub mniej.Dot product - SSE2 kontra BLAS

  1. Przełóż y w macierzy i użyj zoptymalizowanej procedury s/dgemv?
  2. A może spróbuj ręcznie kodować rozwiązanie SSE2 (nie mam SSE3, zgodnie z cpuinfo).

Po prostu szukam ogólnych wskazówek tutaj, więc wszelkie sugestie będą przydatne.
I tak, potrzebuję wydajności. Dzięki za każde światło.

+0

Które kompilatora używasz? –

Odpowiedz

4

Myślę, że procesory graficzne są specjalnie zaprojektowane do szybkiego wykonywania takich operacji (między innymi). Więc prawdopodobnie będziesz mógł korzystać z bibliotek DirectX lub OpenGL do wykonywania operacji wektorowych. D3DXVec2Dot Spowoduje to również oszczędność czasu procesora.

+2

D3DXVec2Dot nie korzysta z GPU. Poza tym widzisz jedynie przyspieszenie z programów GPGPU, kiedy przekształcasz bardzo duże zbiory danych lub używasz bardzo "drogich" programów na GPU. Wynika to z kosztu ustawienia GPU do wykonania pracy, a następnie odczytania wyniku. Każdy transfer danych do/z GPU jest bardzo kosztowną operacją. – Christopher

+0

Trudno przebić produkt dotacyjny DirectX, jeśli liczba spławików jest wystarczająca. –

+0

Obecne procesory są również zdolne do wykonywania tego rodzaju przetwarzania. –

0

Ręczne kodowanie rozwiązania SSE2 nie jest bardzo trudne i przyniesie miłe przyspieszenie w czystej procedurze C. To, jak bardzo to spowoduje procedurę BLAS, musi zostać określone przez ciebie.

Największe przyspieszenie uzyskuje się, przekształcając dane w format, dzięki czemu można wykorzystać paralelność i wyrównanie danych.

1

Alternatywy dla zoptymalizowanych Blas rutyny:

  • Jeśli używasz kompilatory Intel, możesz mają dostęp do intel MKL
  • dla innych kompilatorów ATLAS zwykle dostarcza miłych liczby spełnienia
0

używam a GotoBLAS. Jest to rutynowa procedura jądra wydajności. Wiele razy lepsze niż MKL i BLAS.

+0

występują problemy z licencjonowaniem z grzebaczem. –