我使用openmp在我的代码中并行化循环以优化它
我听说openmp还显示了缓存行为的好坏 我如何看待这些缓存交互为我的openmp omp pragma循环程序安排好的缓存行为?
答案 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