【並行計算】MPI.COMM_WORLD.Get_rank() 與 .Get_size()

【並行計算】MPI.COMM_WORLD.Get_rank 與 .Get_size

1.簡單介紹:

  我們在使用MPI進行編程時,往往可以寫一個代碼文件,分發給很多個不同的進程同時執行,那麼如何區分誰是誰呢?這就需要用到Get_rank()函數來確定當前代碼的編號。
  有的時候我們還希望用某個特定的進程來執行一些操作,比如我們希望使用編號爲0的進程,來把所有的進程的數據再進行一些處理,那麼0號進程就需要指導一共有多少個進程,這時就需要用到Get_size()函數。

2.Talking is Cheap, Show me the Code!

將下面的代碼保存爲:size_rank.py

from mpi4py import MPI
comm = MPI.COMM_WORLD
size = comm.Get_size()
rank = comm.Get_rank()

if rank == 0:
    print('I\'m process %d, and there are %d process total.' % (rank, size))
else:
    print('Ok, I\'m process %d' % rank)

3.運行效果

  由於寫文章的時候沒有帶Ubuntu的筆記本,只好在Windows下寫了一下,還配置了好一會,如果大家也遇到些問題,可以參考最後我列出的一篇博客,寫的挺好的。
  我們這裏使用的是Anaconda Prompt執行命令:

mpiexec -n 4 python size_rank.py

  效果如下:

(base) C:\Users\44375\Documents\python_proj>mpiexec -n 4 python size_rank.py
I'm process 0, and there are 4 process total.
Ok, I'm process 1
Ok, I'm process 2
Ok, I'm process 3

其他:

  如果你使用的是Windows操作系統,配置上的問題可以參考下面這篇文章:
1.肉鬆松鼠, windows上安裝mpi4py

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章