Bonjour je fais de l'IA et j'aimerai utiliser au mieux mes CPU.
Je m'explique je fais un algorithme genetique dont l'evaluation d'un individu prend pas mal de temps, je peux la parametrer pour qu'elle soit plus precise et stable mais pour cela les calcul augment exponentiellement, du coup je me retrouve avec un temps de calcul de plusieurs seconde par individu.
Donc mon objectif est de faire du multithreading et utiliser au maximum les coeurs de mon processeur pour faire les calcules en paralleles (dans mon cas je ferai le calcul des individus en paralleles).
Le hic est que je ne sais pas combien de thread je dois faire pour correctement optimiser mon programme. Si je n'en met pas assez je risque de gacher du temps. A l'inverse si j'en met trop a force de switcher entre mes differents thread je risque aussi de surcharger le processeur et de perdre du temps.
Je voulais donc savoir si il exister une methode me permettant de dire si j'ai atteint le max des capacites de mon processeur, et que rajouter des thread me ferais perdre du temps. Ou alors une variable me permettant de dire le nombre de thread optimal. Je programme en C, et j'aimerai si possible une solution portatif (qui eviterait de modifier mon code en fonction du nombre de coeur de mon processeur).
Merci pour votre aide .
Partager