我有一些研究相關的問題。這是什麼意思爲共享內存配置MPI?
目前我已經完成了基於MPI的結構骨架工作的實現(具體使用了openmpi 6.3)。框架工作應該在單機上使用。 現在,我與其他先前的框架實現它比較(如scandium,fast-flow,..)
有一兩件事我注意到的是,我實現的性能並不像其他實現一樣好。 我認爲這是因爲,我的實現基於MPI(因此需要匹配發送和接收操作的雙向通信),而我正在比較的其他實現基於共享內存。 (...但我仍然沒有很好的解釋來解釋這一點,這是我的問題的一部分)
這兩個類別的完成時間有一些很大的不同。
今天,我還介紹到這裏共享內存=>openmpi-sm
開放MPI的配置和有來我的問題是。
1st爲共享內存配置MPI意味着什麼?我的意思是,雖然MPI進程存在於自己的虛擬內存中,以下命令中的標誌究竟是幹什麼的? (我以爲在MPI中,每個通信都是通過顯式傳遞消息,進程之間沒有共享內存)。
shell$ mpirun --mca btl self,sm,tcp -np 16 ./a.out
第二爲什麼MPI的性能相比,共享內存等開發框架實現與差這麼多?至少我也在一臺多核機器上運行它。 (我想這是因爲其他實現使用線程並行編程,但我沒有令人信服的解釋)。
任何建議或進一步的討論是非常受歡迎的。
請讓我知道,如果我必須進一步澄清我的問題。
謝謝你的時間!
FWIW,從Linux 3.2開始,有一個process_vm_readv/writev系統調用,它與KNEM大致相同。見例如http://man7.org/linux/man-pages/man2/process_vm_readv.2.html – janneb
@janneb,謝謝大家指出,但3.x內核在大多數生產HPC系統中都不是很受歡迎。然而KNEM提供的不僅僅是簡單的數據傳輸,例如異步操作,完成通知等。 –
這是真的,但是再一次,KNEM補丁的內核也不例外。 – janneb