2010-04-09 17 views
0

Je compile mon code fortran90 en utilisant Intel Visual FORTRAN sur Windows Server 2003 Enterprise X64 Edition. Lorsque je compile le code pour la structure 32 bits et en utilisant des options de vectorisation automatique et manuelle. Le code sera compilé, vectorisé. Et quand je l'exécute sur le système de base 8, le code compilé utilise 70% de CPU qui me montre que la vectorisation fonctionne. Mais quand je compile le code avec le compilateur 64 bits, il dit que le code est vectorisé mais quand je l'exécute il montre seulement l'utilisation d'environ 12% de CPU qui est l'usage complet pour un noyau sur 8, ainsi cela signifie que pendant que le compilateur dit que le code est vectorisé, la vectorisation ne fonctionne pas.Code de vectorisation avec Intel Visual FORTRAN pour X64

Et c'est étrange pour moi parce que c'est sur une édition Windows X64 et je m'attendais à voir le résultat inverse. Je pensais qu'il devrait être préférable d'exécuter un code qui est compilé pour l'architecture 64 bits sur une fenêtre 64 bits. Tout le monde a une idée pourquoi le code compilé n'est pas capable d'utiliser la pleine puissance de plusieurs cœurs pour la version 64 bits compilé?

+0

Quels étaient les temps d'exécution des deux versions? –

Répondre

2

Je n'ai pas utilisé les versions Windows des compilateurs Intel Fortran, seulement Mac et Linux. Dans la nomenclature d'Intel, la «vectorisation» utilise les petites instructions parallèles/extensions multimédia SSE, SSE2, SSE3, SSSE3, SSE4 disponibles sur un seul processeur/cœur. La caractéristique de ces compilateurs qui peuvent automatiquement exécuter des multithreads sur plusieurs processeurs/cœurs est la "parallélisation". Les options sont -vec ou/Qvec versus -parallel ou/Qparallel. Alors, quelles options du compilateur utilisez-vous?

+0

J'utilise l'option/Qvec. Mais je pensais que l'option/Qparallel est pour la parallélisation OpenMP. Et l'autre question est pourquoi quand j'utilise/Qvec avec le compilateur 32 bits, le code compilé peut utiliser plusieurs noyaux (l'utilisation du processeur est beaucoup plus qu'un noyau)? – Bahman