Akceleracja PhysX na kartach ATI2009-10-04 17:39:23 | Michał Wójcik (majkel)
Wraz z premierą gier, które intensywnie korzystają z obliczania fizyki znaczenia nabiera technologia firmy nVIDIA o nazwie PhysX. Dziś pokażemy jak uruchomić to cudo posiadając kartę ATI.
Historia PhysX
PhysX to obecnie niemal najważniejsza wartość dodana kart nVIDIA. Obok niedawnego rebrandingu na "GeForce with CUDA" stanowi ważny argument przy zakupie grafiki. A to głównie dlatego, że AMD do swoich kart nie zaaplikowało żadnej konkurencji dla tego standardu. Jak wiemy, podobna sytuacja zdarzyła się w przypadku CUDA, ale szybko okazało się, że Radeony serii 4800 także to potrafią, a przede wszystkim radzą sobie w obliczeniach znacznie lepiej niż GeForce'y.
Wracając jednak do tematu, PhysX aktualnie nie posiada konkurencji. Co prawda ATI od dawna zapowiada swoje OpenCL i odpowiednie biblioteki wspierające obliczenia fizyki, ale jakoś nie możemy się tego doczekać.
Dlaczego zatem PhysX staje się coraz popularniejszy? To proste. PhysX jest po prostu fajny. Czy nie ciekawie jest bowiem wpatrywać się w zderzenia różnych obiektów i ich odbijanie się od przeszkód? Czy nie ciekawie jest obserwować realistyczne wybuchy? Poza tym, nawet efekty wiejącego wiatru, mgła, chmury czy po prostu cieknąca woda potrafią przykuć wzrok na parę minut.
Przy wielu równoległych obliczeniach matematycznych, uwzględniających grawitację, tarcie, szybkość wiatru i inne czynniki wymiękają nawet najszybsze procesory. Ale dedykowany i stosunkowo mocny układ graficzny jest już w stanie sobie z tym poradzić. Tak wielka różnica wynika z wyspecjalizowania GPU w dokładnie tym zadaniu. Jak wiadomo, akceleratory graficzne do pewnego czasu zajmowały się wyłącznie wyświetlaniem obrazu. Dopiero niedawno zaprzęgnięto ich jednostki wykonawcze do innych celów. Głównie chodzi tu o optymalizację kodu obliczeń. Procesory są stworzone do bardziej ogólnych zadań, dlatego w tym zastosowaniu ich wydajność nie powala.
W ostatnim czasie widzieliśmy sporo tytułów, które kładły nacisk na akcelerację fizyki. Były to m.in. Infernal, Cellfactor, Ghost Recon Advanced Warfighter 2, Mirror's Edge, Sacred 2, Cryostasis czy też nowy Batman Arkham Asylum.
Wszystko zaczęło się w 2006 roku, kiedy to firma AGEIA zaprezentowała światu akcelerator PhysX. Była to dodatkowa karta rozszerzeń na złącze PCI (o dziwo nawet wystarczało), przypominająca z wyglądu kartę graficzną. Urządzenie nie zdobyło jednak wielkiej popularności, głównie ze względu na bolączki wieku dziecięcego, a więc wysoką cenę oraz symboliczną wręcz ilość tytułów gier, w których można było zobaczyć jakiekolwiek efekty działania.
W 2008 roku firmę AGEIA przejęła nVIDIA, która w dość krótkim czasie zaimplementowała PhysX do swoich kart graficznych. GeForce'y, począwszy od serii 8, otrzymały przyrostek "with CUDA", co oznaczało m.in. fakt, że potrafiły obliczać fizykę w grach. Niestety włączenie tej akceleracji powodowało i powoduje wyraźne spadki wydajności, dlatego popularnym rozwiązaniem stało się dokładanie kolejnej karty (nie konfigurując rozwiązania SLI, a wykorzystując ją jedynie do obliczania fizyki).
Szybko okazało się, że pomimo, że nie potrzeba do tego dużej ilości pamięci vRAM ani szybkiego złącza (nawet PCIe x4 jest w porządku), to jednak karty z niższej półki potrafią się nieźle namęczyć. Obecnie mówi się, że rozsądnym rozwiązaniem są karty o mocy obliczeniowej na poziomie GF 8800GT wzwyż. W pewnych zastosowaniach wystarcza także GF 9600GT oraz nasz typ - GeForce 9600GSO, który jest rozwiązaniem szybszym niż wersja GT (a decyduje o tym 96 potoków przetwarzania oraz 192-bitowa szyna danych). Poza tym, ten ostatni jest jeszcze dostępny w bardzo rozsądnej cenie, gdyż w chwili obecnej jest wycofywany z rynku. Uczulamy w tym miejscu, by nie kupować 9600GSO wyposażonej w 128-bitową szynę oraz 512 czy nawet 1GB RAM. Wbrew pozorom posiadają one 48 potoków, a więc wydajność mniejszą nawet od 9600GT.
Wsparcie dla PhysX zaoferował także benchmark 3DMark Vantage, w którym można uzyskać sporo punktów więcej używając karty ze sprzętowym wsparciem fizyki. Stosunkowo szybko użytkownicy popularnych i wydajnych Radeonów HD zorientowali się, że dołożenie do konfiguracji GeForce'a da im lepsze wrażenia w grach, a także wyższy wynik w 3DMark Vantage. Zatem zaczęło się eksperymentowanie. Wbrew pozorom sterowniki nVIDIA oraz ATI nie "gryzą się" w systemie. Znane jest rozwiązanie umożliwiające zastosowanie konfiguracji NV+ATI w systemie Windows XP 32bit. W dzisiejszym artykule pokażemy jednak jak uruchomić PhysX przy pomocy karty NV w systemie Windows 7 32bit oraz 64bit.
ATI + PhysX = jak to włączyć?
W celu włączenia obliczania fizyki, w konfiguracji gdzie za generowanie obrazu odpowiada karta ATI, należy zastosować sterowniki poniżej wersji 185 lub najnowsze 190.xx z wykorzystaniem odpowiedniego oprogramowania modyfikującego niektóre pliki:
* Wersja pełna 32/64bit * Wersja lite 32/64bit (do stosowania w razie problemów z wersją pełną)
Patch należy zainstalować w systemie w następujący sposób:
1. Instalujemy kartę graficzną ATI. 2. Instalujemy sterowniki karty graficznej nVIDIA i nie restartujemy systemu. 3. Włączamy i uruchamiamy pobrane patche (wersja taka jak nasz system operacyjny - x86 lub x64). 4. Restartujemy komputer.
Jeżeli napotkacie błąd mówiący o tym, że "plik jest w użyciu" należy włączyć Managera Urządzeń i w zakładce Procesy zakończyć wszystkie pochodzące od nVIDII (nv***.exe) oraz explorer.exe (uruchamiamy go później klikając w Plik > Nowe zadanie > explorer).
Można ewentualnie spróbować zaaplikować patch w trybie awaryjnym. Nie zaszkodzi także zaaplikować go kilkukrotnie - odpowiednie pliki zostaną zamienione tylko raz.
Po wykonaniu powyższych operacji uruchamiamy komputer ponownie i włączamy właściwości PhysX nVIDIA. Jeżeli uruchomienie PhysX nie będzie dostępne oznacza to, że najpewniej będziemy musieli podłączyć kartę GeForce do monitora. Można podłączyć obie karty (ATI oraz NV) do jednego (o ile posiada on dwa wejścia) lub dwóch monitorów. Istnieje także możliwość podłączenia specjalnej wtyczki do karty tak, by emulowała podłączenie do monitora.
Można również rozwiązać ten problem bez podłączania przewodu monitora do drugiej karty graficznej. Wystarczy kliknąć prawym przyciskiem myszy na pulpicie i wybrać opcję Rozdzielczość ekranu.
W zakładce Zmień wygląd ekranu należy wcisnąć przycisk Włącz. Pojawi się drugi, wirtualny ekran z napisem Nie wykryto innego ekranu.
Należy kliknąć na ten wirtualny ekranik i wybrać opcję Mimo to spróbuj podłączyć na: VGA.
Pojawi się drugi ekran, który wystarczy już tylko rozszerzyć.
Aby sprawdzić czy modyfikacja się udała, wystarczy uruchomić odpowiedni benchmark. Może to być CPU Test 2 w 3DMarku Vantage lub dedykowany program fluidmark. Ten ostatni podczas pracy wyświetla czy posiadamy sprzętową (Hardware) czy programową (Software) akcelerację PhysX.
Po wykonaniu tej czynności włączamy PhysX we właściwościach nVIDIA i cieszymy się akceleracją fizyki na naszej karcie ATI Radeon.
Wyniki eksperymentu
Poniżej prezentujemy różnice w wybranych benchmarkach na karcie ATI Radeon HD 4870 1GB (Catalyst 9.8) oraz na tej samej karcie z akceleratorem fizyki GeForce GTX 285 (Catalyst 9.8 + ForceWare 190.62).



W 3DMark Vantage różnica w punktacji nie jest wielka. Wynosi zaledwie kilka procent. Wszak karta renderująca grafikę nie uległa zmianie. Dokładnie taki wpływ na wynik końcowy ma sprzętowa akceleracja PhysX. Należy pamiętać, że test przeprowadzaliśmy przy taktowaniach niespełna 4200MHz Core i7 oraz 870MHz 7-6-6-19-60-1T dla pamięci. Przy niżej taktowanych komponentach różnica miałaby szansę się pogłębić, gdyż bez sprzętowej akceleracji fizykę oblicza procesor. Różnicę widać dokładnie w wyniku szczegółowym CPU Test 2, a więc w teście PhysX.
Wyspecjalizowanym programem do sprawdzania akceleracji fizyki jest FluidMark. Program przeprowadza imitację płynu poprzez rendering cieczy, a dokładniej lawy wulkanicznej spadającej na kulę. Dla zwiększenia realizmu włączono także funkcję SPH (Smoothed Particle Hydrodynamics). Program jest oparty na bibliotekach OpenGL i w pełni wykorzystuje PhysX.

Jak widać, różnica między sprzętową a programową akceleracją jest miażdżąca. Program wykorzystuje jedynie jeden rdzeń komputera. A szkoda, gdyż przy wykorzystaniu wszystkich ośmiu wątków wynik mógłby być znacznie lepszy.
Zobaczmy jeszcze jak wygląda użycie CPU podczas testu.
Programowa akceleracja fizyki
Sprzętowa akceleracja fizykiUżycie procesora nawet przy sprzętowej akceleracji na karcie GeForce jest bardzo wysokie (70-80%). Niemniej jednak w tym przypadku płynność zostaje zachowana, czego nie można powiedzieć o trybie programowym.
Poniższy test będziemy sukcesywnie uzupełniać. Zapraszamy do zgłaszania propozycji o jakie pozycje powinniśmy go aktualizować.
Co dalej z fizyką?
Przedstawiony sposób na włączenie akceleracji fizyki przy używaniu karty ATI jest wybawieniem dla użytkowników Radeonów oraz ciosem dla producenta kart graficznych, jakim jest nVIDIA. Ta ostatnia firma ogłosiła niedawno, że wyłącza możliwość generowania wsparcia fizyki przy pomocy swoich kart graficznych w systemach używających kart innych producentów. Prawdopodobnie była to odpowiedź na coraz powszechniejsze praktyki posiadaczy kart serii 4800. W obliczu kolejnego ciosu, jakim jest premiera serii kart AMD ATI Radeon HD 5800 z pełną obsługą DirectX 11, była to w zasadzie jedyna linia obrony.
Patch powstał przez proste podmienienie wybranych plików. Najważniejsze jest jednak to, ze powstał dzięki upartym użytkownikom. Upartym na swój sposób i przeciwstawiających się sztucznym przepychaniu zamkniętych standardów, które wymuszają na nas wybór takiego a nie innego produktu. I to produktu nie zawsze wydajniejszego, a przy tym wcale nie tańszego.
AGEIA wraz ze swoim standardem PhysX należy obecnie w całości do firmy nVIDIA i nawet władze Unii Europejskiej nie mogą odmówić propagowania takich standardów na własnych produktach. Jednak według nas zamknięte dla innych standardy nie działają na korzyść nas, użytkowników i są z góry zdane na przegraną. Jak bowiem można zmusić producentów gier do propagowania tego a nie innego rozwiązania? W zasadzie zmusić można, jednak w interesie producentów nie leży ograniczanie możliwości rozgrywki.
Prawdziwie uniwersalnym zastosowaniem PhysX będzie otwarty standard OpenCL, umożliwiający implementację skutecznej akceleracji fizyki w każdej karcie. I niech tak się stanie!
Ocena portalu Overclock.pl
Plusy i minusy
+ Zmniejszenie obciążenia CPU
+ Zwiększenie wydajności w grach pisanych pod karty nVIDIA
- Konieczność zakupu drugiej karty graficznej
- Spore wymagania













