我正在 NUMA 计算机上进行并行编程(我还没有计算机,它计划很快到货™)。
我在每个 NUMA 节点上都有一个工作线程池(带有处理器关联集)和一个平衡器,可以在池/节点之间均匀分布工作。这是为了确保所有内存分配都在本地内存上。这一切都很好,花花公子。
在启动期间,池工作线程是从主线程创建的,它们必须先进行一些初始设置,然后才能设置自己的关联性(第三方库要求,我对此无能为力)。
我担心由于工作线程的堆栈帧被分配在错误的节点上,会导致隐藏的性能损失,从而导致外部内存访问。
这是一个真正的问题吗?不知怎的,我相信它已经解决了......
无论如何,我正在寻找一种确保每个线程的堆栈在正确的 NUMA 节点上分配的方法。
我敬业的谷歌男孩想出了这个:在特定的 NUMA 内存上分配线程堆栈,这是我想做的,但它是 pthreads,我需要一个 Windows 解决方案。