Lista zadań nr 1S
W pliku transf.cu
znajdziesz kod wykonujący obrót o kąt zestawu punktów danych jako
wektor struktur opisujących pary współrzędnych na płaszczyźnie.
Operacja ta wykonywana jest dwukrotnie:
- sekwencyjnie na CPU
- quasi-równolegle na GPU
Skompiluj plik poleceniem:
nvcc transf.cu -o transf
i uruchom uzyskany plik wykonywalny.
Zadanie 1 (3.0)
Uzupełnij kod o:
- zmień rozmiar wektora Figura na 1000 elementów
- inicjowanie wartości wektora Figura danymi pseudolosowymi
- sprawdzenie czy wyniki otrzymymane z GPU są takie same jak obliczone przez CPU - jeśli nie są, wyprowadź na stdout wszystkie wykryte różnice
Zadanie 2 (4.0)
Wykonaj czynnośc z zadania 1, a następnie uzupełnij kod a sekwencję:
- mierzącą czas obliczeń na CPU
- mierzącą czas obliczeń na GPU (uchwyć wyłącznie czas wykonywanie kernela)
- mierzącą czas obliczeń na GPU (z uwzglęnieniem czasu transferu danych do i z urządzenia)
Uwaga: nie używaj funkcji clock() - funkcja ta mierzy zużyty czas procesora, a nie faktyczny upływ czasu. Zadanie 3 (5.0)
Wykonaj czynności z zadania 2, a następnie porównaj czasy obliczeń na CPU i GPU dla następujących rozmiarów wektora Figura:
- 1000
- 10000
- 100000
- 1000000
- 10000000
Oszacuj jaki procentowo jest koszt transferu danych do i z urządzenia w zależności od rozmiaru wektora. Sporządź sprawozdanie.