我一直在编写代码来使用 POSIX 线程并行地乘以矩阵,并且在对大型矩阵进行运算时我看到了很大的加速;然而,随着我缩小矩阵的大小,朴素的顺序 O(n^3) 矩阵乘法算法开始超越并行实现的性能。
这是正常现象还是表示算法质量不佳?是否只是我注意到创建和处理线程的额外开销,以及超过某个点时额外的时间在计算中占主导地位?
请注意,这是家庭作业,所以我不会发布我的代码,因为我不想违反我大学的学术诚信政策。
最佳答案
不看代码(或算法的详细描述,至少)是不可能给出准确答案的,但一般来说,简单的算法由于较小的常数因子而在小输入上表现更好是正常的.此外,线程创建/上下文切换不是免费的,因此创建线程可能需要更长的时间才能执行一些简单的计算。因此,如果您的算法在大输入时的运行速度比原始算法快得多,那么就没有理由担心它。
关于multithreading - 并行乘以小矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26149134/