2015-09-11 21 views
7

मैं ऐसे फ़ंक्शन की तलाश में हूं जो मेरे cuda डिवाइस के मूल की संख्या को गिनती है। मुझे पता है कि प्रत्येक माइक्रोप्रोसेसर के पास विशिष्ट कोर होते हैं, और मेरे कूडा डिवाइस में 2 माइक्रोप्रोसेसर होते हैं।मुझे कूडा डिवाइस में कोर की संख्या कैसे मिल सकती है?

मैंने एक संपत्ति समारोह खोजने के लिए बहुत कुछ खोजा जो प्रति माइक्रोप्रोसेसर कोर की संख्या गिनती है लेकिन मैं नहीं कर सका। मैं नीचे दिए गए कोड का उपयोग करता हूं लेकिन मुझे अभी भी कोर की संख्या चाहिए?

  • CUDA 7.0
  • कार्यक्रम भाषा सी
  • दृश्य स्टूडियो 2013

कोड:

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; 
} 
+0

मुझे नमूना परियोजनाओं [cuda उदाहरण] (http://code.msdn.microsoft.com/windowsdesktop/CUDA-50-and-Visual-Studio-20e71aa1) के साथ cuda 5.0 + विजुअल स्टूडियो 2012 के लिए एक लिंक मिला, और कुडा 7.0 + विजुअल स्टूडियो [क्यूडा 7.0 प्रारंभ करना] के लिए एक लिंक (http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-microsoft-windows/#axzz3lScBd2Bm)। – rcgldr

उत्तर

11

मल्टीप्रोसेसर प्रति कोर डेटा का केवल "लापता" टुकड़ा है। यही कारण है कि डेटा सीधे cudaDeviceProp संरचना में प्रदान नहीं की है, लेकिन उस पर published data और more published datadevProp.major और devProp.minor प्रविष्टियों, जो एक साथ डिवाइस के CUDA गणना क्षमता बनाने से आधारित निष्कर्ष निकाला जा सकता।

कुछ इस तरह काम करना चाहिए:

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) cores = mp * 128; 
     else if (devProp.minor == 0) cores = mp * 64; 
     else printf("Unknown device type\n"); 
     break; 
    case 7: // Volta 
     if (devProp.minor == 0) cores = mp * 64; 
     else printf("Unknown device type\n"); 
     break; 
    default: 
     printf("Unknown device type\n"); 
     break; 
     } 
    return cores; 
} 

(ब्राउज़र में कोडित)

"कोर" एक विपणन अवधि का एक सा है। मेरी राय में सबसे आम अर्थ एसएम में एसपी इकाइयों के साथ समानता है। यही अर्थ है कि मैंने यहां प्रदर्शित किया है। मैंने इस से सीसी 1.x डिवाइस भी छोड़े हैं, क्योंकि उन डिवाइस प्रकारों को अब CUDA 7.0 और CUDA 7.5

+0

मेरा डिवाइस GeForce GT 740M है और इसमें 384 CUDA कोर हैं लेकिन उपरोक्त अन्य गुणों के साथ Cuda कोर मुद्रित करने के लिए सही क्वेरी फ़ंक्शन क्या है? – Alsphere

+0

कोई CUDA कोर संपत्ति नहीं है। आपको गणना करने के लिए वर्णित विधि का उपयोग करना होगा। –

+0

ठीक है, बहुत धन्यवाद – Alsphere

0

में समर्थित नहीं है, शायद यह थोड़ा और मदद कर सकता है।

https://devtalk.nvidia.com/default/topic/470848/cuda-programming-and-performance/what-39-s-the-proper-way-to-detect-sp-cuda-cores-count-per-sm-/post/4414371/#4414371

"वहाँ जो एक नियमित _ConvertSMVer2Cores शामिल एक पुस्तकालय helper_cuda.h है (पूर्णांक प्रमुख, पूर्णांक छोटे) जो गणना क्षमता स्तर GPU की लेता है और कोर की संख्या (धारा प्रोसेसर) रिटर्न प्रत्येक एसएम या एसएमएक्स में " - पोस्ट से।

संबंधित मुद्दे