10 listopada 2008
Michał Tomaszkiewicz
Kiedy oprogramowanie dogoni sprzęt? Wielordzeniowe procesory to dziś praktycznie codzienność; kilka dni temu debiutowała architektura Nehalem, która może oferować równoległą obsługę nawet 16 wątków. Trudno jednak oprzeć się wrażeniu, że programiści przegapili szansę i nie oferują użytkownikom aplikacji mogących w pełni korzystać z możliwości wielordzeniowych procesorów. W jaki sposób Intel stara się przekonać programistów do zmiany nastawienia i kiedy można spodziewać się przełomu? Na nasze pytania odpowiada Wolfgang Petersen, odpowiedzialny za Software Solution Group w regionie EMEA oraz Global Developer Relations Division.
Jak długo procesory czterordzeniowe znajdują się już na rynku?
Od czasu premiery rynkowej mijają ponad dwa lata.
Czy Intel może wskazać oprogramowanie dla zwykłych, domowych użytkowników, które umie wykorzystać wszystkie dostępne rdzenie?
Na rynku jest już całkiem sporo oprogramowania umiejącego korzystać z wielu rdzeni, które skaluje się niemal idealnie. Oczywiście, duża część oprogramowania wymaga optymalizacji. Staramy się pracować bezpośrednio z twórcami oprogramowania i pomagać im w ich pracy, dostarczając wiedzę i narzędzia niezbędne do uczynienia aplikacji wielowątkowymi.
Staramy się współpracować z uniwersytetami kształcącymi programistów. W wielu z nich wciąż jeszcze dominuje stara szkoła pisania algorytmów, w której nie uwzględnia się specyfiki dostępnych na rynku procesorów wielordzeniowych.
Co najważniejsze, część zmian może być dokonywana w oprogramowaniu automatycznie – wystarczy użyć przygotowanego przez nas kompilatora, zdolnego analizować kod i przystosowywać go do wielowątkowości. Kompilator wskazuje także obszary kodu, nad którymi programista może popracować, aby przystosować go do środowisk wielordzeniowych.
Jak rozumiem, najtrudniejszym zadaniem jest przekonanie programistów do przepisania oprogramowania w taki sposób, aby mogło korzystać z wielowątkowości?
Takie podejście jest niemożliwe, dlatego nie staramy się nakłaniać twórców oprogramowania do pisania swoich aplikacji całkowicie od nowa, ale staramy się zachęcić ich do używania narzędzi pozwalających zoptymalizować już istniejący kod.
Staramy się też bardzo przekonywać programistów, żeby stawiali na wielowątkowy kod podczas rozwijania oprogramowania i dodawania do niego nowych funkcji. Oczywiście, jeśli programiści mają czas, przekonujemy ich także do modyfikowania rdzenia oprogramowania tak, aby korzystało z wielu rdzeni obliczeniowych. Trzeba tutaj jednak jasno powiedzieć, że w takich wypadkach mamy do czynienia z milionami linii kodu, a to oznacza konieczność zaangażowania dużych środków pieniężnych, co nie zawsze jest możliwe, a nawet sensowne z ekonomicznego punktu widzenia.
W praktyce programiści decydują się na włączenie wielowątkowości do „starego” oprogramowania w chwili, gdy i tak muszą je znacząco przeprojektować. Dzięki naszemu kompilatorowi stosunkowo małym nakładem sił można uzyskać naprawdę dobre rezultaty.
W jaki sposób Intel stara się wpływać na programistów, aby zmienić ich nastawienie i to, jak pracują?
Staramy się maksymalnie ułatwić programistom przejście do programowania wielowątkowego. Oferujemy bezpłatnie narzędzia, które wydatnie wspomagają, a nawet automatyzują niektóre procesy, tak jak wspomniany już kompilator.
Mamy także programy przeszukujące kod i wskazujące, które algorytmy „zakłócają” wielowątkowość; proponują one także modyfikację tych algorytmów i przewidują, jak wpłynie to na ogólną wydajność aplikacji.
Mamy narzędzia analizujące i przedstawiające proces wykonywania programu, dzięki czemu programiści mogą samodzielnie znaleźć rejony kodu kolidujące z wielowątkowością. Przygotowaliśmy także – i co najważniejsze, udostępniamy bez żadnych dodatkowych opłat – bardzo wiele gotowych bibliotek. Wystarczy wykorzystać je w swoim programie, aby otrzymać bardzo zoptymalizowany kod wielowątkowy.
Innym narzędziem, którym najbardziej zainteresowani są twórcy gier, jest biblioteka fizyki Havok, także łatwo dostępna dla wszystkich chętnych. Gotowe rozwiązania, które przygotowaliśmy, z jednej strony bardzo ułatwiają pracę programistom, a z drugiej mocno przyczyniają się do popularyzowania kodu wielowątkowego.
Obecnie jesteśmy w erze „multi-cores”, ale widać już zbliżającą się epokę „many cores”, z premierą Nehalemema już za nami i Larrabee jeszcze na horyzoncie. Kiedy można spodziewać się, że obecne na rynku oprogramowanie będzie przystosowane do możliwości oferowanych przez sprzęt?
Pracujemy nad tym już od kilku lat, dosłownie setki aplikacji są już odpowiednio podzielone na wątki i przystosowane do wykonywania równoległego. W naszej witrynie można znaleźć przykłady producentów, którzy mają już w swojej ofercie wielowątkowe oprogramowanie.
Nie jest natomiast możliwe wyznaczenie cezury, po której będzie można powiedzieć, że oprogramowanie jest już w pełni gotowe. Jest to długotrwały proces i na rynku będzie zarówno oprogramowanie jednowątkowe, wywodzące się w prostej linii jeszcze z czasów DOS-u, jak i nowoczesne aplikacje przystosowane do działania wielowątkowego.
Jednym z naszych pomysłów na promowanie producentów, którzy oferują oprogramowanie umiejące korzystać z mocy wielu rdzeni, jest Business Exchange, prowadzony przez nas sklep internetowy dla odbiorców biznesowych, w którym będzie można kupić zoptymalizowane oprogramowanie. Prace nad uruchomieniem polskiego oddziału już trwają, prowadzimy negocjacje z polskimi deweloperami i spodziewamy się, że sklep ruszy w ciągu kilku miesięcy.
Liczymy, że będzie to jeden z biznesowych powodów, dla których warto będzie optymalizować oprogramowanie. Na konkurencyjnym rynku oferowanie produktu, który na tym samym sprzęcie potrafi działać szybciej i wydajniej, może być jednym z głównych motorów zmian.