multithreading - Do atomic operations become slower as more CPUs are added? -


x86 और अन्य आर्किटेक्चर विशेष परमाणु निर्देश (लॉक, cmpxchg, आदि) प्रदान करते हैं जो आपको 'लॉक फ्री' डेटा लिखने की अनुमति देते हैं संरचनाओं। लेकिन जैसा कि अधिक से अधिक कोर जोड़ रहे हैं, ऐसा लगता है कि इन निर्देशों को वास्तव में पर्दे के पीछे करना होगा (कम से कम कैश संचय बनाए रखने के लिए?)। यदि एक परमाणु जोड़ दोहरे कोर सिस्टम पर आज 100 चक्र लेता है, तो भविष्य में 80 + कोर मशीनों पर काफी अधिक समय लग सकता है? यदि आप कोड लिख रहे हैं, तो क्या यह वास्तव में ताले का उपयोग करने के लिए एक बेहतर विचार है, भले ही वे आज धीमे हो?

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

लेकिन परमाणु संचालन के मामले में तालों को लागू किया जाता है इसलिए आप वास्तव में उन पर स्विच करने की कोशिश करते हुए जीत नहीं पाते हैं, जब तक कि उन्हें एक अधिक स्केलेबल तरीके से कार्यान्वित किया जाता है जितना कि आप अपने खुद के हाथ से लुढ़क गए परमाणु परिचालनों के साथ प्रयास करेंगे। मुझे लगता है कि आम तौर पर, एकल टोकन जैसी विवादों के लिए, परमाणु पुरातनताएं हमेशा सबसे तेज़ तरीका होगी, भले ही आपके पास कितने कोर हों।

जैसा कि क्रे लंबे समय पहले खोजा गया था, यहां कोई मुफ्त भोजन नहीं है। हाई स्तरीय सॉफ्टवेयर डिज़ाइन, जहां आप संभावित रूप से विवादास्पद संसाधनों का उपयोग जितना संभव हो उतना निराला नहीं करते हैं, वे हमेशा बड़े पैमाने पर समानांतर अनुप्रयोगों में सबसे बड़ा पेआउट प्राप्त करेंगे। इसका अर्थ ताला अधिग्रहण के परिणाम के रूप में यथासंभव अधिक काम करना है, लेकिन जितनी जल्दी हो सके उतना जल्दी संभव है। अत्यधिक परिस्थितियों में, इसका मतलब यह हो सकता है कि आपके काम को सफलतापूर्वक अधिग्रहीत लॉक की धारणा पर लेना, इसे पकड़ने की कोशिश करना, और सफलता पर जितनी तेज़ी से संभव हो सके, अन्यथा अपना काम फेंकने और विफल होने पर पुन: प्रयास करें।


Comments

Popular posts from this blog

MySql variables and php -

url rewriting - How to implement the returnurl like SO in PHP? -

Which Python client library should I use for CouchdB? -