Archiwa tagu: pcie 2.0

Co tak naprawdę „zapycha” szynę w eGPU ?

PCI_Express_logo-660x268

Pytanie na które długo nie byłem sobie w stanie odpowiedzieć. To że skrócona szyna PCI-E do x1 2.0 w niektórych grach ograniczała wartość fps lub powodowała sporadyczne, lecz irytujące spadki wiedziałem od dawna. To że problemem była komunikacja CPU<->GPU przez tę szynę domyśliłem się niedawno. Ale co tak naprawdę powodowało, że szyna oferująca prawie 630MB/s w obie strony zapychała się, dowiedziałem się dopiero dzisiaj przy okazji testów gry Wolfenstein: The New Order opartej na OpenGL i silniku id Tech 5…

Wąskim gardłem jest procesor. A raczej wypełnienie obiektów teksturami przez procesor. Generalnie jest to całkowicie słuszna zmiana optymalizacyjna. Dzisiejsze gry w bardzo małym stopniu wykorzystują wielowątkowość procesora dlatego każda zmiana która odciąża kartę graficzną jest chwalebna. A przecież wypełnianie obiektów teksturami jest na tyle prostą czynnością, że procesor w zupełności powinien sobie z tym poradzić.

W przypadku eGPU optymalizacyjna zmiana „na plus” okazuje się jednak fatalną decyzją. Jeśli bowiem w VRAM mam zaalokowane 1GB tekstur to przesłanie ich do procesora przez skróconą szynę by ten je powstawiał, a potem przesłał efekt końcowy z powrotem do GPU musi spowodować gigantyczne spadki fps. Właśnie to obserwujemy w takich grach jak wspomniany wcześniej Wolfenstein: The New Order, Total War: Rome II, Total War: Shogun II, czy w dość ograniczonym na szczęście stopniu w serii Battlefield oraz Crysis 3.

Uściślając, problem występuje we wszystkich grach w których tekstury są wypełniane dynamicznie (tylko w obrębie pola naszego widzenia) przez CPU. Tam gdzie tekstury wstawiane są „na stałe” podczas „ekranu wczytywania” problem z szyną nie występuje. Do takich gier należy m.in. Natural Selection 2 (występuje tam tkz. „precaching”), seria Half Life (słynny „paseczek” między etapami nawet tej samej mapy) czy Metro: Last Light (również ekrany ładowania między misjami). Ciekawym wyjątkiem jest Wiedźmin 2, w którym tekstury również były nakładane „w tle” (przykładowo wejście do karczmy we Flotsam u mnie często najpierw wyświetlało „plastelinowe” obiekty, a sekundę potem właściwe tekstury). Podejrzewam jednak, że w naszej polskiej superprodukcji końcowym etapem wypełniania teksturami zajmuje się jednak GPU co by potwierdzało znikome użycie CPU.

W Wolfenstein: The New Order zaobserwowałem inne bardzo interesujące zjawisko – nawet na włączonej obsłudze tekstur przez CPU (vt_maxPFF >0) jeśli stanąłem w miejscu, nie poruszyłem myszą ani nie kliknąłem w klawiaturę to w ciągu 2 sekund fps z 10-15 rósł samoistnie do 60. Każda, nawet najmniejsza „zmiana stanu” powodowała drop z powrotem do 10-15fpsów. Wniosek – CPU na nowo musiał przeliczyć i powstawiać tekstury w „nowym polu widzenia”. Na szczęście engine zastosowany w tej grze pozwala przełączyć te operacje z powrotem na GPU co znacznie zwiększy ilość fps kosztem tego, że zapełnianie tychże obiektów teksturami potrwa dłużej (przez co przez ułamek sekundy możemy ujrzeć niewyraźne, „plastikowe” ściany).

Prognoza na przyszłość jest raczej dla eGPU niewesoła. Coraz więcej gier to sandboxy w których głównym zadaniem programistów jest ukryć wszelkie doczytywania lokacji i tekstur „w tle”. jeśli udział CPU w takich operacjach będzie częstszy, a engine gry nie pozwoli na zmianę w pliku konfiguracyjnym, będziemy mieć do czynienia z bardzo dużym ograniczeniem przez szynę w przypadku eGPU.

FAQ: eGPU działa ale według GPU-Z karta pracuje tylko na 1.1Opt a z pewnością mam adapter i nowego laptopa który posiada ExpressCard na PCI-E 2.0

Znów musisz sprawdzić kilka sytuacji:

  • być może 1.2Opt w Twoim laptopie uruchomi się automatycznie tylko wtedy gdy będzie potrzebne. Spróbuj w GPU-Z odpalić test diagnostyczny (render test) i w czasie testu obserwuj czy karta „wskoczy” w 2.0
  • w panelu sterowania Nvidii spróbuj przełączyć „preferowany procesor graficzny” w zakładce „zarządzanie ustawieniami 3D” na eGPU i znów ponów test w GPU-Z
  • sprawdź w BIOSie – być może możesz przełączać EC Gen1<->Gen2 jak w HP Elitebooku 8460p
  • i znów jeśli wszystko zawiedzie potrzebujesz Setup 1.x

„Podobno” niektórym pomagał również format i przeinstalowanie systemu.

FAQ: Czy monitor jest koniecznie potrzebny do eGPU ?

To zależy od sytuacji którą opisałem wcześniej. Jeśli masz laptop który obsługuje Optimusa możesz grać bezproblemowo w pełnym ekranie na matrycy laptopa. Sytuacja jest jeszcze lepsza jeśli masz laptop z PCI-E 2.0 ponieważ zwiększy to przepustowość kabla do 5Gbps w każdym kierunku – to wystarcza by wydajne karty graficzne pracowały na 100% swoich możliwości w większości gier.

Z drugiej strony zastosowanie zewnętrznego monitora nie tylko pozwoli grać w wyższych rozdzielczościach z lepszą jakością obrazu (małe laptopy stosowane w eGPU mają zazwyczaj zwykłe matryce HD) ale również pozwoli zastosować tańszą i często wydajniejszą kartę AMD.

Wybór należy do Ciebie.

FAQ: Polecane karty graficzne do eGPU

Przy wyborze weź pod uwagę że Twoją kartę graficzną i tak będzie ograniczał w grach mobilny procesor (najprawdopodobniej 2-rdzeniowy) oraz przepustowość samego łącza. Z tego względu nie ma sensu za bardzo szarżować. Po co kupować coś co wykorzystasz w 50%?

Ze starszych kart dobrym kompromisem są więc tutaj karty: GTX460 1024, GTX560, GTX560Ti, GTX570, GTX660, GTX760, GTX770 po stronie Nvidii oraz HD6850, HD6870, HD7850, HD7870 po stronie AMD.

Z nowszych kart na chwilę obecną najlepszy stosunek ceny do wydajności posiada GTX1060 6GB, ale równie dobrze sprawdzą się GTX1060 3GB, GTX1050Ti, GTX970 oraz GTX960 4GB. Ze strony AMD konkurencyjne cenowo modele to RX 470 oraz RX 480.

Przy wyborze karty warto zwrócić uwagę na ilość pamięci vRAM. W przypadku eGPU – więcej vRAMu może oznaczać, że gra zaalokuje wszystkie potrzebne tekstury bezpośrednio do karty graficznej minimalizując w ten sposób przesył wąskim gardłem przez skróconą szynę.

Uwaga – karty z serii x50/x50Ti (np. GTX650, GTX650Ti, GTX650Ti TurboBoost) oraz wszystkie wymienione wyżej nowe karty od serii 9xx wzwyż mają większe zapotrzebowanie na alokację w pamięci (rośnie ryzyko konieczności DSDT i użycia Setupa do konfiguracji):

Suggest purchase a GTX660 or GTX560Ti over a GTX650Ti/GTX650 if PCI space is tight. The GTX650-series has the unusual requirement of 256MB+32MB of PCI space making them more difficult to accomodate. This differs to the other NVidia cards that require 128MB+32MB+16MB. I’ve had three DIY eGPU users resorting to a DSDT override in order to accomodate those cards.

FAQ: Czemu warto wybrać kartę AMD do eGPU ?

Dobry wybór jeśli masz zamiar grać na zewnętrznym ekranie oraz posiadasz laptop i adapter obsługujące PCI-E 2.0. Wówczas strata Optimusa nie jest aż tak dotkliwa a w zamian masz możliwość wyboru zdecydowanie tańszych, często wydajniejszych i chłodniejszych kart AMD. Świetnie ilustruje to ostatni test nando4 znajdujący się TUTAJ. Trzeba jednak pamiętać że karty AMD mają wyższe wymogi dotyczące zajmowanej pamięci (memory space) stąd mogą wystąpić problemy z TOLUDem.