 void compareHostAndGpuOutput();
 void die(const char *error); 
 void check_error(cudaError e);
-
+__global__ void kernel(float * A_GPU, float * B_GPU);
 //----------------------------------- CUDA function definitions -----------------------------------------
 
 

	}
}

__global__ void kernel() {
	int srow = 0;
	int scol = 0;
	int i = blockDim.x * blockIdx.x + threadIdx.x;
	int j = blockDim.y * blockIdx.y + threadIdx.y;
	int sizeOfWork = 10;
	int matrixIndexX = i * sizeOfWork;
	int matrixIndexY = j * sizeOfWork;
	__shared__ float blockA[sizeOfWork][sizeOfWork];	
	__shared__ float blockB[sizeOfWork][sizeOfWork];
	// copy the submatrix into shared memory
	for (int row = matrixIndexY; row < matrixIndexY+sizeOfWork; row++) {
		for (int col = matrixIndexX; col < matrixIndexX+sizeOfWork; col++) {			
			blockA[srow][scol] = A[row][col];
			blockB[srow][scol] = B[row][col];
			scol++;
		}
		srow++;
	}
		

}



	clock_t end = clock();
        double elapsed = (end - start) / (double) CLOCKS_PER_SEC;
        printf("Computation time in the CPU: %f seconds\n", elapsed);
	
	copyMatricesToGPU();
	kernel <<< 32, 32 >>>  (A_GPU, B_GPU);

	return 0;
}
