Lista zadań nr 1 

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:
  1. sekwencyjnie na CPU
  2. 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:
  1. zmień rozmiar wektora Figura na 1000 elementów
  2. inicjowanie wartości wektora Figura danymi pseudolosowymi
  3. 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ę:
  1. mierzącą czas obliczeń na CPU
  2. mierzącą czas obliczeń na GPU (uchwyć wyłącznie czas wykonywanie kernela)
  3. 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:
Oszacuj jaki procentowo jest koszt transferu danych do i z urządzenia w zależności od rozmiaru wektora. Sporządź sprawozdanie.