CUDA i superkomputery

  • Marcin Marciniak,

Nie ma róży bez kolców

GPU ma jednak kilka wad, wynikających z konstrukcji, bazującej na maksymalnym zrównolegleniu przetwarzania danych. Jedna karta GTX280 zawiera 30 ośmiordzeniowych multiprocesorów (o 16384 rejestrach), które mogą obsłużyć maksymalnie 15360 wątków. Wątki uruchomione w równoległej sesji są partycjonowane w bloki, a te w struktury grid. Blok wątków umożliwia synchronizację wykonania obliczeń oraz komunikację poprzez pamięć współdzieloną. Taka konstrukcja doskonale sprawdza się w przypadku masowych obliczeń z pojedynczą precyzją, ale przy obliczeniach, które wymagają większej dokładności, wydajność znacząco spada.

Porównanie wydajności GPU i CPU

Pamięć GPU jest podzielona na lokalną, współdzieloną oraz globalną. Każdy wątek posiada własną pamięć lokalną, czas życia danych odpowiada czasowi pracy wątku, pamięć współdzielona jest dostępna dla każdego z bloku wątków, czas życia danych z tej pamięci odpowiada czasowi pracy bloku. Pamięć globalna jest trwała (od alokacji do dealokacji), dostępna dla wszystkich wątków oraz dla hosta (CPU), ale jest najwolniejsza ze wszystkich. Zatem maksymalną wydajność można osiągnąć przy minimalizacji jej użycia. "Jeśli GPU odczytuje parametry z pamięci globalnej, wykonując jedną operację i zapisując wynik z powrotem, wydajność jest ograniczona przez przepustowość pamięci globalnej. Wtedy wydajność osiągnie zaledwie 11 GFlopa, czyli 1,1% wydajności szczytowej" - mówi Piotr Stańczyk z MiMUW.

Nie każde zadanie da się bezpośrednio przenieść do wykonania w środowisku GPU. Czasami niektóre algorytmy zaimplementowane w GPU wykazują się bardzo niską wydajnością, gdyż stawiają zbyt wysokie wymagania odnośnie do pamięci podręcznej. "Dla niektórych zagadnień macierzowych powszechnie korzysta się z algorytmów, które wyliczają jedną wartość, a następnie kolejną, i tak dalej. Zamiast zaimplementować taki algorytm w GPU, lepiej użyć innego, który w typowym CPU ma mniejszą wydajność, ale umożliwi zrównoleglenie obliczeń i znacznie lepiej sprawdzi się w GPU" - konkluduje Robert Strzodka z Instytutu Informatyki im. Maksa Plancka.