为了计算并行模式下2个矩阵A和B(nxm维度)之间的乘积,我有以下限制:服务器向每个客户端发送来自矩阵A的若干行,来自矩阵B的行。这不能改变。此外,客户可以在彼此之间交换信息,以便计算矩阵产品,但是他们不能要求服务器发送任何其他数据。并行矩阵产品
这应做最有效的可能,通过最小化进程之间发送的消息的数量意思 - 视为一个昂贵的操作 - 并且通过这样做小的计算并行地,尽可能多地。
据我的研究,客户之间交换的实际消息的次数最多为n^2,在情况下,每个进程广播其线路连接到所有其他人。现在,问题是,如果我最小化发送的消息数 - 这将围绕分发输入数据的log(n) - 但计算只能由一个进程完成,或者更多,但无论如何,它不是再一次平行完成,这是问题的主要思想。
什么可能是一个更有效的算法,可以计算这个产品?
(我正在使用MPI,如果它有任何区别)。
每个客户是否知道哪些其他客户收到哪些行,或者他们是否也必须要求弄清楚? – 2010-12-08 22:02:10
是的,每个客户都可以通过计算自己找到它。 – Clara 2010-12-08 22:04:54