Outils pour utilisateurs

Outils du site


mesure

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
Dernière révisionLes deux révisions suivantes
mesure [2018/05/15 10:22] brbachelmesure [2019/02/13 21:07] brbachel
Ligne 33: Ligne 33:
 Certains logiciels (comme Cplex) tentent d'utiliser par défaut tous les cœurs de la machine. Il est important que l'utilisateur paramètre le nombre de cœurs qu'il souhaite effectivement utiliser au niveau du logiciel pour qu'il ne dépasse pas le nombre de cœurs alloués par SLURM. Par exemple si vous demandez à SLURM 8 coeurs alors vous devez paramétrer votre programme pour qu'il n'utilise pas plus de 8 threads. Dans le cas contraire, il est possible que plusieurs threads soient traités par un même cœur ce qui affecterait les temps de calcul. Certains logiciels (comme Cplex) tentent d'utiliser par défaut tous les cœurs de la machine. Il est important que l'utilisateur paramètre le nombre de cœurs qu'il souhaite effectivement utiliser au niveau du logiciel pour qu'il ne dépasse pas le nombre de cœurs alloués par SLURM. Par exemple si vous demandez à SLURM 8 coeurs alors vous devez paramétrer votre programme pour qu'il n'utilise pas plus de 8 threads. Dans le cas contraire, il est possible que plusieurs threads soient traités par un même cœur ce qui affecterait les temps de calcul.
  
-Par programmation, il existe plusieurs manières d'estimer le nombre de coeurs disponibles. En voici trois en C/C++: ''std::hardware_concurrency'' (à partir de C++11), ''omp_max_threads'' (OpenMP), ''sched_getaffinity'' (module standard Linux). Voici un code qui teste les trois solutions: [[http://fc.isima.fr/~toussain/docWiki/cores_estimator.cpp|cores_estimator.cpp]]. Il semblerait que les approches avec OpenMP et Sched fournissent les bonnes informations, en revanche celle du C++ fournit le nombre de coeurs de la machine et non celui de votre réservation SLURM. +Par programmation, il existe plusieurs manières d'estimer le nombre de coeurs disponibles pour le processus courant, ce qui permet de déterminer combien de threads il faut créer pour les besoins d'un programme. En voici trois en C / C++: ''std::hardware_concurrency'' (à partir de C++11), ''omp_max_threads'' (OpenMP), ''sched_getaffinity'' (module standard Linux). Le code suivant teste les trois solutions: [[http://fc.isima.fr/~toussain/docWiki/cores_estimator.cpp|cores_estimator.cpp]]. Il semblerait que les approches avec OpenMP et Sched fournissent les bonnes informations, alors que celle du C++ indique le nombre de coeurs de la machine et non celui de votre réservation SLURM.  
 +Pour plus de détails, voir la page [[progc|Programmation en C / C++]].
  
 ==== Temps de calcul et localisation des cœurs ==== ==== Temps de calcul et localisation des cœurs ====
mesure.txt · Dernière modification : 2021/06/30 11:48 de hetoussa