我目前正在编写一个代码,该代码每次迭代都解决一个大的三对角矩阵并运行 1,000 次迭代。我目前正在使用 Thomas 算法来串行求解矩阵。我在名为“C++ 和 MPI 中的并行科学计算”一书中找到了 Thomas 算法的并行版本(如果你用谷歌搜索它,你可以很容易地找到一个版本)。
问题是当我运行直接从书中获取的并行 Thomas 时,它的运行时间实际上比串行算法慢。这对我来说似乎令人困惑,因为创建并行算法的全部目的是加快它的速度。我通过逐字运行书中的串行和并行算法并将相同的三对角线发送到每个函数中来测试两者。我在学校集群上运行 MPI 来运行这些并提交并行运行的作业,以确保我为每个节点使用相同的处理器类型。难道仅仅是集群布局的通信时间导致了这种情况吗?我觉得我一定做错了什么,所以任何帮助将不胜感激。如果发布每种算法都有用,请告诉我。