在Windows上,我如何才能:
- 查询系统有多少NUMA节点
- 设置std::线程与特定NUMA节点的CPU核心的相关性
获取最高节点的索引:
auto highestnode = 0UL;
GetNumaHighestNodeNumber(&highestnode);
要获得一个节点上所有逻辑核的亲和性,最多可获得64个逻辑核:
auto mask = 0ULL;
GetNumaNodeProcessorMask(nodeindex, &mask);
设置线程相关性:
SetThreadAffinityMask(GetCurrentThread(), mask);
或者,对于总数超过64个的逻辑核心:
auto node = static_cast<PGROUP_AFFINITY>(malloc(sizeof(PGROUP_AFFINITY)));;
GetNumaNodeProcessorMaskEx(nodeindex, node);
在节点的掩码是nodes的情况下->面具
具有超过64个逻辑核的大型节点将被划分为由节点指定的组->组