Liczba godzin: |
9
|
Limit miejsc: |
(brak limitu) |
Zaliczenie: |
Zaliczenie na ocenę |
Rygory zaliczenia zajęć: |
zaliczenie na ocenę
|
Literatura uzupelniająca: |
1. Programming massively parallel processors: a hands-on approach,
David B. Kirk, Wen-mei W. Hwu., Morgan Kaufmann Publ., 2010.
2. Guerraoui R., Rodrigues L. Introduction to Reliable Distributed
Programming, Springer-Verlag, 2006
|
Metody dydaktyczne: |
ćwiczenia laboratoryjne
|
Literatura: |
1. Sztuka programowania wieloprocesorowego, Maurice Herlihy, Nir Shavit ; przekł. z jęz. Ang.: Maciej Baranowski, PWN, 2010
2. M. Ben-Ari, Podstawy programowania współbieżnego i rozproszonego, WNT, 1990
|
Efekty uczenia się: |
U1. Potrafi pozyskiwać informacje z internetu, literatury, baz danych i innych źródeł niezbędne w nowej oraz szybko rozwijającej się dziedzinie przetwarzania równoległego.
U2. Ma umiejętność zrównoleglania prostych algorytmów obliczeniowych.
U3. Student potrafi wykorzystać karty GPU i język CUDA C do stworzenia prostego programu wykonującego obliczenia metodami równoległymi i rozproszonymi.
U4. Potrafi zmodyfikować kod programu w języku CUDA C celem optymalizacji wykorzystania zasobów sprzętowych kart GPU w przetwarzaniu równoległym i rozproszonym.
|
Metody i kryteria oceniania: |
kolokwium zaliczeniowe (ustne oraz praca na komputerze)
|
Zakres tematów: |
Zapoznanie studentów ze sprzętem firmy NVIDIA. Wprowadzenie do narzędzia NVIDIA GPU Computing SDK poprzez uruchomienie wybranych plików wykonywalnych (np. Device Query lub CUDA FFT Ocean) dostępnych w przeglądarce firmy NVIDIA.
Studenci wykonują praktyczne zadania programowania w języku CUDA C. Zadania są następujące: konfigurowanie środowiska IDE dla programowania w języku CUDA C; uruchamianie pierwszego programu w CUDA ("Hello world „); uruchomienie funkcji jądra; uruchomienie kodu do testowania i wyjaśniania różnic między następującymi funkcjami języka CUDA C: funkcja jądra, funkcja hosta a funkcja urządzenia (słowa kluczowe: _global_, _device_, _host_); uruchomienie kodu do testowania transferu danych i alokacji obszaru pamięci kart GPU (słowa kluczowe: cudaMalloc (), cudaMemcpy (), cudaFree ()); kod do sprawdzania właściwości urządzenia GPU za pomocą funkcji cudaGetDeviceCount i cudaGetDeviceProperties; uruchamianie kodu wykonującego operację dodawania wektorów za pomocą bloków, obliczenia wykonywane równolegle; uruchomienie kodu do dodawania wektorów z wykorzystaniem wątków; uruchomienie kodu, dla wyliczenia skalarnego produktu dwóch wektorów z użyciem pamięci współdzielonej (słowo kluczowe: _shared_).
|