background image

1.

Wywołanie funkcji MPI_Finalize: 
Wybierz jedn
ą odpowiedź: 

a) Jest konieczne w niektórych implementacjach MPI 
b) Powinna być wywołana jeśli korzystamy z więcej niż 1 procesu 
c) Jest konieczne, gdyż bez niej pojawiają się błędy 
d) Jest dobrą praktyką, ale nie jest to wymagane 

 

2.

Efektywność przyjmuje wartości z przedziału: 
N - liczba procesów 
Wybierz jedn
ą odpowiedź: 

a) [0,N] 
b) [0,1] 
c) [0,1) 
d) [1,N] 

 

3.

Do problemu o skalowalnym rozmiarze powinno się zastosować
Wybierz jedn
ą odpowiedź: 

a) Żadne z powyższych 
b) Prawo Amdahla 
c) Dowolne 
d) Prawo Gustafsona (odpowiedz potwierdzona przez prowadzącego) 

 

4.

Programy pisane na laboratorium wykorzystujące GPU działały w taksonomii: 
Wybierz jedn
ą odpowiedź: 

a) MISD 
b) SISD  
c) SIMD (odp prawidłowa. Było też pytanie o taksonomie MPI - odp. MIMD [WS]) 
d) MIMD 

 

5.

Wywołanie funkcji MPI_Gather odpowiada: 
Wybierz jedną odpowiedź: 

a) Wywołaniu MPI_Send we wszystkich procesach i n razy MPI_Recv w roocie 
b) Wywołaniu MPI_Recv we wszystkich procesach i n razy MPI_Send w roocie 
c) Wywołaniu MPI_Recv we wszystkich procesach poza rootem i n-1 razy MPI_Send w 

roocie 

d) Wywołaniu MPI_Send we wszystkich procesach poza rootem i n-1 razy MPI_Recv w 

roocie 
 

6.

Wywołanie funkcji MPI_Scatter  odpowiada: 
Wybierz jedną odpowiedź: 

a) Wywołaniu MPI_Send we wszystkich procesach i n razy MPI_Recv w roocie 
b) Wywołaniu MPI_Recv we wszystkich procesach i n razy MPI_Send w roocie 
c) Wywołaniu MPI_Recv we wszystkich procesach poza rootem i n-1 razy MPI_Send w 

roocie 

d) Wywołaniu MPI_Send we wszystkich procesach poza rootem i n-1 razy MPI_Recv w 

roocie 

 
 

 

background image

7.

Która operacja trwa najkrócej? 
Wybierz jedn
ą odpowiedź: 

a) Nie ma różnicy pomiędzy tworzeniem wątku, a procesu. 
b) Fork procesu. 
c) Utworzenie wątku. 
d) Stworzenie nowego podprocesu. 

 

8.

MPI zaprojektowany jest do pracy z pamięcią
Wybierz jedn
ą odpowiedź: 

a) Dzieloną 
b) Lokalną 
c) Rozproszoną 
d) Wspólną 

 

9.

Karta graficzna może operować na pamięci: 
Wybierz jedn
ą odpowiedź: 
a) Dowolnej pamięci w systemie operacyjnym 
b) Tylko karty graficznej. 
c) Karty graficznej i pamięci operacyjne RAM

 Gr6 wykłóciła tą odpowiedź i też zaliczył 

d) Pamięci karty i wydzielonym bloku pamięci operacyjnej. 

 

10.

Karta graficzna pracuje w architekturze: 
Wybierz jedn
ą odpowiedź: 

a) NUMA (odpowiedz potwierdzona przez prowadzącego)  
b) COMA 
c) UMA 

dla skojarzenia 

http://www.youtube.com/watch?v=nsLC08eQkj0

  

11.

Wskaż zdanie nieprawdziwe 
Wybierz jedn
ą odpowiedź

a) Wątki są „lżejsze” niż procesy 
b) Wszystkie programy współdzielą całą pamięć systemu i mogą wzajemnie po niej czytać 

i pisać. (odpowiedz potwierdzona przez prowadzącego) 

c) Wątki współdzielą pamięć programu. 
d) Komunikacja pomiędzy procesami odbywa się za pomocą kolejek komunikatów, 

pamięci dzielonej, sygnałów i semaforów. 

 

12.

Przesyłanie innego typu danych niż jest w specyfikacji MPI 
Wybierz jedn
ą odpowiedź

a) Nie jest możliwe ze względu na różnice w implementacji 
b) Jest możliwe tylko wtedy gdy typem tym jest prosta struktura 
c) Nie jest możliwe ze względu na różna wielkość typów danych na różnych 

architekturach 

d) Jest możliwe po serializacji lub zarejestrowaniu typu w MPI 

 

13.

Korzystając z MPI na heterogenicznym klastrze wykorzystujemy model: 
Wybierz jedn
ą odpowiedź

a) CC-NUMA 
b) COMA 
c) NUMA 
d) UMA 

 

background image

  

14.

Procesory GPU są przystosowane do taksonomii: 
Wybierz jedn
ą odpowiedź: (PYTANIE konfliktowe! prowadzący ma się zastanowić nad 
poprawn
ą odpowiedzią i doprecyzować ), jeżeli przystosowane to SIMD I MIMD, tak mi się 
wydaje
 

a) SIMD (odpowiedz uzasadniona i podana przeze mnie prowadzący ma pomyśleć jak 

będzie oceniał to pytanie) - bardziej prawdopodobne 

b) SISD i SIMD 
c) MIMD i SIMD? (odpowiedz podana przez prowadzącego)  
d) MIMD 
 
SISD ma  single Instruction Stream więc odpada,  
 W procesorach graficznych GPGPU występuje podział na tzw. rdzenie CUDA (ang. CUDA 
cores), których zadaniem jest realizacja utworzonych wątków. Rdzenie te są grupowane we 
wspomniane wyżej multiprocesory SM, na poziomie których możliwe jest już 
wykonywanie niezależnych programów, tak jak w architekturze MIMD. - takie coś 
znalazłem 

http://www.wfmiisi09.cba.pl/forum/viewtopic.php?f=219&t=1887&start=10

 no to w tym 

pliku wrzuconym przez tomka jest błąd 

 
 TUTAJ: 

http://www.cs.rice.edu/~vs3/PDF/comp635-lec4-v4.pdf

  

Piszą, że jeden blok to SIMD.  
 
 
Zaznaczasz SIMD i masz 100% dobrze. bez problemu. 
 

15.

OpenMPI jest to: 
Wybierz jedn
ą odpowiedź
(OpenMPI to biblioteka, MPI to protokó

ł

, takie pytanie te

ż

 si

ę

 pojawi

ł

o) 

a) Protokół wymiany komunikatóws (To dotyczy samego MPI) 
b) Biblioteka pozwalająca na zaawansowaną komunikację międzyprocesową 
c) Biblioteka pozwalająca na automatyczne zrównoleglenie programu 
d) Biblioteka do wysyłania prostych komunikatów pomiędzy procesami 
 

16.

Czy przyspieszenie może mieć wartość większą niż N, gdzie N jest liczbą procesorów? 
Wybierz jedn
ą odpowiedź
 

a) Nie 
b) Tak - to jest prawidłowa odpowiedź. Powiedziałże nazywa się to Superskalarnością 

[WS] 
(odpowiedz potwierdzona przez prowadzącego, choć osobiście się z nią nie zgadzam 
do końca to w wykładach pani P też można to znaleźć)  

 

17. Klasyczne jednordzeniowe procesory bez hyperthreadingu działają w taksonomii: 

a. SISD i SIMD

 

b. SISD 
c. SISD i MISD 
d. Dowolnej 
 

18. MPI działa w taksonomii: 

a. SIMD 
b. MISD 

background image

c. SISD 
d. 

MIMD 

 
19. Obliczenia na GPU mogą być wykonywane: 

a. Tylko na float 
b. Tylko na int i float 
c. Tylko na float i double 
d. 

Zależy od karty graficznej 

 
 

20. Najbardziej skalowalnym środowiskiem z poznanych na laboratorium jest: 

a. OpenMP 
b. GPU 

c. MPI 
 
 
 

21. Zadania w ramach bloku lub worksetu są przetwarzane w taksonomii: 

a. MIMD 
b. SISD i SIMD 

c. SIMD ([WS]: 

http://www.cs.rice.edu/~vs3/PDF/comp635-lec4-v4.pdf

 )

 

d. SIMD i MIMD 
 

22.

MPI jest to: 
Wybierz jedn
ą odpowiedź

a) Protokół wymiany komunikatów ( a podobne pytanko było z OpenMPI - tam 

odpowiedzią prawidłową jest opcja “biblioteka do zaawansowanego przesyłania 
komunikatów między procesami [WS]) 

b) Biblioteka pozwalająca na zaawansowaną komunikację międzyprocesową 
c) Biblioteka pozwalająca na automatyczne zrównoleglenie programu 
d) Biblioteka do wysyłania prostych komunikatów pomiędzy procesami 
 
 

Co to jest przyśpieszenie super liniowe? 
a. Przyśpieszenie większe niż N, gdzie N to liczba rdzeni procesora. 
b. Przyśpieszenie, dla którego wartość efektywności jest równa 1. 
c. Jest to przyśpieszenie, które rośnie wykładniczo. 
d. Przyśpieszenie idealne, równe N, gdzie N to liczba rdzeni procesora. 
  
Pytanie 5 
Czy przyśpieszenie superliniowe jest możliwe jeśli nie korzystamy z zewnętrznych 
zasobów obliczeniowych, obliczanie odbywa się tylko lokalnie? 
a. Nie 
b. Tak Ja bym dał tak 
 
(Przyśpieszenie superliniowe występuje wtedy gdy wszystkie dane mieszczą się w 
pamięci podręcznej czyli chyba w ogóle nie korzystamy z zewnętrznych zasobów 
obliczeniowych, więc ja bym dał tak) 
   
Jaka funkcja nie nadaje się do generowania liczb w programie wielowątkowym? 
Wybierz jedną odpowiedź: 
a. rand() 

background image

b. rand_r() 
c. erand48() 
d. Marsaglia’s KISS generator 
 
 
Rozwiń skrót GPGPU 
General-Purpose computing on Graphics Processing Units 
 
Przepustowość kart graficznych 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
------------------------------------------------------------------------------------------------------------------ 
 

KOLOKWIUM 1  OPEN MP 

 

 
 

1. Która operacja wykona się najszybciej? 

a. utworzenie wątku 

b. fork() 
c. exec() 
d. (...) 

2. Jaką flagę należy ustawić, aby skompilować z OpenMP? 

a. -fopenmp 
b. -gopenmp 
c. żadną - kompilator automatycznie wykryje wykorzystanie OpenMP 
d. (...) 

3. Do czego służy pragma "barrier"? 

a. wszystkie wątki muszą dojść do niej w tym samym czasie 
b. jest to synchronizowany fragment kodu 
c. (...) 
d. (...) 

4. Jeżeli komputer ma 4 rdzenie, to na ilu wątkach program uruchomi się domyślnie? 

na 4ch 

 

background image

5. Wskaż błędne zdanie: 

dwa dowolne procesy nie mogą korzystać z dowolnej przestrzeni systemowej 

 

6.  Co się stanie przy kompilacji gdy nie dodamy flagi fopenmp? 

skompiluje się bez obsługi openmp 

 

7. Default(none) - co się stanie ze zmiennymi? 

należy ręcznie ustalić widoczność wszystkich zmiennych 

 

 
 

9. Pytanie o dyrektywy private, shared, barier 
 
shared – dane wewnątrz równolegle przetwarzanego regionu są współdzielone, co 
oznacza, że są widoczne i dostępne dla wszystkich wątków jednocześnie. Domyślnie 
wszystkie zmienne w regionie współdzielonej pracy są shared z wyjątkiem licznika iteracji 
pętli. 
 
private – dane wewnątrz równolegle przetwarzanego regionu są prywatne dla każdego 
wątku, co oznacza, że każdy wątek posiada lokalną kopię i używa jej jako zmienną 
tymczasową. Prywatne zmienne nie są inicjalizowane, ich wartość nie jest udostępniana 
do użycia poza regionem przetwarzanym równolegle. Domyślnie liczniki iteracji pętli są 
prywatne. 
 
default – pozwala programiście ustawiać domyślny zasięg zmiennych wewnątrz 
równolegle przetwarzanego regionu, poprzez użycie shared, private lub none. Opcja none 
zmusza programistę do deklarowania każdej zmiennej w równolegle przetwarzanym 
regionie przy użyciu klauzul atrybutów współdzielenia danych. 
 
barrier – każdy wątek czeka, zanim wszystkie inne wątki osiągną ten punkt. Konstrukcje 
współdzielące prace posiadają ukrytą synchronizację barier na końcu. 
 
nowait – ustala, że wątek kompletujący przyporządkowaną mu pracę, może pracować bez 
czekania na inne wątki przed zakończeniem. W przypadku braku tej klauzuli, wątki 
przeprowadzają synchronizację bariery na końcu bloku pracy współdzielonej. 
 
itp. 
 
10. Default(none) - co się stanie ze zmiennymi: 

 należy ręcznie ustalić widoczność wszystkich zmiennych 

 

//-------------------------------------------------------------------- 
/*Pytania wymyślone:*/ 

na pierwszym chyba było coś o firstprivate/lastprivate?  
 
firstprivate – dane prywatne dla każdego wątku, inicjalizowane przy użyciu wartości 
zmiennych o nazwach takich jak w głównym wątku. 
 
lastprivate – dane prywatne dla każdego wątku. Wartości są kopiowane na zewnątrz 
zrównoleglonego rejonu, do zmiennych globalnych o takiej samej nazwie, jeśli bieżąca 
iteracja jest ostatnią iteracją zrównoleglonej pętli. Zmienna może być zarówno firstprivate, 

background image

jak i lastprivate. 
 
threadprivate – dane są danymi globalnymi, stają się prywatne w każdym zrównoleglonym 
regionie podczas uruchomienia. Różnica pomiędzy threadprivate a private polega na tym, 
że w pierwszym występuje globalna przestrzeń przypisywana przez threadprivate a w 
drugim wartość przetwarzana w zrównoleglonych regionach. 
 
omp_get_thread_num()- zwraca id wątku 
omp_set_num_threads(n) - ustawia ilość wątków 
omp_get_num_threads() - zwraca ilość wątków 
 

11.Co się stanie jak ktoś nie zaliczy kolokwium poprawkowego: 
a) Warunek 
b) Laska Pańska ;) 
c) NIC (NIC to 0,5 na dwoch ;))   <a href=”www.chwasty.pl”> 

Lubię To</a>

 

d) Chwast wróci do Polski 
e) zrobimy euromajdan ;) 
f) Majdan już nie gra 

dzis na moodlu po poludniu napisze co z tymi ktorzy nie zdali (spr ile ich jest), ewentualnie w 
srode bedzie jakis termin 

 

http://disco.fleo.se/?name=PRIR+JEST+ZAJEBIST

Y 

:) 

:)