我是高性能計算(HPC)方面的新人,但我將擁有一個HPC項目,因此我需要一些幫助來解決一些基本問題。通過RDMA選擇共享內存系統,MPI庫,原始RDMA還是ULP?
應用場景很簡單:通過InfiniBand(IB)網絡連接的幾臺服務器,主服務器的一臺服務器和從服務器的其他服務器。只有主機讀寫內存中的數據(數據的大小範圍從1KB到幾百MB)到從機中,而從機只是被動地將數據存儲在它們的存儲器中(並在正確的時間將內存數據轉儲到磁盤中)。所有的計算都是在主設備上執行,在寫入之前或從/從從設備讀取數據之後執行。該系統的要求是低延遲(數據的小區域,例如1KB-16KB)和高吞吐量(大數據區域,幾百MB)。
所以,我的問題是
1.哪些具體的方式是更適合我們呢? MPI,原始IB/RDMA庫或RDMA上的ULP。
據我所知,現有的消息傳遞接口(MPI)庫,原始IB/RDMA庫如libverbs
和librdmacm
和用戶級Protocal(ULPS)在RDMA可能是可行的選擇,但我不是很確定的適用範圍。
2.我應該爲操作系統還是IB網絡進行調整以獲得更好的性能?
存在紙張[1]微軟宣佈
我們提高了性能 多達八個仔細調整的一個因素, 更改操作系統和NIC驅動
就我而言,我會盡力避免這種性能調整。但是,如果調整是不可避免的,我會盡我所能。我們環境的IB網絡是Mellanox InfiniBand QDR 40Gb/s,我可以自由選擇適用於服務器的Linux操作系統。
如果您有任何想法,意見和答案,歡迎! 在此先感謝!
我投票結束這個問題主要是基於意見的。列出的每項技術都可以用於實現特定目標中的一個或另一個,儘管在易用性和代碼可維護性方面價格不同。沒有錯綜複雜的應用程序網絡配置知識,我懷疑任何人都可以回答第二個問題。 –
@HristoIliev感謝您的評論。我想澄清我的問題:首先,哪種方法可以實現我的應用程序的要求?其次,我怎樣才能通過選擇一個適合我需求的成熟庫來避免調優工作(就像快速遠程'memcpy')。 – foool