IV112 Projekt z programování paralelních aplikací
Projekt číslo 3: Sdílené datové struktury (FIFO)
Termín odevzdání: 16. 10. 2017 20:00
Odevzdávarna: Zadání: V tomto projektu je vaším úkolem implementovat datovou strukturu (frontu) pro jednosměrnou komunikaci dvou vláken. Vlákno A bude do fronty vkládat hodnoty a vlákno B je z této fronty bude ve stejném pořadí vybírat.
Jako součást zadání jsou k dispozici soubory Makefile, driver.cpp, pomocné hlavičkové soubory tools.h a compatibilityHeader.h a dvě "vzorové" implementace, naive.hpp a ring.hpp.
Vašim úkolem je dodat soubor student.hpp a modifikovat soubor driver.cpp, a to tak, aby na počítači nymfe* byla propustnost vaší implementace (měřená programem driver) konzistentně výrazně vyšší než výkon dodaných příkladů (naive a ring) - alespoň 100 000 položek/ms, je ovšem možné dosáhnout výkonu přes 250 000 položek/ms. Minimální dosažitelná propustnost na stroji nymfe80 je 5000 položek/ms v případě naive.hpp a cca 55000 položek/ms pro ring.hpp. V souboru student.hpp dodejte také textový popis implementace a stručné odůvodnění korektnosti (zejména použití nebo nepoužití klíčového slova volatile a/nebo paměťových bariér).
Požadavky na rozhraní a chování vaší implementace odvoďte z dodaných příkladů. Kód který je vám k dispozici v driver.cpp krom měření propustnosti také kontroluje základní správnost implementace.
Projekt: Doplnkové materialy:
Odevzdávarna: Zadání: V tomto projektu je vaším úkolem implementovat datovou strukturu (frontu) pro jednosměrnou komunikaci dvou vláken. Vlákno A bude do fronty vkládat hodnoty a vlákno B je z této fronty bude ve stejném pořadí vybírat.
Jako součást zadání jsou k dispozici soubory Makefile, driver.cpp, pomocné hlavičkové soubory tools.h a compatibilityHeader.h a dvě "vzorové" implementace, naive.hpp a ring.hpp.
Vašim úkolem je dodat soubor student.hpp a modifikovat soubor driver.cpp, a to tak, aby na počítači nymfe* byla propustnost vaší implementace (měřená programem driver) konzistentně výrazně vyšší než výkon dodaných příkladů (naive a ring) - alespoň 100 000 položek/ms, je ovšem možné dosáhnout výkonu přes 250 000 položek/ms. Minimální dosažitelná propustnost na stroji nymfe80 je 5000 položek/ms v případě naive.hpp a cca 55000 položek/ms pro ring.hpp. V souboru student.hpp dodejte také textový popis implementace a stručné odůvodnění korektnosti (zejména použití nebo nepoužití klíčového slova volatile a/nebo paměťových bariér).
Požadavky na rozhraní a chování vaší implementace odvoďte z dodaných příkladů. Kód který je vám k dispozici v driver.cpp krom měření propustnosti také kontroluje základní správnost implementace.
Projekt: Doplnkové materialy: