2013-08-05 62 views
1

我正在研究各種並行編程模型,但我偶然發現了MPI。有幾件事我不確定。據我所知:需要對MPI進行一些說明

  1. MPI的主要功能是允許在集羣中並行運行相關進程之間的通信。它是否正確?
  2. 程序在主節點上運行,主節點又將特定任務傳遞給工作節點 - 並接收結果。不需要在每個工作節點上都有一份代碼副本。

此外,我發現的幾個更新的MPI框架似乎只支持一組受限制的語言。我正在用Java進行實驗,但是我發現的所有Java MPI庫都是過時的,或者似乎沒有C和Fortran的成熟度。這是爲什麼?我認爲消息傳遞對於編寫並行或分佈式程序的任何人來說都是一個非常有用的功能,那麼爲什麼MPI在它的利基之外更受歡迎呢?

+0

MPI更多地用於科學編程,它有一個使用歷史,並且科學界選擇的語言(很長一段時間)一直是/ C/Fortran。 – arynaq

+0

(1)是正確的; (2)不是。 –

+0

*那麼爲什麼MPI在它的利基之外更受歡迎呢?可能是因爲管理MPI發展和它的用戶社區的人並不關心它在其利基之外的受歡迎程度,而是他們關心它的效率和效率它的利基。 MPI並不是唯一的消息傳遞庫,Java程序員可以使用其他選項。 –

回答

3

MPI傳統上是一種SPMD模型,其中一個代碼在大量進程上運行(通常分佈在多個節點/處理器/內核等)。這些進程使用MPI(消息傳遞接口)中的調用明確地傳遞消息。然後,個別流程可以開始工作並在必要時再次進行交流。這不是任務語言,作業可以自動分發給工作節點。還有其他一些語言可以完成這種事情(Hadoop/MapReduce,Charm ++等可能更適合該模型)。

在由MPI論壇決定的MPI標準(http://www.mpi-forum.org/docs/docs.html)中,指定了特定的語言要求。到目前爲止,MPI實現只需要三種語言:C,C++和FORTRAN(實際上C++的要求已被刪除)。原因是這些是使用MPI的科學應用程序最常用的語言。這並不妨礙已有的其他語言綁定,但支持每種語言對實現來說是一個很大的負擔,並不總是可行的。有很多其他語言綁定可用:

我敢肯定,有超過這裏有一些更奇特的語言。只需搜索MPI,您就一定能找到信息。 MPI實際上非常受歡迎,即使在科學界之外。曾有人嘗試在視頻遊戲社區,分佈式數據庫等中使用它。然而,科學計算仍然是MPI的最大用戶之一,仍然是論壇的主要焦點之一。

+0

是的,但我剛剛檢出了你發佈的Java鏈接。這一切都是「暫時的」,「仍在努力」,「正在進行中......」。不給人感覺它不是流行就是成熟。 – spacitron

+0

你說得對。它已經很久沒有出現,所以它不會像「官方支持」的語言那麼成熟。但是,它會(AFAIK)工作。您可能需要獲取夜間壓縮包而不是最新版本,但可以保持這種狀態。我不能說它的受歡迎程度。 –

+1

你是對的,Open MPI Java實現是「臨時」的。 FWIW,我們實際上正準備將其新版本提交給Open MPI SVN中繼 - 可能在本週晚些時候。它比以前的版本更完整,性能更好,口味更好,填充量更少等。本週晚些時候,請查看http://www.open-mpi.org/nightly/trunk/獲取夜間快照tarball。在那裏會有一個Java的README文件,介紹如何使用它等。 –