hwloc_obj_t obj = hwloc_get_obj_by_depth(topology, depth_CORE,MyRank%4);
hwloc_cpuset_t cpuset = hwloc_bitmap_dup(obj->cpuset);
hwloc_set_cpubind(topology, cpuset, 0)
스레드가 이미 "cpuset"에 바인드되어 있는지 hwloc에 알 수 있습니다. 이유를 알아야 할 이유 : 쿼드 코어가 있다고 가정합니다. 하지만 런타임에 8 개의 프로세서를 발행하면됩니다. 따라서 두 프로세스를 각 코어에 바인딩합니다. 그러나 프로세스가 코어가 될 때만 코어에 바인드하려고합니다. 어쨌든 핵심이 이미 프로세스에 묶여 있음을 알 수있었습니다.코어가 이미 바인드되어 있는지 확인하는 방법
감사! getpid()를 사용하여 pid를 얻을 수 있습니다. 하지만 hwloc_get_proc_cpubind (토폴로지, ppid [i], set [i], 0)를 사용하면 세그먼테이션 오류가 발생합니다. 여기서 내가 뭘 잘못하고 있니? – Biparite
'hwloc_bitmap_alloc()'을 사용하여'set [i]'를 초기화합니까? –
아니요 "hwloc_cpuset_t set [Numprocs]"사용 안함? – Biparite