平行計算MPI 二 MPI阻塞通訊

2021-06-29 00:33:35 字數 1465 閱讀 3354

阻塞通訊:訊息傳送方的send需要接收方的recv配合才能完成。mpi對阻塞通訊一些底層函式進行了一些封裝,方便我們呼叫。

1.標準通訊模式:

mpi_send(buf, buf_size, mpi_char, process1, tag, mpi_comm_world);

mpi_recv(buf, buf_size, mpi_char, process0, tag, mpi_comm_world);

上面兩個函式乙個用來傳送,乙個用來接收。分別執行在兩個程序(process0和process1)

(1).傳送和接收在雙方程序同時啟動(理想狀態,且在單核cpu時是不可能的):

資料傳輸操作立即啟動

(2).傳送動作早於接收動作啟動:

傳送程序阻塞,等待接受程序執行到mpi_recv語句,之後開啟傳輸(傳輸過程中其實是傳送程序將資料傳到                mpi環境快取中,接受程序那邊進行讀取)

(3).傳送動作晚於接受動作啟動:

接受程序啟動,等待傳送程序的傳送語句觸發.

2.緩衝通訊模式:

mpi_buffer_attach(buf, bufsize);  //定義乙個用於通訊的緩衝區
mpi_bsend(buf1, buf_size1, mpi_char, process1, tag, mpi_comm_world);

mpi_recv(buf2, buf_size2, mpi_char, process0, tag, mpi_comm_world);

mpi_buffer_detach(&buf, &bufsize)  //釋放用於通訊的緩衝區

緩衝通訊模式主要考慮的是buffer_deatach的語句在接受語句之前還是之後,因為如果提前釋放緩衝區肯定會導致資料丟失。

3.同步通訊模式:

mpi_ssend(buf1, buf_size1, mpi_char, process1, tag, mpi_comm_world);

mpi_recv(buf2, buf_size2, mpi_char, process0, tag, mpi_comm_world);

傳送程序傳送乙個請求傳送訊息給接受程序,接受程序準備好後傳送乙個准許傳送許可,傳送端據此訊息再執行實際的訊息傳送。

4.就緒通訊模式:

mpi_rsend(buf1, buf_size1, mpi_char, process1, tag, mpi_comm_world);

mpi_recv(buf2, buf_size2, mpi_char, process0, tag, mpi_comm_world);

和標準,同步通訊模式完全一致,這個動作僅僅是向 mpi環境 傳遞乙個額外的資訊,告訴接受動作已經「就緒」,相應的可直接了當地執行傳送操作.

Mac OS X下利用MPI進行平行計算

北京時間2016年6月20日下午3點,top500組織在法蘭克福世界超算大會 isc 上,由中國國家並行計算機工程技術研究中心研製的 神威 太湖之光 超級計算機系統登頂榜單之首,成為世界上首颱運算速度超過十億億次的超級計算機。而此前國防科大的天河二號超級計算機保持世界超算第一的位置也已經長達六屆。超...

Windows系統下搭建MPI(平行計算)環境

mpi的全稱是message passing inte ce即標準訊息傳遞介面,可以用於平行計算。mpi的具體實現一般採用mpich。下面介紹如何在windows xp系統下vc6中搭建mpi環境來編寫mpi程式。本文以設定安裝在c program files mpich2目錄下為例。測試所安裝的m...

平行計算 Windows系統下搭建MPI環境

mpi的全稱是message passing inte ce即標準訊息傳遞介面,可以用於平行計算。mpi的具體實現一般採用mpich。下面介紹如何在windows xp系統下vc6中搭建mpi環境來編寫mpi程式。本文以設定安裝在c program files mpich2目錄下為例。測試所安裝的m...