 
 std::string create_memory_string( unsigned long x );
 std::string create_frequency_string( const unsigned x );
+
+int ConvertSMVer2Cores( int major, int minor );
 
 int main( int argc, char* argv[] )
 {

		ecuda::device device( i );
		const cudaDeviceProp& prop = device.get_properties();

		std::cout << "========================================================================" << std::endl;
		std::cout << "::Device " << i << " is a: " << prop.name << std::endl;
		std::cout << "------------------------------------------------------------------------" << std::endl;

		std::cout << "Memory     :: Global: " << create_memory_string(prop.totalGlobalMem) << " Constant: " << create_memory_string(prop.totalConstMem) << std::endl;
		std::cout << "              Shared Per Block: " << create_memory_string(prop.sharedMemPerBlock) << " L2 Cache: " << create_memory_string(prop.l2CacheSize) << std::endl;
		std::cout << "              Bus Width: " << create_memory_string(prop.memoryBusWidth) << std::endl;
		std::cout << "Number     :: Multiprocessors: " << prop.multiProcessorCount << " Warp Size: " << prop.warpSize << " CUDA Cores: " << cudaCores << std::endl;
		std::cout << "              Maximum Threads Per Block: " << prop.maxThreadsPerBlock << " Asynchronous Engines: " << prop.asyncEngineCount << std::endl;
		std::cout << "Dimension  :: Block: [" << prop.maxThreadsDim[0] << " x " << prop.maxThreadsDim[1] << " x " << prop.maxThreadsDim[2] << "] Grid: [" << prop.maxGridSize[0] << " x " << prop.maxGridSize[1] << " x " << prop.maxGridSize[2] << "]" << std::endl;
		std::cout << "Texture    :: Alignment: " << create_memory_string(prop.textureAlignment) << " Pitch Alignment: " << create_memory_string(prop.texturePitchAlignment) << std::endl;
