分布变量的校验和

计算科学 并行计算 正则 mpi
2021-12-04 02:51:02

假设我有 N 台计算机和 2 个 N×N 矩阵分布在它们之间,称为 A 和 B。矩阵 A 是行分布的,而 B 是列分布的。因此,处理器我知道

A(i,1:N) and B(1:N,i)

您是否知道确定 A 和 B 是否相同且可以很好地扩展到许多处理器的有效方法?(某种不依赖于变量分散方式的分布式变量校验和函数)

背景是我正在使用基于 MPI 的 fortran 代码。

1个回答

如果它们的哈希值相同,您可以“非常确定”这两个矩阵是相同的。您需要做的是计算一个加法的哈希(可能包括模运算),以便可以有效地并行计算它。

例如,如果我可能暂时假设矩阵具有整数条目,那么(不是特别好的)散列函数

h(A)=(i,j(i2+j)Aij)modP
使用一些大整数 P 就是这样一个函数,因为模运算可以由每个处理器基于它们各自的矩阵部分并行完成。然后你只需要做一个全局减和模块P在末尾。