2011-04-13 79 views
0

我有用於查找矩陣列中最大值的順序代碼。因爲這個矩陣甚至可能是5000 x 5000,我正在考慮在MPI中加速它。我現在不知道如何實現這一點,但是我查找了函數MPI_Scatter來分配來自列的項目(可能是塊映射)和MPI_Gather,以便從所有進程(在我的情況下爲最多3個進程)中獲取最大值,然後進行比較。 ..你認爲這在計算時間較短的情況下會有一些好處嗎?如果是這樣,有人可以給我一個開球?MPI - 從矩陣列中計算最大值

回答

3

你想要做的就是找出矩陣(或矩陣的一部分)中的最大條目?

如果是這樣,最簡單的方法可能是將矩陣分成不同的進程,搜索每個進程分配的部分的最大值,然後使用MPI_Allreduce進行比較,它能夠發送最大值一個變量在每個進程中對所有進程都有不同的值。

無論您是在處理整個矩陣還是隻處理一列,這種技術當然都可以應用。你只需要考慮將區域分割成不同的過程的好方法

當然,這會加速你的計算,只能從一定的矩陣大小向上。我假設如果你正在處理一個10×10的矩陣並且想把它分成3個進程,MPI的開銷比並行化的開銷要大。 :)