CUDA
0800-CUDA
Program zajęć (wykład):
- Historia i architektura GPU.
- Pierwszy program w CUDA, wywołanie funkcji jądra.
- Wątki i ich grupowanie.
- Wykorzystanie pamięci wspólnej (ang. shared memory).
- Używanie narzędzi optymalizacyjnych.
- Pomiar czasu i zdarzenia.
- Operacje atomowe.
- Strumienie.
- Wykorzystanie zewnętrznych bibliotek:
-- cuBLAS
-- cuFFT
Program zajęć (Laboratorium):
- sumowanie wektorów,
- obliczanie iloczynów skalarnych (4 różne metody wraz z analizą ich wydajności),
- mnożenie macierzy (3 różne metody wraz z analizą wydajności),
- filtracja sygnałów,
- analiza wydajności dostępu do pamięci shared
- wielowątkowe tworzenie histogramów (operacje atomowe)
- strumieniowe przetwarzanie danych
- ćwiczenia z użeciem bilbiotek cuBLAS i cuFFT
Całkowity nakład pracy studenta
Godziny realizowane z udziałem nauczycieli ( 60 godz.):
- udział w wykładach – 15
- udział w laboratorium – 45
Czas poświęcony na pracę indywidualną studenta ( 40 godz.):
- przygotowanie do zajęć - 30
- przygotowanie do kolokwium - 10
Łącznie: 100 godz.
Efekty uczenia się - wiedza
Dla Informatyki Stosowanej:
W1: Ma pogłębioną wiedzę z zakresu architektury i programowania wielordzeniowych kart graficznych w technologii CUDA – K_W02, K_W04, K_W05 dla IS2
W2: Posiada wiedzę pozwalającą na zrównoleglenie algorytmu przetwarzania danych na karty graficzne w celu przyspieszenia obliczeń - K_W02, K_W03 dla IS2
W3: Zna historię rozwoju, stan obecny oraz trendy rozwojowe układów GPU pozwalających na równoległe przetwarzanie danych K_W09 dla IS2
Dla Fizyki Technicznej:
W1: Ma pogłębioną wiedzę z zakresu architektury i programowania wielordzeniowych kart graficznych w technologii CUDA – K_W02, K_W04, K_W05, K_W07 dla FTs2
W2: Posiada wiedzę pozwalającą na zrównoleglenie algorytmu przetwarzania danych na karty graficzne w celu przyspieszenia obliczeń - K_W04, K_W07 dla FTs2
W3: Zna historię rozwoju, stan obecny oraz trendy rozwojowe układów GPU pozwalających na równoległe przetwarzanie danych K_W02, K_W07 dla FTs2
Efekty uczenia się - umiejętności
Dla Informatyki Stosowanej:
U1 – Potrafi zastosować posiadaną wiedzę do analizy i reformułowania algorytmów na wielordzeniową platformę CUDA – K_U04, K_U09 dla ISs2
U2 – Analizuje wydajność algorytmu, jego „wąskie gardła” oraz potrafi dokonać krytycznej oceny przydatności wielordzeniowej karty graficznej w obliczeniach K_U08 dla ISs2
U3 – Wykorzystuje dokumentacje techniczną i potrafi samodzielnie uzupełnić swoją wiedzę podczas tworzenia kodu K_U02, K_U03 dla ISs2
Dla Fizyki Technicznej:
U1 – Potrafi zastosować posiadaną wiedzę do analizy i reformułowania algorytmów na wielordzeniową platformę CUDA – K_U01, K_U09 dla FTs2
U2 – Analizuje wydajność algorytmu, jego „wąskie gardła” oraz potrafi dokonać krytycznej oceny przydatności wielordzeniowej karty graficznej w obliczeniach K_U05 dla FTs2
U3 – Wykorzystuje dokumentacje techniczną i potrafi samodzielnie uzupełnić swoją wiedzę podczas tworzenia kodu K_U03, K_U09 dla FTs2
Efekty uczenia się - kompetencje społeczne
Dla Informatyki Stosowanej:
K1 - Umie krytycznie oceniać swoje umiejętności i szybkość programowania – K_K01 dla ISs2
K2 – Posiada umiejętność prowadzenia dyskusji na temat wydajności proponowanych rozwiązań implementacyjnych, potrafi precyzyjnie zadawać pytania – K_K01 dla ISs2
K3 – Potrafi skutecznie implementować oprogramowanie wykonujące analizę numeryczną danych w problemach naukowo-badawczych i programistyczno-wdrożeniowych – K_K04, K_K06 dla ISs2
Dla Fizyki Technicznej:
K1 - Umie krytycznie oceniać wyniki wydajności przetwarzania danych przedstawiane w literaturze – K_K01 dla FTs2
K2 – Umie krytycznie oceniać swoje umiejętności i szybkość programowania – K_K01 dla FTs2
K3 – Posiada umiejętność prowadzenia dyskusji na temat wydajności proponowanych rozwiązań implementacyjnych, potrafi precyzyjnie zadawać pytania – K_K01 dla FTs2
Metody dydaktyczne
Metody dydaktyczne podające:
- pogadanka
- wykład informacyjny (konwencjonalny)
- wykład konwersatoryjny
Metody dydaktyczne poszukujące:
- ćwiczeniowa
- laboratoryjna
Metody dydaktyczne podające
- pogadanka
- wykład konwersatoryjny
- wykład informacyjny (konwencjonalny)
Metody dydaktyczne poszukujące
- ćwiczeniowa
- laboratoryjna
Wymagania wstępne
Kurs programowania C (np. 0800-JPRO)
Koordynatorzy przedmiotu
Kryteria oceniania
Metody oceniania:
kolokwium- W1, W2, W3, U1, U2, U3, K1, K2, K3
Kryteria oceniania:
Wykład: zaliczenie bez oceny na podstawie laboratorium
Laboratorium: zaliczenie na ocenę na podstawie dwóch kolokwiów
ndst – <50%
dst- 50% - 59%
dst plus- 60% - 69%
db- 70% - 79%
db plus- 80% - 89%
bdb- >90%
Możliwość zdobycia dodatkowej oceny/plusów za aktywność w czasie zajęć.
Literatura
Literatura podstawowa:
1. Jason Sanders, Edward Kandrot, "CUDA w przykładach. Wprowadzenie do ogólnego programowania procesorów GPU", Helion 2012
2. NVIDIA, "CUDA_C_Programming_Guide"
3. NVIDIA, "CUDA_C_Best_Practices_Guide"
Literatura uzupełniająca:
1. David B. Kirk and Wen-mei W. Hwu, "Programming massively parallel processors : a hands-on approach", Burlington, MA : Morgan Kaufmann Publ., 2010
Więcej informacji
Dodatkowe informacje (np. o kalendarzu rejestracji, prowadzących zajęcia, lokalizacji i
terminach zajęć) mogą być dostępne w serwisie USOSweb: