Boost programmation multi core - C++ - Programmation
Marsh Posté le 05-08-2008 à 16:35:10
J'ai été confronté au même problème : le plus simple si tu utilises le compilateur gcc ou intel est d'utiliser OpenMP pour ca : il suffit d'ajouter le header 'omp.h', de linker avec GOMP (dans le cas de gcc), et d'utiliser la fonction omp_get_num_procs()
Si tu utilises le compilo microsoft sous windows, je ne sais pas s'il supporte OpenMP.
Marsh Posté le 05-08-2008 à 17:59:59
Hmm, sur Windows tu as la variable d'environnement NUMBER_OF_PROCESSORS. De ce que j'ai pu voir sur tous les Windows de Win2000 à XP (certainement Vista aussi), elle contient une valeur correcte.
Marsh Posté le 05-08-2008 à 18:14:39
l'avantage de la solution OpenPM c'est que ca reste multi-plateforme en évitant les #define ; après ca fait une bibliotheque en plus pour pas grand chose...
Marsh Posté le 05-08-2008 à 18:30:51
openMP reste assez mal aisée d'emploi dans certains cas.
@tpierron : je note ton astuce
Marsh Posté le 05-08-2008 à 23:15:10
Ha ouais, tiens tu pourrais aussi rajouter Win2003 dans ma liste, parce qu'il n'y a pas grand chose entre Windows 2000 et XP
Marsh Posté le 06-08-2008 à 10:55:25
Y a aussi le nombre de thread concurrent possible :
std::thread::hardware_concurrency();
boost::thread::hardware_concurrency();
Marsh Posté le 07-08-2008 à 11:22:05
Bien vu Fraer...et merci ! Un truc moche en moins dans mon code
Marsh Posté le 05-08-2008 à 13:28:47
Bonjour,
J'utilise la librairie boost thread en c++ pour réaliser un programme multi-plateformes (Win, Unix et Mac) et j'aurais voulu savoir si on peut obtenir dans son code le nombre de cores de l'ordinateur sur lequel le programme tourne. Y a-t- il une fonction qui me permetterai d'obtenir cette information ?
Merci