Bonjour, j'ai une question à propos d'optimisation de code en vue d'améliorer des performances. (je reprend ce que j'ai déjà expliqué ici : http://www.developpez.net/forums/d96...bleau-tableau/ en changeant un peu ma question).
Je développe un programme dont le but est de calculer une suite d'entiers jusqu'à un certain rang non connu à l'avance. Chacun des entiers correspond (plus ou moins) à l'élément minimum d'une matrice particulière. Au départ j'ai une matrice M grande (selon les cas entre 200Mo et plusieurs giga), le nième entier de ma suite est l'entier minimum que contient la matrice M à la puissance n (selon une algèbre particulière où, pour le calcul de M*M, on remplace l'addition usuelle par l'opération min, et la multiplication usuel par l'addition).
Bref je dois calculer une suite d'entier, pour chaque entier, prenons le nieme j'ai besoin de connaitre trois grandes matrices, M, M^(n-1) et M^n.
Après toutes ces explications fastidieuses, voici ma question.
En vue de diminuer le temps d'exécution du programme, j'aimerai savoir quel serait les meilleurs options. Le programme est prévu pour tourner exclusivement sur un quad core 64bits (pour l'instant il utilise uniquement les ressource d'un seul coeur) sous windows 7.
Après avoir lu cette discution :
http://www.developpez.net/forums/d92...eur-appli-cpp/ j'ai cru comprendre qu'il était possible d'explorer plusieurs pistes principales :
multithreadings pour utiliser tous les coeurs (mais je sais pas trop ce que je vais pouvoir paraléliser)
SIMD mais je sais pas trop si c'est applicable à mon cas
exécuter le programme sur mon GPU
Vers quoi devrais-je me tourner ?
Merci
Partager