4. gyakorlat

Összefésülés

  • Vizsgáljuk meg, hogy milyen módon párhuzamosítható az összefésülés algoritmusa!

  • Nézzük meg a merge nevű mintaprogram megoldását!

Termelő-fogyasztó probléma

VAR chan: CHANNEL OF INTEGER;
  • Készítsünk egy programot, amelyben egy Publisher egész számokat tesz közzé, majd a Subscriber annyi műveletet végez el, amennyi a kapott számértékben szerepel. (Azért annyit, hogy változatosak legyenek a számítási idők.) Tegyük fel, hogy összesen 5 ilyen üzenet lesz!

  • Módosítsuk a programot úgy, hogy két Publisher is van!

  • Módosítsuk a programot úgy, hogy két Subscriber fut párhuzamosan!

  • Kombináljuk az előző kettőt!

Pipeline párhuzamosítás

  • Vizsgáljuk meg a Fibonacci sorozat elemeit számító programot!

  • Készítsünk egy olyan programot, amelyik egy egész számnak kiszámítja a nála kisebb, legnagyobb osztóját, meghatározza annak a köbét, majd kiszámítja annak négyzetgyökét! Adjuk meg a programot szekvenciális és pipeline-al történő párhuzamosítás formájában! Írassuk ki az egyes részeredményeket futás közben!

Zárolási mechanizmusok

  • Készítsünk példát a Lost update problémára, majd javítsuk ki SPINLOCK segítségével!

  • Készítsünk olyan példát, amelyben a lock használata feleslegesen rontja a számítási teljesítményt! (Például tömb elemeihez való hozzáférés kapcsán.)

  • Nézzük meg a hisztogram és a közelítő integrál számításához tartozó párhuzamos algoritmusokat!