c-openMP以及如何检查缓存行为的并行性



我正在使用openmp来并行化代码中的循环,以便优化它

我听说openmp还显示了一些好的或坏的缓存行为
我如何看待这些缓存交互来为我的openmpomppragma循环程序安排良好的缓存行为?

OpenMP本身不能用于获取有关程序缓存使用情况的信息。根据您的平台,有一些工具可以深入了解缓存行为。

在Linux系统上,您可以使用perf.

perf stat -e cache-references,cache-misses <your-exe>

输出有关缓存未命中的统计信息。还有更多的事件可以使用(请参阅此处了解更多详细信息)。如果只运行,则会收集常见事件

perf stat <your-exe>

另一个也可用于Windows的工具是"英特尔®;性能计数器监视器"。尽管它只适用于英特尔CPU,但它可以收集额外的信息,如占用的内存带宽(在支持的型号上)。

然而,这些工具可以帮助你测量程序的缓存使用情况,但并没有改善它。你必须手动优化代码,并重新检查缓存未命中是否已经减少。

如果您正在寻找特定的内核,您可能需要考虑[PAPI].1

最新更新