Bonjour, j'essaie de me mettre au MMX et SSE en utilisant les fonctions intrasecs, est-il possible que ce code puisse tourner moins vite que du code C++ optimisé en G7 par Visual ?
Sur differents test cela s'avere plus lent !
Je vous remercie.
Version imprimable
Bonjour, j'essaie de me mettre au MMX et SSE en utilisant les fonctions intrasecs, est-il possible que ce code puisse tourner moins vite que du code C++ optimisé en G7 par Visual ?
Sur differents test cela s'avere plus lent !
Je vous remercie.
qu'est-ce que c'est ?Citation:
Envoyé par dickymoe
Pour ta question, j'ai tendance à répondre qu'un bon code X sera plus performant qu'un mauvais code Y, X et Y étant des langages au choix (C++ / Asm ici).
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang/html/vcrefmmxtechnologyintrinsicgroups.asp
Le but est de faire plusieurs opérations a la place d'une, mais j'ai tendance à croire que Visual est meilleur en Optimisations.
Ben étudie le code asm qu'il génère, et compare avec le tiens. Tu devrais soumettre ton code asm au forum Assembleur.
Ce n'est pas de l'assembleur, c'est des fonctions comme C. Peut etre existe-t-il une option de compilation qui permet de dire que l'on utilise du MMX et qui ferais accelérer. C'est pourquoi j'attend une réponde.
http://msdn.microsoft.com/library/en-us/vclang/html/vclrfMMXSSESSE2Intrisics.asp
Le terme Intrinsics ça m'évoque #pragma intrinsic qui a pour conséquence que le code est directement copié collé au lieu d'un appel de fonction. Donc à piori, je dirai que ton appel de fonction est remplacé par une instruction assembleur. Met un break point dans ton code, et suis l'exécution au debugger en affichant le code machine pour voir le code asm généré. Ou bien fait générer le listing asm lors de la compilation.Citation:
An intrinsic is a function known by the compiler that directly maps to a sequence of one or more assembly language instructions. Intrinsic functions are inherently more efficient than called functions because no calling linkage is required.
Intrinsics make the use of processor-specific enhancements easier because they provide a C/C++ language interface to assembly instructions. In doing so, the compiler manages things that the user would normally have to be concerned with, such as register names, register allocations, and memory locations of data.
Je n'est pas les connaissances en Assembleur pour !
Cela n'est jamais arrivé a personne ? Pas de manipulations spéciales a faire ?
Help please...
Je crois que c'est ça le problème. Parce qu'utiliser les instructions MMX sans comprendre l'assembleur, ne te permet pas de pouvoir optimiser le code, même si tu utilises un langage qui permet de t'abstraire de cela.Citation:
Envoyé par dickymoe
Pour reprendre un confrère, un bon code X vaut mieux qu'un mauvais code Y même si le code Y est sensé être plus rapide.
Je comprends les optimisations, le binaire, l'hexa, les opérations bit a bit... J'ai fais de l'architecture, c'est le language lui meme que je connait pas.
L'un des problemes aussi de MMX c'est qu'il n'y a pas fe fonctions qui permet de multiplier 8*8 il faut bidouiller, faire du 4*4 et cela rend plus long les calcul...
Personne n'a de competences en MMX/SSE avec les fonctions intrasec ?
A part l'équipe d'Intel et peut être Microsoft, je ne pense pas que d'autres programmeurs codent aussi bas!
Car c'est du code extrêmement bas niveau, même s'il n'est pas en assembleur.
Notamment Intel à des librairies graphiques de très bonnes qualités écrites avec ce système.
Adresse toi au forum assembleur, ici c'est C++.