Ho un array x [] contenente dati. Inoltre c'è una serie di "stati del sistema" c []. Il processo:Processo parallelo sincrono in 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;
}
Esiste un modo efficiente per trovare i valori di f1
e f2
nel sistema 2-nucleo usando 2 fili paralleli? Intendo i seguenti (in pseudo-codice):
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
e f2
non sono tempo tisica, ma devono essere calcolati molte volte, quindi accelerazione desiderata è circa x2. Vedere lo schema per la rappresentazione grafica:
ricerca di esempi di codice per Windows.
Può essere efficace solo se f1 e f2 sono molto generici e l'esaurimento della sincronizzazione è inferiore al profitto della corsa parallela – gabba
Perché questo taggato è C# ** e ** C++? Che lingua stai usando? –
La scelta della lingua dipende da cosa può risolvere l'attività in modo più efficiente. – carimus