Lista
zadań nr 3N
Ocena końcowa = 2 + suma
uzyskanych punktów.
Zadanie 1 (1 pkt)
Zmodyfikuj kod transformujący współrzędne punktów (lista 1)
w taki sposób, aby używał mapowania pamięci
zamiast kopiowania danych pomiędzy hostem i urządzeniem. Powtórz
pomiary, zbierz i zaprezentuj wyniki.
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:
- 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ń. Kod ten powinien również obliczyć
liczbę iteracji potrzebną do uzyskania zamierzonej dokładności.
- Napisanie kodu, który oblicza wartość π
równolegle, działając w wykorzystaniem sprzętu urządzenia CUDA; załóż,
że:
- kod obliczy tyle samo wyrazów, ile wyliczył kod sekwencyjny
- 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ń.