我相信我正在使用 OpenMP 进行错误共享。有什么方法可以识别并修复它吗?
我的代码是:https ://github.com/wchan/libNN/blob/master/ResilientBackpropagation.hpp第 36 行。
与单线程 1 核版本相比,使用 4 核 CPU 仅产生 10% 的额外性能。当使用 NUMA 32 个物理(64 个虚拟)CPU 系统时,CPU 利用率卡在 1.5 个内核左右,我认为这是错误共享和无法扩展的直接症状。
我还尝试使用英特尔 VTune 分析器运行它,它表明大部分时间都花在了“f()”和“+=”函数上。我相信这是合理的,并不能真正解释为什么我的缩放比例如此之差......
有什么想法/建议吗?
谢谢。