gpt4 book ai didi

c++ - 多线程概念题

转载 作者:太空狗 更新时间:2023-10-29 22:56:08 30 4
gpt4 key购买 nike

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

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

另一方面,拥有 10000x10000 矩阵是否有利于使用线程?我假设是这样,局部性开始发挥作用,但我仍在思考多线程是否更有效。

谢谢!

最佳答案

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


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


还有,我不明白你的意思

there's a thread for every multiplication

您想为 2 个标量的每次乘法创建一个线程吗?这将为大型矩阵创建不计其数的线程,这会非常慢。

关于c++ - 多线程概念题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49041956/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com