2015-06-16 35 views
1

所以,我需要將計算密集型工作(深度神經網絡訓練)提交到一個扭矩集羣,這個集羣會佔用計算時間,而且我需要每幾分鐘交換幾個大浮點數組因爲節點需要在最新版本的神經網絡上工作以訓練它。羣集中的扭矩工作之間的消息傳遞

我想知道是否有任何良好的溝通選擇,至少要告訴每個活躍的工作姐妹工作'ips,所以它可以連接到他們通過tcp。節點無法訪問互聯網,我們無法在作業提交服務器上運行守護進程。

,我看到的唯一的選擇是:

  • 一些消息傳遞轉矩選擇(我是相當小白在轉矩)
  • 使用的文件進行溝通的非常容易出錯的選擇,這我恨。
  • 一種查詢服務器上活動節點ips的方法。
+1

這個問題非常廣泛(可能與觀點相符)!我認爲你應該看看消息傳遞接口(MPI)。這是集羣通信的標準化方式,並得到Torque的很好支持。它適用於C/C++和Fortran(可能還有其他)。不需要重新發明輪子。 –

+0

傳統的MPI在這裏沒有幫助。他需要TCP或MPI的連接 - 接受語義。 – Jeff

+0

這對Open MPI來說絕對是可能的。你必須運行全局可達的(通過TCP/IP)名稱服務器('orte-server')或啓動一個「主」作業,並讓它的「mpiexec」作用,然後爲每個實例提供名稱服務器的URI 'mpiexec'。然後作業可以利用'MPI_Publish_name' /'MPI_Lookup_name'和'MPI_Comm_connect'找到彼此並建立通信。 Torque不提供interjob通信機制,或者至少不在API中公開這些機制。 –

回答

0

根據集羣的體系結構,在集羣上的節點之間交換信息的方式有很多種。 Torque是資源管理器,因此如果使用批處理腳本將作業提交到羣集,則有幾個環境變量應該能夠爲您提供作業中使用的節點的主機名或IP地址。

查找IP地址和/或主機名的確切語法將取決於與羣集上的轉矩一起使用的調度程序/工作負載管理器。此鏈接有關於PBS Works工作負載管理器的文檔。

節點之間的並行通信可以通過多種方式實現,部分取決於羣集中可用的硬件。使用MPI是在集羣上使用並行代碼的最常用方法之一,許多實現都支持Infiniband等多種高性能結構/互連繫統。對不同類型的並行性的一些有用的介紹可以參見here

作爲MPI的替代方案,可以使用遠程直接內存訪問(RDMA)來傳遞和訪問節點之間的信息。如果集羣具有Infiniband網絡適配器,那麼查看來自供應商的IB-Verbs API將是在節點之間傳遞數據的附加選項。