W tym tygodniu wydanie Blendera 3.2 wprowadza obsługę renderowania GPU AMD w Linuksie przez interfejs AMD HIP w połączeniu z ich stosem obliczeniowym ROCm. Niecierpliwie oczekując, że w końcu nadejdzie obsługa procesorów graficznych AMD w systemie Linux, szybko zacząłem wypróbowywać tę nową wersję oprogramowania do modelowania 3D Blendera o otwartym kodzie źródłowym, widząc, jak wydajność AMD RDNA2 HIP wypada w porównaniu z procesorami graficznymi NVIDIA GeForce RTX 30, które od dawna cieszą się najlepszymi obsługa notch w Blenderze.
1/p>
Podczas gdy Blender 3.1 wprowadził obsługę AMD HIP w systemie Windows, tak nie było w przypadku Linuksa i dopiero teraz, w wydaniu Blendera 3.2 z tego tygodnia, jest tam AMD HIP wsparcie z kompilacjami Linuksa Blendera. Pozwala to na akcelerację GPU przy konfiguracji stosu obliczeniowego ROCm – niestety oznacza to brak obsługi, jeśli używa się tylko sterowników Mesa i innych gotowych rozwiązań w dystrybucjach Linuksa.
Większość użytkowników Linuksa, niestety, w tym momencie nie należy uruchamiać z konfiguracją stosu ROCm ze względu na konieczność ręcznej konfiguracji za pomocą pakietu sterowników Radeon Software for Linux lub procedur ręcznej instalacji ROCm. Nawet wtedy wsparcie dystrybucji Linuksa jest ograniczone. Minął ponad miesiąc od wydania Ubuntu 22.04 LTS i niestety nadal nie ma wsparcia dla tego najnowszego długoterminowego wydania Ubuntu. Na początku próbowałem obejść ten problem na Ubuntu 22.04, chcąc mimo wszystko tylko bity ROCm i nie martwiąc się o komponenty DKMS/Vulkan/OpenGL, ale różnice między pakietami GNU toolchain w porównaniu z Ubuntu 20.04 i 22.04 sprawiły, że był to większy ból głowy… Więc w systemie testowym po prostu go wyczyściłem i wróciłem do instalacji Ubuntu 20.04.
Na początku nawet na Ubuntu 20.04 LTS napotkałem problemy z obsługą AMD HIP aktywowany dla Blendera. Spakowany sterownik na stronie AMD jest przeznaczony dla komponentów Radeon Software 22.10.2, podczas gdy przejście przez ścieżkę instalacji ROCm dało nowsze komponenty sterownika 22.10.3. Z pewnymi drobiazgami w końcu udało mi się z powodzeniem współpracować z Blenderem 3.2 z HIP/ROCm! Niestety większość dystrybucji Linuksa nadal nie zawiera pakietu oprogramowania AMD ROCm ze względu na jego zawiłości i inne problemy. W międzyczasie AMD koncentruje swoją oficjalną obsługę ROCm Linux tylko na kilku zwykłych dystrybucjach Linuksa dla przedsiębiorstw. Dla porównania, stos sterowników własnościowych NVIDIA dla Linuksa jest prawie uniwersalny, obsługiwany/dostępny w różnych dystrybucjach Linuksa. Minęło sporo czasu, odkąd pamiętam ból głowy związany z samą poprawną instalacją sterownika NVIDIA Linux.
Ale nawet po uruchomieniu ROCm z pierwszą kartą, modelem RDNA2, przyniosło to kolejne ograniczenie… Znacznie bardziej ograniczony zakres obsługi urządzeń GPU niż w przypadku szerokiej obsługi urządzeń NVIDIA dla wielu generacji. Oficjalnie Blender 3.2 współpracuje z kartami graficznymi RDNA2 i RDNA(1) na Linuksie z HIP. Udało mi się przetestować wszystkie moje dostępne karty graficzne Radeon RX 6000 (RDNA2) z Blenderem 3.2, tak! Ale ze wszystkimi moimi kartami graficznymi testowanymi przez RDNA1 wszystkie one dały Blendera 3.2 z błędem segmentacji. Wypróbowanie kart graficznych sprzed RDNA, takich jak Radeon VII oparty na Vega, również spowodował błąd segmentacji, nawet jeśli karta graficzna Radeon VII była w przeciwnym razie obsługiwana przez stos obliczeniowy ROCm.
Więc dla W tej rundzie testów mogłem pokazać, jak karty graficzne z serii Radeon RX 6000 mogą działać z HIP Blendera 3.2 na Linuksie. Dla porównania przetestowałem też wszystkie dostępne karty NVIDIA GeForce RTX 30. NVIDIA z Blenderem obsługuje zarówno ścieżki CUDA, jak i OptiX do renderowania w systemie Linux, przy czym OptiX jest preferowanym rendererem dla kart graficznych GeForce RTX i co zostało użyte do tego porównania.
Karty graficzne, które przetestowałem na Blenderze 3.2, zawierały wszystkie dostępne karty RDNA2 i RTX 30 (niestety nie ma jeszcze serii RX 6900 od AMD):
-Radeon RX 6400
-Radeon RX 6500 XT
-Radeon RX 6600
-Radeon RX 6600 XT
-Radeon RX 6700 XT
-Radeon RX 6750 XT
-Radeon RX 6800
-Radeon RX 6800 XT
-GeForce RTX 3060
-GeForce RTX 3060 Ti
-GeForce RTX 3070
-GeForce RTX 3070 Ti
-GeForce RTX 3080
-GeForce RTX 3080 Ti
-GeForce RTX 3090
Wszystkie testy są takie same Stacja robocza AMD Ryzen 9 5950X z systemem Ubuntu 20.04 LTS z jądrem Linux 5.13 i najnowszymi sterownikami AMD/NVIDIA.
Dobrą wiadomością jest to, że back-end AMD HIP dla Blendera działa znacznie lepiej niż stary back-end OpenCL-koniec, który został upuszczony w Blenderze 3.0… ld OpenCL back-end był słabo utrzymany, często wykazywał bardzo słabe skalowanie na różnych procesorach graficznych i był po prostu wrakiem. Niestety, jak pokazują te benchmarki Blendera 3.2 Linux, NVIDIA z jej zapleczem OptiX była znacznie szybsza. Nawet jeśli użycie zaplecza CUDA w niektórych dodatkowych testach nadal zapewniało stosunkowo lepszą wydajność niż te karty graficzne RDNA2 z HIP.
Spojrzenie na zużycie energii GPU podczas sceny BMW z różnymi kartami graficznymi.
Niestety, słaba wydajność HIP nie ograniczała się tylko do jednej sceny, ale konsekwentnie pokazywała słabą wydajność RDNA2 w porównaniu z serią NVIDIA RTX 30 na Blenderze 3.2 na Ubuntu Linux.
Przynajmniej w przypadku większości procesorów do komputerów stacjonarnych, korzystanie z back-endu Radeon HIP z kartą graficzną wyższej klasy Radeon RX 6700/6800/6900 nadal zapewniałoby szybszą wydajność renderowania w Blenderze niż przy renderowaniu opartym wyłącznie na procesorze.
Przynajmniej back-end Radeona HIP został wreszcie udostępniony pod Linuksem dla tych, którzy chcą z niego korzystać. Miejmy nadzieję, że back-end, a także sam kod ROCm/HIP będą nadal ładnie dojrzewać. Deweloperzy Blendera wciąż badają obsługę Vulkan i inne ulepszenia, które, miejmy nadzieję, zaowocują na czas, aby zaoferować niezłą obsługę różnych dostawców. Intel pracuje również nad obsługą SYCL + oneAPI dla Blendera w celu przyspieszenia Intel Arc Graphics.
Przynajmniej obsługa Radeon HIP w Blenderze 3.2 może działać na Linuksie i z wysokiej klasy GPU jest szybsza niż oparta na CPU renderowania, ale obsługa NVIDIA z jej zaplecza OptiX i CUDA nadal okazuje się lepsza na tym etapie. Niefortunne jest również to, że wdrożenie obsługi oprogramowania HIP Linux poza oficjalnie wspieranymi przez AMD dystrybucjami Linuksa może być uciążliwe. Podobnie, ponad miesiąc po wydaniu Ubuntu 22.04 LTS, nadal nie ma oficjalnej obsługi AMD dla tej najnowszej wersji Ubuntu Linux. A także niefortunne z procesorami graficznymi RDNA1 i wcześniej, po prostu dostaję błędy segmentacji w Blenderze 3.2, gdzie gama procesorów graficznych obsługiwanych przez NVIDIA jest bardzo solidna i obejmuje całe portfolio od pokoleń.
Na koniec, dla ciekawskich, poniżej znajduje się spojrzenie na zużycie energii GPU i dane termiczne dla całego zakresu różnych scen testowych Blendera, które zostały porównane dla tego porównania Blendera 3.2 Linux.