串行程序优化和并行程序优化思路
雷洪教授的《多核并行高性能计算OpenMP》一书中给出了程序优化的思路:
对串行程序进行并行优化建议遵循如下步骤:
(1)分析串行代码中可并行化部分,尤其是密切关注程序的热点代码(热点循环、
热点函数和热点子程序),这是并行优化中最重要的一个步骤。围绕程序的热点代码进行
并行化是减小编程工作量、实现高效并行的捷径。
(2)将现有的并行构造和TASK结构添加到热点代码中,实现串行程序的并行化。
(3)调试并排除数据竞争、伪共享、死锁等并行错误,实现并行程序的正确运行。
(4)对并行程序进行调优,减少并行带来的线程开销、同步开销等并行开销,实现负
载均衡,达到期望的并行效率。
(5)小心地做适可而止的并行化工作。程序的并行优化没有止境,如果目前的并行化
已经能够满足需要就可以停下来做其他的工作。但是,在代码的并行化过程中,一定要非
常小心,因为一些无心的错误可能会极大地拖延并行优化调试时间。