में समकालिक समांतर प्रक्रिया में मेरे पास एक सरणी x [] डेटा है। इसके अलावा "सिस्टम स्टेटस" सी [] की एक सरणी है। प्रक्रिया:सी #/सी ++
for(i = 1; i < N; i++)
{
a = f1(x[i] + c[i-1]);
b = f2(x[i] + c[i-1]);
c[i] = a + b;
}
2 समानांतर धागे का उपयोग कर 2-कोर प्रणाली पर f1
और f2
के मूल्यों को खोजने के लिए किसी भी कारगर तरीका है? मेरा मतलब है निम्नलिखित (छद्म कोड में):
thread_1
{
for(i = 1; i < N; i++)
a = f1(x[i] + c[i-1]);
}
thread_2
{
for(i = 1; i < N; i++)
{
b = f2(x[i] + c[i-1]);
c[i] = a + b; //here we somehow get a{i} from thread_1
}
}
f1
और f2
समय तपेदिक़ नहीं हैं, लेकिन कई बार की गणना की जा करने के लिए है, इसलिए वांछित speedup x2 बारे में है। चित्रमय प्रतिनिधित्व के लिए चित्र देखें:
विंडोज के लिए कोड उदाहरण के लिए देख रहे हैं।
यह केवल प्रभावशाली हो सकता है अगर एफ 1 और एफ 2 बहुत भारी हैं और सिंक्रनाइज़ेशन ओवरहेड समांतर रन – gabba
के लाभ से कम होगा, यह टैग क्यों किया गया है # ** और ** सी ++? आप किस भाषा का उपयोग कर रहे हैं? –
भाषा का विकल्प इस बात पर निर्भर करता है कि कार्य को और अधिक कुशलता से हल कर सकते हैं – carimus