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

标签 linux gcc g++ icc numa

如果我的多处理器板有 cache-coherent non-uniform memory access ( NUMA ) ,即分开 "northbridges"每个处理器都有单独的 RAM,是否有任何编译器知道如何在不同的内存系统中自动传播数据,以便在本地线程上工作的进程主要从与线程正在运行的处理器关联的 RAM 中检索数据?

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

是否会有任何编译器,或者特别是 malloc,将进程在特定核心上分配的新内存关联到与该核心关联的物理 RAM?

最佳答案

Linux 内核了解 NUMA 并将尝试将您的进程页面从本地内存提供给当前 CPU(来源:U. Drepper, "What Every Programmer Should Know About Memory"。)

关于linux - gcc、icc 或 Microsoft 的 C/C++ 编译器是否支持或了解 NUMA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2142107/

相关文章:

c - libc(glibc) 在我们的 linux 应用程序中的作用是什么?

c++ - undefined reference ,但链接并包含

c++ - 使用 c++14 构建时可用的打包折叠表达式(c++17 扩展)

c++ - g++和gcc有什么区别?

c++ - 在 c++/g++ 中提取 html 文件的外部链接

c - arm-linux-gnu-gcc fatal error : stdio. h: 没有那个文件或目录

python - 从 uwsgi 调用子进程 sudo

gcc - 如何使用 GCC 编译器编译 C++ 代码?

linux - 提取压缩的 tar 文件时是否需要指定压缩级别?

c - 在 ubuntu 11.04 上使用 gcc 4.5.2 声明函数指针时出错