Lista zadań nr 2 

Ocena końcowa = 2 + suma uzyskanych punktów.

Zadanie 1 (1 pkt)

Zaprojektuj i zaimplementuj program doświadczalny, który wykaże, w jaki sposób arytmetyka zmiennoprzecinkowa urządzeń CUDA wpływa na dokładność złożonych obliczeń. Porównaj wyniki uzyskane z urządzenia i z hosta i przedyskutuj je. Uwaga: nie jest konieczne uruchamianie kodu kernela wielowątkowo - wystarczy jeden wątek, wykonujący te same obliczenia co host.

Zadanie 2 (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ń, porównaj wydajność obu rozwiązań.