@@ -301,82 +301,102 @@ void printDeviceProp(int32_t deviceId)
301301 cudaDeviceProp props;
302302 GPUCHECK (cudaGetDeviceProperties (&props, deviceId));
303303
304- std::cout << std::setw (w1) << " Name: " << props.name << std::endl;
305- std::cout << std::setw (w1) << " pciBusID: " << props.pciBusID << std::endl;
306- std::cout << std::setw (w1) << " pciDeviceID: " << props.pciDeviceID << std::endl;
307- std::cout << std::setw (w1) << " pciDomainID: " << props.pciDomainID << std::endl;
308- std::cout << std::setw (w1) << " multiProcessorCount: " << props.multiProcessorCount << std::endl;
309- std::cout << std::setw (w1) << " maxThreadsPerMultiProcessor: " << props.maxThreadsPerMultiProcessor
310- << std::endl;
311- std::cout << std::setw (w1) << " isMultiGpuBoard: " << props.isMultiGpuBoard << std::endl;
312- std::cout << std::setw (w1) << " clockRate: " << (float )props.clockRate / 1000.0 << " Mhz" << std::endl;
313- std::cout << std::setw (w1) << " memoryClockRate: " << (float )props.memoryClockRate / 1000.0 << " Mhz"
314- << std::endl;
315- std::cout << std::setw (w1) << " memoryBusWidth: " << props.memoryBusWidth << std::endl;
316- std::cout << std::setw (w1) << " clockInstructionRate: " << (float )props.clockRate / 1000.0
317- << " Mhz" << std::endl;
318- std::cout << std::setw (w1) << " totalGlobalMem: " << std::fixed << std::setprecision (2 )
319- << bytesToGB (props.totalGlobalMem ) << " GB" << std::endl;
304+ int32_t clockRateKHz = 0 ;
305+ int32_t memoryClockRateKHz = 0 ;
306+ int32_t computeMode = 0 ;
307+
308+ #if (CUDART_VERSION >= 13000)
309+ GPUCHECK (cudaDeviceGetAttribute (&clockRateKHz, cudaDevAttrClockRate, deviceId));
310+ GPUCHECK (cudaDeviceGetAttribute (&memoryClockRateKHz, cudaDevAttrMemoryClockRate, deviceId));
311+ GPUCHECK (cudaDeviceGetAttribute (&computeMode, cudaDevAttrComputeMode, deviceId));
312+ #else
313+ clockRateKHz = props.clockRate ;
314+ memoryClockRateKHz = props.memoryClockRate ;
315+ computeMode = props.computeMode ;
316+ cooperativeMultiDevice = props.cooperativeMultiDeviceLaunch ;
317+ #endif
318+ std::cout << std::setw (w1) << " Name: " << props.name << std::endl;
319+ std::cout << std::setw (w1) << " pciBusID: " << props.pciBusID << std::endl;
320+ std::cout << std::setw (w1) << " pciDeviceID: " << props.pciDeviceID << std::endl;
321+ std::cout << std::setw (w1) << " pciDomainID: " << props.pciDomainID << std::endl;
322+ std::cout << std::setw (w1) << " multiProcessorCount: " << props.multiProcessorCount << std::endl;
323+ std::cout << std::setw (w1) << " maxThreadsPerMultiProcessor: " << props.maxThreadsPerMultiProcessor
324+ << std::endl;
325+ std::cout << std::setw (w1) << " isMultiGpuBoard: " << props.isMultiGpuBoard << std::endl;
326+
327+ // Use the variables we populated above for the moved properties
328+ std::cout << std::setw (w1) << " clockRate: " << (float )clockRateKHz / 1000.0 << " Mhz" << std::endl;
329+ std::cout << std::setw (w1) << " memoryClockRate: " << (float )memoryClockRateKHz / 1000.0 << " Mhz"
330+ << std::endl;
331+
332+ std::cout << std::setw (w1) << " memoryBusWidth: " << props.memoryBusWidth << std::endl;
333+
334+ // clockInstructionRate is just another name for clockRate in this context
335+ std::cout << std::setw (w1) << " clockInstructionRate: " << (float )clockRateKHz / 1000.0
336+ << " Mhz" << std::endl;
337+ std::cout << std::setw (w1) << " totalGlobalMem: " << std::fixed << std::setprecision (2 )
338+ << bytesToGB (props.totalGlobalMem ) << " GB" << std::endl;
320339#if !defined(__CUDACC__)
321- std::cout << std::setw (w1) << " maxSharedMemoryPerMultiProcessor: " << std::fixed << std::setprecision (2 )
322- << bytesToconfig (props.sharedMemPerMultiprocessor ) << " config" << std::endl;
340+ std::cout << std::setw (w1) << " maxSharedMemoryPerMultiProcessor: " << std::fixed << std::setprecision (2 )
341+ << bytesToconfig (props.sharedMemPerMultiprocessor ) << " config" << std::endl;
323342#endif
324343#if defined(__HIPCC__)
325- std::cout << std::setw (w1) << " maxSharedMemoryPerMultiProcessor: " << std::fixed << std::setprecision (2 )
326- << bytesToconfig (props.maxSharedMemoryPerMultiProcessor ) << " config" << std::endl;
344+ std::cout << std::setw (w1) << " maxSharedMemoryPerMultiProcessor: " << std::fixed << std::setprecision (2 )
345+ << bytesToconfig (props.maxSharedMemoryPerMultiProcessor ) << " config" << std::endl;
327346#endif
328- std::cout << std::setw (w1) << " totalConstMem: " << props.totalConstMem << std::endl;
329- std::cout << std::setw (w1) << " sharedMemPerBlock: " << (float )props.sharedMemPerBlock / 1024.0 << " config"
330- << std::endl;
331- std::cout << std::setw (w1) << " canMapHostMemory: " << props.canMapHostMemory << std::endl;
332- std::cout << std::setw (w1) << " regsPerBlock: " << props.regsPerBlock << std::endl;
333- std::cout << std::setw (w1) << " warpSize: " << props.warpSize << std::endl;
334- std::cout << std::setw (w1) << " l2CacheSize: " << props.l2CacheSize << std::endl;
335- std::cout << std::setw (w1) << " computeMode: " << props.computeMode << std::endl;
336- std::cout << std::setw (w1) << " maxThreadsPerBlock: " << props.maxThreadsPerBlock << std::endl;
337- std::cout << std::setw (w1) << " maxThreadsDim.x: " << props.maxThreadsDim [0 ] << std::endl;
338- std::cout << std::setw (w1) << " maxThreadsDim.y: " << props.maxThreadsDim [1 ] << std::endl;
339- std::cout << std::setw (w1) << " maxThreadsDim.z: " << props.maxThreadsDim [2 ] << std::endl;
340- std::cout << std::setw (w1) << " maxGridSize.x: " << props.maxGridSize [0 ] << std::endl;
341- std::cout << std::setw (w1) << " maxGridSize.y: " << props.maxGridSize [1 ] << std::endl;
342- std::cout << std::setw (w1) << " maxGridSize.z: " << props.maxGridSize [2 ] << std::endl;
343- std::cout << std::setw (w1) << " major: " << props.major << std::endl;
344- std::cout << std::setw (w1) << " minor: " << props.minor << std::endl;
345- std::cout << std::setw (w1) << " concurrentKernels: " << props.concurrentKernels << std::endl;
346- std::cout << std::setw (w1) << " cooperativeLaunch: " << props.cooperativeLaunch << std::endl;
347- std::cout << std::setw (w1) << " cooperativeMultiDeviceLaunch: " << props.cooperativeMultiDeviceLaunch << std::endl;
347+ std::cout << std::setw (w1) << " totalConstMem: " << props.totalConstMem << std::endl;
348+ std::cout << std::setw (w1) << " sharedMemPerBlock: " << (float )props.sharedMemPerBlock / 1024.0 << " config"
349+ << std::endl;
350+ std::cout << std::setw (w1) << " canMapHostMemory: " << props.canMapHostMemory << std::endl;
351+ std::cout << std::setw (w1) << " regsPerBlock: " << props.regsPerBlock << std::endl;
352+ std::cout << std::setw (w1) << " warpSize: " << props.warpSize << std::endl;
353+ std::cout << std::setw (w1) << " l2CacheSize: " << props.l2CacheSize << std::endl;
354+
355+ // Use the variable for computeMode
356+ std::cout << std::setw (w1) << " computeMode: " << computeMode << std::endl;
357+
358+ std::cout << std::setw (w1) << " maxThreadsPerBlock: " << props.maxThreadsPerBlock << std::endl;
359+ std::cout << std::setw (w1) << " maxThreadsDim.x: " << props.maxThreadsDim [0 ] << std::endl;
360+ std::cout << std::setw (w1) << " maxThreadsDim.y: " << props.maxThreadsDim [1 ] << std::endl;
361+ std::cout << std::setw (w1) << " maxThreadsDim.z: " << props.maxThreadsDim [2 ] << std::endl;
362+ std::cout << std::setw (w1) << " maxGridSize.x: " << props.maxGridSize [0 ] << std::endl;
363+ std::cout << std::setw (w1) << " maxGridSize.y: " << props.maxGridSize [1 ] << std::endl;
364+ std::cout << std::setw (w1) << " maxGridSize.z: " << props.maxGridSize [2 ] << std::endl;
365+ std::cout << std::setw (w1) << " major: " << props.major << std::endl;
366+ std::cout << std::setw (w1) << " minor: " << props.minor << std::endl;
367+ std::cout << std::setw (w1) << " concurrentKernels: " << props.concurrentKernels << std::endl;
348368#if defined(__HIPCC__)
349- std::cout << std::setw (w1) << " arch.hasGlobalInt32Atomics: " << props.arch .hasGlobalInt32Atomics << std::endl;
350- std::cout << std::setw (w1) << " arch.hasGlobalFloatAtomicExch: " << props.arch .hasGlobalFloatAtomicExch
351- << std::endl;
352- std::cout << std::setw (w1) << " arch.hasSharedInt32Atomics: " << props.arch .hasSharedInt32Atomics << std::endl;
353- std::cout << std::setw (w1) << " arch.hasSharedFloatAtomicExch: " << props.arch .hasSharedFloatAtomicExch
354- << std::endl;
355- std::cout << std::setw (w1) << " arch.hasFloatAtomicAdd: " << props.arch .hasFloatAtomicAdd << std::endl;
356- std::cout << std::setw (w1) << " arch.hasGlobalInt64Atomics: " << props.arch .hasGlobalInt64Atomics << std::endl;
357- std::cout << std::setw (w1) << " arch.hasSharedInt64Atomics: " << props.arch .hasSharedInt64Atomics << std::endl;
358- std::cout << std::setw (w1) << " arch.hasDoubles: " << props.arch .hasDoubles << std::endl;
359- std::cout << std::setw (w1) << " arch.hasWarpVote: " << props.arch .hasWarpVote << std::endl;
360- std::cout << std::setw (w1) << " arch.hasWarpBallot: " << props.arch .hasWarpBallot << std::endl;
361- std::cout << std::setw (w1) << " arch.hasWarpShuffle: " << props.arch .hasWarpShuffle << std::endl;
362- std::cout << std::setw (w1) << " arch.hasFunnelShift: " << props.arch .hasFunnelShift << std::endl;
363- std::cout << std::setw (w1) << " arch.hasThreadFenceSystem: " << props.arch .hasThreadFenceSystem << std::endl;
364- std::cout << std::setw (w1) << " arch.hasSyncThreadsExt: " << props.arch .hasSyncThreadsExt << std::endl;
365- std::cout << std::setw (w1) << " arch.hasSurfaceFuncs: " << props.arch .hasSurfaceFuncs << std::endl;
366- std::cout << std::setw (w1) << " arch.has3dGrid: " << props.arch .has3dGrid << std::endl;
367- std::cout << std::setw (w1) << " arch.hasDynamicParallelism: " << props.arch .hasDynamicParallelism << std::endl;
368- std::cout << std::setw (w1) << " gcnArchName: " << props.gcnArchName << std::endl;
369+ std::cout << std::setw (w1) << " arch.hasGlobalInt32Atomics: " << props.arch .hasGlobalInt32Atomics << std::endl;
370+ std::cout << std::setw (w1) << " arch.hasGlobalFloatAtomicExch: " << props.arch .hasGlobalFloatAtomicExch
371+ << std::endl;
372+ std::cout << std::setw (w1) << " arch.hasSharedInt32Atomics: " << props.arch .hasSharedInt32Atomics << std::endl;
373+ std::cout << std::setw (w1) << " arch.hasSharedFloatAtomicExch: " << props.arch .hasSharedFloatAtomicExch
374+ << std::endl;
375+ std::cout << std::setw (w1) << " arch.hasFloatAtomicAdd: " << props.arch .hasFloatAtomicAdd << std::endl;
376+ std::cout << std::setw (w1) << " arch.hasGlobalInt64Atomics: " << props.arch .hasGlobalInt64Atomics << std::endl;
377+ std::cout << std::setw (w1) << " arch.hasSharedInt64Atomics: " << props.arch .hasSharedInt64Atomics << std::endl;
378+ std::cout << std::setw (w1) << " arch.hasDoubles: " << props.arch .hasDoubles << std::endl;
379+ std::cout << std::setw (w1) << " arch.hasWarpVote: " << props.arch .hasWarpVote << std::endl;
380+ std::cout << std::setw (w1) << " arch.hasWarpBallot: " << props.arch .hasWarpBallot << std::endl;
381+ std::cout << std::setw (w1) << " arch.hasWarpShuffle: " << props.arch .hasWarpShuffle << std::endl;
382+ std::cout << std::setw (w1) << " arch.hasFunnelShift: " << props.arch .hasFunnelShift << std::endl;
383+ std::cout << std::setw (w1) << " arch.hasThreadFenceSystem: " << props.arch .hasThreadFenceSystem << std::endl;
384+ std::cout << std::setw (w1) << " arch.hasSyncThreadsExt: " << props.arch .hasSyncThreadsExt << std::endl;
385+ std::cout << std::setw (w1) << " arch.hasSurfaceFuncs: " << props.arch .hasSurfaceFuncs << std::endl;
386+ std::cout << std::setw (w1) << " arch.has3dGrid: " << props.arch .has3dGrid << std::endl;
387+ std::cout << std::setw (w1) << " arch.hasDynamicParallelism: " << props.arch .hasDynamicParallelism << std::endl;
388+ std::cout << std::setw (w1) << " gcnArchName: " << props.gcnArchName << std::endl;
369389#endif
370- std::cout << std::setw (w1) << " isIntegrated: " << props.integrated << std::endl;
371- std::cout << std::setw (w1) << " maxTexture1D: " << props.maxTexture1D << std::endl;
372- std::cout << std::setw (w1) << " maxTexture2D.width: " << props.maxTexture2D [0 ] << std::endl;
373- std::cout << std::setw (w1) << " maxTexture2D.height: " << props.maxTexture2D [1 ] << std::endl;
374- std::cout << std::setw (w1) << " maxTexture3D.width: " << props.maxTexture3D [0 ] << std::endl;
375- std::cout << std::setw (w1) << " maxTexture3D.height: " << props.maxTexture3D [1 ] << std::endl;
376- std::cout << std::setw (w1) << " maxTexture3D.depth: " << props.maxTexture3D [2 ] << std::endl;
390+ std::cout << std::setw (w1) << " isIntegrated: " << props.integrated << std::endl;
391+ std::cout << std::setw (w1) << " maxTexture1D: " << props.maxTexture1D << std::endl;
392+ std::cout << std::setw (w1) << " maxTexture2D.width: " << props.maxTexture2D [0 ] << std::endl;
393+ std::cout << std::setw (w1) << " maxTexture2D.height: " << props.maxTexture2D [1 ] << std::endl;
394+ std::cout << std::setw (w1) << " maxTexture3D.width: " << props.maxTexture3D [0 ] << std::endl;
395+ std::cout << std::setw (w1) << " maxTexture3D.height: " << props.maxTexture3D [1 ] << std::endl;
396+ std::cout << std::setw (w1) << " maxTexture3D.depth: " << props.maxTexture3D [2 ] << std::endl;
377397#if defined(__HIPCC__)
378- std::cout << std::setw (w1) << " isLargeBar: " << props.isLargeBar << std::endl;
379- std::cout << std::setw (w1) << " asicRevision: " << props.asicRevision << std::endl;
398+ std::cout << std::setw (w1) << " isLargeBar: " << props.isLargeBar << std::endl;
399+ std::cout << std::setw (w1) << " asicRevision: " << props.asicRevision << std::endl;
380400#endif
381401
382402 int32_t deviceCnt;
0 commit comments