Altivec, ca fait quoi exactement et comment l'utiliser?
3 réponses
Saïd
Bonjour,
Que fait exactement l'unite Altivec des processeurs G4 ou G5? Peut-on
explicitement faire appelle a ses services? Si oui comment le faire depuis
un programme ecrit en C (sans assembleur)? Et comment se comporte un tel
programme s'il est lance sur un G3?
--
Saïd.
C programmers never die - they're just cast into void.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Vincent Bernat
OoO Lors de la soirée naissante du jeudi 03 février 2005, vers 18:33, Saïd disait:
Que fait exactement l'unite Altivec des processeurs G4 ou G5? Peut-on explicitement faire appelle a ses services? Si oui comment le faire depuis un programme ecrit en C (sans assembleur)?
Il ne me semble pas qu'on puisse l'utiliser en C, il faut incorporer des instructions en assembleur dans ton programme. Note que dans un futur proche, gcc saura utiliser l'Altivec automatiquement pour certaines options, ce n'est pas le cas maintenant. De plus, tu dois passer certaines options au compilateur (-maltivec je crois).
Et comment se comporte un tel programme s'il est lance sur un G3?
Cela plante avec un SIGILL (Instruction ILLégale). Il faut donc effectuer la détection du bidule. Tu peux regarder ce qui se fait dans VideoLan Client pour voir comment c'est fait. -- BOFH excuse #408: Computers under water due to SYN flooding.
OoO Lors de la soirée naissante du jeudi 03 février 2005, vers 18:33,
Saïd <said@brian.lan> disait:
Que fait exactement l'unite Altivec des processeurs G4 ou G5?
Peut-on explicitement faire appelle a ses services? Si oui comment
le faire depuis un programme ecrit en C (sans assembleur)?
Il ne me semble pas qu'on puisse l'utiliser en C, il faut incorporer
des instructions en assembleur dans ton programme. Note que dans un
futur proche, gcc saura utiliser l'Altivec automatiquement pour
certaines options, ce n'est pas le cas maintenant. De plus, tu dois
passer certaines options au compilateur (-maltivec je crois).
Et comment se comporte un tel programme s'il est lance sur un G3?
Cela plante avec un SIGILL (Instruction ILLégale). Il faut donc
effectuer la détection du bidule. Tu peux regarder ce qui se fait dans
VideoLan Client pour voir comment c'est fait.
--
BOFH excuse #408:
Computers under water due to SYN flooding.
OoO Lors de la soirée naissante du jeudi 03 février 2005, vers 18:33, Saïd disait:
Que fait exactement l'unite Altivec des processeurs G4 ou G5? Peut-on explicitement faire appelle a ses services? Si oui comment le faire depuis un programme ecrit en C (sans assembleur)?
Il ne me semble pas qu'on puisse l'utiliser en C, il faut incorporer des instructions en assembleur dans ton programme. Note que dans un futur proche, gcc saura utiliser l'Altivec automatiquement pour certaines options, ce n'est pas le cas maintenant. De plus, tu dois passer certaines options au compilateur (-maltivec je crois).
Et comment se comporte un tel programme s'il est lance sur un G3?
Cela plante avec un SIGILL (Instruction ILLégale). Il faut donc effectuer la détection du bidule. Tu peux regarder ce qui se fait dans VideoLan Client pour voir comment c'est fait. -- BOFH excuse #408: Computers under water due to SYN flooding.
Patrick Stadelmann
In article , Saïd wrote:
Bonjour,
Que fait exactement l'unite Altivec des processeurs G4 ou G5?
C'est une unité de calcule vectorielle 126-bit. Au lieu d'effectuer des opérations sur des nombres, par exemple A + B, elle travaille sur des vecteurs, par exemple : (A1, A2, A3, A4) + (B1, B2, B3, B4). Dans cet exemple, lieu de produire 1 seul résultat (C = A+B) en un cycle, elle produit 4 résultats :
C1 = A1 + B1 C2 = A2 + B2 C3 = .... C4 = ....
On peut à choix effectuer ainsi 4 opérations sur 32-bit, 8 opérations 16-bit ou 16 opérations 8-bit.
Voir http://developer.apple.com/hardware/ve/ pour plus d'infos.
Peut-on explicitement faire appelle a ses services? Si oui comment le faire depuis un programme ecrit en C (sans assembleur)?
Oui, on peut ajouter un type "vecteur" au langage C, et ensuite écrire :
Ces librairies sont compatibles G3, G4 et G5 (i.e. elle incluent à la fois le code vectoriel pour AltiVec et le code scalaire pour les G3).
Et comment se comporte un tel programme s'il est lance sur un G3?
Il plantera avec une erreur "instruction invalide" à la première exécution d'une instruction AltiVec. Un peu comme le faisait les logiciels utilisant une FPU sur une machine qui n'en possédait pas.
Patrick -- Patrick Stadelmann
In article <slrnd04o3q.lij.said@dhcp132-231.enst.fr>,
Saïd <said@brian.lan> wrote:
Bonjour,
Que fait exactement l'unite Altivec des processeurs G4 ou G5?
C'est une unité de calcule vectorielle 126-bit. Au lieu d'effectuer des
opérations sur des nombres, par exemple A + B, elle travaille sur des
vecteurs, par exemple : (A1, A2, A3, A4) + (B1, B2, B3, B4). Dans cet
exemple, lieu de produire 1 seul résultat (C = A+B) en un cycle, elle
produit 4 résultats :
C1 = A1 + B1 C2 = A2 + B2 C3 = .... C4 = ....
On peut à choix effectuer ainsi 4 opérations sur 32-bit, 8 opérations
16-bit ou 16 opérations 8-bit.
Voir http://developer.apple.com/hardware/ve/ pour plus d'infos.
Peut-on
explicitement faire appelle a ses services? Si oui comment le faire depuis
un programme ecrit en C (sans assembleur)?
Oui, on peut ajouter un type "vecteur" au langage C, et ensuite écrire :
Ces librairies sont compatibles G3, G4 et G5 (i.e. elle incluent à la
fois le code vectoriel pour AltiVec et le code scalaire pour les G3).
Et comment se comporte un tel
programme s'il est lance sur un G3?
Il plantera avec une erreur "instruction invalide" à la première
exécution d'une instruction AltiVec. Un peu comme le faisait les
logiciels utilisant une FPU sur une machine qui n'en possédait pas.
Patrick
--
Patrick Stadelmann <Patrick.Stadelmann@unine.ch>
Que fait exactement l'unite Altivec des processeurs G4 ou G5?
C'est une unité de calcule vectorielle 126-bit. Au lieu d'effectuer des opérations sur des nombres, par exemple A + B, elle travaille sur des vecteurs, par exemple : (A1, A2, A3, A4) + (B1, B2, B3, B4). Dans cet exemple, lieu de produire 1 seul résultat (C = A+B) en un cycle, elle produit 4 résultats :
C1 = A1 + B1 C2 = A2 + B2 C3 = .... C4 = ....
On peut à choix effectuer ainsi 4 opérations sur 32-bit, 8 opérations 16-bit ou 16 opérations 8-bit.
Voir http://developer.apple.com/hardware/ve/ pour plus d'infos.
Peut-on explicitement faire appelle a ses services? Si oui comment le faire depuis un programme ecrit en C (sans assembleur)?
Oui, on peut ajouter un type "vecteur" au langage C, et ensuite écrire :
Ces librairies sont compatibles G3, G4 et G5 (i.e. elle incluent à la fois le code vectoriel pour AltiVec et le code scalaire pour les G3).
Et comment se comporte un tel programme s'il est lance sur un G3?
Il plantera avec une erreur "instruction invalide" à la première exécution d'une instruction AltiVec. Un peu comme le faisait les logiciels utilisant une FPU sur une machine qui n'en possédait pas.
Patrick -- Patrick Stadelmann
Saïd
Patrick Stadelmann :
Merci pour toutes ces precisions.
-- Saïd. C programmers never die - they're just cast into void.
Patrick Stadelmann :
Merci pour toutes ces precisions.
--
Saïd.
C programmers never die - they're just cast into void.