Search
Ve 3. týdnu jsme se seznámili se základy OpenMP. V 2. domácí úloze si budete moct vyzkoušet, že úspěšnost různých způsobů paralelizace závisí do značné míry na vstupních datech. Pro efektivní zvýšení výkonu byste měli svoji implementaci uzpůsobit dostupným znalostem o vstupních datech.
V této úloze budete postupně pomocí OpenMP implementovat 4 metody s rozdílným přístupem k paralelizaci. Každá metoda dostane na vstup datovou sadu - data, složenou z vektorů náhodně generovaných čísel. Vaším úkolem je čísla v každém vektoru sečíst a tento součet uložit do vektoru solution na index odpovídající pořadí vektoru, který jste sčítali. Stáhněte si prosím balíček hw03_openmp.zip.
data
solution
Při implementaci můžete vycházet ze sekvenční implementace v souboru Executor.cpp. Vaší implementace budeme porovnávat s referenčním řešením. Vy budete implementovat metody v souboru SumsOfVectors.cpp. Tam rovněž naleznete přesný popis toho, co po vás chceme.
Executor.cpp
SumsOfVectors.cpp
Popis jednotlivých datových sad s otázkami k zamyšlení naleznete v souboru main.cpp. Datové sady jsou celkem 4. U každé datové sady je popsáno, jaké výsledky v porovnání s ostatními implementacemi očekáváme. Za úspěšné vyřešení datové sady považujeme to, že výsledek, který vrátí vámi implementovaná metoda je správný a čas exekuce odpovídá časům referenčního řešení.
main.cpp
Popis jednotlivých datových sad: - Sada, která obsahuje malý počet velmi dlouhých vektorů - Sada, kde délky vektorů mají velký rozptyl - Sada, která obsahuje velký počet vektorů malé konstantní velikosti - Sada, která je nevhodná k paralelizaci
Body můžete získat za vyřešení prvních tří datových sad a to následovně: za vyřešení jedné dostanete 0.5 bod, pokud budou správně 2, budete mít 1 bod. Za vyřešení všech tří získáte 2 body.
Zip archiv obsahující soubor SumsOfVectors.cpp odevzdávejte do systému BRUTE. Termín odevzdání je 15. 3. 23:59 CET pro středeční cvičení a 16. 3. 23:59 CET pro čtvrteční cvičení. Rozhoduje cvičení, na které jste zapsaní v KOSu. Pokud byste měli jakýkoliv problém s vypracováním, neváhejte použít forum.