我有一个通用矩阵的实现,我创建了一个选项来使用“*”和“+”运算符进行并行处理和串行处理。
并行计算示例:假设我们有 m1 和 m2 矩阵,并且 m3 = m1 * m2。我们用不同的线程计算 m3 行 i'。加:
串行计算只计算 m3[0,0]、m3[0,1].. 等
比我在大矩阵和小矩阵上测量每个操作的时间,我注意到在小矩阵上串行处理比并行处理快,但另一方面并行处理在大矩阵上具有更好的性能。
The results:
+----------------------------+--------------------------------+------------+
| Big | Small | |
+----------------------------+--------------------------------+------------+
| * | + | * | + | |
+-------------+--------------+---------------+----------------+------------+
| 0.697798sec | 0.0407585sec | 8.7408e-05sec | 0.000109052sec | Parallel |
+-------------+--------------+---------------+----------------+------------+
| 11.9984sec | 0.0235058sec | 6.68e-07sec | 7.76e-07sec | Serial |
+-------------+--------------+---------------+----------------+------------+
有人可以解释为什么吗?
非常感谢!