2009-10-31 19 views
6

मुझे हाल ही में मेरे होम पीसी को क्वाड-कोर सीपीयू और 64-बिट ओएस में अपग्रेड किया गया है। मेरे पास सी/सी ++ के साथ कुछ पूर्व अनुभव है और मैं कुछ 64-बिट CPU क्षमताओं का उपयोग करने के लिए वास्तव में "खुजली" हूं। एक अच्छा "हैलो वर्ल्ड" प्रकार का प्रोग्राम क्या है जो 64-बिट बहु-कोर क्षमताओं को कुछ सरल चीजें कर रहा है जो 32-बिट सिंगल-कोर कोड में अच्छी तरह से काम नहीं करते हैं?एक अच्छा बहु-कोर 64-बिट "हैलो वर्ल्ड" प्रोग्राम क्या है?

मैं सिर्फ "महसूस" करने की कोशिश कर रहा हूं कि इन नए CPUs चरम मामलों में सी/सी ++ कोड के प्रदर्शन को कैसे प्रभावित कर सकते हैं।

+3

बहुत ज्यादा अभी भी 'cout << "हैलो वर्ल्ड" << endl; ' – Jherico

उत्तर

2

ओपनएमपी सी ++ में मल्टीकोर प्रोग्रामिंग के साथ खेलने का एक आसान तरीका होगा। विकिपीडिया उदाहरण वास्तव में कुछ भी प्रोसेसर गहन नहीं करता है, लेकिन आप कुछ स्वतंत्र, लंबे समय तक चलने वाले फ़ंक्शन के साथ 'कोउट' को प्रतिस्थापित कर सकते हैं।

OpenMP

जहाँ तक 64-बिट के रूप में, अपने प्रदर्शन में वृद्धि का एक बहुत कुछ जगहों से आने के लिए जा रहा है।

थ्रूपुट बढ़ाया गया, क्योंकि सभी डेटा तत्व व्यापक हैं प्रोसेसर किसी दिए गए घड़ी चक्र में अधिक डेटा संसाधित कर सकता है। एक्सचेंज सर्वर के लिए कुछ माइक्रोसॉफ्ट बेंचमार्क पर नज़र डालें, अब वे केवल 64-बिट का समर्थन करने के लिए चले गए हैं क्योंकि थ्रूपुट बढ़ाना अविश्वसनीय है।

अधिक रजिस्ट्रार, क्योंकि 64-बिट आर्किटेक्चर में बड़ी संख्या में रजिस्टरों के अधिकांश फ़ंक्शन पैरामीटर हैं और रजिस्टरों का उपयोग करके वापसी मूल्य पारित किया जा सकता है।

x86 एबीआई में calling conventions के साथ एक या शायद दो पैरामीटर रजिस्टरों के माध्यम से पारित किए जा सकते हैं और शेष को ढेर पर धक्का दिया जाना चाहिए। सीडीसीएल जैसे एक सामान्य कॉलिंग सम्मेलन के साथ एक ही पैरामीटर नहीं है या एक रजिस्टर में वापसी मूल्य रखा जाता है। चूंकि ढेर मुख्य स्मृति में स्थित है, यह एक बड़ा प्रदर्शन हिट हो सकता है।

1

शायद आप कुछ अलग करना चाहते हैं कम्प्यूटेशनल रूप से महंगा संचालन ओम बड़ी संख्या या बड़े क्षेत्रों और एक स्वतंत्र फैशन, जैसे रेयट्रैसिंग या प्रोटीन फोल्डिंग में स्मृति।

ध्यान में रखना महत्वपूर्ण बात यह है कि 64 बिट या मल्टीकोर प्रोसेसर वास्तव में कुछ भी नहीं कर सकते हैं जो सिंगल-कोर प्रोसेसर नहीं कर सकते हैं, अनिवार्य रूप से वे इसे तेज़ी से और बड़ी संख्या में करते हैं।

1

इस बात पर विचार करते हुए कि कितने अलग समानांतर मॉडल हैं और वे प्रत्येक अलग-अलग कार्यों के अनुकूल कैसे हैं, आपके प्रश्न का कोई संतोषजनक उत्तर नहीं है। यह सब निर्भर करता है कि आप वास्तव में अंततः क्या करना चाहते हैं। आपको वह मॉडल चुनना चाहिए जो आप करना चाहते हैं (यदि यह पिछली बाधा का विरोध नहीं करता है, तो message-passing आज़माएं, यह दूसरों की तुलना में ताज़ा रूप से आसान है)।

मुझे यह कहना होगा कि टिप्पणियों में जेरिको की जीभ-इन-गाल का जवाब सही है। "हैलो वर्ल्ड" के रूप में इस तरह के एक साधारण कार्य के लिए, सबसे अच्छा मॉडल बिल्कुल समानता नहीं है।