多线程概念问题

问题描述 投票:3回答:1

我只需编写一个程序,我必须使用线程进行矩阵乘法,其中每个乘法都有一个线程。

现在我想知道一些事情,使用线程来增加3x2矩阵和2x3矩阵真的有什么好处吗?对于小的,顺序代码仍然有效?如果我错了,那么小的东西有什么优点或缺点吗?我只是觉得复杂功能对于这么小的东西来说太棒了。

另一方面,拥有10000x10000矩阵会有使用线程的好处吗?我会这么认为,地方开始发挥作用,但是当多线程效率更高或者没有效率时,我仍然在不知所措。

谢谢!

c++ multithreading pthreads
1个回答
1
投票

通常,您永远不希望通过多个线程更新来自相同缓存行的值,这会破坏性能。您还希望在线程中使用SIMD单元。两者通常是由于块中的某种处理数据而实现的(查找寄存器阻塞/缓存阻塞术语)。另外,理想情况下,您希望创建与硬件并发性一样多的线程(以防止昂贵的上下文切换)。对于数据并行(例如矩阵乘法),这更容易。对于任务并行性,通常使用线程池。


对于像3x2这样的小矩阵,多线程肯定比顺序处理慢很多。对于较大的矩阵,您需要进行测量以找出多线程速度更快的阈值。该阈值取决于太多参数以提供通用答案。


另外,我不明白你是什么意思

每个乘法都有一个线程

你想为2个标量的每个乘法创建一个单独的线程吗?这将为大型矩阵创建数十亿个线程,这将非常缓慢。

© www.soinside.com 2019 - 2024. All rights reserved.