 
 	stop.record();
 
+	for( std::size_t i = 0; i < n; ++i ) {
+		std::cout << "ROW[" << i << "]";
+		for( std::size_t j = 0; j < p; ++j ) std::cout << " " << std::fixed << AB[i*p+j];
+		std::cout << std::endl;
+	}
+
 	return ( stop - start );
 
 }


}

float cpuMatrixMultiply( const std::size_t n, const std::size_t m, const std::size_t p ) {

	ecuda::event start, stop;
	start.record();

	const std::size_t p = 20; //1000;

	std::vector<double> pool( n*m + m*p );
	for( std::vector<double>::iterator iter = pool.begin(); iter != pool.end(); ++iter ) *iter = static_cast<double>(rand()) / static_cast<double>(RAND_MAX);

	std::cout << "MATRIX MULTIPLICATION CPU  : " << std::fixed <<   cpuMatrixMultiply(          n, m, p, &pool.front() ) << " ms" << std::endl;
	std::cout << "MATRIX MULTIPLICATION CUDA : " << std::fixed <<  cudaMatrixMultiply( THREADS, n, m, p, &pool.front() ) << " ms" << std::endl;
	std::cout << "MATRIX MULTIPLICATION ECUDA: " << std::fixed << ecudaMatrixMultiply( THREADS, n, m, p, &pool.front() ) << " ms" << std::endl;

