Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I get number of Cores in cuda device?

Tags:

I am looking for a function that count number of core of my cuda device. I know each microprocessor have specific cores, and my cuda device has 2 microprocessors.

I searched a lot to find a property function that count number of cores per microprocessor but I couldn't. I use the code below but I still need number of cores?

  • cuda 7.0
  • program language C
  • visual studio 2013

Code:

void printDevProp(cudaDeviceProp devProp) {   printf("%s\n", devProp.name); printf("Major revision number:         %d\n", devProp.major); printf("Minor revision number:         %d\n", devProp.minor); printf("Total global memory:           %u", devProp.totalGlobalMem); printf(" bytes\n"); printf("Number of multiprocessors:     %d\n", devProp.multiProcessorCount); printf("Total amount of shared memory per block: %u\n",devProp.sharedMemPerBlock); printf("Total registers per block:     %d\n", devProp.regsPerBlock); printf("Warp size:                     %d\n", devProp.warpSize); printf("Maximum memory pitch:          %u\n", devProp.memPitch); printf("Total amount of constant memory:         %u\n",   devProp.totalConstMem); return; } 
like image 456
Alsphere Avatar asked Sep 11 '15 19:09

Alsphere


People also ask

How do I find the number of CUDA cores?

If you have the nvidia-settings utilities installed, you can query the number of CUDA cores of your gpus by running nvidia-settings -q CUDACores -t .

How do I check my GPU cores?

To open it, press Windows+R, type “dxdiag” into the Run dialog that appears, and press Enter. Click the “Display” tab and look at the “Name” field in the “Device” section. Other statistics, such as the amount of video memory (VRAM) built into your GPU, are also listed here.

How many threads does a CUDA core have?

CUDA Streaming Multiprocessor executes threads in warps (32 threads) There is a maximum of 1024 threads per block (for our GPU) There is a maximum of 1536 threads per multiprocessor (for our GPU)


1 Answers

The cores per multiprocessor is the only "missing" piece of data. That data is not provided directly in the cudaDeviceProp structure, but it can be inferred based on published data and more published data from the devProp.major and devProp.minor entries, which together make up the CUDA compute capability of the device.

Something like this should work:

#include "cuda_runtime_api.h" // you must first call the cudaGetDeviceProperties() function, then pass  // the devProp structure returned to this function: int getSPcores(cudaDeviceProp devProp) {       int cores = 0;     int mp = devProp.multiProcessorCount;     switch (devProp.major){      case 2: // Fermi       if (devProp.minor == 1) cores = mp * 48;       else cores = mp * 32;       break;      case 3: // Kepler       cores = mp * 192;       break;      case 5: // Maxwell       cores = mp * 128;       break;      case 6: // Pascal       if ((devProp.minor == 1) || (devProp.minor == 2)) cores = mp * 128;       else if (devProp.minor == 0) cores = mp * 64;       else printf("Unknown device type\n");       break;      case 7: // Volta and Turing       if ((devProp.minor == 0) || (devProp.minor == 5)) cores = mp * 64;       else printf("Unknown device type\n");       break;      case 8: // Ampere       if (devProp.minor == 0) cores = mp * 64;       else if (devProp.minor == 6) cores = mp * 128;       else printf("Unknown device type\n");       break;      default:       printf("Unknown device type\n");        break;       }     return cores; } 

(coded in browser)

"cores" is a bit of a marketing term. The most common connotation in my opinion is to equate it with SP units in the SM. That is the meaning I have demonstrated here. I've also omitted cc 1.x devices from this, as those device types are no longer supported in CUDA 7.0 and CUDA 7.5

A pythonic version is here

like image 129
Robert Crovella Avatar answered Nov 12 '22 12:11

Robert Crovella