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:

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.