2010-09-24 15 views
16

द्वारा उपयोग किए गए धागे की संख्या इंटेल टीबीबी समानांतर खंड के लिए उपयोग किए जाने वाले धागे की संख्या का चयन कैसे करती है?इंटेल टीबीबी

क्या कोई प्रकार का विनिर्देश उपलब्ध है?

उत्तर

18

TBB संस्करण 2.2 कार्य अनुसूचक के रूप में स्वचालित रूप से प्रारंभ हो जाएगा और क्रम पर धागे का उपयोग करने की संख्या का ख्याल रखना, अगर आप मैन्युअल रूप से उस नंबर को बदलना चाहते हैं, तो आप निम्न विधियों में से किसी एक का उपयोग कर सकते हैं:

जब आप अनुसूचक बनाते हैं, आप धागे की संख्या

tbb::task_scheduler_init init(nthread); 
बाकी

के रूप में निर्दिष्ट कर सकते हैं आप

tbb::task_scheduler_init init(tbb::task_scheduler_init::automatic); 

उपयोग कर सकते हैं इस मामले में टीबीबी शेड्यूलर आपके सीपीयू कोर

+1

आप चाहिए इसके बाद 'tbb :: task_scheduler_init' ऑब्जेक्ट को जीवित रखें, या यह स्वचालित रूप से वापस लौट जाएगा। –

+2

इसके अलावा, कार्य शेड्यूलर ऑब्जेक्ट केवल वर्तमान थ्रेड से लॉन्च की गई टीबीबी नौकरियों को प्रभावित करता है। किसी अन्य थ्रेड से आगे की नौकरियां बनाते समय, आपको एक और 'tbb :: task_scheduler_init' की आवश्यकता होती है। –

0

ड्यूमेटेशन केवल "हार्डवेयर कॉन्फ़िगरेशन पर निर्भर" कहता है। संभवतः यह केवल सीपीयू कोर उपलब्ध है।

9

टीबीबी को पूल में धागे की संख्या तय करने का विकल्प सुझाता है - यह आम तौर पर मशीन पर लॉजिकल सीपीयू के रूप में कई कार्यकर्ता धागे बनाते हैं - Class reference for tbb::task_scheduler_init देखें।

यह पता लगाना आसान नहीं है कि कितने कार्यकर्ता थ्रेड मौजूद हैं या किसी भी समय कार्य निष्पादित कर रहे हैं - यह एक जानबूझकर डिज़ाइन विकल्प है। Intel's TBB Parallel Programming Course से:

मुझे कैसे पता चलेगा कि कितने धागे उपलब्ध हैं?

पूछो मत!

  • भी नहीं अनुसूचक जानता है कि कितने धागे वास्तव में उपलब्ध हैं
  • वहाँ अन्य मशीन
  • नियमित अन्य समानांतर दिनचर्या के अंदर नेस्टेड किया जा सकता है पर चल रहे प्रक्रियाओं हो सकता है
संबंधित मुद्दे