【问题标题】:How to allocate parts of an array on different nodes on NUMA machines?如何在 NUMA 机器上的不同节点上分配数组的一部分?
【发布时间】:2013-10-08 21:45:09
【问题描述】:

我有 2 个节点的 NUMA 机器。我想分别在两个节点上分配数组的两半。我该怎么做?

请注意,“一半”是指连续的虚拟内存块。我找到了numa_alloc_interleaved函数,但它不能满足我的要求。

【问题讨论】:

  • 具有迭代器和[] 操作符的 C++ 数据结构是否足以使其表现得像连续分配一样好?
  • 感谢您的建议。但是除了分配语句我不想改变程序。

标签: c++ c operating-system numa


【解决方案1】:

你有几个选择。

您可以有一段代码使用numa_alloc_onnode 在您要使用的每个节点上分配一个块,然后将该块的控制/所有权授予在该节点上运行的代码。

或者,您可以在每个节点上启动代码,然后让每个节点的代码使用 numa_alloc_local 在本地分配自己的内存。

【讨论】:

  • 您的回答建议我更改程序,以便我操作两个数组而不是一个数组,我试图避免这种情况。有没有办法控制交错粒度?说不是页面交错,而是 K-page interleaved,其中 K 是可控的。
  • @dalibocai:我不知道有这样的功能,没有。
猜你喜欢
  • 2016-11-24
  • 2020-01-29
  • 1970-01-01
  • 2018-10-05
  • 2017-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多