如果我的多处理器板有 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/