IV112 Projekt z programování paralelních aplikací
Projekt číslo 5: Porovnání paralelních alokátorů
Termín odevzdání: 30. 10. 2017 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:
Překrytí standardního alokátoru lze realizovat pomocí proměnné prostředí:
Odevzdávaný tarball/zip bude obsahovat
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.
- standardní libc malloc
- TBB malloc http://www.threadingbuildingblocks.org
- Hoard http://www.hoard.org/
- jemalloc http://www.canonware.com/jemalloc/
- gperftools http://code.google.com/p/gperftools/
- Streamflow http://github.com/scotts/streamflow/