lab11(1) 2 id 259112 Nieznany

background image

Programowanie równoległe i współbieżne

Ćwiczenie:

Ćwiczenie 11

Data oddania:

10.6.2013

Imię, Nazwisko:

Aleksandra Kulecka

Ocena:

Uwagi:


1.

Cel ćwiczenia:

Konfiguracja środowiska Microsoft Visual Studio do współpracy z biblioteką

OpenMP oraz implementacja, kompilacja i wykonanie

prostej aplikacji równoległej.

2.

Przebieg ćwiczenia:

Na podstawie przygotowanej w

cześniej aplikacji naszym zadaniem było jej

przetestowanie

dla różnej ilość wątków i procesów.

Poniżej przedstawiono kod źródłowy programu:

#include <iostream>

#include <omp.h> //biblioteka OpenMP

#include <stdio.h>

using namespace std;

int main()

{

int liczba = 0;

cout << "Podaj liczbe: ";

cin >> liczba;

cout << endl;

int thread_id;

if (liczba > 0)

{

#pragma omp parallel for

//dyrektywa preprocesora służąca do

//

zrównoleglenia wątków

for (int i = 0; i < liczba; i++)

{

printf(" %d", i);

}

cout << "\n";

}

return 0;

}



background image

Wynikiem działania powyższego kodu było:

3. Wnioski

Wypisywane liczby nie były poszeregowane według żadnego schematu,

Wyświetlone wartości powtarzały się,

Aby wywołać program z określoną ilością wątków należy ustawić
zmienną środowiskową

OMP_NUM_THREADS=liczba_watkow

Wykorzystanie funkcji cout << " "

<< i; dawało zły wynik wyświetlenia liczb,

fu

nkcja ta została zastąpiona poleceniem printf();

Wykorzystanie funkcji OpenMP wiąże się z dodaniem dodatkowej biblioteki
do programu.

4. OpenMP a MPI

OpenMP (ang. Open Multi-Processing)

– wieloplatformowy interfejs

programowania aplikacji (API) umożliwiający tworzenie programów
komputerowych dla systemów wieloprocesorowych z pamięcią dzieloną. Może
być wykorzystywany w językach programowania C, C++ i Fortran na wielu
architekturac

h, m.in. Unix i Microsoft Windows. Składa się ze zbioru dyrektyw

kompilatora, bibliotek oraz zmiennych środowiskowych mających wpływ na
sposób wykonywania się programu.

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.

background image

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ę OpenMP.
Alternatywny sposób polega na zastosowaniu specjalnych rozszerzeń
OpenMP dla systemów pozbawionych pamięci współdzielonej (np. Cluster
OpenMP Intela).

Message Passing Interface (MPI) (z ang. Interfejs Transmisji

Wiadomości) – protokół komunikacyjny będący standardem przesyłania
komunikatów pomiędzy procesami programów równoległych działających na
jednym lub więcej komputerach. Interfejs ten wraz z protokołem oraz
semantyką specyfikuje, jak jego elementy winny się zachowywać w dowolnej
implementacji. Celami MPI są wysoka jakość, skalowalność oraz przenośność.
MPI jest dominującym modelem wykorzystywanym obecnie w klastrach
komputerów oraz superkomputerach. Pierwsza wersja standardu ukazała się
w maju 1994 r. Standard MPI implementowany jest najczęściej w postaci
bibliotek, z których można korzystać w programach tworzonych w różnych
językach programowania, np. C, C++, Ada, Fortran.

OpenMP

jest otwartą biblioteką i jej użycie jest proste gdyż w większości

przypadków polega na dołączeniu biblioteki przez preambułe include. Program
OpenMP wykonuje swoje zadania w oparciu

o wątki, natomiast MPI robi to na

procesach i koniecznym jest

posługiwanie się zewnętrznym programem, aby

móc wykonać daną aplikację. W przypadku OpenMP wystarczy w zmiennej
środowiskowej OMP_NUM_THREADS ustawić ilość wywoływanych wątków.


Wyszukiwarka

Podobne podstrony:
lab11 4 id 259093 Nieznany
lab11 2 id 259088 Nieznany
Lab11 RapidPrototyping id 25910 Nieznany
lab11 RapidPrototyping EN id 25 Nieznany
Lab11 Sprawozdanie id 259109 Nieznany
Lab11 RapidPrototyping id 25910 Nieznany
Abolicja podatkowa id 50334 Nieznany (2)
4 LIDER MENEDZER id 37733 Nieznany (2)
katechezy MB id 233498 Nieznany
metro sciaga id 296943 Nieznany
perf id 354744 Nieznany
interbase id 92028 Nieznany
Mbaku id 289860 Nieznany
Probiotyki antybiotyki id 66316 Nieznany
miedziowanie cz 2 id 113259 Nieznany
LTC1729 id 273494 Nieznany
D11B7AOver0400 id 130434 Nieznany
analiza ryzyka bio id 61320 Nieznany

więcej podobnych podstron