Intel VML add est lent
-
12-10-2019 - |
Question
J'ai écrit ce petit sous-programme qui compare les fonctions mathématiques simples de vecteur, réalisée soit avec une boucle:
f(i) = a(i) + b(i)
ou directement:
f = a + b
ou en utilisant Intel MKL VML:
vdAdd (n, a, b, f)
Les résultats de synchronisation pour n = 50000000 sont:
VML 0,9 sec 0,4 directe boucle 0,4
Et je ne comprends pas, pourquoi VML prend deux fois plus longtemps que les autres méthodes! (Boucle est parfois plus rapide que directe)
Subroutine se trouve sous http://paste.ideaslabs.com/show/L6dVLdAOIf et appelé via
program test
use vmltests
implicit none
call vmlTest()
end program
La solution
Votre code échantillon ont problème potentiel de cache L2, on peut surmonter avec l'optimisation de blocage. Voir la réponse Forum Réseaux Intel® Software pour plus de détails: http: // logiciel .intel.com / fr-fr / forums / showthread.php? t = 80041
Intel® optimisation Avis:
compilateurs Intel®, les bibliothèques associées et des outils de développement associés, peuvent inclure ou utiliser des options optimiser pour les jeux d'instructions qui sont disponible à la fois Intel® et non Intel microprocesseurs (par exemple SIMD jeux d'instructions), mais ne pas optimize également pour les processeurs non Intel. En outre, certaines options du compilateur pour les compilateurs Intel, y compris certains qui ne sont pas spécifiques à Intel micro-architecture, sont réservés microprocesseurs Intel. Pour une analyse détaillée description des options du compilateur Intel, y compris les jeux d'instructions et microprocesseurs spécifiques qu'ils implicate, s'il vous plaît se référer à la « Intel® Compilateur utilisateur et guides de référence » sous « Options du compilateur. » Beaucoup routines bibliothèque qui font partie de produits du compilateur Intel® sont plus hautement optimisé pour Intel microprocesseurs que pour les autres microprocesseurs. Alors que les compilateurs et les bibliothèques dans le compilateur Intel® produits offrent des optimisations pour les deux Intel et Intel compatible microprocesseurs, selon la options sélectionnées, votre code et d'autres facteurs, vous obtiendrez probablement performances supplémentaires sur Intel microprocesseurs.
compilateurs Intel®, les bibliothèques associées et des outils de développement associés, peuvent ou peut ne pas optimiser au même degré pour les processeurs non Intel pour optimisations qui ne sont pas uniques à microprocesseurs Intel. Celles-ci optimisations incluent Intel® en streaming SIMD Extensions 2 (Intel® SSE2), Intel® 3 extensions Streaming SIMD (Intel® SSE3) et Supplemental Streaming SIMD Extensions 3 (Intel® SSSE3) Les jeux d'instructions et d'autres optimisations. Intel ne garantir la disponibilité, fonctionnalité ou l'efficacité de tout optimisations sur des microprocesseurs fabriqué par Intel. optimisations dépendantes microprocesseur dans ce produit sont destinés à être utilisés avec des microprocesseurs Intel.
Alors que Intel croit nos compilateurs et les bibliothèques sont d'excellents choix à aider à obtenir le meilleur performances sur Intel® et non Intel microprocesseurs, Intel recommande vous évaluez d'autres compilateurs et bibliothèques pour déterminer qui répondent le mieux vos besoins. Nous espérons gagner votre entreprise en cherchant à offrir la meilleure performance de tout compilateur ou bibliothèque; s'il vous plaît laissez-nous savoir si vous nous ne faisons pas trouver