1. | Dany n-elementowy ciąg należy podzielić na P podciągów przy, czym w
zadaniu nalezy rozważyć wszystkie warianty rozdziału zadań: - zarówno przypadek, kiedy n jest podzielne przez P - i wszystkie procesory realizują wtedy obliczenia dla jednakowo licznych podciągów, - jak i przypadek, gdy n nie jest podzielne przez P - i wtedy część procesorów będzie sortować podciąg o jeden element dłuższy niż pozostałe. |
2. | Każdy z procesorów (niezależnie od pozostałych) realizuje sortowanie przydzielonego mu podciągu. W ćwiczeniu należy wykorzystać kilka typowych algorytmów sortowania, różniących się wyraźnie złożonością obliczeniową (np. algorytm sortowania bąbelkowego, algorytm sortowania przez proste wybieranie oraz metoda quicksort). |
3. | Stosując odpowiedni (jeden z podanych poniżej, lub też inny) algorytm agregacji, należy złożyć z P posortowanych lokalnie pociągów (czyli zawierających n/P elementów) jeden posortowany ciąg n-elementowy. Algorytm agregacji należy zrealizować w wersji sekwencyjnej (czyli realizuje go jeden procesor, który posiada wszystkie te posortowane podciągi) oraz - na ile to możliwe - równoległej. |
1. | Algorytm drzewiasty | Polega na kolejnym łączeniu binarnym posortowanych podciągów. Liczba agregacji będzie w tej metodzie wynosiła log2P, przy czym łączniu będą podlegały kolejno podciągi n/P, 2n/P, 4n/P, 8n/P- elementowe. |
2. | Algorytm sekwencyjny | Pierwotnie polegał na połączeniu dwóch posortowanych podciągów n/P elementowych, a następnie dołączeniu do tak otrzymanego ciągu 2n/P elementowego kolejnych podciągów n/P elementowych. Liczba agregacji koniecznych do połączenia wszystkich podciągów wynosiła (P-1). |
3. | Algorytm równoległy | Polega na jednoczesnym agregowaniu wszystkich posortowanych n/P elementowych podciągów. Do modyfikacji ciągu roboczego (takiego składającego się z P elementów - bierzemy po jednym z każdego posortowanego podciagu) można wykorzystać algorytm sortowania przez proste wybieranie. |
(wyk. A.Zatwarnicka)
prof. J. Sadecki