 
 	ecuda::matrix<double> matrix( n, n );
 
-	dim3 grid( (n+numThreads-1)/numThreads, (n+numThreads-1)/numThreads ), threads( numThreads, numThreads );
+	dim3 grid( n, (n+numThreads-1)/numThreads ), threads( 1, numThreads );
 	matrixTranspose<<<grid,threads>>>( matrix );
 
 	stop.record();


}

float cudaMatrixTranspose( const int numThreads, const std::size_t n ) {

	ecuda::event start, stop;

}

template<typename T>
__global__ void matrixMultiply(	const T* A,	std::size_t pitchA,	const T* B,	std::size_t pitchB,	std::size_t n, std::size_t m, std::size_t p, T* AB,	std::size_t pitchAB ) {
	const int x = blockIdx.x*blockDim.x+threadIdx.x; // row
	const int y = blockIdx.y*blockDim.y+threadIdx.y; // column
	if( x < n and y < p ) {
