J'essaie de mieux comprendre comment fonctionnent les processeurs multi-core compatibles avec le threading. Disons que j'ai une application qui peut être compilée avec MPI ou OpenMP ou MPI + OpenMP. Je me demande comment il sera programmé sur une boîte CentOS 5.3 avec quatre processeurs Xeon X7560 @ 2.27GHz et chaque cœur de processeur a Hyper-Threading activé.Comment les applications seront-elles planifiées sur des machines multi-core activées par l'hyper-threading?
Le processeur est numéroté de 0 à 63 dans/proc/cpuinfo. Pour ma compréhension, il y a quatre 8 noyaux processeurs physiques, les CŒURS totaux physiques sont 32, chaque cœur de processeur a Hyper-Threading activé, les processeurs totaux LOGIQUES sont 64.
Compilé avec MPICH2 Combien de physique les cœurs seront utilisés si je cours avec mpirun -np 16? Est-il divisé entre les 16 cœurs PHYSIQUES ou les 16 processeurs logiques disponibles (8 cœurs PHYSIQUES utilisant l'hyper-threading)?
compilé avec OpenMP Combien de cœurs physiques seront utilisés si je mets OMP_NUM_THREADS = 16? Est-ce qu'il utilisera 16 processeurs LOGICAL?
Compilé avec MPICH2 + OpenMP Combien de cœurs physiques seront utilisés si je mets OMP_NUM_THREADS = 16 et que je cours avec mpirun -np 16?
compilé avec OpenMPI
OpenMPI dispose de deux options d'exécution
-CPU-ensemble qui spécifie les processeurs logiques alloués à l'emploi, -CPU-per-proc qui spécifie le numéro du processeur à utiliser pour chaque processus.
S'il est exécuté avec mpirun -np 16 -cpu-set 0-15, n'utilisera-t-il que 8 cœurs PHYSIQUES?
Si elle est exécutée avec mpirun -np 16 -cpu-set 0-31 -cpu-per-proc 2, comment sera-t-elle planifiée?
Merci
Jerry