शीर्षक कहता है, कम से कम समानता के विभिन्न रूपों का ओवरहेड क्या है, कम से कम जूलिया के वर्तमान कार्यान्वयन में (v0.5, यदि कार्यान्वयन भविष्य में भारी रूप से बदलता है)? मैं कुछ "व्यावहारिक उपायों" की तलाश में हूं, कुछ सामान्य हेरिस्टिक्स या बॉलपार्क्स मेरे सिर में रखने के लिए जब यह उपयोगी हो सकता है। उदाहरण के लिए, यह है कि बहु आप की तरह एक पाश में लाभ नहीं देंगे बहुत स्पष्ट है:जूलिया v0.5 में समांतरता के विभिन्न रूपों का उपर क्या है?
addprocs(4)
@parallel (+) for i=1:4
rand()
end
क्योंकि प्रत्येक प्रक्रिया केवल एक यादृच्छिक संख्या ले जा रहा है आप निष्पादन लाभ नहीं देता है, लेकिन वहाँ जानने के लिए सामान्य अनुमानी है जब यह सार्थक होगा? इसके अलावा, थ्रेडिंग के लिए एक ह्युरिस्टिक के बारे में क्या। यह निश्चित रूप से बहु की तुलना में कम भूमि के ऊपर है, लेकिन उदाहरण के लिए, 4 सूत्र, क्या एन यह multithread लिए एक अच्छा विचार है के लिए के साथ:
A = rand(4)
[email protected] (+) for i = 1:N
A[i%4+1]
end
(मैं जानता हूँ कि वहाँ एक पिरोया कमी अभी नहीं है, लेकिन चलो अधिनियम जैसा कि एक बेहतर उदाहरण के साथ है, या संपादित करें)। निश्चित रूप से, मैं हर उदाहरण को बेंचमार्क कर सकता हूं, लेकिन कुछ अच्छे नियमों को ध्यान में रखना एक लंबा रास्ता तय करेगा।
अधिक ठोस शब्दों में: अंगूठे के कुछ अच्छे नियम क्या हैं?
- थ्रेडिंग प्रदर्शन प्रदर्शन बढ़ाने से पहले, या मल्टीप्रोसेसिंग प्रदर्शन संवर्द्धन देने से पहले आपको कितनी संख्या जोड़ने/गुणा करने की आवश्यकता है?
- जूलिया के वर्तमान कार्यान्वयन पर निर्भर करता है?
- यह धागे/प्रक्रियाओं की संख्या पर कितना निर्भर करता है?
- आर्किटेक्चर पर निर्भर करता है? क्या किसी विशेष प्रणाली पर थ्रेसहोल्ड उच्च/निम्न होना चाहिए, यह जानने के लिए अच्छे नियम हैं?
- किस प्रकार के अनुप्रयोग इन हेरिस्टिक्स का उल्लंघन करते हैं?
फिर से, मैं कठिन नियमों की तलाश नहीं कर रहा हूं, केवल विकास के मार्गदर्शन के लिए सामान्य दिशानिर्देश।
आपको इसे अपेक्षाकृत आसानी से मापने में सक्षम होना चाहिए। विवरण ओपी को छोड़ दिया गया। –