Równoległe programowanie

Microsoft zaczyna poważne przygotowania do nadejścia systemów wielordzeniowych typu manycore, czyli nieuniknionej popularyzacji programowania równoległego.

Microsoft zaczyna poważne przygotowania do nadejścia systemów wielordzeniowych typu manycore, czyli nieuniknionej popularyzacji programowania równoległego.

Na opublikowanej w listopadzie ub.r. liście 500 światowych superkomputerów (http://www.top500.org) większość systemów jest oparta na procesorach wielordzeniowych. Tylko w ciągu pół roku na liście zanotowano przyrost z 19 do 102 systemów z czterordzeniowymi układami Intela. Wkrótce po tym miała miejsce premiera pierwszego notebooka z procesorem czterordzeniowym Sager NP9261. Trudno więc się dziwić coraz liczniejszym inicjatywom, mającym na celu wspieranie rozwoju programowania równoległego, w tym Microsoftu.

Początek nowej ery

W dokumencie "The Manycore Shift" pojawiły się opinie, że produkowane obecnie procesory to jedynie przedsmak tego, co nadejdzie. Układy o większej niż osiem liczbie rdzeni (określane jako manycore), bo o nich właśnie jest mowa w tym dokumencie, mają spowodować kolejny przełom w przemyśle komputerowym, porównywalny z takimi rewolucjami jak pojawienie się społeczności internetowej czy wprowadzenie graficznych interfejsów użytkownika.

Zmiany te mają być zauważalne nie tylko dla firm, ale i zwykłych użytkowników, którzy oczekują bardziej wyrafinowanych środowisk graficznych. Mają to właśnie umożliwić wielordzeniowe procesory ogólnego przeznaczenia. Aby jednak sprzęt mógł spełnić oczekiwania, niezbędna jest modyfikacja architektury oprogramowania. Stąd takie inicjatywy jak Microsoft Parallel Computing Initiative, które mają na celu przygotowanie producentów oprogramowania do ujarzmienia nowych zasobów sprzętowych. Mają one ułatwić tworzenie nowych architektur oprogramowania przez dostarczenie odpowiednich narzędzi programistycznych, a także aplikacji, które będą w stanie wykorzystać nowe procesory.

Pierwsze narzędzia

".Net Framework 3.5 Parallel Extensions CTP to pierwszy krok na długiej drodze do urzeczywistnienia potencjału, jaki niesie zmiana architektury sprzętowej" - powiedział S. "Soma" Somasegar, wiceprezes Microsoft Developer Division w liście mówiącym o otwarciu nowego działu MSDN.com poświęconego równoległemu. "To coś w rodzaju ogólnej nazwy dla kilku różnych technologii, jak Parallel LINQ, Task Parallel Library, które pozwalają programistom na lepsze wykorzystanie równoległości i współbieżności w aplikacjach" - twierdzi Stephen Toub, programista w Microsofcie.

Przekaz dla programistów jest jednoznaczny - "próbujemy powiedzieć Wam, że trzeba tworzyć aplikację równoległą. Aplikację, która wykorzystuje współbieżność, a nie operuje wątkami i oczekuje na zdarzenia". Do pracy z Parallel Extensions nie potrzeba specjalnego kompilatora, gdyż rozszerzenia mają postać kilku bibliotek, a programistom do szczęścia wystarczy jedynie Visual Studio 2008.

Task Parallel Library (TPL) to najniższa warstwa Parallel Extensions. Ukrywa ona przed programistą konieczność zarządzania wątkami, które są zastąpione "zadaniami" (tasks). "Ta biblioteka ma dwa różne zastosowania: na najniższym poziomie pracujemy z typami Task, Future, które są zarządzane przez TaskManagera, inny tryb udostępnia równoległość danych w imperatywnym stylu kodowania i w nim właśnie korzystamy ze statycznej klasy Parallel" - wyjaśnia Daniel Moth z Microsoftu.

PLINQ, czyli Parallel LINQ

W jednym z wywiadów Anders Hejlsberg, architekt LINQ (Language INtegrated Query) - rozszerzeń języka C# i VB.Net - spekulował, że można we względnie prosty sposób wprowadzić równoległość do już istniejącego kodu. Jego niejawne zrównoleglenie mogłoby jednak spowodować pojawienie się nieoczekiwanych efektów, dlatego też w celu uzyskania deklaratywnej równoległości danych warto stosować PLINQ. Nie trzeba wówczas martwić się o efektywny podział zadań, czy liczbę dostępnych rdzeni - PLINQ automatycznie uwzględnia te czynniki i "zrównolegla" zapytania.

Trzeci element Parallel Extensions to Coordination Data Structures. Jako że PE jest we wczesnej fazie rozwoju, biblioteka ta nie jest na razie publicznie dostępna, nie jest także znane jej dokładne przeznaczenie. Daniel Moth mówi tylko: "To osobny fragment PE, który pomoże w realizacji równoległości przetwarzania".

Dodatki do flagowej platformy programistycznej Microsoftu to duży postęp w dziedzinie języków programowania wysokiego poziomu. Programiści C++ od kilku lat mają do dyspozycji bibliotekę OpenMP, ale osoby pracujące na co dzień z Javą czy C# mogły o tym tylko pomarzyć. Nawet platforma programistyczna Suna - , pomimo znaczących zmian (pakiet java.util.concurrent), nadal pozwala na pracę tylko na o wiele niższym poziomie abstrakcji.

Biznes w HPC

Biorąc pod uwagę poczynania Intela, który w ubiegłym roku utworzył 200-osobowe laboratorium zorientowanego na rozwój istniejących i tworzenie nowych języków programowania, to najwyższy czas dla Microsoftu, aby włączył się do "wyścigu" w rozwoju programowania równoległego. Ale dla Microsoft jest to również potencjalna szansa na poprawienie pozycji firmy na rynku HPC (High-Performance Computing).

Ma w tym pomóc HPC Server 2008, znajdujący się w fazie beta system operacyjny, który ma być następcą Windows Compute Cluster Server 2003. Obecnie już wiadomo, że HPC Server 2008 będzie wspierał Parallel Extensions, co pozwoli na przeniesienie fragmentów istniejących aplikacji .Net do nowego środowiska bez konieczności przepisywania ich w innym języku


TOP 200