numactl --physcpubind
Eu estava usando o numactl, com a opção --physcpubind. manual diz:
--physcpubind=cpus, -C cpus
Only execute process on cpus. Etc...
Digamos que eu tenha o sistema NUMA com 3 nós NUMA, onde cada um deles tem 4 núcleos. O nó NUMA 0 tem 0, 1, 2, 3 como números principais. NUMA nó 1 tem 4,5,6,7, e NUMA nó 2 tem 8,9,10,11. Minha pergunta é, digamos, eu corro o programa da seguinte maneira:
export OMP_NUM_THREADS=6
numactl --physcpubind=0,1,4,5,8,9 ./program
Ou seja, eu vou estar executando meu programa com 6 threads e estou solicitando que eles estejam nos núcleos da CPU 0,1,4,5,8,9. Por exemplo, se em algum ponto durante os encadeamentos do programa 0-5 forem atribuídos núcleos de CPU 0,1,4,5,8,9 (setup1). É possível que, em algum outro ponto durante a execução do programa, o encadeamento 0 possa estar sendo executado no núcleo da CPU 9, por exemplo, e assim por diante? Ou seja haverá migração de threads entre os núcleos da CPU? Ou os threads unicamente se ligam aos núcleos da CPU (como em setup1)? Obrigado.