que estoy trabajando con OpenMP para paralelizar un escalar anidado bucle for:Cómo paralelizar correctamente un bucles for anidados
double P[N][N];
double x=0.0,y=0.0;
for (int i=0; i<N; i++)
{
for (int j=0; j<N; j++)
{
P[i][j]=someLongFunction(x,y);
y+=1;
}
x+=1;
}
En este bucle, lo importante es que la matriz P debe ser la misma en ambos escalares y versiones paralelas:
todos mis posibles ensayos no tuvieron éxito ...
Ok gracias por las respuestas. ¿Puedo hacerte otra pregunta? ¿Qué sucede si quiero restablecer cada vez y = 0 antes del ciclo interno? ¿Cómo cambiaría la implementación de openmp? – linello
Luego cambie '(doble) N * i + j' a' (doble) j'. La clave aquí es que derivé las expresiones para 'x' y' y' como una función de los índices de bucle. Esto le permite romper las dependencias. – Mysticial
Muchas gracias a sus respuestas, me aclararon cómo desenredar los bucles para prepararlos para la paralelización OpenMP. Una última pregunta, ¿por qué las versiones en serie y paralelas de este código me dan una porción muy pequeña de diferentes elementos? 'for (int i = 0; i
linello