• [^] # Re: À propos de SSE et AVX

    Posté par . En réponse à la dépêche Intel Sandy Bridge et Linux : état des lieux. Évalué à 3.

    Le gros problème c'est que pour trouver la manière la plus rapide de calculer une de ces fonctions il faut tenir compte à la fois de l'aspect mathématique et de l'aspect informatique.

    J'ai vu un cas ou ajouter une division qui prend 40cycles permettait d'obtenir un code plus rapide car pendant que le processeur s'occupait de la division dans l'unité flottante il y avait suffisamment d'autres calculs à faire en parallèle. Au final ce code était presque trois fois plus rapide que la version plus classique avec la même précision car la réduction était triviale.

    Il y a moyen de produire automatiquement différentes alternatives, mais il faut toujours regarder à la main comment chacune d'entre elles peut être implémentée pour choisir la meilleure. Quand j'ai bossé sur l'exponentielle par exemple, j'avais du code pour me produire différentes formes d'approximations sur les intervalles qui m'intéressait pour différentes précisions. Ensuite je regardait à la main comment je pouvais m'arranger pour organiser au mieux le calcul.
    J'ai fais des version FPU et SSE2 à l'époque et elles utilisent des méthodes de calcul différentes. Je me penche en ce moment sur une version AVX et à priori ce sera encore différent.