से धीमे हैं क्यों मैं एक ज़ीऑन प्रोसेसर के साथ मैक प्रो पर एक पूरी तरह से समानांतर मैट्रिक्स गुणा प्रोग्राम चला रहा हूं। मैं 8 धागे (कोर के रूप में कई धागे) बनाते हैं, और कोई साझा लेखन मुद्दे नहीं हैं (एक ही स्थान पर कोई लेखन नहीं)। किसी कारण से, pthread_create
और pthread_join
का उपयोग #pragma openmp
का उपयोग करने में लगभग दोगुना धीमा है।क्यों पॉज़िक्स थ्रेड ओपनएमपी
वहाँ कुछ भी में कोई अन्य मतभेद ... एक ही संकलन विकल्प, दोनों ही मामलों में धागे की एक ही नंबर, एक ही कोड (pragma/pthread
भागों स्पष्ट रूप को छोड़कर), आदि
और छोरों बहुत हो रहे हैं बड़ा - मैं छोटी लूप समानांतर नहीं कर रहा हूं।
(मैं वास्तव में कोड पोस्ट कर सकते हैं नहीं है क्योंकि यह स्कूल के काम है।)
ऐसा क्यों हो रहा हो सकता है? OpenMP POSIX धागे का उपयोग नहीं करता है? यह तेज़ कैसे हो सकता है?
क्या वे दोनों संचयी CPU समय की समान मात्रा का उपयोग करते हैं? – Gabe
क्या आपने सत्यापित किया है कि ओपनएमपी आपके मैनुअल संस्करण के समान धागे का उपयोग कर रहा है? – Gabe
क्या होता है यदि आप केवल प्रत्येक पर 7 धागे का उपयोग करते हैं? – Jess