Je suis impatient de comprendre comment optimiser le nombre d'opérations que je peux obtenir sur mon CPU. Je fais un simple programme de multiplication de matrices, et j'ai un processeur de Skylake. Je regardais la page wikipedia pour les informations de flops sur cette architecture, et j'ai des difficultés à le comprendre. D'après ce que je comprends, les instructions FMA autorisent les entrées FP à 3 voies? Et permettre de mélanger entre ajoute et multiplie entre eux. Mais que se passe-t-il quand j'ajoute seulement deux flotteurs? Le multiplie-t-il simplement par un? Puis-je ajouter 3 flotteurs en 1 cycle, ou sera-t-il divisé? J'ai vu que le skylake, a 32 FLOPs/cycle pour les entrées de précision simple, mais quelle est la signification de "deux 8-wide FMA instructions"?Comprendre les performances des instructions FMA
Nous vous remercions à l'avance pour les explications
Cette question devient plus intéressante si vous comparez Haswell et Skylake. Haswell ne peut faire qu'un AVX par cycle d'horloge mais deux opérations FMA par cycle d'horloge. Cela signifie que vous pouvez doubler votre débit d'ajout en utilisant deux opérations FMA en multipliant par 1.0. OTH, la latence pour FMA est de 5 alors que l'addition est de trois sur Haswell donc vous devez utiliser 10 accumulateurs parallèles pour obtenir le débit maximum AVEC FMA alors que vous n'avez besoin que de 3 avec addition. Sur l'addition Skylake et FMA ont la même latence et le débit donc il n'y a aucune raison d'utiliser FMA pour l'addition. –