gcc、icc 或 Microsoft 的 C/C++ 是否有效?编译器支持或了解 NUMA 吗?

发布于 2024-08-19 03:03:05 字数 671 浏览 10 评论 0原文

如果我有一个具有 缓存一致性 非统一内存访问 (NUMA),即单独的"northbridges" 每个处理器都有单独的 RAM,是否有编译器知道如何自动将数据分布在不同的内存系统上,以便大多数在本地线程上工作的进程从与运行线程的处理器关联的 RAM 中检索数据?

我有一个设置,其中 1 GB 连接到处理器 0,1 GB 连接到处理器 1,等等。最多 4 个处理器。在一致内存空间中,第一个处理器上 RAM 的物理内存地址为 0 到 1GB- 1.对于第二个处理器,它是 1GB 到 2GB-1,依此类推。

是否有任何编译器(或者具体来说是 malloc)将特定内核上的进程分配的新内存关联到与该内核关联的物理 RAM?

If I have a multi-processor board that has cache-coherent non-uniform memory access ( NUMA ), i.e. separate "northbridges" with separate RAM for each processor, does any compiler know how to automatically spread the data across the different memory systems such that processes working on local threads are mostly retrieving their data from the RAM associated with the processor the thread is running on?

I have a setup where 1 GB is attached to processor 0, 1 GB is attached to processor 1, et c. up to 4 processors. In the coherent memory space the physical memory for the RAM on the 1st processor is addresses 0 to 1GB-1. For the second processor it is 1GB to 2GB-1, and so on.

Will any compilers, or perhaps malloc specifically, associate new memory alloc'd by a process on a specific core to the physical RAM associated with that core?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

遮云壑 2024-08-26 03:03:05

Linux 内核了解 NUMA,并会尝试将本地内存中的进程页面提供给当前 CPU(来源:U. Drepper,“每个程序员都应该了解内存”。)

Linux kernel knows about NUMA and will try to give your process pages from memory local to the current CPU (source: U. Drepper, "What Every Programmer Should Know About Memory".)

牛↙奶布丁 2024-08-26 03:03:05

NUMA 感知内存分配不是在编译时完成的。做出这样的假设不利于可移植性。

在 Linux 上,这是一个内核函数,尽管您可以在运行时使用 numactlset_mempolicy 或使用 libnuma 来控制它。

NUMA-aware memory allocation is not done at compile time. Making assumptions like this would be bad for portability.

On Linux, this is a kernel function, though you can control this at runtime with numactl or set_mempolicy or with libnuma.

怀中猫帐中妖 2024-08-26 03:03:05

对于 MS 平台,编译器不知道 NUMA。但是,系统具有 NUMA 感知能力,并且会尝试在同一节点中分配内存。

有关如何操作的更多详细信息,请参阅 http://code.msdn.microsoft.com/64plusLP最新版本的 Windows 处理 NUMA。

For MS platforms, the compiler is not aware of NUMA. However, the system is NUMA aware and will attempt to allocate memory in the same node.

See http://code.msdn.microsoft.com/64plusLP for some more details on how recent versions of Windows handle NUMA.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文