2013-07-12 159 views
1

我想知道哪個並行處理庫在這些配置中,最好使用:並行處理庫

  1. 單個四核機。我想在每個核心上執行四種相同類型的函數。相同的功能需要不同的參數。
  2. 4臺機器的集羣,每臺機器都有多核。我想執行相同的功能,但並行(4臺機器*每臺機器沒有內核)。所以我希望它能夠擴展。

計劃的細節:

  1. C++程序。函數之間沒有依賴關係。使用不同的輸入集合執行相同的功能,並且完成> 100次
  2. 沒有共享內存,因爲每個函數都有自己的數據和自己的輸入。
  3. 每個功能都不需要等待其他人完成。沒有必要加入或分叉。

對於上述場景什麼是最好的並行庫可以使用? MPI,BOOST :: MPI,打開mp或其他庫。

我的首選項是BOOST :: MPI,但我想要一些建議。我不確定在並行多核心機器上是否允許使用MPI?

謝謝。

+0

對於第一個問題,我想象新的標準線程和異步調用應該足夠了。 – Whanhee

回答

2

你在這裏有什麼是一個尷尬的並行問題(http://en.wikipedia.org/wiki/Embarrassingly_parallel)。雖然MPI絕對可以用在多核機器上,但它可能會因爲手頭的問題而過度使用。如果你的任務是完全分離的,你可以將它們編譯成單獨的可執行文件或者一個帶有不同輸入的可執行文件,並使用「make -j [n]」(見http://www.gnu.org/software/make/manual/html_node/Parallel.html)並行執行它們。

如果MPI自然而然地適合您,請務必使用它。如果您想控制集羣內單獨計算機上的計算,OpenMP可能不會削減它。