Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

2. domácí úloha: Paralelizace pomocí OpenMP

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 hw02_openmp.zip.

Při implementaci můžete vycházet ze sekvenční implementace v souboru Executor.cpp. Vaši implementaci 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.

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í.

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. Před odevzdáním se ujistěte, že jste z kódu odebrali všechny ladící výpisy. Termín odevzdání je 11. 3. 23:59 CET pro středeční cvičení a 12. 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.

courses/b4b36pdv/tutorials/hw_02.txt · Last modified: 2021/03/01 09:40 by tomaspe7