Wstęp do Pracy Magisterskiej

Napisałem już kilka pierwszych stron – tych teoretycznych – mojej pracy magisterskiej. Przedstawiam wam streszczenie, wstęp, cel i zakres mojej pracy.

Streszczenie:

„Praca prezentuje współczesne podejście do tworzenia oprogramowania na platformy wieloprocesorowe. Opisano podstawy przetwarzania równoległego oraz przedstawiono sprzętowe i programowe mechanizmy jego realizacji. W pracy skupiono się na konstrukcjach kodu sekwencyjnego, które mogą podlegać zrównolegleniu. Wyróżniono kilka konstrukcji, które następnie poddano szczegółowej analizie. Rezultatem pracy jest zbiór algorytmów, które na podstawie statycznej analizy sekwencyjnego kodu programu pozwalają stwierdzić, czy dane fragmenty kodu mogą zostać zrównoleglone. Algorytmy te również pokazują, w jaki sposób należy przekształcić istniejące konstrukcje tak, aby można je było wykonać równolegle. Jeden z zaproponowanych algorytmów został zaimplementowany w aplikacji demonstracyjnej, która analizuje programy sekwencyjne stworzone w języku C#.”

Wstęp:

„W branży informatycznej istnieje przekonanie, że na każdy wyprodukowany układ scalony można znaleźć oprogramowanie, które w pewien zamierzony sposób wykorzysta wszystkie dostępne zasoby. Ta nieformalna zależność powodowała rozwój zarówno sprzętu, jak i oprogramowania, który pozwolił m.in. na stworzenie graficznych interfejsów użytkownika i produkcję trójwymiarowych gier 3D. Trend ten utrzymuje się nadal, zmuszając producentów do tworzenia coraz to bardziej wydajnych układów.

Dotychczas przyspieszanie procesorów polegało m.in. na zwiększaniu częstotliwości zegara, powiększaniu pamięci podręcznej oraz optymalizacji wykonania kodu. Zwiększająca się zgodnie z prawem Moora (1) liczba tranzystorów w układzie scalonym pozwalała na wszystkie te modyfikacje. Jednak w roku 2003 producenci napotkali trudności w zwiększaniu częstotliwości swoich układów – przeszkodą były ograniczenia wykorzystywanych materiałów, m.in. krzemu. Dopóki nie zakończą się badania nad nowymi rodzajami tranzystorów, jakie prowadzi, np. Intel (2), prędkości procesorów dostępnych na rynku nie ulegną znaczącym zmianom. Inżynierowie postanowili zmienić kierunek rozwoju procesorów i zamiast poszukiwać metody na ciągłe przyspieszanie zegarów, zdecydowali się umieszczać kilka jednostek obliczeniowych w jednym układzie. W ten sposób powstały nowe architektury – wielordzeniowe, które zrewolucjonizowały rynek komputerów osobistych. Procesory jednordzeniowe zostały całkowicie wyparte z rynku, a ich miejsca zajęły 2-, 4- i 8-rdzeniowe jednostki obliczeniowe.

Mimo przemian w architekturze komputerów i wprowadzeniu wielu jednostek obliczeniowych, programiści nadal tworzą rozwiązania kierowane na maszyny jednordzeniowe. Takie programy nie są w stanie wykorzystać zasobów wielordzeniowych maszyn, przez co użytkownicy nie odczują różnicy w działaniu aplikacji niezależnie od tego, czy będzie ona uruchomiona na 1- czy 4-rdzeniowym procesorze. Aplikacje tego typu stanowią większość produkowanego w dzisiejszych czasach oprogramowania. Inżynierowie nie posiadają wystarczającej wiedzy w kwestii tworzenia rozwiązań równoległych, uważają tę dziedzinę za zbyt trudną i czasochłonną w realizacji. Trudnością może być również fakt, że człowiek – z założenia istota myśląca – posiada sekwencyjną świadomość postrzegania świata. Potrzeba jest zatem zestawu narzędzi, które pomogą programiście w opanowaniu równoległości, wskażą możliwe zagrożenia wynikające z przetwarzania równoległego i pomogą je zlikwidować. Na rynku istnieją narzędzia wspomagające tworzenie aplikacji na nowe platformy, jednak brakuje rozwiązań pomagających przystosowywać istniejące aplikacje do nowych środowisk.”

Cel i zakres pracy:

„Celem pracy jest stworzenie i implementacja algorytmów, które w podanym kodzie sekwencyjnego programu potrafiłyby znaleźć fragmenty możliwe do zrównoleglenia. Algorytmy te powinny także ocenić, czy zmiana danego fragmentu programu w sposób pozwalający wykonać go równolegle, przyniesie wzrost wydajności aplikacji (np. skróci czas jej wykonania). Do budowy algorytmów powinny zostać użyte różne metody analizy kodu źródłowego i testowania oprogramowania. Statyczna analiza kodu pozwoli zbadać przepływ sterowania i zależności danych fragmentów kodu, a testowanie pomoże w oszacowaniu zmian w wydajności.

Praca zapoznaje czytelnika z podstawami programowania równoległego oraz możliwościami jego wykorzystania w projektach zorientowanych na architektury wielordzeniowe. Zostanie zaprezentowana różnica między zwykłym – sekwencyjnym – modelem tworzenia oprogramowania a modelem równoległym. Opisane zostaną podstawowe prawa z dziedziny obliczeń równoległych (m.in. granice przyspieszania i warunki Bernsteina (3)). Przedstawione zostaną różne metody zrównoleglenia, poczynając od architektur komputerów po najnowsze biblioteki programistyczne.

Druga część pracy jest poświęcona analizie konstrukcji kodu sekwencyjnego, które mogą podlegać zrównolegleniu. Opisano dokładnie różne warianty występowania wybranych konstrukcji oraz zaproponowano możliwe podejście zrównoleglenia. Na tej podstawie stworzono algorytmy.

W ostatniej części pracy przedstawiona jest aplikacja demonstracyjna, w której zaimplementowano jeden z zaproponowanych algorytmów. Stworzone narzędzie potrafi analizować kod w języku C# (4) i wskazywać w nim te fragmenty, które można zrównoleglić.”

[Aktualizacja]

Praca zaliczona na 5 :)

  • lz

    toche jezykowo bym to podciagnal, poza tym jak dla mnie fajne :)

  • osobiscie sam jestem ciekaw czy mozna np opublikowac swoja prace magisterska w internecie? czy trzeba miec na to czyjas zgode itp.? nie wnikalem w prawa autorskie do pracy, ale ponoc zrzekamy sie praw do pracy na rzecz uczelni, a nam zostaje jedynie prawo do autorstwa. tyle.

    co do samego artykulu to wydaje mi sie ze sprzet wcale nie utknal, az tak bardzo. ostatnio interesowalem sie co nieco wirtualizacja i z tego co sie dowiedzialem sytuacja sie diametralnie zmienila od czasow win9x czy win2k, kiedy software mialo wieksze mozliwosci niz sprzet. w tej chwili hardware przegonilo baaardzo daleko software i zainstalowanie win7 na superszybkich procesorach Intela w technologii 32nm z mostkiem ICH9 byloby czystym marnotrawstwem. Wirtualizacja pozwala wykorzystac ten potencjal, ale nie wiem jak to sie ma do wspolbieżności… jeszcze… Fajnie ze bedziesz publikowal kawalki swojej pracy on-line, mam nadzieje ze nic Ci w tym nie przeszkodzi. Enjoy it.

  • @kwiatu
    > osobiscie sam jestem ciekaw czy mozna np opublikowac swoja prace magisterska w internecie?

    To chyba zależy od uczelni. Z tego co ja się dowiadywałem na swojej, to rzeczywiście zrzekamy się praw do pracy na rzecz uczelni. Jak się składa pracę, trzeba wypełnić druk, w którym się deklaruje czy wyrażamy zgodę na „udostępnienie pracy dyplomowej”. Uczelnia może (za twoją zgodą) opublikować twoją prace magisterską. Ma do tego pierwszeństwo i chyba nawet może na tym zarabiać (w zamian dają Ci tytuł inżyniera / magistra).

    Wydaje się więc, że nie powinno się publikować wcześniej w całości swojej pracy. Ale sam nie jestem dokładnie w Polskim prawie obeznany i mogę się mylić :)

  • Spokojnie, nie zamierzam umieszczać swojej pracy w całości ;p Może opublikuje jakieś ciekawe fragmenty, ale nic więcej :( Taka polityka…

  • Pingback: Fones » Podsumowanie roku 2011()

  • Ciekawy temat. Można gdzieś zobaczyć większy fragment, albo nawet i całość? =)

  • Całość nie została nigdy zaprezentowana publicznie. Jeśli jesteś ciekawy mogę podesłać PDF do wglądu. Złap mnie na fejsie.