Tomas Plachetka

Comenius University > Faculty of Mathematics, Physics and Informatics > Department of Computer Science

Research
Teaching
Publications
Contact

Konkurentne a distribuovane programovanie systemy 2015/2016

Skusky

15.1.2016 M.IV (resp. v M262)

Stvrtok 14:00-17:10 XII

Hodnoti sa priebezna praca pocas semestra (vypracovanie niekolkych projektov), ktora ma rovnaku vahu ako skuska v skuskovom obdobi. Pre uspesne absolvovanie kurzu je nutne obe tieto ciastocne hodnotenia splnit aspon na 40%.

Sablona pre projekty v C/POSIX

Sablona pre vsetky projekty v C/POSIX: ctemplate.zip
Po make "clean; make" ma byt 0 warnings, 0 errors.

Projekt 1

Implementujte v ANSI C/POSIX program, ktory robi sucasne nasledujuce tri veci:
  • Ponuka interaktivny riadkovy user-interface, ktory pozna prikazy "a hh:mm:ss" (add alarm), "l" (list alarms), "d alarm_nr" (delete alarm), "q" (quit). Alarmy su cislovane od 0, moze byt sucasne nastavenych viacero alarmov.
  • Vypisuje riadok s realnym casom "hh:mm" raz za minutu.
  • Vypise riadok "ALARM alarm_nr hh:mm:ss", ked nastane alarm cislo alarm_nr. Alarmy sa nastavuju a detekuju s presnostou na sekundy.
"q" (quit) ma ukoncit program prirodzenym ukoncenim funkcie main(), bez explicitneho volania napr. exit().

Projekt 2

Dokazte (na papieri), ze Petersenov algoritmus pre vzajomne vylucenie 2 threadov funguje.

Projekt 3

Uvazujte kniznicu, ktora implementuje standardne n-arne semafory. V sem.h ponuka typ Semaphore_t a nasledujuce funkcie:
  • void sem_init(Semaphore *s, int v);
  • void sem_wait(Semaphore *s);
  • void sem_signal(Semaphore *s);
Implementujte nasledujuce typy a funkcie (zakladne funkcie z pthreads) pomocou makier resp. funkcii, ktore vyuzivaju sem.h (a zakladne typy v C):
  • pthread_mutex_t
  • pthread_cond_t
  • pthread_attr_t
  • int pthread_mutex_init(m, a);
  • int pthread_mutex_lock(m);
  • int pthread_mutex_unlock(m);
  • int pthread_mutex_destroy(m);
  • int pthread_cond_init(c, a);
  • int pthread_cond_wait(c, m);
  • int pthread_cond_signal(c);
  • int pthread_cond_destroy(c);

Projekt 4

Odsimulujte pomocou funkcii resp. makier typy a funkcie z pthreads z projektu 3 pomocou semaforovych funkcii. (Opacna simulacia ako v projekte 3.)

Projekt 5

Napiste sekvencny program, ktory vypocita objem gule (v 3D) Monte-Carlo integraciou pologulovej funkcie nad kruhovou domenou. Pocet vzoriek je parametrom programu, ktory sa specifikuje pri spustani na command-line. Paralelizujte tento program pomocou OpenMP, pricom explicitne specifikujte metodu rozdelenia prace (schedule). Ak mate k dispozicii pocitac s aspon 4 procesormi, najdite "empiricky najlepsiu" metodu a jej parametre. Namerajte a uvedte graf efektivity (efficiency) pre 1, 2, 4 thready (ak mate aspon 8 procesorov, tak aj pre 8 resp. 16). Ak taky pocitac nemate, tak vyber metody a jej parametrov zdovodnite analyzou nameranych casov rozdelovanych uloh. Sucastou projektu je report s nameranymi datami a zdovodnenim vyberu metody a jej parametrov.

Evidencia odovzdanych projektov:
BJ: 1, 2, 3, 4, 5
KR: 1, 2, 3, 4, 5
MJ: 1, 2, 3, 4, 5
PA: 1, 2, 3, 4, 5
SS: 1, 2, 3, 4, 5
TJ: 1, 2, 3, 5

Updated by Tomas Plachetka, Dec/24/2015