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

时间:2015-03-17 01:20:34

标签: c caching parallel-processing openmp

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

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

perf stat <your-exe>

另一个也可用于Windows的工具是Intel® Performance Counter Monitor。虽然它只适用于Intel CPU,但它可以收集额外的信息,如占用的内存带宽(在支持的型号上)。

但是,这些工具可以帮助您测量程序的缓存使用情况,但没有改进它。您必须手动优化代码并重新检查缓存未命中率是否已降低。

答案 1 :(得分:0)

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