Przetwarzanie równoległe PROJEKT OMP i CUDA Temat projektu dotyczy analizy efektywności przetwarzania równoległego realizowanego przy użyciu komputera równoległego z procesorem wielordzeniowym z pamięcią współdzieloną oraz karty graficznej. Wykorzystywane technologie to OpenMP oraz CUDA. Obliczenia dotyczą problemu mnożenia tablic. Opis problemu obliczeniowego: Mnożenie tablic kwadratowych podczas którego każdy element tablicy wynikowej C powstaje jako suma iloczynów elementów z odpowiedniego wiersza tablicy A i odpowiedniej kolumny tablicy B. W skład projektu wchodzi: Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania, Analiza poprawności kodu równoległego przygotowanych wersji (sprawdzenie obecności wyścigu w dostępie do danych współdzielonych), Analiza efektywności kodu o Dla CPU analiza warunków lokalnego czasowo dostępu do danych w pamięci podręcznej (określenie wielkości instancji problemu umożliwiające jednokrotne pobieranie danych do współdzielonej pamięci podręcznej poziomu 3 procesora), o Dla CPU analiza warunków lokalnego przestrzennie dostępu do danych; zakładamy wielkość pamięci podręcznej adresów stron wirtualnych danych (DTLB) na poziomie 512 par wpisów adresów stron o rozmiarze 4 kb; dotyczy każdego rdzenia procesora w lab 2.7.6 o Dla CPU analiza zrównoważenia obciążenia rdzeni procesora pracą przy przetwarzaniu równoległym. o Dla GPU analiza efektywności dostępu do pamięci: łączenie dostępów do pamięci globalnej, współczynnik CGMA. o Dla GPU analiza efektywności obliczeń: zrównoważenie obciążenia systemu, zajętość multiprocesora. Określenie charakterystycznych wielkości instancji problemu: o Zapewniających równomierne obciążenie procesorów systemu obliczeniowego o zapewniających lokalność przestrzenną dostępu do danych, o zapewniających lokalność czasową dostępu dodanych. o powodujących brak lokalności przestrzennej dostępu do danych, o powodujących brak lokalności czasowej dostępu do danych. Wykonanie eksperymentu dla różnych instancji charakterystycznych po skompilowaniu kodu z maksymalnym poziomem optymalizacji kodu (wersja Release kodu). Pomiar czasu przetwarzania każdej instancji w systemie od momentu wywołania funkcji mnożącej tablice do momentu zakończenia obliczeń
przez tę funkcję mierzony czas nie jest sumą czasu pracy procesorów. Czas przygotowania danych w pamięci operacyjnej nie jest uwzględniony w czasie przetwarzania. Wyznaczenie parametrów przetwarzania: prędkość przetwarzania jako liczba instrukcji (zgodnie ze złożonością algorytmu) na sekundę, przyspieszenie przetwarzania w stosunku do najszybszego algorytmu sekwencyjnego wykonanego przy użyciu CPU np. standardowy algorytm z kolejnością zagnieżdżenia iteracji ikj. Do obliczeń proszę wykorzystać tablice zainicjowane liczbami losowymi (np. matrix_a[i][j] = (float) rand() / RAND_MAX ;) sprawdzić poprawność przetwarzania równoległego przez porównanie z wynikami przetwarzania sekwencyjnego (uwzględnić możliwy błąd zaokrągleń). Przygotowanie sprawozdania. Sprawozdanie zawierać powinno: Prezentacja wykorzystanego systemu obliczeniowego i jego kluczowych parametrów (liczba rdzeni, struktura pamięci podręcznej, wielkość DTLB) jeśli użyto inny niż komputery laboratoryjne. Kluczowe fragmenty kodu sekwencyjnego i równoległego, omówić użyte dyrektywy Open MP i specyficzne dla przetwarzania na GPU wyrażenia kodu kernela. Prezentacja wyników analiz z przygotowania eksperymentu: lokalność dostępu dodanych, przydział pracy do wątków w CPU i GPU, dane przetwarzane (czytane lub wyznaczane) przez poszczególne wątki (CPU) i bloki wątków (GPU) opis słowny i rysunki. Obliczenie, prezentacja i porównanie miar efektywności najszybsze, najwolniejsze przetwarzanie, najwyższe i najniższe przyspieszenie przetwarzania równoległego. Wyniki uzyskane dla różnych uruchomień (różne systemy, kody i instancje) należy zebrać w jedną tabelę lub kilka tabel dla umożliwienia łatwego porównania wartości. Próba uzasadnienia obserwowanych (na podstawie miar efektywności) przyczyn niskiej/wysokiej efektywności przetwarzania dla poszczególnych wersji kodu i rozmiarów instancji. Komentować/uzasadniać należy wartości zawarte w tabelach z określeniem numeru tabeli, wiersza i kolumny oraz przypomnienia warunków dla których komentowany parametr został wyznaczony. Wersje projektu: 1. Porównanie efektywności metod równolełych CPU 3 pętle - kolejność pętli: ikj, CPU 6 pętli podział pracy przed pętlą zewnętrzną; kolejność pętli: zewnętrznych ijk, GPU użycie wyłącznie pamięci globalnej 2. Porównanie efektywności metod równolełych CPU 3 pętle - kolejność pętli: ikj, CPU 6 pętli podział pracy po pętli zewnętrznej; kolejność pętli: zewnętrznych ijk, GPU użycie wyłącznie pamięci globalnej 3. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 6 pętli podział pracy po 3 pętli; kolejność pętli: zewnętrznych ijk,
GPU użycie wyłącznie pamięci globalnej 4. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 6 pętli podział pracy przed pętlą zewnętrzną; kolejność pętli: zewnętrznych ijk, GPU użycie pamięci współdzielonej (jeden 5. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 6 pętli podział pracy po pętli zewnętrznej; kolejność pętli: zewnętrznych ijk, GPU użycie pamięci współdzielonej (jeden 6. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 6 pętli podział pracy po 3 pętli; kolejność pętli: zewnętrznych ijk, GPU użycie pamięci współdzielonej (jeden 7. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 6 pętli podział pracy przed pętlą zewnętrzną; kolejność pętli: zewnętrznych ijk, GPU użycie pamięci współdzielonej (dwa 8. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 6 pętli podział pracy po pętli zewnętrznej; kolejność pętli: zewnętrznych ijk, GPU użycie pamięci współdzielonej (dwa 9. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 6 pętli podział pracy po 3 pętli; kolejność pętli: zewnętrznych ijk, GPU użycie pamięci współdzielonej (dwa 10. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 6 pętli podział pracy przed pętlą zewnętrzną; kolejność pętli: zewnętrznych ijk, GPU proces liczy dwa wyniki (podwyższenie CGMA), użycie pamięci współdzielonej (jeden 11. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 6 pętli podział pracy po pętli zewnętrznej; kolejność pętli: zewnętrznych ijk, GPU proces liczy dwa wyniki (podwyższenie CGMA), użycie pamięci współdzielonej (jeden 12. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj,
CPU 6 pętli podział pracy po 3 pętli; kolejność pętli: zewnętrznych ijk, GPU proces liczy dwa wyniki (podwyższenie CGMA), użycie pamięci współdzielonej (jeden 13. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 6 pętli podział pracy przed pętlą zewnętrzną; kolejność pętli: zewnętrznych ijk, GPU proces liczy dwa wyniki (podwyższenie CGMA), użycie pamięci współdzielonej (dwa obszay jednoczesne obliczenia i zapełnianie) 14. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 6 pętli podział pracy po pętli zewnętrznej; kolejność pętli: zewnętrznych ijk, GPU proces liczy dwa wyniki (podwyższenie CGMA), użycie pamięci współdzielonej (dwa 15. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 6 pętli podział pracy po 3 pętli; kolejność pętli: zewnętrznych ijk, GPU proces liczy dwa wyniki (podwyższenie CGMA), użycie pamięci współdzielonej (dwa 16. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 3 pętle - kolejność pętli: jki, GPU użycie wyłącznie pamięci globalnej 17. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 3 pętle - kolejność pętli: jik, GPU użycie wyłącznie pamięci globalnej 18. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 3 pętle - kolejność pętli: ijk, GPU użycie wyłącznie pamięci globalnej 19. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 3 pętle - kolejność pętli: jki, GPU użycie pamięci współdzielonej (jeden 20. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 3 pętle - kolejność pętli: jik, GPU użycie pamięci współdzielonej (jeden 21. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 3 pętle - kolejność pętli: kij, GPU użycie pamięci współdzielonej (jeden
22. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 3 pętle - kolejność pętli: jki, GPU użycie pamięci współdzielonej (dwa 23. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 3 pętle - kolejność pętli: jik, GPU użycie pamięci współdzielonej (dwa 24. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 3 pętle - kolejność pętli: kij, GPU użycie pamięci współdzielonej (dwa 25. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 3 pętle - kolejność pętli: jki, GPU proces liczy dwa wyniki (podwyższenie CGMA), użycie pamięci współdzielonej (jeden 26. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 3 pętle - kolejność pętli: jik, GPU proces liczy dwa wyniki (podwyższenie CGMA), użycie pamięci współdzielonej (jeden 27. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 3 pętle - kolejność pętli: kij, GPU proces liczy dwa wyniki (podwyższenie CGMA), użycie pamięci współdzielonej (jeden 28. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 3 pętle - kolejność pętli: jki, GPU proces liczy dwa wyniki (podwyższenie CGMA), użycie pamięci współdzielonej (dwa obszay jednoczesne obliczenia i zapełnianie) 29. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 3 pętle - kolejność pętli: jik, GPU proces liczy dwa wyniki (podwyższenie CGMA), użycie pamięci współdzielonej (dwa 30. Porównanie efektywności metod równoległych CPU 3 pętle - kolejność pętli: ikj, CPU 3 pętle - kolejność pętli: ijk, GPU proces liczy dwa wyniki (podwyższenie CGMA), użycie pamięci współdzielonej (dwa Literatura: Wykłady i literatura przedmiotu
Przygotowany: 4.11.2017 Zmiany: brak