Temps de calcul identique sur pc et station de calcul

Résolu
huta Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
cptpingu Messages postés 3840 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

je travaille sur un algorithme d'optimisation combinatoire, et j'ai lancé mon programme sur plusieurs instances de mon problème en utilisant un ordinateur dell latitude : intel(R) Core(TM) i7-4600U CPU @ 2.10GHz 2.70GHz avec 8,00 Go RAM et OS 64-bits
ainsi que sur une station de calcul Dell precision : intel(R) Core(TM) i7-4700MQ CPU @ 2.40GHz 2.40GHz avec 32 GO de RAM et un OS de 64 bits.

Sauf que le temps de calcul ne s'améliore pas.
Pourriez-vous m'orienter svp?

A voir également:

1 réponse

simongremaud Messages postés 761 Date d'inscription   Statut Membre Dernière intervention   321
 
Bonjour,

Avez-vous développé en multi-thread? Si ce n'est pas le cas, il n'y a qu'un coeur du processeur qui travaille, et comme ils ont à peu près la même fréquence, ils feront le même temps.

Cordialement
0
Utilisateur anonyme
 
Je dirai processus à la place de thread, vu que plusieurs threads peuvent s'écécuter dans un même processus ( et donc n'utiliser qu'un seul coeur)
0
cptpingu Messages postés 3840 Date d'inscription   Statut Modérateur Dernière intervention   2 > Utilisateur anonyme
 
Thread ou processus, c'est (pratiquement) la même chose, et la même manière d'être "schedulé" par le noyau. La seule différence entre thread et processus, c'est le partage de data.
Un thread partage le même espace que les autres threads, tandis que le processus ne partage pas cet espace avec les autres processus. On parle souvent d'un thread en tant que "lightweight process". Pour plus de détails: http://www.kroah.com/lkn/

Ce qui veut dire que 3 threads sur un ordinateur ayant 4 coeurs, seront bien répartis sur tous les coeurs et non sur un seul comme pourrait laisser le supposer le post de "Rocailleux".
De même avoir 5 processus sur ce même ordinateur, voudra dire que ça sera "schedulé", et ça pourrait très bien ne tourner que sur un ou deux coeurs (dans la pratique, ça devrait tout de même être correctement réparti sur les 4).
Mon point étant que non, un processus ne sera pas mieux parallélisé qu'un thread (ou inversement), et conseiller de faire un processus au lieu d'un thread me paraît injustifié.

Le noyau attribue des quantum de temps, et fait avancer chacun des threads ou processus selon des ordres de priorité internes. Il est ensuite important de différencier parallélisation (tâches sur différents coeurs) et concurrence (multi-tâches au sein d'un des coeurs), afin de correctement ajuster le nombre de threads et éviter de l'overhead à cause du context switching.

Deux excellents bouquins sur le sujet:
0
huta Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Non je n'ai pas développé en multi-thread. Merci pour la réponse.
0