Poszukiwaniu programiści nowej generacji

Rozmowa z Justinem R. Rattnerem, CTO Intela, który pracując przez 34 lata w tej firmie był pionierem we wspieraniu idei przetwarzania równoległego i rozproszonego. Jego zdaniem, wielordzeniowe procesory wymagają nowej generacji narzędzi programistycznych. Proces edukacyjny informatyków znających zasady programowania równoległego zajmie zaś lata, a może nawet dziesiątki lat.

Czy nastąpił definitywny koniec zwiększania częstotliwości taktowania zegarów w mikroprocesorach?

Wzrost ten będzie, ale bardzo umiarkowany, na poziomie 5-10% w kolejnych generacjach układów. Problemy związane z tendencją do ograniczania zużycia energii są tak poważne, że trudno oczekiwać, aby producenci decydowali się na bardziej radykalne zwiększanie częstotliwości. Jeśli bowiem jej wzrost o 2% powoduje zużycie o 5% więcej energii, nie jest to opłacalne rozwiązanie. I w tym miejscu chciałbym zapewnić Billa Gatesa, że nie istnieje magiczny tranzystor, który nagle pozwoli rozwiązać ten problem, mimo że jest to jego największe marzenie.

O co dokładnie martwi się Bill Gates?

Po pierwsze, systematyczny wzrost wydajności przetwarzania jednowątkowego byłby korzystny dla wszystkich masowo wykorzystywanych obecnie aplikacji. Po drugie, wielordzeniowe procesory wymagają zupełnie nowej generacji narzędzi programistycznych. Biorąc pod uwagę, że oprogramowanie do przetwarzania równoległego znajduje się dopiero w zalążkach, niezbędne są bardzo duże inwestycje w jego rozwój i to w skali całego przemysłu IT.

Po trzecie, nawet gdy pojawią się odpowiednie narzędzia, efektywnie wykorzystać je będą mogli tylko programiści mający odpowiednie umiejętności. Ich przeszkolenie w tym kierunku lub oczekiwanie na pojawienie się nowej generacji informatyków znających zasady programowania równoległego to poważne wyzwanie. Proces edukacyjny zajmie lata, a może nawet dziesiątki lat, zanim znajdziemy się w punkcie, gdy praktycznie każdy programista z założenia będzie korzystał z modelu programowania równoległego, a nie sekwencyjnego.

A więc jedyną drogą umożliwiającą utrzymanie prawa Moore'a jest zwiększanie liczby rdzeni CPU instalowanych w procesorach?

Jest to jedyna droga, jeśli chodzi o zwiększanie wydajności, pamiętając jednocześnie o wymaganiach dotyczących ograniczania zużycia energii. Pojawienie się układów wielordzeniowych umożliwiło powrót do historycznej linii rozwoju wyznaczanej przez prawo Moore'a. Obecnie możemy powiązać wzrost liczby tranzystorów w układach ze zwiększeniem liczby jednostek CPU, a więc wydajnością...

{{dalej}}

Ilu rdzeni CPU można oczekiwać w procesorach, które pojawią się na rynku za 5 lat?

Od kilku lat mówimy o idei TeraScale i zaprezentowaliśmy prototypy procesorów wyposażonych w 80 rdzeni CPU. Wiadomo jednak, że rynkowym produktem będzie procesor Larrabee nie zawierający aż 80 rdzeni, bo tak skomplikowane układy można na razie wyprodukować tylko w laboratorium, gdzie nie bardzo liczymy się z kosztami. Mamy jednak nadzieję, że tego typu prezentacje spowodują zainteresowanie programistów wprowadzeniem na rynek aplikacji wykorzystujących teraskalowe moce przetwarzania. Pierwsze układy Larrabee trafią najprawdopodobniej na rynek już w 2009 r.

Ile rdzeni będzie miał Larrabee?

Nie mogę obecnie ujawniać szczegółów. Mogę tylko powiedzieć, że będzie on zawierał więcej niż 10 jednostek CPU, co jest określoną przez nas umowną granicą między układami multi-core i many-core. Ale nową serię procesorów Larrabee lepiej jest traktować jako rodzinę układów o skalowalnej architekturze zawierających różne liczby rdzeni, zależnie od przewidywanych zastosowań.

Czy rzeczywiście za pięć lat wszystkie nowe aplikacje pojawiające się na rynku będą przystosowane do wykorzystywania możliwości układów wielordzeniowych?

Tak, choć nikt nie będzie się cofał, aby zmienić kod większości obecnie wykorzystywanych aplikacji. Zresztą nie sądzę, by edytor tekstu potrzebował 16 rdzeni mielących jego dane.

Rzeczywiście więc będziemy potrzebowali programistów nowej generacji?

Tak. Staramy się zwrócić uwagę środowisk akademickich na ten problem. 20 lat temu wszyscy naukowcy zapalili się do badania zasad programowania równoległego i wszędzie, gdzie się trafiło, trwały intensywne prace na ten temat, ale ich wyniki nigdy nie znalazły praktycznych zastosowań, pozostając w obszarze systemów HPC o najwyższej mocy przetwarzania.

Dlaczego sytuacja się zmieniła?

Obecnie każdy komputer jest wyposażony w dwa, cztery, osiem, a często znacznie więcej rdzeni CPU. A 20 lat temu rynek komputerów wieloprocesorowych nie był na tyle duży, by opłacało się inwestować w badania związane z programowaniem równoległym. To może budzić rozczarowanie, ale na pewno nie jest zaskoczeniem, że tak niewiele zrobiono w tym zakresie w ciągu tych lat. Obecnie pojawiły się zachęty finansowe i budżety na badania. W Intelu wiemy, że nie będziemy w stanie sprzedawać rocznie setek milionów procesorów, jeśli programiści nie będą w stanie opracować aplikacji dla nich. Ale dopiero zaczynamy się uczyć, jak to zmienić.

A jak wygląda obecnie sytuacja, jeśli chodzi o tego typu badania na uniwersytetach?

Do niedawna programowanie równoległe z reguły nie było nawet przedmiotem nauczania. Można było uzyskać doktorat w zakresie informatyki, nigdy nie tworząc żadnego programu wykorzystującego przetwarzanie równoległe. Obecnie setki wyższych uczelni na świecie ponownie wprowadziło programowanie równoległe do programów nauczania. Jednocześnie Intel i inne firmy przygotowują projekty wsparcia finansowego, które mają pobudzić zainteresowanie projektami badań akademickich nad architekturami i programowaniem równoległym. Spotykamy się z przedstawicielami uczelni i dyskutujemy o tego typu planach, a ich przedstawiciele mówią "wspaniale, bo dotychczas nikt nie mówił na ten temat". Wydaje się to rzeczą oczywistą, ale przez wszystkich ignorowaną. Kupujemy procesory dwurdzeniowe, czterordzeniowe, a nikt nie chce wprost powiedzieć, że wciąż niewiele jest technologii pozwalających na wykorzystanie ich możliwości.

{{dalej}}

A jakie badania w tej dziedzinie są prowadzone w Intelu?

Jest to np. inicjatywa Ct - czyli język C for throughput computing - dodatkowe funkcje rozszerzające C i C++ o możliwość równoległego przetwarzania danych bez modyfikacji kompilatora. Nowe funkcje opracowane przez nas podnoszą poziom abstrakcji, tak że programiści nie muszą w sposób jawny projektować mechanizmów przetwarzania równoległego, a jedynie, w sposób bardzo naturalny, dobrze przemyśleć strukturę danych. W efekcie ma to ogromny wpływ na wzrost wydajności, umożliwiając łatwą implementację równoległego przetwarzania danych. W tym wypadku najważniejszą nowością jest to, że można praktycznie bez problemu obsługiwać każdy rodzaj struktury danych.

A czy zarządzanie równoległymi wątkami może być realizowane tylko programowo?

Jeśli ktoś chciałby polegać jedynie na funkcjach systemu operacyjnego, to najprawdopodobniej byłaby to ślepa droga. W Intelu opracowaliśmy już architekturę sprzętową umożliwiającą zarządzanie wykonywaniem równoległych wątków i przeprowadziliśmy jej intensywne symulacje testowe, by zrozumieć, jakie są bariery i możliwości ulepszeń. Ale na razie jest jeszcze za wcześnie, by powiedzieć, w jakim produkcie znajdzie ona zastosowanie i kiedy pojawi się na rynku.

Ale czy nie jest tak, że wiele aplikacji ma architekturę z natury nienadającą się do przetwarzania równoległego?

Z tym problemem spotkaliśmy się u nas. Istnieje bowiem pozbawiona uzasadnienia wiara w prawo Amdahla, mówiące o ograniczeniach we wzroście wydajności uzyskiwanym przez zwiększanie liczby CPU. Ludzie mówią "uruchomiłem ten program w systemie zawierającym procesor czterordzeniowy i nie widzę, by pracował on szybciej". Wciąż słyszę takie opinie. Ale jeśli przyjrzeć się temu problemowi bliżej, to widać, że nikt się nad nim nie zastanawiał i jest wiele przyczyn, które mogą powodować, iż w wypadku dwu- lub czterordzeniowych systemów nie uzyskuje się oczekiwanego wzrostu wydajności.

Ale liczba CPU integrowanych w procesorach będzie rosnąć i pojawią się układy 16- i 32-rdzeniowe. Choć początkowo wzrost wydajności nie wydaje się zachęcający, ale wynika to z konieczności opracowania odpowiednich, nowych algorytmów, innego podejścia do projektowania aplikacji oraz dostępności lepszych narzędzi programistycznych, które będą umożliwiały automatyczne podejmowanie decyzji związanych z optymalizacją kodu.

Jaka jest przyszłość technologii wykorzystującej mechanizmy kwantowe i spin elektronów, a nie klasyczny przepływ ładunków elektrycznych?

Elektronika oparta na kontroli i sterowaniu ładunkami elektrycznymi zaczyna tracić perspektywy rozwoju. Najlepiej wiedzą o tym ludzie zajmujący się układami pamięciowymi, gdzie w praktyce już pojawiła się bariera uniemożliwiająca dalsze zmniejszanie wymiarów komórek pamięciowych. Dlatego też naukowcy starają się wykorzystać efekty kwantowe takie jak spin. Początkowe wyniki ich badań są obiecujące. Jeśli chodzi o wykorzystanie spinu elektronów, to należy podkreślić, że system taki miałby potencjalnie duże zalety zarówno, jeśli chodzi o szybkość działania, jak i zużycie energii.

Czy można oczekiwać, że za 10 lat pojawią się komputery z układami wykorzystującymi kwantowe zjawisko spinu?

Tak, ale nie wcześniej. Chcielibyśmy, aby transformacja do tego typu zupełnie nowych technologii przebiegła ewolucyjnie. Trudno byłoby bowiem powiedzieć odbiorcom naszych produktów - OK, przez najbliższe pięć lat nie będzie żadnych nowych modeli procesorów, bo musimy opracować technologie oparte na spinie.

Tekst powstał na podstawie wywiadu dla amerykańskiego wydania Computerworld.

Wiesław Pawłowicz