1. [25b] Vysvětlete stručně: [2b] Asychronní komunikace (princip, základní operace). [2b] Co to je asymetrické rendez-vous? [2b] Realizujete paralelní součet vektoru s rozměrem n na symetrickém multiprocesoru s N procesory (n>>N). Jaké mezní urychlení můžete dosáhnout a co pro to musí být splněno? [2b] Operace P() nad semaforem (jaká data má objekt semaforu, co operace P() dělá). [2b] Jak se vyrobí v Javě monitor? Jaké má skryté atributy a k čemu tyto atributy slouží? [2b] Fyzická komunikační topologie multiprocesoru s distribuovanou pamětí (uvést příklady). [2b] K čemu je dobrý objekt typu "mutex" pro vlákna v normě POSIX, jaké se s ním dají dělat operace. [2b] Účinnost paralelního algoritmu (definice + nějaký příklad). [2b] Model MPSD (proudové zpracování dat), co to je, jaké urychlení lze dosáhnout. [2b] Jaká je maximální komunikační vzdálenost dmax pro 3D mřížku s rozměrem m. [2b] Jaké rozdíly vidíte mezi symetrickým a asymetrickým multiprocesorem se sdílenou pamětí. [3b] Redukční operace v MPI - jaké jsou a jaké (zhruba) parametry má příslušná funkce. Tato první část písemky musí být napsána na minimálně 15 bodů, jinak není další část hodnocena !!! 2. [6b] Napište v Javě program, který vytvoří jedno vlákno. Vlákno vypíše "NAZDAR !" a skončí. Hlavní program čeká na skončení vlákna a pak také skončí. 3. [3b] V Javě napište třídu Message, která popisuje datovou strukturu nějaké (libovolně jednoduché) zprávy. Kromě datových prvků má konstruktor a metodu write(par), která naplní zprávu podle parametru (kopie hodnot dat podle objektu-parametru). 4. [8b] Napište v Javě třídu-monitor MailBox, která realizuje schránku pro jednu zprávu typu Message. Uvažované operace jsou zápis zprávy (blokující), čtení zprávy (blokující) a neblokující test přítomnosti zprávy. 5. [5b] Napište v Javě jednoduchou třídu Producent pro vlákno, které opakovaně zapisuje nějakou zprávu typu Message do schránky typu MailBox. 6. [8b] Napište kostru programů pro nalezení nejmenšího prvku v matici n x n reálných čísel s využitím výpočetního modelu farmer-workers a operací z rozhraní PVM. Máte k dispozici funkci read_row(i), kterou mohou dělníci použít ke čtení i-tého řádku matice ze sdíleného souboru. Farmer: Worker: 7. [5b] Napište (či alespoň naznačte) MPI program, který zjistí po rozběhnutí počet procesů, tento počet vypíše (ale jen jednou!) a skončí.