 	cudaMallocPitch( &matrix, &pitch, n*sizeof(double), n );
 
 	dim3 grid( (n+numThreads-1)/numThreads, (n+numThreads-1)/numThreads ), threads( numThreads, numThreads );
-	matrixTranspose<<<grid,threads>>>( matrix, pitch, n, n );
+	matrixTranspose<<<grid,threads>>>( matrix, pitch, n );
 
 	stop.record();
 	stop.synchronize();

		const std::size_t n = 1000;
		const std::size_t m = 1000;
		const std::size_t p = 1000;
		std::cout << "MATRIX MULTIPLICATION CPU:      " << std::fixed <<   cpuMatrixMultiply(          n, m, p ) << " ms" << std::endl;
		std::cout << "MATRIX MULTIPLICATION STANDARD: " << std::fixed <<  cudaMatrixMultiply( THREADS, n, m, p ) << " ms" << std::endl;
		std::cout << "MATRIX MULTIPLICATION ECUDA   : " << std::fixed << ecudaMatrixMultiply( THREADS, n, m, p ) << " ms" << std::endl;
	}
	{
		const std::size_t n = 1000;
		std::cout << "MATRIX TRANSPOSE CPU:      " << std::fixed <<   cpuMatrixTranspose(          n ) << " ms" << std::endl;
		std::cout << "MATRIX TRANSPOSE STANDARD: " << std::fixed <<  cudaMatrixTranspose( THREADS, n ) << " ms" << std::endl;
		std::cout << "MATRIX TRANSPOSE ECUDA   : " << std::fixed << ecudaMatrixTranspose( THREADS, n ) << " ms" << std::endl;
	}

	return EXIT_SUCCESS;

	T* AB,
	std::size_t pitchAB
);
template<typename T> __global__ void matrixMultiply( const ecuda::matrix<T> A, const ecuda::matrix<T> B, ecuda::matrix<T> AB );

template<typename T> __global__ void matrixTranspose( T* matrix, const std::size_t pitch, const std::size_t n );
template<typename T> __global__ void matrixTranspose( ecuda::matrix<T> matrix );


