multithreading - 并行乘以小矩阵

标签 multithreading algorithm matrix pthreads posix

我一直在编写代码来使用 POSIX 线程并行地乘以矩阵,并且在对大型矩阵进行运算时我看到了很大的加速;然而,随着我缩小矩阵的大小,朴素的顺序 O(n^3) 矩阵乘法算法开始超越并行实现的性能。

这是正常现象还是表示算法质量不佳?是否只是我注意到创建和处理线程的额外开销,以及超过某个点时额外的时间在计算中占主导地位?

请注意,这是家庭作业,所以我不会发布我的代码,因为我不想违反我大学的学术诚信政策。

最佳答案

不看代码(或算法的详细描述,至少)是不可能给出准确答案的,但一般来说,简单的算法由于较小的常数因子而在小输入上表现更好是正常的.此外,线程创建/上下文切换不是免费的,因此创建线程可能需要更长的时间才能执行一些简单的计算。因此,如果您的算法在大输入时的运行速度比原始算法快得多,那么就没有理由担心它。

关于multithreading - 并行乘以小矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26149134/

相关文章:

c++ - 对于代码中指定范围之外的值,对角差分算法的输入不正确

c - 我是否需要在编译时添加一个 _REENTRANT 宏以使我的 errno 线程安全?

c++ - PPL - 如何配置 native 线程数?

c++ - 作为 C++ 类的 Python 解释器

multithreading - 使用Caliburn.Micro.ReactiveUI 1.2.2时,错误的线程访问UI对象

c++ - 确定无序 vector<T> 是否具有所有唯一元素

algorithm - 时间复杂度分析不一致

algorithm - 颜色生成函数

r - 将数据帧的一行转换为 R 中的简单向量

matlab - matlab中的对角矩阵