physcpubind 的选项 numactl的
应该是一个接口了sched_setaffinity过程的系统调用,其中修改cpuset(设置允许CPU的)在过程的起始时刻。每个线程都有自己的cpuset,但是所有线程将从父进程继承其cpuset值。
因此,允许线程在cpuset的任何CPU上运行,允许在cpuset的任何cpu之间迁移。
任何线程都可以调用sched_setaffinity或pthread_setaffinity_np
(针对单线程的linux特定于亲和力更改的变体)来缩小甚至扩展其cpuset。
如果要将线程绑定到CPU,请直接在每个线程中使用sched_setaffinity或pthread_setaffinity_np,或者在通过OMP库进行OpenMP设置关联的情况下:OpenMP和CPU关联,例如,使用命令(OpenMP
3.1+)
export OMP_PROC_BIND=true
我猜想OMP库将在omp库初始化时从进程的cpuset中以循环方式选择CPU。
对于旧版本的libgomp-GCC使用的OMP支持库-您可以使用以下命令传递允许的CPU集:
export GOMP_CPU_AFFINITY=0-1,4-5,8-9
PS:要检查您的线程位置,您可以
top使用
f
j键启动并启用“ Last CPU used”字段,然后使用来打开线程显示
H。



