Salut! Tout est dans le titre!
Pour faire un simulation de particules, j'ai un tableau de positions avec un tableau de vitesses.
Donc en gros, j'ai à faire pour une case i du tableau :
positionX[i] = positionX[i] + vitesseX[i]*t
Fin bref, peu importe la formule...additionner deux cases [i] de différent tableaux et multiplier par une constante, voilà le problème.
J'ai déjà fait un prototype en C++ mais les performances ne sont pas au rendez-vous, j'aimerais donc encapsuler des routines de plus bas niveau.
Je cherche quelque chose de très rapide étant donné que selon un profileur de code (gprof), la mise à jour des particules est ce qui bouffe le plus de ressources! Y'a-t-il des instructions de la libc qui pourraient m'aider à faire ça plus vite q'un "for", un peu comme un memcpy mais en version somme? Je me débrouille en assembleur x86 (assez débutant) et je pourrais peut-être me casser les cojones avec le SSE et le x86_64 si c'est possible de battre GCC. Bémol sur cette dernière proposition, il FAUT que ça en vaille la peine!
Bref, qu'en pensez-vous ? J'aimerais bien faire quelque chose qui se parallélise et je me fous de la compatibilité avec les vieux système. Je me fous de la portabilité aussi, je fais ça sur linux x86_64. C'est un petit projet pour le fun mais j'ai vraiment besoin d'aide niveau conception![]()
Partager