Ultimo aggiornamento: 2021-05-15
Il file cuda-matsum.cu calcola la somma tra due matrici quadrate di dimensione \(N \times N\) utilizzando la CPU. Modificare la funzione matsum()
in modo che la somma venga realizzata dalla GPU, senza necessità di modificare il corpo principale del programma. In altre parole, la funzione matsum()
dovrebbe:
allocare la memoria nella GPU per memorizzare copie delle matrici \(p, q, r\);
copiare il contenuto delle matrici \(p, q\) dall'host al device;
eseguire un apposito kernel (da definire) per calcolare la somma \(p + q\) usando la GPU;
copiare il risultato dal device all'host;
liberare la memoria nel device
in modo che non sia necessario modificare la funzione main()
. Il programma deve funzionare con qualsiasi valore di \(N\), che quindi non deve necessariamente essere un multiplo della dimensione dei thread block CUDA. Si noti che in questo esercizio non è conveniente usare la shared memory (perché?).
Per compilare:
nvcc cuda-matsum.cu -o cuda-matsum -lm
Per eseguire:
./cuda-matsum [N]
Esempio:
./cuda-matsum 1024