IV112 Projekt z programování paralelních aplikací

Projekt číslo 5: Porovnání paralelních alokátorů

Termín odevzdání: 31. 10. 2019 20:00

Odevzdávarna: Zadání: Cílem tohoto projektu je seznámit se s problematikou alokace paměti v kontextu návrhu a implementace paralelních aplikací.

Vaším úkolem je v krátké zprávě zhodnotit kvalitu minimálně čtyř paměťových alokátorů v kontextu programování paralelních aplikací. Za tímto účelem budete implementovat sadu testovacích programů, které k vyhodnocení alokátorů použijete. Vaše testovací sada musí testovat alokátory minimálně na následující vlastnosti:
  • Rychlost: Paralelní alokátor musí být schopen provádět operace malloc a free stejně rychle jako dobrý sekvenční alokátor, aby byla zachována efektivita sekvenčních programů a paralelních programů běžících na jednoprocesorových architekturách.
  • Škálovatelnost: Výkonnost alokátoru by měla lineárně růst s počtem použitých procesorů/jader.
  • Eliminace aktivního false sharing: Aktivní false sharing nastává pokud vlákna mají svá privátně alokovaná data umístěna alokátorem na stejnou cache line. (Vlákna nepřistupují k datům jiných vláken na stejné cache line.)
  • Eliminace pasivního false sharing: Pasivní false sharing nastavá, pokud aplikace nejdříve v jednom vlákně alokuje blok paměti, který posléze uvolní, a poté dvě různá vlákna alokují bloky (poloviční velikosti) a alokátor použije pro uspokojení těchto požadavků paměť uvolněnou v předchozí dealokaci tak, že se bloky alokovaná pro různá vlákna vyskytnou na stejné cacheline.

Překrytí standardního alokátoru lze realizovat pomocí proměnné prostředí:
  • LD_PRELOAD="path/to/my/malloc.so" ./myTestApp

Odevzdávaný tarball/zip bude obsahovat
  • Vámi implementované testovací programy.
  • Skript, který provede kompilaci a spuštění testovacích programů na 2 až 16 vláknech pro všechny zvolené alokátory.
  • Zprávu, která shrnuje vyhodnocuje alokátory na základě Vašich testů a prezentuje výsledky testů v čitelné a pochopitelné podobě.
  • Pokud vámi vybrané alokátory nejsou standardně systémově instalovány, budou potřebné dynamicky linkované knihovny zkompilované na stroji aisa součástí odevzdaného projektu.
Navrhované alokátory (možno vybrat i jiné)