Politechnika Krakowska Im. Tadeusza Ko±ciuszki Wydziaª Fizyki, Matematyki i Informatyki



Podobne dokumenty
1. Wprowadzenie do C/C++

1. Wprowadzenie do C/C++

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

epuap Ogólna instrukcja organizacyjna kroków dla realizacji integracji

POLITECHNIKA WROCŠAWSKA WYDZIAŠ ELEKTRONIKI PRACA DYPLOMOWA MAGISTERSKA

Metody numeryczne i statystyka dla in»ynierów

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH

Komunikacja w sieci Industrial Ethernet z wykorzystaniem Protokołu S7 oraz funkcji PUT/GET

Programowanie funkcyjne. Wykªad 13

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Wprowadzenie do OpenMP

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

Bazy danych. Andrzej Łachwa, UJ, /15

Wartości domyślne, szablony funkcji i klas

Programowanie i struktury danych 1 / 44

System kontroli wersji SVN

Ćwiczenia IV - Kontenery (pojemniki)

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

W dobie postępującej digitalizacji zasobów oraz zwiększającej się liczby dostawców i wydawców

Arkusz zawiera informacje prawnie chronione do momentu rozpocz cia egzaminu.

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Przetwarzanie Równoległe i Rozproszone

Szablony funkcji i szablony klas

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej

Technologie internetowe Internet technologies Forma studiów: Stacjonarne Poziom kwalifikacji: I stopnia. Liczba godzin/tydzień: 2W, 2L

Programowanie I C / C++ laboratorium 01 Organizacja zajęć

Spis treści INTERFEJS (WEBSERVICES) - DOKUMENTACJA TECHICZNA 1

Programowanie C# mgr in. Dariusz Ku. p. 119A

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Konfiguracja po czenia pomi dzy serwerem OPC, a sterownikiem PLC dla sieci Profibus

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2013/2014

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

Prosta aplikacja klient - serwer na bazie protokoªu UDP. Sprawozdanie.

MiASI. Modelowanie analityczne. Piotr Fulma«ski. 18 stycznia Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

lekcja 8a Gry komputerowe MasterMind

Przetwarzanie sygnaªów

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

InsERT GT Własne COM 1.0

Zagadnienia programowania obiektowego

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Podstawy programowania skrót z wykładów:

Mnożenie macierzy. Systemy z pamięcią współdzieloną Systemy z pamięcią rozproszoną Efektywność

Ćwiczenie 6.5. Otwory i śruby. Skrzynia V

Oprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

CitiDirect EB - Mobile

Zintegrowane Systemy Zarządzania Biblioteką SOWA1 i SOWA2 SKONTRUM

2.1 INFORMACJE OGÓLNE O SERII NX

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Programowanie Zespołowe

Arkusz zawiera informacje prawnie chronione do momentu rozpocz cia egzaminu.

Jak usprawnić procesy controllingowe w Firmie? Jak nadać im szerszy kontekst? Nowe zastosowania naszych rozwiązań na przykładach.

WSTĘP DO PROGRAMOWANIA

OGŁOSZENIE O ZAMÓWIENIU - usługi

Algorytmy i Struktury Danych.

Zasady programowania Dokumentacja

Podziaª pracy. Cz ± II. 1 Tablica sortuj ca. Rozwi zanie

Ukªady Kombinacyjne - cz ± I

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Wstęp do programowania

Konfiguracja historii plików

Podstawy programowania 2. Przygotował: mgr inż. Tomasz Michno

Wykład 2 Składnia języka C# (cz. 1)

Proces tworzenia programu:

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Opis obsługi systemu Ognivo2 w aplikacji Komornik SQL-VAT

PLD Linux Day. Maciej Kalkowski. 11 marca Wydziaª Matematyki i Informatyki UAM

Kompletna dokumentacja kontenera C++ vector w -

Program szkoleniowy Efektywni50+ Moduł III Standardy wymiany danych

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Programowanie w języku C++ Grażyna Koba

Programowanie i struktury danych

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

MATEMATYKA 4 INSTYTUT MEDICUS FUNKCJA KWADRATOWA. Kurs przygotowawczy na studia medyczne. Rok szkolny 2010/2011. tel

DICOM protocol. Urszula Krukar, Agnieszka Lewandowska. 13 czerwca Wst p Protokó Serwery DICOM a Toolkits

Tworzenie wielopoziomowych konfiguracji sieci stanowisk asix z separacją segmentów sieci - funkcja POMOST. Pomoc techniczna

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Wyrażenia regularne. Wyrażenia regularne 1/41

Podstawy modelowania w j zyku UML

raceboard-s Szybki start

EPI: Interfejs Graficzny Wykład nr 2 Wbudowane typy danych Rubiego

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119

Wykład 7 Abstrakcyjne typy danych słownik (lista symboli)

Logowanie do systemu Faktura elektroniczna

Aplikacje Internetowe termin dodatkowy

REJESTRACJA NA LEKTORATY Z JĘZYKÓW OBCYCH

Instrukcja instalacji

Dokumentacja końcowa projektu z ZPR

Pętle w PERLU postać ogólna

INFORMATYKA dla gimnazjum Opis założonych osiągnięć ucznia klasy trzeciej

Elementy typografii. Technologia Informacyjna Lekcja 22

Transkrypt:

Politechnika Krakowska Im. Tadeusza Ko±ciuszki Wydziaª Fizyki, Matematyki i Informatyki 23 stycznia 2012 Programowanie rozproszone i równolegªe niestacjonarne magisterskie uzupeªniaj ce. Dokumentacja MirrorWeb Author: Artur Bednarczyk, Krystian Heród Studenci pierwszego roku, studiów niestacjonarnych Stopnie«drugi. Spis tre±ci I Wprowadzenie 2 II Wykorzystane technologie 2 1 Technologia libcurl (curl) 3 2 Technologia boost::regex 3 3 Biobioteka STL 5 4 Technologia OpenMP 5 III Najwa»niejsze funkcje programu 6 IV Testowanie wydajno±ci aplikacji MirrorWeb z wykorzystaniem OpenMP 8 1

V Instalacja, konguracja i kompilacja aplikacji MirrorWeb 9 VI Wnioski 9 VII Bibliograa 9 Cz ± I Wprowadzenie Celem projektu byªo stworzenie programu do pobierania zadanej strony www z wykorzystaniem ±rodowiska umo»liwiaj cego przyspieszenie dziaªania tego programu poprzez zrównoleglenie pewnego obszaru danej aplikacji. Projekt zostaª stworzony w zgodno±ci ze specykacja która oparta jest w j zyku C++. Ze wzgl du powielanie wykonywania tych samych czynno±ci w p tli, rozs dnym rozwi zaniem byªo wykorzystanie ±rodowiska OpenMP. Podstawowymi problemami do rozwi zania byªo poª czenie z serwerem, dzi ki któremu uzyskamy dost p do zawarto±ci strony gªównej. Rozwi zaniem byªo wykorzystanie biblioteki curl, która daje nam t i wiele wi cej mo»liwo±ci. Kiedy uzyskali±my ju» dost p do tzw. masterpage, kolejnym zagadnieniem byªo przeszukiwanie pliku w poszukiwaniu wyra»e«, mówi cych o odno±nikach i plikach, aby mo»na byªo odtworzy struktur i wygl d strony. W dalszej cz ±ci, opisane zostan pokrótce wykorzystane technologie i przedstawiony sposób rozwi zania napotkanych problemów. Nast pnym etap przedstawia wykres który ilustruje zale»no± czasu od ilo±ci wykorzystanych w tków przy zrównolegleniu oblicze«danego programu. Wnioski ko«cowe które zostaªy zawarte w danej dokumentacji, przedstawi zalety i wady wyko»ystywanych technologi. Cz ± II Wykorzystane technologie W danej pracy wyko»ystali±my kilka z poznanych nam ±rodowisk które które umo»liwiaªy usprawnienie dziaªania danej aplikacji do pobierania stron internetowych za po±rednictem protokoªu sieciowego HTTP. 2

1 Technologia libcurl (curl) curl jest bibliotek która zostaªa napisana w j zyku C, posiada ona bardzo du»y stopnie«integracji z interfejsami dla ponad 30 innych j zykó programowaniatakich np. jak : Ada95, Basic, C, C++, Java,.NET, Object Pascal, Pascal, Perl, PHP, Phyton, Ruby, Visual Basic. Bibioteka ta w znacznym stopniu uªatwia prac tworzenia aplikacji korzystania z takich protokoªów jak HTTP, HTTPS, FTP, SFTP, FTPS, TFTP, SCP, Telnet, certykaty HTTPS, ciasteczka (cookies), upload FTP. Biblioteka tak udost pniona jest na licencji MIT. W naszej pracy wykorzystali±mi dan bibliotek libcurl do komunikacji z serwerem po przez protokuª sieciowy HTTP. 2 Technologia boost::regex Technologia któr wykorzystali±my przy problematyce porównywania wczytanych znakówa dokªadniej przy przetwarzaniu tekstu zawartego w danym pliku jest biblioteka boost::regex która daªa nam mo»liwo± integracji j zyka C++ wyrarze«regularnych. Do skªadowania podstawowy deklracji w postacji wyra»e«regularnych mamy dost pne trzy formy, a mianowici : Perl (jako domy±lna) POSIX roszerzona (porównywalna do egrep czy awk) POSIX podstawowa (porównywalna do grep cz emacs) Podstawowa skªadnia w Perl'u:. dowolny znak ^ pocz tek linii $ koniec linii ( ) pocz tek i koniec znaczonego grupowania (?: ) pocz tek i koniec nieznaczonego grupowania * powtórzenie atomu zero lub wi cej razy + powtórzenie atomu jeden lub wi cej razy? powtórzenie atomu zero lub jeden raz n powtórzenie atomu dokªadnie n razy n, powtórzenie atomu n lub wi cej razy n,m powtórzenie atomu od n do m razy 3

alternatywa [znaki^odrzuty] dopuszczalny znaki i niedopuszczalne odrzuty \< \> \b pocz tek, koniec sªowa i którekolwiek z nich \d <=> [[:digit:]] cyfra \l <=> [[:lower:]] maªa litera \s <=> [[:space:]] spacja \u <=> [[:upper:]] du»a litera \w <=> [[:word:]] znak "sªowny" (alfanumeryczny lub _) \D <=> [^[:digit:]] nie: cyfra \L <=> [^[:lower:]] nie: maªa litera \S <=> [^[:space:]] nie: spacja \U <=> [^[:upper:]] nie: du»a litera \W <=> [^[:word:]] nie :znak "sªowny" (?#komentarz) ignorowany (komentarz) (?=wzorzec) "zjada" 0 znaków tylko je»eli wzorzec si zgadza (?!wzorzec) "zjada" 0 znaków tylko je»eli wzorzec nie pasuje Dana technologia posiada równierz tzw. szablony klas, które umo»liwiaj skªadowanie wyra» «regularnych w formie parametru a pó¹niej wzale»no±ci od u»ytej klasy/funkcji danej biblioteki porównuj lub nawet zamieniaj miejscami np: odpowiednie strinigi w danym pliku. Jedne z gªówniejszych klas danej bilbioteki boost::regex, s : regex_match(), dopasowywanie parametrów regex_search(), przeszukiwanie parametrów regex_replace(), zast powanie parametrów regex_token_iterator(), dzielenie parametrów 4

3 Biobioteka STL Za po±rednictwem danej blibioteki STL aplikacja MirrorWeb wykorzystuje takie jej elementy jak zbiór i stos. (eng. set, stack). Zbiorem nazywamy struktur danych opart na formie drzewa. Ka»dy element w danym zbiorze jest posortowany wedªug pewnego klucza. Forma drzewa zapewnia nam szybki dost p do wyszukiwania elementów w podanym zbiorze. Jednym z kluczowych problemów jakie posiada set stanowi modykacja danego zbioru, mianowicie w mom cie gdy chcieliby±my przenie± dowolny element z danego zbioru musimy go usun a potem wprowadzi jeszcze raz. Korzystaj c z terminologii STL-a zbiory s to tzw. kontenerami asocjacyjnymi (o zmiennej dªugo±ci, pozwalaj cymi na operowanie elementami przy u»yciu kluczy). Operacje jakie wykorzystali±my za po±rednictwem zbioru to: insert() - wstawianie elementu do zbioru Kolejn struktur która zawarli±my przy tworzenia danej aplikacji Mirror- Web jest struktura stosu. Stos stanowiª dobre rozwi zanie dla elementów które s gromadzone w postaci stringów. Operacje jakie wykorzystali±my za po±rednictwem stosu to: push() - wstawianie nowego elementu na szczyt stosu pop() - zdejmowanie elementu ze szczytu stosu 4 Technologia OpenMP Technologia OpenMP jest elementem który sªu»y do implementacji wielow tkowo±ci, czyli umo»liwia zrównoleglanie programu komputerowego, w którem gªówny w tek rozgaª zia si na kilka w tków. W tki pracuj wspóªbie»nie i mog zosta przydzielone przez ±rodowisko uruchomieniowe ró»nym procesorom. Fragment kodu, który ma by wykonywany równolegle, jest w kodzie ¹ródªowym oznaczany odpowiedni dyrektyw preprocesora. Tu» przed wykonanie tak zaznaczonego kodu gªówny w tek rozgaª zia si na okre±lon liczb nowych w tków. Ka»dy w tek posiada unikalny identykator tzw. id), którego warto± mo»na odczyta funkcj omp_get_thread_num(). Gdy przetwarzanie zrównoleglonego kodu w tki dojdzie do ko«ca pozostaªe wª czaj si z powrotem do w tku gªównego, który samotnie kontynuuje dziaªanie programu i w innym miejscu mo»e ponownie rozdzieli si na nowe w tki. Domy±lnie wszystkie w tki przetwarzaj zrównoleglon cz ± kodu niezale»- nie od siebie. Do podziaªu zadania pomi dzy w tki sªu» specjalne konstrukcje podziaªu zadania. Za przydziaª w tków do poszczególnych procesorów odpowiada ±rodowisko uruchomieniowe, które stosuje algorytm uwzgl dniaj cy m.in. aktualne obci»enie poszczególnych procesorów oraz caªej maszyny. Liczba nowych w tków mo»e 5

by okre±lona tu» przed uruchomieniem programu za po±rednictwem zmiennych ±rodowiskowych lub w kodzie ¹ródªowym za pomoc specjalnych funkcji. Dzi ki temu,»e standard OpenMP zostaª uzgodniony przez gªównych producentów sprz tu i oprogramowania komputerowego, charakteryzuje si on przeno±no±ci, skalowalno±ci, elastyczno±ci i prostot u»ycia. Dlatego mo»e by stosowany do tworzenia aplikacji równolegªych dla ró»nych platform, od komputerów klasy PC po superkomputery. OpenMP mo»na stosowa do tworzenia aplikacji równolegªych na klastrach komputerów wieloprocesorowych. W tym przypadku zwykle stosuje si rozwi - zanie hybrydowe, w którym programy s uruchamiane na klastrach komputerowych pod kontrol alternatywnego interfejsu MPI, natomiast do urównoleglenia pracy w zªów klastrów wykorzystuje si OpenMPI. Alternatywny sposób polega na zastosowaniu specjalnych rozszerze«openmp dla systemów pozbawionych pami ci wspóªdzielonej (np. Cluster OpenMP Intela). Gªówne funkcje które zostaªy zawarte przy tworzeniu aplikacji MirrorWeb to: omp_set_num_threads(), ustawia liczbe w tków #pragma omp parallel private(x), ustawia pocz tek obczaru kodu który zostanie zrównoleglony oraz przyjmuje parametr X jako prywatny argument, #pragma omp for schedule(static) nowait, ustala pocz tek obszaru zrównoleglenia dla p tli for z parametrym statycznym funkcji schedule a wykonanie danej pragmy nie zale»y od innych funkcji, nowiat (nie czeka) Cz ± III Najwa»niejsze funkcje programu Jedn z najbardziej znacz cych funkcji które realizuje technologia curl jest pobieranie tzw. masterpage, która przyjmuje url w postaci zmiennej typu char, nast pnie pobiera przetworzony kod strony i zapisuje go w postaci pliku. Realizacja pobierania pierwszej strony opisuje poni»sza funkcja: FILE * le = (FILE *)fopen(mylename,"w+"); if(!le) perror("nie udalo sie otworzyc pliku, dzialanie programu zostalo zakonczone!"); exit(0); //culr glowny element pobierajacy pierwsza strone CURL *handle = curl_easy_init(); curl_easy_setopt(handle,curlopt_url,urlstronastartowa.c_str()); curl_easy_setopt(handle,curlopt_writefunction, write_data); 6

//zapis do pliku curl_easy_setopt(handle,curlopt_writedata, le); curl_easy_perform(handle); curl_easy_cleanup(handle); fclose(le); Funkcja która przekazuje linijka po linijce wczytany ci g znaków do nast pnej funkcji parsuj cej o nazwie parsujliniestrony() odpowiada poni»szy kod: Myle.open (mylename); //wczytuje i zapisuje linijka po linijce (string) if (Myle.is_open()) while (Myle.good()) getline(myle,line); parsujliniestrony(line,urlstronastartowa); Myle.close(); Za po±rednictwem wyra»enia regularnego, //inicjalizacja paternu boost::regex rxlinki("href=\""); boost::regex rxplik("src=\""); //porownywanie wczytanych stringow z paternem bool valid = boost::regex_search(linia.c_str(), res, rxlinki); funkcja parsujliniestrony(line,urlstronastartowa) analizuje dostarczony kawaªek pliku i wstawia go do opowiedniej struktury, stosu, zbioru : if (valid) string link = res[0].second; int i = link.nd('"'); link.resize(i); linki.push(link); odwiedzonestrony.insert(link); valid = boost::regex_search(linia.c_str(), res, rxplik); if (valid) string link = res[0].second; int i = link.nd('"'); link.resize(i); //Dodaje jeden znak do tre±ci napisu, zwi kszaj c jego rozmiar (koncepcja operatora) pliki.push_back(urlstronastartowa+"/"+link); Obszar który zrównoleglamy za po±rednictwem technologi OpenMP odpowiada za stworzenie, przekazenie i zakmni nie pliku w którym potencjalny plik zostaª ±ci gniety. //obszar równoleglenia danych (rozdawanie watka pliki do zapisu) 7

omp_set_num_threads(32); #pragma omp parallel private(thread_number) #pragma omp for schedule(static) nowait for (i=0; i<count; i++) thread_number = omp_get_thread_num(); string urlpliku = pliki.at(i); CURL *handle = curl_easy_init(); sprintf(plik,"pobranyplik%d.dat",i); cout<<plik<<endl; cout<<urlpliku<<endl; cout<<"watek: "<<thread_number<<endl; FILE * le = (FILE *)fopen(plik,"w+"); curl_easy_setopt(handle,curlopt_url,urlpliku.c_str()); curl_easy_setopt(handle,curlopt_writefunction, write_data); curl_easy_setopt(handle,curlopt_writedata, le); curl_easy_perform(handle); curl_easy_cleanup(handle); fclose(le); StopTime = clock(); cout<<"czas zapisu: "<<StopTime/10000<<" sekunda"<<endl; //Koniec obszaru równoleglenia Cz ± IV Testowanie wydajno±ci aplikacji MirrorWeb z wykorzystaniem OpenMP 8

Cz ± V Instalacja, konguracja i kompilacja aplikacji MirrorWeb Biblioteki które zostaªy zaimplementowane w ±rodowiko Systemu Ubuntu 11.10 x64 (libcurl,libboost) sudo apt-get install libcurl4-gnutls-dev sudo apt-get install libboost-all-dev (+/- 100-300mb) Sposób kompilacji danego kodu ¹ródªowego g++-4.6 -fopenmp MirrorWeb.cpp -lboost_regex-mt -lcurl -o MirrorWeb Cz ± VI Wnioski Program stworzony z wykorzystaniem przedstawionych technologii speªnia pocz tkowe zaªo»enia i okre±lone wymagania. Wykorzystane technologie umo»liwiaj poprawne i skuteczne dziaªanie programu. Podczas testowania mo»emy zauwa»y»e wykorzystanie zrównoleglenia obszarów programu, przyspiesza jego prac i dziaªanie. Cz ± VII Bibliograa Literatura [1] B. Karlsson, Wi cej ni» C++. Wprowadzenie do bibliotek Boost, Helion, Gliwice 2006 9

[2] Boost C++ Libraries - Boost.Regex documentation (http://www.boost.org/) [3] OpenMP, http://computing.llnl.gov/tutorials/openmp/ Author:Blaise Barney, Lawrence Livermore National Laboratory 10