Le sse2 aussi. En résumé:
- mmx : les vecteurs de 2 entiers 32 bits ou 4 entiers 16 bits ou 8 entiers 8 bits.
- sse : les vecteurs de 4 float.
- sse2 : sse + les vecteurs de deux doubles, de 2 entiers 64 bits ou 4 entiers 32 bits ou 8 entiers 16 bits etc.
- sse3 : sse2 + quelques trucs "cosmétiques" en plus (des instructions qui sont plus "nombres complexes" friendly , l'addition des termes d'un vecteur,..)
> nous proposer des merveilles comme 4 multiplicationss flotantes en un cycle.
ça c'est vraiment le max archithéorique, d'ailleurs ni intel ni amd ne le claironnent haut et fort.. En pratique, c'est plutot 2.5 flops / cycle , aussi bien pour les p4 que les athlons.
> j'apprend que les registres du 387 et mmx/sse sont les mêmes.
non, uniquement mmx/387 , le sse est à part.
> est-ce vraiment encore un problème du fait de la complexité des instructions SIMD ?
le "piège" c'est que l'option '-msse" ne fait qu'autoriser gcc à utiliser les instructions sse. Si tu veux le forcer à les utiliser pour les operations sur les float, il faut mettre -fpmath=sse . Note que ça ne veut pas dire qu'il utilisera les instructions sse vectorielles, genre movaps, addps,etc (parce que ça lui demanderait d'être un peu trop malin, et surtout de gerer leurs contraintes sur l'alignement des données), mais plutot les instructions scalaires, genre movss, addss etc. Donc pour l'instant ça ne sert quasiment à rien, autant tout faire à la mimine avec les intrinsics.
> L'idée de générer un premier exécutable non optimisé avec le profiling activé pour ensuite se reservir des informations d'exécution pour recompiler le programme est très bonne.
Mais en pratique c'est assez lourd à mettre en oeuvre, du coup c'est peu utilisé, et comme c'est peu utilisé ça marche mal (y'a des bugreports où gcc optimise moins bien avec le profile feedback que sans). Pour les branches if on peut déjà annoter avec __builtin_expect mais je n'ai jamais vu de difference sensible (sur x86).
Perso je prefere largement annoter le code, c'est quand même pas bien dur de savoir quels sont les quelques points chauds du programme.
> Au passage si un compilateur sait optimiser a bloc du code ca coute pas plus cher de tout optimiser à bloc.
ça coute en temps de compilation!
> On est encore obligé de jouer de l'assembleur dès qu'on veut utiliser des choses multimédia efficacement ?
De mon experience (limitée), non. Avec gcc, les "intrinsics" (les fonctions _mm_add_ps etc) produisent du très bon code. Par contre quand j'ai essayé de compiler le même code avec msvc 2003, les perf ont été divisées par deux, donc je pense que quand il dit "Please note that we can't use intrinsics on x86 since they generate extremly slow code" il parle de msvc, pas de gcc. Honnetement je serais à leur place je switcherais tout sous gcc: xcode pour macos, mingw pour windows, et gcc pour le reste :)
> Personne n'a encore fait de compilo assez intelligent pour utiliser mmx/sse tout seul ?
icc est censé savoir le faire, pour gcc c'est en cours mais je ne pense pas qu'il faille en attendre des miracles, le compilateur est obligé de deviner trop de choses: l'alignement des trucs, est-ce que ça aliase ou pas, et surtout il n'y a pas de moyen de lui dire "ça c'est LA boucle où on va passer 95% du temps je me que tu me l'optimise à bloc"
la page http://wiki.logicielslibres.info/CoincoinPositioningSystem(...) parle de wmcoincoin mais ça n'est pas du tout obligatoire, il suffit que tu modifie le useragent de ton firefox par exemple ( general.useragent.override dans le about:options ) pour y integrer ton cps et ça roule
essaye de faire des ctrl-C dans ton terminal! Eh oui, bash aussi il utilise les ctrl-K , ctrl-Y (et les autres raccourcis de base de emacs , genre ctrl-A, ctrl-E etc). Et aussi tous les softs en ligne de commande qui utilisent la libreadline.
celui là je me jure de ne pas l'acheter! Villa vortex est parfaitement illisible, je me suis arrêté à la moitié, completement saturé par les phrases ampoulées qui ne veulent rien dire et l'histoire qui n'avance pas. Déjà que dans les précédents il avait un peu cette tendance, à laquelle s'ajoute une bonne grosse tendance à raconter n'importe quoi quand il s'agit d'informatique, ce coup-ci je dis stop. Je ne le lirai pas.
> Bien sur la vraie solution pour utiliser à plein les unités multimédias des CPU c'est de se taper à la mimine des routines en assembleur (surtout pour les codecs et autres trucs de ce genre).
le plus simple c'est d'utiliser les fonctions _mm_add_ps et cie , comme ça pas d'assembleur, pas de prise de tête sur l'allocation des registres et à l'arrivée t'as un truc "portable" même sous visualc
Je pense que la reponse à tes question se trouve dans "How to Write Shared Libraries" d'Ulrich Drepper ( http://people.redhat.com/drepper/dsohowto.pdf(...) ). Je ne l'ai jamais lu, mais je l'ai souvent vu cité, c'est semble-t-il la réference.
[^] # Re: sse
Posté par Troy McClure (site web personnel) . En réponse au journal GCC et le mmx/sse{1,2,3)/3dnow. Évalué à 9.
- mmx : les vecteurs de 2 entiers 32 bits ou 4 entiers 16 bits ou 8 entiers 8 bits.
- sse : les vecteurs de 4 float.
- sse2 : sse + les vecteurs de deux doubles, de 2 entiers 64 bits ou 4 entiers 32 bits ou 8 entiers 16 bits etc.
- sse3 : sse2 + quelques trucs "cosmétiques" en plus (des instructions qui sont plus "nombres complexes" friendly , l'addition des termes d'un vecteur,..)
# sse
Posté par Troy McClure (site web personnel) . En réponse au journal GCC et le mmx/sse{1,2,3)/3dnow. Évalué à 9.
ça c'est vraiment le max archithéorique, d'ailleurs ni intel ni amd ne le claironnent haut et fort.. En pratique, c'est plutot 2.5 flops / cycle , aussi bien pour les p4 que les athlons.
> j'apprend que les registres du 387 et mmx/sse sont les mêmes.
non, uniquement mmx/387 , le sse est à part.
> est-ce vraiment encore un problème du fait de la complexité des instructions SIMD ?
le "piège" c'est que l'option '-msse" ne fait qu'autoriser gcc à utiliser les instructions sse. Si tu veux le forcer à les utiliser pour les operations sur les float, il faut mettre -fpmath=sse . Note que ça ne veut pas dire qu'il utilisera les instructions sse vectorielles, genre movaps, addps,etc (parce que ça lui demanderait d'être un peu trop malin, et surtout de gerer leurs contraintes sur l'alignement des données), mais plutot les instructions scalaires, genre movss, addss etc. Donc pour l'instant ça ne sert quasiment à rien, autant tout faire à la mimine avec les intrinsics.
[^] # Re: c'est tout pourri...
Posté par Troy McClure (site web personnel) . En réponse au journal Le Coincoin Positionning System est de retour \o/. Évalué à 3.
http://hules.free.fr/wmcoincoin/rtff.html#qdlfp(...)
[^] # Re: je ne veux pas troller mais
Posté par Troy McClure (site web personnel) . En réponse au journal Cinq erreurs commises par les néophytes sous GNU/Linux. Évalué à 10.
[^] # Re: dites
Posté par Troy McClure (site web personnel) . En réponse à la dépêche Flash player 8 recherche son ingénieur linux. Évalué à 3.
Mais en pratique c'est assez lourd à mettre en oeuvre, du coup c'est peu utilisé, et comme c'est peu utilisé ça marche mal (y'a des bugreports où gcc optimise moins bien avec le profile feedback que sans). Pour les branches if on peut déjà annoter avec __builtin_expect mais je n'ai jamais vu de difference sensible (sur x86).
Perso je prefere largement annoter le code, c'est quand même pas bien dur de savoir quels sont les quelques points chauds du programme.
> Au passage si un compilateur sait optimiser a bloc du code ca coute pas plus cher de tout optimiser à bloc.
ça coute en temps de compilation!
[^] # Re: dites
Posté par Troy McClure (site web personnel) . En réponse à la dépêche Flash player 8 recherche son ingénieur linux. Évalué à 6.
De mon experience (limitée), non. Avec gcc, les "intrinsics" (les fonctions _mm_add_ps etc) produisent du très bon code. Par contre quand j'ai essayé de compiler le même code avec msvc 2003, les perf ont été divisées par deux, donc je pense que quand il dit "Please note that we can't use intrinsics on x86 since they generate extremly slow code" il parle de msvc, pas de gcc. Honnetement je serais à leur place je switcherais tout sous gcc: xcode pour macos, mingw pour windows, et gcc pour le reste :)
> Personne n'a encore fait de compilo assez intelligent pour utiliser mmx/sse tout seul ?
icc est censé savoir le faire, pour gcc c'est en cours mais je ne pense pas qu'il faille en attendre des miracles, le compilateur est obligé de deviner trop de choses: l'alignement des trucs, est-ce que ça aliase ou pas, et surtout il n'y a pas de moyen de lui dire "ça c'est LA boucle où on va passer 95% du temps je me que tu me l'optimise à bloc"
[^] # Re: c'est tout pourri...
Posté par Troy McClure (site web personnel) . En réponse au journal Le Coincoin Positionning System est de retour \o/. Évalué à 3.
[^] # Re: faute inexcusable
Posté par Troy McClure (site web personnel) . En réponse au journal Le Coincoin Positionning System est de retour \o/. Évalué à 10.
[^] # Re: haut niveau performant
Posté par Troy McClure (site web personnel) . En réponse au journal Comment résoudre la "crise du logiciel" ?. Évalué à 2.
Qu'il est bien bandant. Y'a même un type qui essaie de faire un frontend D pour gcc:
http://home.earthlink.net/~dvdfrdmn/d/(...)
[^] # Re: Attention aux assertions
Posté par Troy McClure (site web personnel) . En réponse au journal Comment résoudre la "crise du logiciel" ?. Évalué à 3.
En voici un: http://kadreg.free.fr/perso/moules/troll-or.jpg(...) , attention il est lourd.
# bravo!
Posté par Troy McClure (site web personnel) . En réponse au message L'utf-8 et les coin². Évalué à 2.
Super patch, je connaissais pas l'option "translit" de iconv mais j'en rêvais! ça sera l'occasion de sortir une nouvelle version du coincoin.
Pour le support natif par contre , ça ne sera pas avant la saint glin²
[^] # page de pub
Posté par Troy McClure (site web personnel) . En réponse à la dépêche Slackware 10.2 est disponible. Évalué à 2.
http://hules.free.fr/wmhdplop/(...)
http://hules.free.fr/wmforkplop/(...)
[^] # Re: Je galère aussi
Posté par Troy McClure (site web personnel) . En réponse au journal GNU/Emacs est-il ésotérique ?. Évalué à 3.
[^] # Re: Y a du bon
Posté par Troy McClure (site web personnel) . En réponse à la dépêche LRS : support optimisé de LVM pour la sauvegarde système. Évalué à 3.
# ras le bol de dantec
Posté par Troy McClure (site web personnel) . En réponse au journal "Cosmos Incorporated" - Maurice G. Dantec. Évalué à 4.
[^] # Re: erf... Nouvelle stratégie ?
Posté par Troy McClure (site web personnel) . En réponse au journal Ca embauche chez Microsoft !. Évalué à 6.
http://slashdot.org/comments.pl?sid=161688&cid=13519890(...)
Si j'étais Microsoft je préfererais embaucher l'auteur de Jack que celui de .. heu il a fait quoi ESR ? fetchmail ?
# commentaire à la con
Posté par Troy McClure (site web personnel) . En réponse au message courier-pop en deian-sarge 3.1: problèmes d'authentification. Évalué à 2.
[^] # Re: Fortran
Posté par Troy McClure (site web personnel) . En réponse à la dépêche Code_Aster accessible !. Évalué à 1.
http://www.fortranstatement.com/(...)
[^] # Re: Ça devait arriver...
Posté par Troy McClure (site web personnel) . En réponse au journal Les bloat-CPU. Évalué à 1.
[^] # Re: Ça devait arriver...
Posté par Troy McClure (site web personnel) . En réponse au journal Les bloat-CPU. Évalué à 1.
le plus simple c'est d'utiliser les fonctions _mm_add_ps et cie , comme ça pas d'assembleur, pas de prise de tête sur l'allocation des registres et à l'arrivée t'as un truc "portable" même sous visualc
[^] # Re: Faut pas faire chier les francais !
Posté par Troy McClure (site web personnel) . En réponse au journal Série d'explosions dans les transports Londonien. Évalué à 4.
# i18n
Posté par Troy McClure (site web personnel) . En réponse au message erreur compil Mutex. Évalué à 2.
aaah les bienfaits de l'i18n sur les messages d'erreur de g++
[^] # Re: Gcc Summit
Posté par Troy McClure (site web personnel) . En réponse à la dépêche Port de Linux sur le processeur Cell. Évalué à -1.
[^] # Re: Dommage
Posté par Troy McClure (site web personnel) . En réponse au journal Free Player !!!!!!!!!!!. Évalué à -10.
# blah
Posté par Troy McClure (site web personnel) . En réponse au journal Fonctionnement du linker dynamic sous linux. Évalué à 5.