Veri içeren x [] dizilim var. Ayrıca bir dizi "sistem durumu" c []. işlem:Senkron Paralel Süreci C#/C++
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 paralel iplikler kullanılarak 2-çekirdek sisteminde f1
ve f2
değerlerini bulmak için herhangi bir etkili bir yolu var mı?
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
ve f2
zaman tüketim değildir, ancak birçok kez hesaplanır gerekir, bu yüzden, istenen hızlanma x2 hakkındadır: I (sözde kodu) şu anlama gelir. grafiksel gösterimi için şemasına bakın:
Sadece f1 ve f2 çok havy ve syncronization overhead paralel koşunun kârı daha az olacak eğer verimli olacak – gabba
Bu neden C# ve ** C++ etiketlendi? Hangi dili kullanıyorsunuz? –
Dil seçimi, görevi daha verimli bir şekilde çözebilecek öğeye göre değişir – carimus