Exemple trivial:
A et B sont des tableaux d'entiers. C un pointeur d'un entier.
for(i=0; i<n; ++i) {
A[i]=(*C)*B[i];
}
Tiens d'ailleurs icc a repris un pragma bien sympathique de feu le compilateur sgi à l'époque des mips, c'est le #pragma ivdep, qui dit en gros au compilateur "vas-y mon gars, je te garantis que les iterations sont independantes les unes des autres tu peut me reordonner/vectoriser tout ça comme tu le sens". ça évite de tout faire reposer sur une analyse d'aliasing et de dependance complexe et hasardeuse, dommage que gcc n'ait pas celui-là.
[^] # Re: Itanium
Posté par Troy McClure (site web personnel) . En réponse à la dépêche Sortie de GCC 4.2. Évalué à 4.
A et B sont des tableaux d'entiers. C un pointeur d'un entier.
for(i=0; i<n; ++i) {
A[i]=(*C)*B[i];
}
Tiens d'ailleurs icc a repris un pragma bien sympathique de feu le compilateur sgi à l'époque des mips, c'est le #pragma ivdep, qui dit en gros au compilateur "vas-y mon gars, je te garantis que les iterations sont independantes les unes des autres tu peut me reordonner/vectoriser tout ça comme tu le sens". ça évite de tout faire reposer sur une analyse d'aliasing et de dependance complexe et hasardeuse, dommage que gcc n'ait pas celui-là.