2009 英特尔® 线程挑战赛 第七题 矩阵乘法(第二阶段开始了)
使用 Strassen 算法进行矩阵乘法运算
问题:编写一段多线程代码,使用 Strassen 算法将两个随机矩阵相乘。应用程序将生成两个矩阵:A(M,P) 和 B(P,N),您需要使用 (1) 串行算法和 (2) Strassen 算法将它们相乘,得到乘积 C(M,N)。然后比较这两种算法的计算结果,确保使用 Strassen 算法得到的结果与使用串行算法得到的结果一致。
通过命令行输入应用程序参数值。输入的值将是 3 个整数(M、N 和 P),用来描述要使用的矩阵的大小。
代码限制:我们会预先提供一个用 C 语言编写的非常简单的串行计算应用程序。您应该在此源文件的基础上添加多线程代码,保留原来 main 函数、矩阵生成函数、串行乘法代码以及矩阵乘积结果比较函数的主体部分。如果要用其他语言实现,可以对这些代码做相应的更改。另外还可以更改内存分配和其他代码,以便实现 Strassen 计算的线程化。(建议您在编写代码时记下所做的更改以及进行这些更改的理由。)完成更改后,您提交的解决方案必须使用某种形式的 Strassen 算法计算出第二个矩阵乘积。
计时:将使用总执行时间进行计分。