Tout à fait d'accord avec les histoires d'aliasing : au lieu de faire de la manipulation de pointeur dans tous les sens, utilise des tableaux que tu indexes "correctement". En plus ce sera plus lisible.
Et commme indiqué en dessous, alloue tes tableaux statiquement. Tu auras donc quelque chose comme :
double yvar1[N];
double yvar2[N];
...
Et pour la différence entre le += et le + seulement, c'est sûrement une histoire qui ressemble à l'aliasing, mais dans le cas du multithread : le compilo va dans le cas du + générer une variable intermédiaire entre l'accès à yvar1 et l'affectation, car il ne peut pas savoir si le tableau a changé entre deux. Dans le cas du +=, il doit générer une instruction qui fait l'addition "en place" dans le registre.
[^] # Re: Quelques commentaires
Posté par benoar . En réponse au message Parallelisation d'une boucle (théoriquement) trivialement parallélisable. Évalué à 3.
Et commme indiqué en dessous, alloue tes tableaux statiquement. Tu auras donc quelque chose comme :
double yvar1[N];double yvar2[N];
...
Et pour la différence entre le += et le + seulement, c'est sûrement une histoire qui ressemble à l'aliasing, mais dans le cas du multithread : le compilo va dans le cas du + générer une variable intermédiaire entre l'accès à yvar1 et l'affectation, car il ne peut pas savoir si le tableau a changé entre deux. Dans le cas du +=, il doit générer une instruction qui fait l'addition "en place" dans le registre.