并行程序耗时过大问题

编写并行程序时可能会遇到一个问题:并行的运行时间比串行运行时间还要长。

第一,考虑是不是数据量不够导致的

因为并行程序涉及数据的分配与合并等操作,数据量足够大才可以准确测试并行效率;

第二,是否并行程序编写有问题,可能算法本身的并行性有问题,如互斥量的干扰等

如果算法的并行性良好,则不会产生这么大的误差,导致并行时间长于串行;

第三,是否OpenMP的编译制导语句写错

如没有;

第四,如果是用OpenMP,则考虑VS的OpenMP支持是否打开

在项目属性中的 C/C++ -> 语言 -> OpenMP支持;

第五,某些干扰代码耗时过长,导致盖过并行部分的耗时

如果测试的代码段存在一些耗时很长的串行部分,则可能导致并行时间过短,被忽略。

猜你喜欢

转载自www.cnblogs.com/esCharacter/p/9239414.html