mpi4py 中的柵障同步操作

上一篇中我們介紹了 mpi4py 中的掃描操作方法芍锦,下面我們將介紹柵障同步操作。

此為實(shí)施在通信子上的同步操作飞盆,會(huì)阻塞所有的進(jìn)程直到所有的進(jìn)程都調(diào)用此操作娄琉。如果是組間通信子,則會(huì)在組間通信子上的所有進(jìn)程之間執(zhí)行吓歇,但也允許當(dāng)所有遠(yuǎn)程組中的進(jìn)程進(jìn)入 barrier 之后柑蛇,所有本地組中的進(jìn)程已經(jīng)離開俺祠。

方法接口

mpi4py 中的柵障同步操作的方法(MPI.Comm 類的方法)接口為:

barrier(self)
Barrier(self)

barrier 和 Barrier 實(shí)施的操作相同,可以任意使用其中的一個(gè)。

注意:前面介紹的很多阻塞式的集合通信(如 Bcast坝咐,Scatter留储,Gather卜录,Allgather 等)都隱式地包含著同步操作工育,因此并不需要顯式地調(diào)用 Barrier 進(jìn)行同步。但是在某些情況下鹃愤,顯式的同步操作對(duì)應(yīng)保證程序的順利執(zhí)行卻是必須的簇搅,如我們前面介紹的點(diǎn)到點(diǎn)就緒通信模式,要求僅當(dāng)對(duì)方的接收操作啟動(dòng)并準(zhǔn)備就緒時(shí)才可發(fā)送數(shù)據(jù)软吐,否則可能導(dǎo)致錯(cuò)誤或無法預(yù)知的結(jié)果瘩将,一種保證發(fā)送操作晚于對(duì)方的接收操作的方式就是使用這里的柵障同步,讓接收操作在 Barrier 之前凹耙,而讓就緒的發(fā)送操作在 Barrier 之后姿现。另一個(gè)常見的例子是,由一個(gè)進(jìn)程創(chuàng)建一個(gè)目錄或者文件肖抱,然后其它的進(jìn)程向其中寫入數(shù)據(jù)备典,此時(shí)必須保證創(chuàng)建目錄/文件的操作在所有其它進(jìn)程的寫入之前,這可以由它們之間的 Barrier 來實(shí)現(xiàn)意述。

例程

下面給出柵障同步操作的使用例程提佣。

# barrier.py

"""
Demonstrates the usage of barrier, Barrier.

Run this with 2 processes like:
$ mpiexec -n 2 python barrier.py
"""

import os
import shutil
import numpy as np
from mpi4py import MPI


comm = MPI.COMM_WORLD
rank = comm.Get_rank()

# ---------------------------------------------------------------------
# example 1
count = 10
send_buf = np.arange(count, dtype='i')
recv_buf = np.empty(count, dtype='i')

if rank == 0:
    comm.Rsend(send_buf, dest=1, tag=11)
    comm.Barrier() # synchronization here
    print 'process %d sends %s' % (rank, send_buf)
elif rank == 1:
    comm.Barrier() # synchronization here
    comm.Recv(recv_buf, source=0, tag=11)
    print 'process %d receives %s' % (rank, recv_buf)


# ---------------------------------------------------------------------
# example 2
temp_dir = './temp_dir'
temp_file = 'temp_file%d.txt' % rank
# rank 0 crates the directory first if necessary
if not os.path.isdir(temp_dir):
    if rank == 0:
        os.mkdir(temp_dir)
        print 'rank %d creates dir: %s' % (rank, temp_dir)

# synchronization before writing to temp_dir
comm.Barrier()

# each process creates its own file
open(temp_dir + '/' + temp_file, 'w').close()
print 'rank %d creates file: %s' % (rank, temp_dir + '/' + temp_file)

# synchronization before remove temp_dir
comm.Barrier()

# now remove temp_dir by rank 0
if rank == 0:
    shutil.rmtree(temp_dir)
    print 'rank %d removes dir: %s' % (rank, temp_dir)

運(yùn)行結(jié)果如下:

$ mpiexec -n 2 python barrier.py
process 0 sends [0 1 2 3 4 5 6 7 8 9]
process 1 receives [0 1 2 3 4 5 6 7 8 9]
rank 0 creates dir: ./temp_dir
rank 1 creates file: ./temp_dir/temp_file1.txt
rank 0 creates file: ./temp_dir/temp_file0.txt
rank 0 removes dir: ./temp_dir

以上我們介紹了 mpi4py 中的柵障同步操作方法吮蛹,至此我們介紹了 mpi4py 中的各種集合通信,下面我們將進(jìn)入到對(duì)數(shù)據(jù)類型的介紹拌屏,在下一篇中我們首先介紹數(shù)據(jù)類型圖的概念潮针。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市倚喂,隨后出現(xiàn)的幾起案子每篷,更是在濱河造成了極大的恐慌,老刑警劉巖端圈,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件焦读,死亡現(xiàn)場離奇詭異,居然都是意外死亡舱权,警方通過查閱死者的電腦和手機(jī)矗晃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來刑巧,“玉大人喧兄,你說我怎么就攤上這事无畔“〕” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵浑彰,是天一觀的道長恭理。 經(jīng)常有香客問我,道長郭变,這世上最難降的妖魔是什么颜价? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮诉濒,結(jié)果婚禮上周伦,老公的妹妹穿的比我還像新娘。我一直安慰自己未荒,他們只是感情好专挪,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著片排,像睡著了一般寨腔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上率寡,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天迫卢,我揣著相機(jī)與錄音,去河邊找鬼冶共。 笑死乾蛤,一個(gè)胖子當(dāng)著我的面吹牛每界,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播家卖,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼盆犁,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了篡九?” 一聲冷哼從身側(cè)響起谐岁,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎榛臼,沒想到半個(gè)月后伊佃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡沛善,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年航揉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片金刁。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡帅涂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出尤蛮,到底是詐尸還是另有隱情媳友,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布产捞,位于F島的核電站醇锚,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏坯临。R本人自食惡果不足惜焊唬,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望看靠。 院中可真熱鬧赶促,春花似錦、人聲如沸挟炬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辟宗。三九已至爵赵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間泊脐,已是汗流浹背空幻。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留容客,地道東北人秕铛。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓约郁,卻偏偏與公主長得像,于是被迫代替她去往敵國和親但两。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鬓梅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,789評(píng)論 25 707
  • feisky云計(jì)算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 3,827評(píng)論 0 5
  • 從ICU出來,整整一個(gè)月我緩不過來紧阔,我還活著嗎坊罢?白色的天花板屬于普通病房,我出來了擅耽,消毒水味怎么有一種腐臭的農(nóng)...
    楊大胖_6c5a閱讀 178評(píng)論 0 0
  • 慢慢拭著課桌里的灰 桌椅板凳里藏著的回憶 漸漸將青澀抹開 一層一層活孩,夢(mèng)境觸手可及 燒心一樣的悸動(dòng) 又開始沒頭沒腦地...
    半蝦閱讀 203評(píng)論 0 2
  • 做為零售行業(yè),我們每天都接觸形形色色的人乖仇,服務(wù)是必不可少的憾儒,可能我們沒有華麗的語言,沒有昂貴的禮物乃沙,但是我一直相...
    合肥李風(fēng)麗閱讀 22,957評(píng)論 0 3