sched_setaffinity
या pthread_attr_setaffinity_np
ओपनएमपी के तहत थ्रेड एफ़िनिटी सेट करने के लिए काम करेगा?ओपनएमपी और सीपीयू एफ़िनिटी
संबंधित: CPU Affinity
sched_setaffinity
या pthread_attr_setaffinity_np
ओपनएमपी के तहत थ्रेड एफ़िनिटी सेट करने के लिए काम करेगा?ओपनएमपी और सीपीयू एफ़िनिटी
संबंधित: CPU Affinity
हाँ, नामित कॉल धागा आत्मीयता स्थापित करने के लिए काम करेंगे। एकमात्र समस्या थ्रेड नंबर को ठीक करना और सही धागे में सही संबंध स्थापित करना है (आप for
लूप ज्ञात संख्या के लिए लूप के स्थिर शेड्यूलिंग का उपयोग करने का प्रयास कर सकते हैं)।
जैसा कि मुझे पता है, लगभग हर openmp पर्यावरण के माध्यम से संबंध स्थापित करने की अनुमति देता है। पर्यावरण चर का नाम भिन्न होता है (यह कुछ समय पहले स्टैंडराइज्ड नहीं था)। मैं ओपनएमपी कार्यान्वयन खोजने के लिए http://www.spec.org/omp2001/results/omp2001.html पृष्ठ का उपयोग करता हूं और विशिष्ट पर्यावरण परिवर्तनीय नाम की खोज करेगा। एफ़िनिटी specomP परिणामों के आधा में सेट है। परिणाम में कुछ अतिरिक्त ओपनएमपी प्रदर्शन-ट्यूनिंग सेटिंग्स भी हैं।
उदा। For intel compiler चर रहा है
export KMP_AFFINITY=compact,0
export SUNW_MP_PROCBIND=TRUE
export GOMP_CPU_AFFINITY=0-63
है, जहां 63 अधिकतम सीपीयू संख्या (जब 0 से गिना)
और newer OpenMP Standard, version 3.1 को परिभाषित करता है वातावरण चर OMP_PROC_BIND (सेक्टि देखें 4.4 पर) जो ओपनएमपी में एफ़िनिटी सेट करने का मानकीकृत तरीका है। उपयोग है:
export OMP_PROC_BIND=true
धन्यवाद! भाषा-स्तर पर कुछ भी नहीं, जैसे 'pthread_attr_setaffinity_np'? –
नहीं, openmp मानक में कोई थ्रेड बाध्यकारी प्रगति या कार्य नहीं है। एकमात्र तरीका (और अनुशंसित एक) पर्यावरण चर, कंपाइलर-विशिष्ट या openmp3.1 के माध्यम से धागे बांधना है। मुख्य सेटिंग शुरू करने से पहले, यह सेटिंग जल्दी ही की जानी चाहिए। – osgx
तो, कड़ाई से बोलते हुए, आपका उत्तर "नहीं" से शुरू होना चाहिए :) –