爲了計算並行模式下2個矩陣A和B(nxm維度)之間的乘積,我有以下限制:服務器向每個客戶端發送來自矩陣A的若干行,來自矩陣B的行。這不能改變。此外,客戶可以在彼此之間交換信息,以便計算矩陣產品,但是他們不能要求服務器發送任何其他數據。並行矩陣產品
這應做最有效的可能,通過最小化進程之間發送的消息的數量意思 - 視爲一個昂貴的操作 - 並且通過這樣做小的計算並行地,儘可能多地。
據我的研究,客戶之間交換的實際消息的次數最多爲n^2,在情況下,每個進程廣播其線路連接到所有其他人。現在,問題是,如果我最小化發送的消息數 - 這將圍繞分發輸入數據的log(n) - 但計算只能由一個進程完成,或者更多,但無論如何,它不是再一次平行完成,這是問題的主要思想。
什麼可能是一個更有效的算法,可以計算這個產品?
(我正在使用MPI,如果它有任何區別)。
每個客戶是否知道哪些其他客戶收到哪些行,或者他們是否也必須要求弄清楚? – 2010-12-08 22:02:10
是的,每個客戶都可以通過計算自己找到它。 – Clara 2010-12-08 22:04:54