OPTIMISATION DE CALCULS (WIN64)

Signaler
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
-
Messages postés
55
Date d'inscription
dimanche 20 juillet 2008
Statut
Membre
Dernière intervention
10 octobre 2015
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/51710-optimisation-de-calculs-win64

Messages postés
55
Date d'inscription
dimanche 20 juillet 2008
Statut
Membre
Dernière intervention
10 octobre 2015

bonjour BruNews

j'ai accepte sur bouton de telechargement j'ai fait d'ouvre mais ya de icon Agendat.ex_ ce qui ne peut pas ouvrer. c'est non exe...
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
entre movdqa et movapd, il ne DEVRAIT y avoir aucune difference.
Mais pourtant j'obtiens quasi toujours plus rapide avec movdqa, bizarre mais je m'adapte.
L'ordre des instructions, quand c'est SSE alors il n'y a que les tests pour dire ce qui va mieux.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Tiens je me suis aperçu qu'en essayant d'améliorer mon code, je l'ai en fait ralenti. J'ai bien vérifié, ca me semble bizarre. Il y a des règles pour le choix de l'ordre des instructions?

1ere version me donne perf=585:

movapd xmm0, [rdx]
addps xmm0, [rdx + 16]
addps xmm0, [rdx + 32]
haddps xmm0, xmm0
haddps xmm0, xmm0 ; XMM0 = 12 * moy

movapd xmm4, [rdx]
movapd xmm1, [rdx + 16]
movapd xmm3, [rdx + 32]

2eme version me donne perf=607:

movapd xmm4, [rdx]
movapd xmm1, [rdx + 16]
movapd xmm3, [rdx + 32]

movapd xmm0, xmm4
addps xmm0, xmm1
addps xmm0, xmm3
haddps xmm0, xmm0
haddps xmm0, xmm0 ; XMM0 = 12 * moy
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
J'arrive à faire un peu plus rapide (je pense que c'est parce que je fais 2 mulss là ou tu en fais 3).

Tu fais moy / 12, puis 6 * moy, ensuite une division par 146
Je pense qu'une de ces instructions est en trop
(Pour y arriver, j'ai divisé en dur les valeurs de TNDCFLT par 146.0f).

Sinon, petite question : quelle différence entre movdqa et movapd?
Si je ne me trompe pas tu as changé d'instruction entre les deux versions.
Afficher les 9 commentaires