Correction of matrix multiplication CUDA

Instead of treating the matrix as a 1D array of blocks of threads we
treat it as a 2D array of blocks in CUDA