Augmenter vitesse d'exécution

scelw Messages postés 117 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 17 février 2007 - 23 déc. 2004 à 13:21
scelw Messages postés 117 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 17 février 2007 - 19 janv. 2005 à 16:44
Bonjour,

Je "m'amuse" avec des nombres premiers de très grande taille. Le temps d'exécution de mon programme est très long. Pour aboutir, il faut souvent de 2 à 4 semaines. J'ai optimisé l'algo à fond! (avec l'aide du concepteur de la librairie que j'utilise : NTL. voir www.shoup.net/ntl/)

Je cherche donc à "recenser" les différents moyens qui pourraient me permettre de grapiller un peu de temps. Hélas, je n'y connais presque rien en hardware...
Je fais appel à vous : quelles sont les solutions pratiques pour augmenter la vitesse d'exécution d'un programme ?

J'ai pensé à la mémoire RAM... est-ce utile?
J'ai aussi pensé au cache... est-ce que ça peut faire qqchose?
Je sais qu'il faut aussi combiner au mieux le couple Carte Mère (CM) - Processeur. Ainsi un gros processeur P4 équipé d'une CM à 133 MHz n'aura que de maigres performances... mais un proc à 1 GHz doublé d'une CM à 800 MHz pourra donner toute sa puissance.
(Corrigez-moi si je me trompe.)
Il existe aussi l'overcloking. (Mais bon, ça génère des erreurs et c'est pas souhaitable dans le cas de "calculs purs"...)

Merci pour vos idées!

4 réponses

plus_plus_fab Messages postés 232 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 8 janvier 2005
23 déc. 2004 à 14:13
salut,

Si tu as optimisé l'algo avec le concepteur de NTL, il n'y aura vraisemblablement pas grand chose à ajouter ... Sait-on jamais, essaye d'utiliser un profiler pour voir ou ton programme passe son temps.
Compile avec un gcc 3.4.* dernier cri, utilise les bonnes optimisations (voir ce qu'apporte l'inlining) et les options d'architectures.
Ensuite pour le matériel, rajouter de la RAM seulement si tu entends ton disque swapper, sinon pas la peine. Plus la RAM fonctionne à une fréquence importante, mieux c'est.
Pour le cache, oui, ça influ pas mal, mais en aveugle, c'est difficile à quantifier ...

Je crois que tu te trompe pour l'histoire du couple carte mere - processeur, tu mélange un peu avec l'overclocking. En gros, on essaye d'augmenter la fréquence à laquelle peut tourner le processeur. cette fréquence est égale au produit du multiplicateur par la fréquence de bus de données. En générale, on essaye d'augmenter la fréquence du bus de données. Il faut ensuite abaisser les timing RAM et éventuellement augmenter le voltage (VI/O). Tu perds en stabilité, c'est clair !
Si tu as d'autres moyens, tu peux paralléliser ton calcul. Faire du multithread si tu as un multiprocesseur, ou simplement si ton appli réalise beaucoup d'E/S. Faire communiquer des processus si tu disposes d'un cluster.
0
alphaone Messages postés 134 Date d'inscription vendredi 2 mai 2003 Statut Membre Dernière intervention 14 novembre 2009
23 déc. 2004 à 15:47
fait ctrl alt suppr et voit si la ram est emtiérement ramplit pour voir est que tu as bession de plus de ram.
Mais j'ai déja travaillé sur des projet comme ça mais en général c'est toujour le processeur qui limite. regarde sur internet les projet similaire tourne sur de gros processeur.
si tu as plusieur pc tu peut faire une application qui sert de serveur pour coordonée les calcule. et des client qui les font.
Ou utilise un bi-processeur mais dans son application il faut découper les calcules en faisant des threads.
bye!
Bon courage tiens moi au courant de ce projet: alpha.super-one@laposte.net .
Pour quoi as tu besion de faire ça? A quoi ça te sert? moi je connait tout les nombre premier de 0 à 200, c'est déja pas mal!
0
plus_plus_fab Messages postés 232 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 8 janvier 2005
23 déc. 2004 à 18:02
"si tu as plusieur pc tu peut faire une application qui sert de serveur pour coordonée les calcule. et des client qui les font."
oui, c'est la solution systemes distribués que je n'ai pas évoqué. C'est la moins performante en terme de rapidité de communication, mais la moins chère, la plus portable puisque les machines peuvent etre sur des OS différents, et évidemment celle qui permet de rassembler le plus de machines.
0
scelw Messages postés 117 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 17 février 2007
19 janv. 2005 à 16:44
mon projet avance à petits pas mais ça avance. j'ai changé de machine, j'ai gagné un facteur 8 grâce à un processeur Athlon 1.8 GHz (j'étais avant sur un Pentium 333 MHz).
RAS... :)
0
Rejoignez-nous