बहु-थ्रेडेड अनुप्रयोगों में, प्रति भौतिक प्रोसेसर कोर एक थ्रेड का उपयोग इष्टतम प्रदर्शन सुनिश्चित करता है। सटीक थ्रेड गिनती निर्धारण के लिए, भौतिक और हाइपर-थ्रेडिंग कोर के बीच अंतर करना आवश्यक है। यहां विंडोज, मैक और लिनक्स पर हाइपर-थ्रेडिंग समर्थन और इसकी सक्रियण स्थिति का पता लगाने का तरीका बताया गया है:
सीपीयूआईडी निर्देश का उपयोग करके, हम प्रोसेसर की क्षमताओं और कॉन्फ़िगरेशन के बारे में जानकारी एकत्र कर सकते हैं। चरण-दर-चरण प्रक्रिया नीचे उल्लिखित है:
:
#include
#include
void cpuID(unsigned i, unsigned regs[4]);
int main() {
unsigned regs[4];
// Get CPUID information
cpuID(0x00, regs);
cpuID(0x01, regs);
// Determine vendor
char vendor[12];
((unsigned *)vendor)[0] = regs[1];
((unsigned *)vendor)[1] = regs[3];
((unsigned *)vendor)[2] = regs[2];
std::string cpuVendor = std::string(vendor, 12);
// Variables
unsigned logicalCores = (regs[1] >> 16) & 0xff;
unsigned cores = logicalCores;
bool hyperThreads = false;
// Detect hyper-threading
if (cpuVendor == "GenuineIntel") {
cpuID(0x04, regs);
cores = ((regs[0] >> 26) & 0x3f) 1;
} else if (cpuVendor == "AuthenticAMD") {
cpuID(0x80000008, regs);
cores = ((unsigned)(regs[2] & 0xff)) 1;
}
if (regs[3] & (1 इंटेल कोर 2 डुओ ई8400 (कोई हाइपर-थ्रेडिंग नहीं):
लॉजिकल कोर: 2
कोर: 2
हाइपर-थ्रेडिंग: गलत
Logical cores: 2
Cores: 2
Hyper-threading: false
लॉजिकल कोर: 8
कोर: 4
हाइपर-थ्रेड्स: सत्य
Logical cores: 8
Cores: 4
hyper-threads: true
तार्किक कोर: 12
कोर: 6
हाइपर-थ्रेड्स: सत्य
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3