PPR

Zkouška 22.1.2004, zk.: Racek, s sebou povolena vlastní semestrálka (doporučuji z části koncipovat jako tahák; přineste si ji s sebou [marné hledání ve zmateném paklu žádná slast]):

  1. Vysvětlete stručně: (celý bod 1 musí být splněn na minimálně 15 bodů)
  2. [4b] Vysvětlete stručně slovně co dělají následující funkce m MPI. Též uveďte, jaké mají parametry (alespoň zhruba).
  3. [10b] Napiště v Javě vhodnou formou monitor, který realizuje celočíselný semafor se standardními operacemi (P, V a inicializace (konstruktor)). Přidejte ještě neblokující test stavu semaforu (vrátí hodnotu čítače).
  4. Paralelizaci v modelu MPMD (tj. tzv. funkční paralelismus) lze popsat tzv. precedenčním grafem (hrany = dílčí činnosti, uzly = synchronizace činností). Paralelní výpočet popsaný precedenčním grafem realizujeme v distribuovaném prostředí s využitím PVM.
    1. [5b] Popište slovně jak byste výpočet realizovali, konkrétně:
      • čemu by odpovídali procesy PVM
      • jak by si procesy předávaly data
      • jak by se procesy synchronizovaly
      • jak by se celý výpočet inicioval a ukončil
    2. [5b] Na obrázku je nějaký fragment precedenčního grafu. Napište (formou vývojového diagramu, resp. pseudokódu, popřípadně slovně) program procesu odpovídajícího činnosti c. Výsledkem činností a a b je reálné číslo, v rámci c jsou tato čísla sečtena a předána navazujícím činnostem d a e.
                        a                                 d    
                       ----->+---+      c       +-----+----->
                             | i |------------->| i+1 |      
                       ----->+---+              +-----+----->
                        b                                 e    
                    
    3. [3b] Popište slovně funkce PVM (co dělají, parametry, které jste potřebovali v bodě b).
  5. Realizujeme model SPMD s využitím vláken POSIX a potřebujeme vlákna synchronizovat na bariéře. Vláken je pevný počet N (zavedeno jako konstanta #DEFINE N ...).
    1. [2b] Jaké objekty podporované v interface POSIX potřebujete pro realizaci bariéry (slovně popsat, zavést nějaké pojmenování objektů).
    2. [3b] Napište kousek C-kódu (nebo pseudokód) společného programu vláken využitý pro synchronizaci na bariéře.
    3. [3b] Jak byste v C (plus interface POSIX) realizovali objektový typ bariéra, přestože C není objektový jazyk (slovní vysvětlení, popřípadě kousky C-kódu).

Zkouška 5.2.2004 (zmateně, nepřesně, po paměti):

  1. Vysvětlete stručně:
    1. v Javě libovolný netriviální typ RECORD, udělejte konstruktor a getry a setry
    2. udělejte RECORD_PAR jako monitor nad RECORD pro vícevláknový program. Jen jeden zdroj; je-li plný nelze psát; je-li prázdný nelze číst; udělejte konstruktor a getry a setry
    3. udělejte třídu procesu, co bude pomocí read_in() odněkud číst vstup, pomocí write_out() psát výstup v cyklu; něco tlačit do RECORD_PAR (v konstruktoru musí být ten monitor jako parametr)
    1. V PMV situace: procesy MASTER, WORKER1 a WORKER2; MASTER dá vstupy WORKERovi1, ten zpracuje a předá WORKERovi2, ten opět MASTERovi. Napište v PVM MASTERa a komentujte:
                          program:           |           komentář:
                                             |
                                             |
                                             |
                                             |
                                             :
                                             . 
                  
    2. Jakého lze docílit maximálního urychlení a čím je toto urychlení dle vás omezeno?
  2. MPMD - střídají se vlákna a(), b(), c(), d(), e(), f(); procesy P1(), P2(), P3() dělají různě ac, bd, etc.; použijte semafory k napsání procesu co bude dělat pořadí abcdef a napište na jaké hodnoty musí semafory inicializovány.
Honck, 25.o3.2oo4, http://agentka.wz.cz/