2014-09-12 3 views
0

J'ai donc quelques algorithmes lourds que je préférerais utiliser sur la VPU, mais comme il y a tellement de choses en cours, les VPU ont tendance à être saturées. Y a-t-il un moyen de faire quelque chose comme "Utiliser la VPU, si la VPU est surchargée, utiliser la FPU à la place" pour avoir un débit maximal?Équilibrage SSE & FPU

Merci

+0

http://stackoverflow.com/questions/16463567/sse-fpu-parallel –

+0

Merci, désolé j'ai raté ça. En fait question sur les commentaires faits là. J'ai une fonction de clampage, qui si je fais un test isolé est 4 fois plus rapide sur SSE vs FPU. Mais si je le remplace (seulement cette fonction de pince) dans le programme entier, le programme global est plus lent sur Clamp SSE vs Clamp FPU. Quelles sont les raisons possibles pour cela? Puisque la FPU et la SSE utilisent les mêmes unités, le fait qu'elle soit plus rapide et isolée signifie qu'elle devrait être encore plus rapide dans le cadre d'un programme plus vaste. – user1181950

+0

Je ne pense pas que ce soit possible car ils partagent la même unité d'exécution, ce qui signifie que vous ne pouvez pas dire explicitement au CPU de les exécuter tous les deux à la fois. Enfin, x87 et d'autres instructions améliorées ne sont pas des constructions matérielles, je ne serais pas surpris si une partie des circuits se chevauche. – Mikhail

Répondre

0

re: comment. Soit, c'est un problème avec le mélange SSE & AVX sans vzeroupper (peut-être que vous avez compilé le reste de votre code avec -march=native ou quelque chose, et les mathématiques à double précision utilise AVX). Ou votre version SSE est plus grande et cause des erreurs dans I-cache. Ou peut-être votre microbenchmark était bidon, et une partie de votre routine SSE a été optimisée.

Pour répondre à cela, beaucoup plus de détails sur votre code est nécessaire. Comme si vous étiez sûr que votre code FPU était vraiment x87, et pas seulement scalaire dans SSE.