#include #include #include //#include "cuda-error.h" const double MB = 1024*1024; const double KB = 1024; // ---------------------------------------- int main( int argc, char** argv ) { //try { int ndev; int err = cudaGetDeviceCount( &ndev ); if (err != 0 && err != cudaErrorNoDevice) { fprintf( stderr, "cudaGetDeviceCount error %d: %s\n", err, cudaGetErrorString(err) ); return -1; } printf( "ndevices %d\n", ndev ); for (int dev = 0; dev < ndev; ++dev) { struct cudaDeviceProp prop; err = cudaGetDeviceProperties( &prop, dev ); if (err != 0) { fprintf( stderr, "cudaGetDeviceProperties( prop, %d ) error %d: %s\n", dev, err, cudaGetErrorString(err) ); continue; } printf( "device %d\n", dev ); printf( " name = %s\n", prop.name ); printf( " asyncEngineCount = %d\n", prop.asyncEngineCount ); printf( " canMapHostMemory = %d\n", prop.canMapHostMemory ); printf( " capability major.minor = %d.%d\n", prop.major, prop.minor ); printf( " clockRate = %.1f MHz\n", prop.clockRate / 1000. ); printf( " computeMode = %d\n", prop.computeMode ); printf( " concurrentKernels = %d\n", prop.concurrentKernels ); printf( " deviceOverlap = %d\n", prop.deviceOverlap ); printf( " ECCEnabled = %d\n", prop.ECCEnabled ); printf( " integrated = %d\n", prop.integrated ); printf( " kernelExecTimeoutEnabled = %d\n", prop.kernelExecTimeoutEnabled ); printf( " l2CacheSize = %.1f KB\n", prop.l2CacheSize / KB ); printf( " maxGridSize = %5d x %5d x %5d\n", prop.maxGridSize[0], prop.maxGridSize[1], prop.maxGridSize[2] ); printf( " maxTexture1D = %d\n", prop.maxTexture1D ); printf( " maxTexture1DLayered = %5d x %5d\n", prop.maxTexture1DLayered[0], prop.maxTexture1DLayered[1] ); printf( " maxTexture2D = %5d x %5d\n", prop.maxTexture2D[0], prop.maxTexture2D[1] ); printf( " maxTexture2DLayered = %5d x %5d x %5d\n", prop.maxTexture2DLayered[0], prop.maxTexture2DLayered[1], prop.maxTexture2DLayered[2] ); printf( " maxTexture3D = %5d x %5d x %5d\n", prop.maxTexture3D[0], prop.maxTexture3D[1], prop.maxTexture3D[2] ); printf( " maxThreadsDim = %5d x %5d x %5d\n", prop.maxThreadsDim[0], prop.maxThreadsDim[1], prop.maxThreadsDim[2] ); printf( " maxThreadsPerBlock = %d\n", prop.maxThreadsPerBlock ); printf( " maxThreadsPerMultiProcessor = %d\n", prop.maxThreadsPerMultiProcessor ); printf( " memoryBusWidth = %d\n", prop.memoryBusWidth ); printf( " memoryClockRate = %.1f MHz\n", prop.memoryClockRate / 1000. ); printf( " memPitch = %.1f MB\n", prop.memPitch / MB ); printf( " multiProcessorCount = %d\n", prop.multiProcessorCount ); printf( " pciBusID = %d\n", prop.pciBusID ); printf( " pciDeviceID = %d\n", prop.pciDeviceID ); printf( " pciDomainID = %d\n", prop.pciDomainID ); printf( " regsPerBlock = %d\n", prop.regsPerBlock ); printf( " sharedMemPerBlock = %.1f KB\n", prop.sharedMemPerBlock / KB ); printf( " surfaceAlignment = %ld\n", prop.surfaceAlignment ); printf( " tccDriver = %d\n", prop.tccDriver ); printf( " textureAlignment = %ld\n", prop.textureAlignment ); printf( " totalConstMem = %.1f KB\n", prop.totalConstMem / KB ); printf( " totalGlobalMem = %.1f MB\n", prop.totalGlobalMem / MB ); printf( " unifiedAddressing = %d\n", prop.unifiedAddressing ); printf( " warpSize = %d\n", prop.warpSize ); printf( "\n" ); } //} //catch( cudaError_t err ) { // printf( "CUDA error: %s (%d)\n", cudaGetErrorString( err ), err ); //} //catch( CUresult err ) { // printf( "CUDA low-level error: %s (%d)\n", cuGetErrorString( err ), err ); //} return 0; }