Il s'agit de la commande likwid-pin qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
likwid-pin - épingle une application séquentielle ou filetée à des processeurs dédiés
SYNOPSIS
broche likwid [-vhqipS] [-c ] [-s ] [-d ]
DESCRIPTION
broche likwid est une application en ligne de commande pour épingler une application séquentielle ou multithread
vers des processeurs dédiés. Il peut être utilisé en remplacement de ensemble de tâches (1). L'opposé de
taskset pas de masque d'affinité mais des processeurs uniques sont spécifiés. Pour multithread
applications basées sur la bibliothèque pthread le pthread_create l'appel à la bibliothèque est surchargé
via LD_PRELOAD et chaque thread créé est épinglé à un processeur dédié comme spécifié
in liste_core
Par défaut, chaque thread généré est épinglé au noyau dans l'ordre des appels à
pthread_create. Il est possible d'ignorer des threads uniques en utilisant l'option de ligne de commande -s.
Pour les implémentations OpenMP, les compilateurs gcc et icc sont explicitement pris en charge. D'autres peuvent aussi
. broche likwid définit la variable d'environnement OMP_NUM_THREADS pour vous si ce n'est déjà fait
présent. Il définira autant de threads que présents dans l'expression de la broche. Soit conscient que
avec pthreads, le thread parent est toujours épinglé. Si vous créez par exemple 4 threads avec
pthread_create et n'utilisez pas le processus parent en tant que travailleur que vous devez toujours fournir
num_threads+1 identifiants de processeur.
broche likwid prend en charge différentes numérotations pour l'épinglage. Par numérotation physique par défaut de
les noyaux sont utilisés. c'est aussi la numérotation likwid-topologie(1) rapports. Mais aussi
une numérotation logique à l'intérieur du nœud ou des sockets peut être utilisée. Si vous utilisez un N (par exemple -c
N:0-6) les cœurs sont numérotés logiquement sur l'ensemble du nœud. Les noyaux physiques viennent en premier. Si
un système, par exemple, a 8 cœurs avec 16 threads SMT avec -c N:0-7, vous obtenez tous les cœurs physiques.
Si vous spécifiez -c N:0-15, vous obtenez tous les cœurs physiques et tous les threads SMT. Avec S, vous pouvez
spécifiez les numérotations logiques à l'intérieur des sockets, encore une fois les cœurs physiques viennent en premier. vous pouvez mélanger
différents domaines séparés par @. Par exemple -c S0:0-3@S2:2-3 vous épinglez le thread 0-3 sur logique
les cœurs 0-3 sur le socket 0 et les threads 4-5 sur les cœurs logiques 2-3 sur le socket 2.
Pour les applications où la politique de premier contact sur les systèmes numa ne peut pas être utilisée broche likwid
peut être utilisé pour activer le placement de mémoire entrelacée. Cela peut accélérer considérablement la
performances des codes multithread liés à la mémoire. Tous les nœuds numa auxquels l'utilisateur a épinglé les threads
sont utilisés pour l'entrelacement.
OPTIONS
-v imprime les informations de version sur la sortie standard, puis se ferme.
-h imprime un message d'aide sur la sortie standard, puis se ferme.
-c OR OR <dispersion politique>
spécifier une liste numérique de processeurs. La liste peut contenir plusieurs éléments,
séparés par des virgules et des plages. Par exemple 0,3,9-11. Vous pouvez également utiliser logique
numérotations, soit au sein d'un nœud (N), soit d'un socket (S ) ou un domaine numa (M ).
likwid-pin prend également en charge l'épinglage logique dans un cpuset avec un préfixe L. Si tu
omettre cette option likwid-pin épinglera les threads aux processeurs sur le nœud
avec les cœurs physiques d'abord. Voir ci-dessous pour plus de détails sur l'utilisation d'une expression de thread ou
politique de dispersion
-s
Spécifiez le masque de saut en tant que numéro HEX. Pour chaque bit défini, le fil correspondant est
sauté.
-S Tous les domaines de mémoire ccNUMA appartenant à la liste de threads spécifiée seront nettoyés
avant la course. Peut résoudre les problèmes de cache de tampon de fichiers sous Linux.
-p imprime les domaines de thread disponibles pour l'épinglage logique. Si utilisé en combinaison
avec -c, les ID de processeur physique sont imprimés sur stdout.
-i définir la politique de mémoire numa pour qu'elle s'entrelace sur tous les nœuds numa impliqués dans l'épinglage
-q exécution silencieuse sans sortie
-d
définir le délimiteur utilisé pour afficher la liste des processeurs physiques (-p & -c)
EXEMPLE
1. Pour l'application pthread standard :
broche likwid -c 0,2,4-6 ./monApp
Le processus parent est épinglé au processeur 0. Thread 0 au processeur 2, thread 1 à
processeur 4, thread 2 au processeur 5 et thread 3 au processeur 6. Si plusieurs threads sont
créé que spécifié dans la liste des processeurs, ces threads sont épinglés au processeur 0 comme
se retirer.
2. Pour gcc OpenMP, autant d'identifiants doivent être spécifiés dans la liste des processeurs qu'il y a de threads :
OMP_NUM_THREADS=4 ; broche likwid -c 0,2,1,3 ./monApp
3. Un contrôle total sur l'épinglage peut être obtenu en spécifiant un masque de saut. Par exemple
la commande suivante ignore l'épinglage du thread 1 :
OMP_NUM_THREADS=4 ; broche likwid -s Assistance -c 0,2,1,3 ./monApp
4. Le commutateur -c prend en charge la définition de threads dans un domaine d'affinité spécifique comme
Nœud NUMA ou groupe de cache. Les domaines d'affinité disponibles peuvent être récupérés avec le -p
switch et aucune autre option sur la ligne de commande. Les domaines d'affinité communs sont N
(nœud entier), SX (socket X), CX (groupe de cache X) et MX (groupe de mémoire X). Plusieurs
les domaines d'affinité peuvent être définis séparés par @. Afin d'épingler 2 filetages sur chaque douille
d'un système à 2 prises :
OMP_NUM_THREADS=4 ; broche likwid -c S0:0-1@S1:0-1 ./monApp
5. Une autre définition d'argument du commutateur -c permet d'épingler les threads en fonction
à une expression comme E:N:4:1:2. La syntaxe est E : :
fils>( : : ). L'exemple épingle 8 threads avec 2 threads SMT par
core sur une machine SMT 4:
OMP_NUM_THREADS=4 ; broche likwid -c E:N:8:2:4 ./monApp
6. La dernière alternative pour le commutateur -c est la dispersion automatique des threads sur
domaines d'affinité. Par exemple, pour disperser les threads sur tous les domaines de mémoire dans un
système:
OMP_NUM_THREADS=4 ; broche likwid -c M:dispersion ./monApp
Utilisez likwid-pin en ligne en utilisant les services onworks.net