我想分析我的并行代码(mpi 和 omp)
我发现 Callgrind 非常易于使用和分析(使用 Kcachegrind)串行代码,因为它可以为您提供在不同功能上花费的相对时间。
运行并行代码时它会给我什么?它会只监视主进程还是会汇总所有进程?
它可以检测死锁或一个进程正在等待另一个进程的位置吗?
在分析并行代码时是否有更好的工具可以使用?
我想分析我的并行代码(mpi 和 omp)
我发现 Callgrind 非常易于使用和分析(使用 Kcachegrind)串行代码,因为它可以为您提供在不同功能上花费的相对时间。
运行并行代码时它会给我什么?它会只监视主进程还是会汇总所有进程?
它可以检测死锁或一个进程正在等待另一个进程的位置吗?
在分析并行代码时是否有更好的工具可以使用?
根据“ Valgrind 用户手册”,Valgrind 串行运行所有线程,详见Support for Threads。Callgrind 可以监控对功能的整体访问,但它的配置文件将不足。
关于 mpirun,有一个完整的部分描述了使用 MPI 的 Valgrind Memcheck 性能:4.9。使用 Valgrind 调试 MPI 并行程序,我不知道它对 Callgrind 的确切影响,但我觉得这种分析应该保持串行