Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用GetNumaProximityNode(Win7+;)?_C++_Optimization_Memory_Cpu_Numa - Fatal编程技术网

C++ 如何使用GetNumaProximityNode(Win7+;)?

C++ 如何使用GetNumaProximityNode(Win7+;)?,c++,optimization,memory,cpu,numa,C++,Optimization,Memory,Cpu,Numa,从Win7/Server2008R2开始,可以使用GetNumaProximityNode(Ex)函数。它应该有助于检索NUMA节点之间的距离,但我无法从文档()中理解它应该如何工作。它说你给它一个距离,然后它返回相应的节点(如果有) 在阅读Linux内核的一些代码和一些HP APIC文档时,我看到距离是10的整数倍(到self的距离是10),但它也可以是18(不是慢两倍)。但我仍然不知道如何使用Windows API计算两个节点之间的距离(在Linux下,libnuma有一个“distance

从Win7/Server2008R2开始,可以使用GetNumaProximityNode(Ex)函数。它应该有助于检索NUMA节点之间的距离,但我无法从文档()中理解它应该如何工作。它说你给它一个距离,然后它返回相应的节点(如果有)

在阅读Linux内核的一些代码和一些HP APIC文档时,我看到距离是10的整数倍(到self的距离是10),但它也可以是18(不是慢两倍)。但我仍然不知道如何使用Windows API计算两个节点之间的距离(在Linux下,libnuma有一个“distance”函数来实现这一点)


有人知道如何使用这个功能吗?

我找到了一个Windows解决方案(尽管还没有测试)。距离可以在SLIT-系统位置信息表中找到,该表是OEM提供的扩展,可通过ACPI获得。它包含描述距离的N_CPU x N_CPU矩阵([1][3]是节点1和3之间的距离;[Y][Y]始终为10;低于10无效)

Windows Vista+具有可用于检索此表的方法GetSystemFirmwareTable(在XP下,似乎可以从注册表检索此表,但更难)。
此表的结构可以在ACPICA包()中找到