我一直在编写使用POSIX线程并行乘法矩阵的代码,并且在大型矩阵上运行时我看到了很大的加速;然而,随着我缩小矩阵的大小,天真的顺序O(n ^ 3)矩阵乘法算法开始超越并行实现的性能。
这是正常还是表示质量差的算法?难道只是我注意到创建和处理线程的额外开销以及超过某一点的额外时间在计算中占主导地位吗?
请注意,这是为了完成家庭作业,所以我不会发布我的代码,因为我不想违反我的大学的学术诚信政策。
答案 0 :(得分:1)
在没有看到代码(或至少是算法的详细描述)的情况下无法给出确切的答案,但一般情况下,由于常数因子较小,简单算法在小输入上表现更好是正常的。此外,线程创建/上下文切换不是免费的,因此创建线程然后执行一些简单的计算可能需要更长的时间。因此,如果您的算法在大输入上比天真的算法运行得快得多,那么就没有理由担心它。