我正在用GCC OpenMP编写一个程序。现在我想检查我的OpenMP程序是否具有良好的平衡负载。有没有一些方法可以做到这一点?
BTW,测量负载平衡的好方法是什么? (我不想使用英特尔VTune工具。)我不确定这是否适合我的问题,所有回复都表示赞赏。我提出的问题更加详细。
我正在使用GCC编译器编写OpenMP程序。我想知道有关GCC-OpenMP开销的详细信息。我的担忧如下。 1)优化我的OpenMP计划的好方法是什么?有许多方面会影响性能,例如负载平衡,位置,调度开销,同步等。我应该以哪种顺序检查这些方面。
2)我想知道如何在GCC-OpenMP下获得我的应用程序的负载平衡。如何检测我的应用程序和OpenMP运行时以提取负载平衡功能?
3)我猜OpenMP将花一些时间进行调度。我应该使用哪些运行时API来获取调度开销的值?
4)我可以测量OpenMP程序在同步,关键,锁定和原子操作上花费的时间吗?
答案 0 :(得分:1)
OmpP是OpenMP应用程序的分析器。分析器报告在关键部分花费的执行百分比,并测量不同OpenMP结构隐含障碍的不平衡
衡量负载不平衡的另一种方法是使用likwid-perfctr工具。该工具报告每个核心中执行的指令数。对于每个线程具有相同工作量的应用程序,在不同核心中执行的指令数量的差异是负载不平衡的指示。