mpi學習日誌 13 mpi4py與非阻塞型函式

2021-07-16 18:29:48 字數 702 閱讀 9832

繼續填坑.

前面第二篇也說過,很多函式有分阻塞型版本和非阻塞型版本,非阻塞型版本的名字比阻塞型的名字多乙個i字首.

那麼,非阻塞型函式又是怎麼回事?

我們知道,點對點通訊裡的recv函式是乙個阻塞函式,也就是接收方要等傳送方傳送了資訊,函式才能返回.

那麼對應的,非阻塞型函式就是,不管傳送方是否傳送了資訊,函式都馬上返回,返回乙個request物件.

我們可以通過request物件來測試傳送方是否傳送了資訊.

mpi4py並不能很好地實現小寫版本的非阻塞函式,因此在這裡我們習慣只要是非阻塞函式,我們都使用大寫版本,即是需要buffer傳遞資訊的版本.

無論是isend還是irecv都會返回乙個request物件,只是我這裡沒有讓傳送方也等待訊息的傳送.

request物件的test()方法會返回乙個bool值,表示資訊是否已經完全傳送/接收.

request物件除了test()還有乙個常用的wait()方法,它會重新讓程序阻塞地等待訊息的傳送.也就是說當wait()返回了,訊息也就已經完全傳送/接收了.

我們將會在後面對request作更多的介紹.

mpi學習日誌 2 mpi4py與點對點通訊

前文說到,mpi是資訊傳遞介面,因此資訊傳遞是mpi的重點.而程序中的資訊傳遞就是程序通訊 今天我們將看看mpi建立的一組程序是怎麼相互通訊的.程序通訊有許多種,點對點通訊,廣播,散播等.今天我們先學習點對點通訊.什麼是點對點通訊?其實就是最簡單的程序a向程序b傳送資訊,而程序b向程序a接收資訊.這...

mpi學習日誌 5 mpi4py與多點通訊續

在多點通訊裡我們已經學習了廣播bcast,散播scatter,收集gather,規約reduce.今天我們再來簡略看一些可能更為少用的多點通訊.簡單來說就是收集 廣播.gather中只有根程序會得到收集到的資訊,而allgather則是所有程序都會得到收集到的資訊,就相當於收集後再廣播一次.redu...

mpi學習日誌 1 mpi與python

mpi是什麼?它用來幹什麼?mpi是資訊傳遞介面 message passing inte ce 簡單來說就是乙個用來實現程序通訊的庫.它很多時候用於並行演算法的設計.下面我們先使用windows環境下python語言來了解mpi的使用.mpi在python的環境還是很好配置的.首先你得安裝好pyt...