niedziela, 19 grudnia 2010

Unbiased rendering trafia pod strzechy

Dzisiaj chciałem Wam przedstawić projekt, który zrealizował znajomy grafik amator - Grzegorz (pozdrawiam i dziękuję). Planował odświeżyć swój warsztat 3D, który służył mu do modelowania obiektów i postaci do potrzeb wizualizacji oraz użycia w projektach wirtualnej rzeczywistości (m.in. w grach). Kolega domyślnie pracował na Apple iMac 27" przy użyciu pakietu Maya. Przy złożonych geometrycznie scenach musiał czekać na podgląd szczegółów projektowanej sceny na tyle długo, że istotnie utrudniało to pracę nad projektami.
Tutaj pojawił się pomysł użycia drugiej maszyny w sieci LAN, która mogłaby w tle zajmować się renderowaniem wybranej sceny. Ze względu na niedoścignioną jakość obrazów pochodzących z silników typu unbiased (w dużym skrócie symulator zachowania fal świetlnych z punktu widzenia zdefiniowanego obserwatora), wybór padł na silnik Refractive Software OctaneRender (dla lepszego zrozumienia polecam Wam ten filmik). Uwagę przykuwa możliwość wykorzystania do tych obliczeń kart graficznych posiadających zdolność wykonywania kodu CUDA. Co więcej silnik ten z radością przyjmuje kolejne karty graficzne, równomiernie rozkładając pracę pomiędzy nie. Ponieważ oprogramowanie to wykorzystuje GPGPU, a nie standardowy interfejs wizualizacji 3D typu DirectX lub OpenGL, to nie ma potrzeby łączenia kart graficznych mostkami, w celu włączenia trybu SLI. To zaś oznacza, że nie trzeba inwestować w płyty główne zapewniające wsparcie dla SLI. Zaproponowałem więc koledze następującą konfigurację:
Ostatecznie cena komputera bez monitora zamknęła się w ~6000 tys zł. (Jedna z kart została zamieniona na GTX460).
Jeżeli przyjmiemy w uproszczeniu, że silnik renderujący wykonuje głównie obliczenia o charakterze zmienno-przecinkowym, to wartość teoretyczna dla samego procesora Phenom II X4 945 to ~48 GFlops (4 miliardy operacji zmienno-przenikowych na każdy gigaherco-rdzeń) tymczasem teoretyczna moc jednej karty GTX470 to ~1632 GFlops, co przy trzech kartach daje ~4896 GFlops (100x wyższa niż CPU).
Niestety niełatwo jest zająć wszystkie 3*448=1344 jednostek obliczeniowych CUDA w trakcie renderowania, co przekłada się na relatywnie niższą wydajność. Tym niemniej wciąż jest to daleko więcej niż na CPU.
Zestaw obecnie pracuje prawidłowo (od 3 miesięcy) i nie przysparza problemów użytkownikowi, dostarczając w tle renderingów o wysokiej jakości, a gdy trzeba - również "zaszumionych" jeszcze podglądów prawie natychmiast. Subiektywnie rzecz biorąc czas oczekiwania na wyniki renderingu skrócił się kilkukrotnie, ale trudno porównywać wyniki renderowania tradycyjnego i unbiased, więc nie mogę podać żadnych wartości mierzalnych do porównania.
Jak widzicie przed grafikami 3D otwiera się nowa droga do zwiększenia wydajności obliczeniowej przy relatywnie niskich kosztach wejścia. Nie jest to krok w rodzaju "jeszcze dwa rdzenie procesora", ale skok w kierunku nawet do kilkudziesięciu razy szybszego przetwarzania. Użytkownikom kart AMD/ATI polecam LuxRender, który posiada już eksperymentalne wsparcie dla OpenCL w postaci LuxRenderGPU (czytaj tutaj). Jeżeli macie jakieś doświadczenia w zakresie wykorzystania GPGPU do renderowania, to proszę podzielcie się ze mną wiedzą w tym zakresie.

1 komentarz:

  1. Do siebie dodam że Phenom X4 da się pozyskać niższym kosztem ;-) - tutaj opis: http://bezkawyniedziala.blogspot.com/2010/12/jaki-procesor-dla-dzisiejszego-gracza.html , co do płyty to dzisiaj polecałbym już coś o świeższy chipset AMD8xxx, tutaj także mały opis: http://bezkawyniedziala.blogspot.com/2010/12/procesor-dla-gracza-i-co-dalej.html

    OdpowiedzUsuń