我有用于在矩阵列中查找最大值的顺序代码。因为这个矩阵甚至可以是5000 x 5000,我想在MPI中加速它。我现在不知道如何实现这一点,但我查找了函数MPI_Scatter,用于从列(可能是块映射)和MPI_Gather分配项目,以获取所有进程的最大值(在我的情况下,最多3个进程),然后比较它们。 ..您认为这可以在较短的计算时间内获得一些好处吗?如果是这样,有人可以给我一个开始吗?
答案 0 :(得分:3)
你想要做的就是找出矩阵中的最大条目(或矩阵的一部分内)吗?
如果是这样,对您来说最简单的方法可能是将矩阵拆分为不同的进程,在每个进程分配的部分中搜索最大值,然后使用MPI_Allreduce
进行比较,它可以发送在每个进程中对所有进程具有不同值的变量的最大值。
无论您是处理整个矩阵还是只处理一列,这种技术当然都可以应用。你只需要考虑将区域划分为不同过程的好方法
当然,这只会从某个矩阵大小向上加速计算。我假设如果您正在处理10 x 10矩阵并希望将其拆分为3个进程,则MPI的开销大于并行化的增益。 :)