[C] produit matrice vecteur vectoriel (Altivec inside)

produit matrice vecteur vectoriel (Altivec inside) [C] - C - Programmation

Marsh Posté le 14-02-2007 à 16:29:24    

Je suis en train de travailler sur la multiplication matrice-vecteur en vectoriel (grâce à Altivec, VMX pour les intimes). Je rencontre actuellement un problème lors de la vectorisation des opérations arithmétiques, plus particulièrement pour la multiplication.
 
En effet la matrice et le vecteur sont tous deux codés en integer (soit 32 bits), le souci est qu'il ne m'est possible d'effectuer un produit soit avec des short (16) ou des char (8) ce qui ne convient pas. La solution  serait de transtyper mes integer en float et d'utiliser l'opération vec_madd (qui est aussi intéressante pour d'autre raisons) mais cela peut poser des soucis quant à la précision du résultat.
 
J'aurais voulu savoir s'il existait des solutions possibles pour faire le produit matrice-vecteur en 32 bits avec Altivec sans forcément perdre en précision.
Merci de votre aide :)  
 

Reply

Marsh Posté le 14-02-2007 à 16:29:24   

Reply

Marsh Posté le 14-02-2007 à 21:48:38    

me semble t il qu'il ya une fonction a*b+c en 32 bits , vec_msum
http://developer.apple.com/hardwar [...] _msum.html
 
En gros le aik*bkj devrait pouvoir se faire avec ça.tu ecris ta multiplication en base 256  
à grand coup de vec_pack/vec_merge, transtypage silencieux ... long mais efficace.
Je vais regarder dans les sources de ma bibliothèques de calcul vectorielle Altivec si j'ai pas ca qui traine.
 
sinon la veclib contient une version optimisé de ce genre de truc (LAPACK aussi je pense).


Message édité par Joel F le 14-02-2007 à 21:50:01
Reply

Marsh Posté le 14-02-2007 à 22:05:22    

Merci de ton aide, je met ça en place dès demain :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed