最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中mpi4py的所有基礎(chǔ)使用案例詳解

 更新時(shí)間:2022年08月18日 15:34:48   作者:看那片云  
這篇文章主要介紹了python中mpi4py的所有基礎(chǔ)使用,本文通過10個(gè)案例給大家詳細(xì)講解,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下

python中mpi4py的基礎(chǔ)使用

大多數(shù) MPI 程序都可以使用命令 mpiexec 運(yùn)行。在實(shí)踐中,運(yùn)行 Python 程序如下所示:

$ mpiexec -n 4 python script.py

案例1:測(cè)試comm.send 和comm.recv函數(shù),代碼如下

from mpi4py import MPI

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

if rank == 0:
? ? data = {'a': 7, 'b': 3.14}
? ? comm.send(data, dest=1, tag=11)
elif rank == 1:
? ? data = comm.recv(source=0, tag=11)

rank代表進(jìn)程編號(hào),其總數(shù)是mpiexec -n中的n的個(gè)數(shù),最大的n受到電腦cpu內(nèi)核數(shù)的限制
dest代表發(fā)送的目標(biāo),tag是一個(gè)標(biāo)志位可以忽略,source為數(shù)據(jù)來源rank標(biāo)志

案例2:具有非阻塞通訊的python對(duì)象

from mpi4py import MPI

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

if rank == 0:
? ? data = {'a': 7, 'b': 3.14}
? ? req = comm.isend(data, dest=1, tag=11)
? ? req.wait()
elif rank == 1:
? ? req = comm.irecv(source=0, tag=11)
? ? data = req.wait()

案例3: 快速發(fā)送實(shí)例

這里的Send和Recv都是大寫,用于numpy數(shù)據(jù)的傳輸

from mpi4py import MPI
import numpy

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

# passing MPI datatypes explicitly
if rank == 0:
? ? data = numpy.arange(1000, dtype='i')
? ? comm.Send([data, MPI.INT], dest=1, tag=77)
elif rank == 1:
? ? data = numpy.empty(1000, dtype='i')
? ? comm.Recv([data, MPI.INT], source=0, tag=77)

# automatic MPI datatype discovery
if rank == 0:
? ? data = numpy.arange(100, dtype=numpy.float64)
? ? comm.Send(data, dest=1, tag=13)
elif rank == 1:
? ? data = numpy.empty(100, dtype=numpy.float64)
? ? comm.Recv(data, source=0, tag=13)

案例4:集體通訊,廣播機(jī)制

廣播機(jī)制就是將當(dāng)前root=0端口下的所有信息發(fā)送到任何一個(gè)進(jìn)程

from mpi4py import MPI

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

if rank == 0:
? ? data = {'key1' : [7, 2.72, 2+3j],
? ? ? ? ? ? 'key2' : ( 'abc', 'xyz')}
else:
? ? data = None
data = comm.bcast(data, root=0)

案例5:scatter,將root=0下的數(shù)據(jù)一次分發(fā)到各個(gè)rank下

from mpi4py import MPI

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

if rank == 0:
? ? data = [(i+1)**2 for i in range(size)]
else:
? ? data = None
data = comm.scatter(data, root=0)
assert data == (rank+1)**2

案例6:gather,將所有rank下的數(shù)據(jù)收集到root下

from mpi4py import MPI

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

data = (rank+1)**2
data = comm.gather(data, root=0)
if rank == 0:
? ? for i in range(size):
? ? ? ? assert data[i] == (i+1)**2
else:
? ? assert data is None

案例7,numpy的廣播機(jī)制

與之前一樣都是大寫

from mpi4py import MPI
import numpy as np

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

if rank == 0:
? ? data = np.arange(100, dtype='i')
else:
? ? data = np.empty(100, dtype='i')
comm.Bcast(data, root=0)
for i in range(100):
? ? assert data[i] == i

案例8:numpy的Scatter機(jī)制

from mpi4py import MPI
import numpy as np

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

sendbuf = None
if rank == 0:
? ? sendbuf = np.empty([size, 100], dtype='i')
? ? sendbuf.T[:,:] = range(size)
recvbuf = np.empty(100, dtype='i')
comm.Scatter(sendbuf, recvbuf, root=0)
assert np.allclose(recvbuf, rank)

案例9:numpy的Gather機(jī)制

from mpi4py import MPI
import numpy as np

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

sendbuf = np.zeros(100, dtype='i') + rank
recvbuf = None
if rank == 0:
? ? recvbuf = np.empty([size, 100], dtype='i')
comm.Gather(sendbuf, recvbuf, root=0)
if rank == 0:
? ? for i in range(size):
? ? ? ? assert np.allclose(recvbuf[i,:], i)

案例10 :allgather機(jī)制

allgather就是 scatter 加上廣播機(jī)制。
rank0 = a
rank1 = b
rank2 = c
allgather后結(jié)果為
rank0 = a,b,c
rank1 = a,b,c
rank2 = a,b,c

from mpi4py import MPI
import numpy

def matvec(comm, A, x):
? ? m = A.shape[0] # local rows
? ? p = comm.Get_size()
? ? xg = numpy.zeros(m*p, dtype='d')
? ? comm.Allgather([x, ?MPI.DOUBLE],
? ? ? ? ? ? ? ? ? ?[xg, MPI.DOUBLE])
? ? y = numpy.dot(A, xg)
? ? return y

到此這篇關(guān)于一文讀懂python中mpi4py的所有基礎(chǔ)使用的文章就介紹到這了,更多相關(guān)python mpi4py使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python?Asyncio庫(kù)之a(chǎn)syncio.task常用函數(shù)詳解

    Python?Asyncio庫(kù)之a(chǎn)syncio.task常用函數(shù)詳解

    Asyncio在經(jīng)過一段時(shí)間的發(fā)展以及獲取Curio等第三方庫(kù)的經(jīng)驗(yàn)來提供更多的功能,目前高級(jí)功能也基本完善。本文主要介紹了Asyncio庫(kù)中asyncio.task常用函數(shù)的使用,需要的可以參考一下
    2023-03-03
  • 使用Python實(shí)現(xiàn)將圖片轉(zhuǎn)線條圖

    使用Python實(shí)現(xiàn)將圖片轉(zhuǎn)線條圖

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)將圖片轉(zhuǎn)線條圖,可以讓圖片看起來更加的有意思,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-02-02
  • 如何在windows下安裝Pycham2020軟件(方法步驟詳解)

    如何在windows下安裝Pycham2020軟件(方法步驟詳解)

    這篇文章主要介紹了在windows下安裝Pycham2020軟件方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 一文帶你了解Python列表生成式應(yīng)用的八重境界

    一文帶你了解Python列表生成式應(yīng)用的八重境界

    在Python中有非常多且好用的技巧,其中使用最多的是列表生成式,往往可以將復(fù)雜的邏輯用簡(jiǎn)單的語言來實(shí)現(xiàn),本文重點(diǎn)介紹列表生成式應(yīng)用的八重境界
    2022-09-09
  • python對(duì)象銷毀實(shí)例(垃圾回收)

    python對(duì)象銷毀實(shí)例(垃圾回收)

    今天小編就為大家分享一篇python對(duì)象銷毀實(shí)例(垃圾回收),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python補(bǔ)齊字符串長(zhǎng)度的實(shí)例

    Python補(bǔ)齊字符串長(zhǎng)度的實(shí)例

    今天小編就為大家分享一篇Python補(bǔ)齊字符串長(zhǎng)度的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python 獲取windows桌面路徑的5種方法小結(jié)

    Python 獲取windows桌面路徑的5種方法小結(jié)

    今天小編就為大家分享一篇Python 獲取windows桌面路徑的5種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • pytorch中torch.topk()函數(shù)的快速理解

    pytorch中torch.topk()函數(shù)的快速理解

    我們?cè)谧龇诸愃惴〞r(shí),時(shí)常見到@acc1和@acc5的情況,@acc1比較容易實(shí)現(xiàn),但是一直苦于@acc5算法的實(shí)現(xiàn),在此為大家提供一種@topk的實(shí)現(xiàn)方法,這篇文章主要給大家介紹了關(guān)于pytorch中torch.topk()函數(shù)的快速理解,需要的朋友可以參考下
    2022-02-02
  • pip install urllib2不能安裝的解決方法

    pip install urllib2不能安裝的解決方法

    今天小編就為大家分享一篇pip install urllib2不能安裝的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 使用Python創(chuàng)建一個(gè)視頻管理器并實(shí)現(xiàn)視頻截圖功能

    使用Python創(chuàng)建一個(gè)視頻管理器并實(shí)現(xiàn)視頻截圖功能

    在這篇博客中,我將向大家展示如何使用 wxPython 創(chuàng)建一個(gè)簡(jiǎn)單的圖形用戶界面 (GUI) 應(yīng)用程序,該應(yīng)用程序可以管理視頻文件列表、播放視頻,并生成視頻截圖,我們將逐步實(shí)現(xiàn)這些功能,并確保代碼易于理解和擴(kuò)展,感興趣的小伙伴跟著小編一起來看看吧
    2024-08-08

最新評(píng)論

万宁市| 名山县| 徐闻县| 利川市| 六枝特区| 古浪县| 如皋市| 赫章县| 广东省| 易门县| 虞城县| 嘉荫县| 安顺市| 通辽市| 崇信县| 郎溪县| 秦安县| 香港| 松原市| 客服| 唐河县| 佛坪县| 抚松县| 壤塘县| 临城县| 台州市| 上饶市| 淮阳县| 望谟县| 大新县| 巴东县| 沾化县| 类乌齐县| 来安县| 乌拉特中旗| 商洛市| 渭南市| 于田县| 阳泉市| 织金县| 亳州市|