编写并行程序时可能会遇到一个问题:并行的运行时间比串行运行时间还要长。
第一,考虑是不是数据量不够导致的
因为并行程序涉及数据的分配与合并等操作,数据量足够大才可以准确测试并行效率;
第二,是否并行程序编写有问题,可能算法本身的并行性有问题,如互斥量的干扰等
如果算法的并行性良好,则不会产生这么大的误差,导致并行时间长于串行;
第三,是否OpenMP的编译制导语句写错
如没有;
第四,如果是用OpenMP,则考虑VS的OpenMP支持是否打开
在项目属性中的 C/C++ -> 语言 -> OpenMP支持;
第五,某些干扰代码耗时过长,导致盖过并行部分的耗时
如果测试的代码段存在一些耗时很长的串行部分,则可能导致并行时间过短,被忽略。