如何在Windows上设置c++11线程与NUMA节点的相关性



在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个逻辑核的大型节点将被划分为由节点指定的组->组

最新更新