Est-il possible que GHC produise du code SIMD pour les différentes générations de SSE?Générer du code vectoriel à partir de Haskell?
Par exemple. a obtenu un programme comme celui-ci
import Data.Array.Vector
main = print . sumU $ (enumFromToFracU 1 10000000 :: UArr Double)
Je peux voir le code généré (compilé 64 bits x86) utilisent des instructions SSE en mode scalaire (les backends C et asm). Donc ajoute plutôt que addpd. Pour les types de programmes que je travaille sur l'utilisation d'instructions vectorielles est important pour la performance. Existe-t-il un moyen facile pour un débutant comme moi d'amener GHC à SIMDize le code en utilisant SSE?
Merci pour les conseils - ne peut pas tout à fait coopérer ghc & gcc sur certains appels uvector simples. Je continuerai à expérimenter maintenant que je sais que c'est. Il semble également, superficiellement au moins, que icc ne soit pas utilisable en tant que backend C - il barre sur ghc-6.10.4/lib/ghc-6.10.4/include/Regs.h depuis "error: type de variable" union "ne convient pas pour un registre". –
billt
Obtenir ICC travailler serait tout un exploit. –