Este é o comando likwid-pin que pode ser executado no provedor de hospedagem gratuita OnWorks usando uma de nossas várias estações de trabalho online gratuitas, como Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS
PROGRAMA:
NOME
likwid-pin - fixa um aplicativo sequencial ou encadeado a processadores dedicados
SINOPSE
Likwid-pin [-vhqipS] [-c ] [-s ] [-d ]
DESCRIÇÃO
Likwid-pin é um aplicativo de linha de comando para fixar aplicativos sequenciais ou multithread
para processadores dedicados. Pode ser usado como substituto para conjunto de tarefas(1). Oposto a
conjunto de tarefas sem máscara de afinidade, mas processadores únicos são especificados. Para multithreaded
aplicativos baseados na biblioteca pthread o pthread_create chamada de biblioteca está sobrecarregada
por meio de LD_PRELOAD e cada thread criada é fixada em um processador dedicado conforme especificado
in lista_núcleo
Por padrão, cada thread gerado é fixado ao núcleo na ordem das chamadas para
pthread_create. É possível pular threads individuais usando a opção de linha de comando -s.
Para implementações OpenMP, os compiladores gcc e icc são explicitamente suportados. Outros também podem
<span class="word" data-word="work." style="--word-index: 2; translate: none; rotate: none; scale: none; transform: translate(0px, 0px); opacity: 1;">work.</span> Likwid-pin define a variável de ambiente OMP_NUM_THREADS para você, se ainda não
presente. Ele definirá tantos threads quanto presentes na expressão do pino. Esteja ciente que
com pthreads, o thread pai é sempre fixado. Se você criar, por exemplo, 4 tópicos com
pthread_create e não use o processo pai como trabalhador que você ainda tem que fornecer
num_threads + 1 ids de processador.
Likwid-pin suporta diferentes numerações para fixação. Por numeração física padrão de
os núcleos são usados. Esta é a numeração também topologia de Likwid(1) relatórios. Mas também
numeração lógica dentro do nó ou nos soquetes pode ser usada. Se usar com um N (por exemplo, -c
N: 0-6) os núcleos são numerados de forma lógica em todo o nó. Os núcleos físicos vêm primeiro. Se
um sistema, por exemplo, tem 8 núcleos com 16 threads SMT com -c N: 0-7 você obtém todos os núcleos físicos.
Se você especificar -c N: 0-15, obterá todos os núcleos físicos e todos os encadeamentos SMT. Com S você pode
especificar numerações lógicas dentro dos soquetes, novamente os núcleos físicos vêm em primeiro lugar. Você pode misturar
domínios diferentes separados por @. Por exemplo, -c S0: 0-3 @ S2: 2-3 você fixa a rosca 0-3 ao lógico
núcleos 0-3 no soquete 0 e threads 4-5 nos núcleos lógicos 2-3 no soquete 2.
Para aplicações onde a política de primeiro toque em sistemas numa não pode ser empregada Likwid-pin
pode ser usado para ativar a colocação de memória intercalada. Isso pode acelerar significativamente o
desempenho de códigos multithread ligados à memória. Todos os nós de numa aos quais o usuário fixou os threads
são usados para intercalação.
OPÇÕES
-v imprime informações de versão na saída padrão e sai.
-h imprime uma mensagem de ajuda na saída padrão e sai.
-c OR OR <dispersão política>
especifique uma lista numérica de processadores. A lista pode conter vários itens,
separados por vírgula e intervalos. Por exemplo 0,3,9-11. Você também pode usar
numerações, seja dentro de um nó (N), um soquete (S ) ou um domínio numa (M )
likwid-pin também suporta fixação lógica dentro de um cpuset com um prefixo L. Se você
omita esta opção likwid-pin fixará os threads nos processadores no nó
com núcleos físicos primeiro. Veja abaixo os detalhes sobre como usar uma expressão de thread ou
política de dispersão
-s
Especifique a máscara de pular como número HEX. Para cada bit definido, o segmento correspondente é
pulado.
-S Todos os domínios de memória ccNUMA pertencentes à lista de discussão especificada serão limpos
antes da corrida. Pode resolver problemas de cache de buffer de arquivo no Linux.
-p imprime os domínios de thread disponíveis para fixação lógica. Se usado em combinação
com -c, os IDs do processador físico são impressos no stdout.
-i definir a política de memória de numa para intercalar abrangendo todos os nós de numa envolvidos na fixação
-q execução silenciosa sem saída
-d
definir delimitador usado para gerar a lista de processadores físicos (-p e -c)
EXEMPLO
1. Para aplicação pthread padrão:
Likwid-pin -c 0,2,4-6 ./meuAplicativo
O processo pai é fixado ao processador 0. Thread 0 para o processador 2, thread 1 para
processador 4, thread 2 para o processador 5 e thread 3 para o processador 6. Se houver mais threads
criado do que o especificado na lista de processadores, esses threads são fixados no processador 0 como
cair pra trás.
2. Para gcc OpenMP, tantos ids devem ser especificados na lista de processadores quanto houver threads:
OMP_NUM_THREADS = 4; Likwid-pin -c 0,2,1,3 ./meuAplicativo
3. O controle total sobre a fixação pode ser obtido especificando uma máscara de pular. Por exemplo
o seguinte comando ignora a fixação do encadeamento 1:
OMP_NUM_THREADS = 4; Likwid-pin -s 0x1 -c 0,2,1,3 ./meuAplicativo
4. O switch -c suporta a definição de threads em um domínio de afinidade específico como
Nó NUMA ou grupo de cache. Os domínios de afinidade disponíveis podem ser recuperados com o -p
switch e nenhuma outra opção na linha de comando. Os domínios de afinidade comuns são N
(Nó completo), SX (soquete X), CX (grupo de cache X) e MX (grupo de memória X). Múltiplo
os domínios de afinidade podem ser definidos separados por @. A fim de prender 2 fios em cada soquete
de um sistema de 2 soquetes:
OMP_NUM_THREADS = 4; Likwid-pin -c S0:0-1@S1:0-1 ./meuAplicativo
5. Outra definição de argumento da opção -c permite que os threads sejam fixados de acordo
a uma expressão como E: N: 4: 1: 2. A sintaxe é E: :
tópicos> (: : ) O exemplo fixa 8 fios com 2 fios SMT por
núcleo em uma máquina SMT 4:
OMP_NUM_THREADS = 4; Likwid-pin -c E: N: 8: 2: 4 ./meuAplicativo
6. A última alternativa para a opção -c é a dispersão automática de threads em
domínios de afinidade. Por exemplo, para espalhar os threads em todos os domínios de memória em um
sistema:
OMP_NUM_THREADS = 4; Likwid-pin -c M: espalhar ./meuAplicativo
Use likwid-pin online usando serviços onworks.net