Lista zadań nr 2N
Ocena końcowa = 2 + suma uzyskanych punktów.
Zadanie 1 (1 pkt)
Napisz
w CUDA C prosty program wypisujący na stdout informacje o zainstalowanych w systemie urządzeniach CUDA. Użyj funkcji cudaGetDeviceCount() i cudaGetDeviceProperties().
Dla każdego odnalezionego urządzenia CUDA wyprowadź na stdout:
- jego nazwę
- rozmiar pamięci RAM
- liczbę multiprocesorów
- częstotliwość zegara
- wersję CC
- maksymalną liczbę wątków w bloku
- zdolność do pracy w trybie mapowania pamięci
Zaimplementuj funkcję:
int get_max_threads_per_block(int devno)
która zwraca maksymalną liczbę wątków dla urządzenia o numerze devno albo -1 w przypadku braku urządzeń CUDA. Użyj tej funkcji w swoich kolejnych programach.Zadanie 2 (2 pkt)
Wartość wielomianu określamy wzorem:
y = a0 + a1x1 + a2x2 + ... + anxn
Zakoduj kernel o nagłówku:
__global__ void poly(float a[], float x, float products[])
Na wejściu kernel otrzymuje wektor współczynników ai i wartość argumentu x, na wyjściu generuje wektor iloczynów aixi.
Sumowanie iloczynów odbywa się po stronie hosta.
Dopisz kod udowadniający, że twoje rozwiązanie działa poprawnie.