Lista zadań nr 1

Ocena końcowa = suma uzyskanych punktów.

Zadanie 1 (obligatoryjne - 3 pkt)

Pobierz, skompiluj i uruchom prosty program obliczający wartośc pewnego wielomianu dla  każdego z elementów wektora. Obliczona wartość jest umieszczana w tym samym elemencie, który zawierał wartość argumentu..  Dopisz fragment wykonujący tę samą czynność sekwencyjnie z użyciem CPU. Wykonaj pomiary czasu wykonania kodu CPU i GPU, dopisując własny kod mierzący upływ czasu. Porównaj uzyskane wyniki z tym, które podaje program nvprof. Oszacuj, jaką część obliczeń na GPU pochłania transfer danych z/do urządzenia dla różnych rozmiarów tablicy argumentów (czyli różnych N). Zbierz i zaprezentuj wyniki

Zadanie 2 (dodatkowe - 2 pkt)

Jednym ze sposobów (rzadko stosowanym) obliczania wartości liczby π jest iloczyn nieskończony (tzw. iloczyn Wallisa) o poniższej postaci:



Twoim zadaniem jest:
  1. Napisanie kodu, który w sposób sekwencyjny, działając wyłącznie w ramach hosta, oblicza wartość π z dokładnością eps (eps jest parametrem progamu, a interpretuje się go jako maksymalną akceptowalną różnicę pomiędzy dwoma kolejnym przybliżeniami - jeśli wartość bezwzględna tej różnicy jest mniejsza od eps, kończy się obliczenia); zmierz czas obliczeń.
  2. Napisanie kodu, który oblicza wartość π równolegle, działając w wykorzystaniem sprzętu urządzenia CUDA; załóż, że każdy z wątków oblicza wartość jednego wyrazu iloczynu; podejmij właściwe decyzje odnośnie podziału problemu na bloki wątków; zdecyduj, kto jest odpowiedzialny za mnożenie wyrazów - kod hosta czy kod wątku; zmierz czas obliczeń (samodzielnie i programem nvprof) , porównaj wydajność obu rozwiązań.