J'ai établi que les implémentations Microsoft de exp (double) dans la bibliothèque VS2010 C utilisent des algorithmes différents sur les plates-formes Win32 (ie 32 bits x86) et x64, même si j'ai activé SSE2 pour la plate-forme x86 le chemin du code SSE2 est pris dans exp(). Malheureusement, les différents algorithmes produisent des résultats légèrement différents (de 1 μp) pour certains opérandes. Dans ces cas, l'un ou l'autre résultat nous est acceptable en principe, mais le manque de cohérence entre les versions Win32 et x64 est problématique pour nous lors des tests. Où puis-je trouver une bonne alternative (c'est-à-dire précise et rapide) de l'exp (double) que je peux utiliser sur les deux plates-formes? Je serais heureux d'avoir une solution de code d'assemblage en utilisant les instructions SSE2, et je peux le traduire de 32 à 64 bits ou v.v. si nécessaire.Où puis-je trouver une bonne implémentation de exp (double) en utilisant les instructions SSE2 sur x86/x64?
0
A
Répondre
0
Il est probablement préférable de s'appuyer sur le compilateur et d'utiliser l'implémentation exp de http://www.netlib.org/fdlibm/e_exp.c. C'est une implémentation précise (1ulp). Compilez avec sse2 on, à la fois pour x86 et x64 et les résultats devraient être exactement les mêmes sur ces plateformes. Le code source n'offre pas beaucoup d'opportunités pour utiliser mulpd (ou _mm_mul_pd) et addpd au lieu de mulsd et addss. Par conséquent, une solution de code d'assemblage peut ne pas être très rentable.
Questions connexes
- 1. Tim Sort - où trouver une bonne documentation?
- 2. Où puis-je trouver une bonne documentation sur OpenXML
- 3. Fonction exp en utilisant C++
- 4. Où trouver une bonne documentation RDoc?
- 5. Où puis-je trouver une implémentation efficace de R-Tree?
- 6. @dynamic implémentation où le trouver?
- 7. Prise en charge des instructions SSE2 avec le commutateur/CLR
- 8. Où puis-je trouver une bonne implémentation Delphi ou Object Pascal pour un tampon circulaire
- 9. Où trouver une bonne base de données (usine) avec connectionpooling?
- 10. reg-exp multiliaire Visual Studio pour supprimer les doublons en utilisant des instructions
- 11. Trouver une médiane de 3 valeurs en utilisant le jeu d'instructions SSE2
- 12. Où puis-je trouver une bonne introduction ou de la documentation sur les blocs Objective-C?
- 13. Où puis-je trouver une bonne introduction aux bitmaps?
- 14. où puis-je trouver une bonne liste de mots
- 15. Où puis-je trouver une implémentation .net de atof?
- 16. Où puis-je trouver une implémentation de javax.validation. *?
- 17. SSE2 assemblage-débordement utilisant intrinsèques
- 18. Où puis-je trouver une bonne définition d'une construction logicielle?
- 19. Où puis-je trouver une bonne référence/tutoriel sur l'écriture de modules Apache (en C)?
- 20. où puis-je trouver une bonne référence erlang pour "BIFs"?
- 21. Où vont les instructions 'CreateMap'?
- 22. Où puis-je trouver une bonne introduction aux locales
- 23. Où sont les instructions de mise en page iOS?
- 24. Comment vectoriser un calcul de distance en utilisant SSE2
- 25. en utilisant les instructions mips
- 26. Instructions de configuration des autorisations en double
- 27. où puis-je trouver une bonne librairie delphi?
- 28. Bonne référence pour les instructions d'assemblage x86
- 29. Reg exp pour trouver le numéro
- 30. Où trouver la compilation apk en utilisant