2011-06-19 11 views
6

Pracuję w optymalizacji algorytmu za pomocą instrukcji SSE2. Ale ja napotkasz ten problem, kiedy testuje wydajność:Program SSE zajmuje dużo więcej czasu na AMD niż na Intel

I) Intel E6750

  1. Doing 4 razy algorytm bez SSE2 zajmuje 14.85 sekund
  2. Doing 1 raz algorytmu SSE2 (procesy te same dane) wykonuje 6,89 sekundy

II) Phenom II x4 2,8 GHz

  1. Robi 4 Czasy algorytm nie bierze SSE2 11,43 sekundy
  2. Doing 1 raz algorytm SSE2 (przetwarza te same dane) wykonuje 12.15 sekund

ktoś może mi pomóc, dlaczego tak się dzieje? Jestem naprawdę zdezorientowany wynikami.

W obu przypadkach kompiluję za pomocą g ++, używając opcji -O3 jako flagi.

PS: Algorytm nie używa matematyki zmiennoprzecinkowej, używa instrukcji liczb całkowitych SSE.

+0

Prawie dwa razy dłużej z tym samym binarnym, a na procesorze, który jest taktowany wyżej i (zakładając "Deneb") ma taki sam rozmiar pamięci podręcznej? Bummer. Jedyne co mogłem wymyślić to to, że wykonujesz wiele tasowań, ponieważ mają one trzykrotne opóźnienie w tej generacji procesorów AMD w porównaniu z tą generacją procesorów Intela (wygląda inaczej w najnowszej generacji). Inne instrukcje z pewnością mogą mieć tu i ówdzie mniej lub więcej cykle, ale w sumie nie powinny działać dwa razy wolniej. (Procesory AMD są również znane z "opóźnienia formatowania", ale ponieważ nie miesza się float/int, nie powinno to mieć znaczenia.) – Damon

+0

Różnica powyżej 20% brzmi dziwnie. Jaka jest wersja AMD Phenom? L1/L2/L3 Rozmiary pamięci podręcznej? Jaka jest implementacja algorytmu? – alecco

Odpowiedz

3

Firma Intel poczyniła znaczne postępy w implementacji SSE w ciągu ostatnich 5 lat, czego AMD tak naprawdę nie nadąża. Początkowo obie były tak naprawdę tylko 64-bitowymi jednostkami wykonawczymi, a 128-bitowe operacje podzielono na 2 mikrooperacje. Odkąd Core i Core 2 zostały wprowadzone, procesory Intela miały pełną 128-bitową implementację SSE, co oznacza, że ​​128-bitowe operacje skutecznie zwiększyły 2x przepustowość (1 mikro op kontra 2). Nowsze procesory Intela mają także wiele jednostek wykonawczych SSE, co oznacza, że ​​można uzyskać> 1 instrukcję na przepustowość zegara dla 128-bitowych instrukcji SIMD.

+0

Wow. Nigdy nie myślałem, że to jest tak różne, kiedy kupiłem procesor w zeszłym roku = (teraz dostaję się do HPC i teraz rozumiem różnicę pieniędzy.) –

+0

Jeśli używasz SSE to Intel jest naprawdę jedyną grą w mieście, dla teraz przynajmniej dla kodu innego niż SIMD może nie być tak wielkiej różnicy, a procesory Intela są dość drogie, więc bang-per-buck nieco się wyrównuje. –

Powiązane problemy