MPI筆記(五)組和通訊因子

2021-09-18 09:13:11 字數 2504 閱讀 2807

mpi筆記(一)環境

mpi筆記(二)點對點通訊

mpi筆記(三)集合通訊

mpi筆記(四)資料型別和派生資料型別

mpi筆記(五)組和通訊因子

mpi筆記(六)虛擬拓撲

mpi筆記(七)計算圓周率

/*

組和通訊因子:

mpi_comm_world 是全域性的通訊因子

mpi_comm_group (comm,*group) : 獲取與通訊因子關聯的組控制代碼

mpi_group_rank (group,*rank) : 返回該程序在指定組中的秩

mpi_group_size (group,*size) : 返回該組的程序數

mpi_group_excl (group,n,*ranks,*newgroup) : 從指定的組中淘汰一些程序後建立新組

mpi_group_incl (group,n,*ranks,*newgroup) :從指定的組中提取程序產生新的組

mpi_group_intersection (group1,group2,*newgroup) :獲取兩個組的交集程序,生成新的組

mpi_group_union (group1,group2,*newgroup) :獲取兩個組的並集程序,生成新的組

mpi_group_difference (group1,group2,*newgroup) :獲取兩個程序組中的不同程序,產生新的組

mpi_group_compare (group1,group2,*result) :比較兩個組,如果兩個組中的成員和秩都一樣則返回 mpi_ident,只成員一樣返回mpi_similar,否則返回mpi_unequal

mpi_group_free (group) :釋放乙個使用者建立的組

mpi_comm_create (comm,group,*newcomm) : 根據組和通訊因子,建立乙個新的通訊因子

mpi_comm_dup (comm,*newcomm) : 複製乙個新的通訊因子

mpi_comm_compare (comm1,comm2,*result) : 該函式比較兩個通訊因子, 找出兩個組內通訊因子之間的關係。 如果兩個通訊因子中的 上下文關係和組都一樣,則返回 mpi_ident ,如果上下文關係相同,而組不相同則返回 mpi_congruent ,如果上下文關係不相同,而組相同則返回 mpi_similar。否則結果為 mpi_unequel

mpi_comm_free (*comm) :釋放使用者建立的通訊因子

*/#include

#include

"mpi.h"

#include

using

namespace std;

#define nprocs 8

intmain_comm

(int argc,

char

*ar**)

, ranks2[4]

=;mpi_group orig_group, new_group;

mpi_comm new_comm;

mpi_init

(&argc,

&ar**)

;mpi_comm_rank

(mpi_comm_world,

&rank)

;mpi_comm_size

(mpi_comm_world,

&numtasks);if

(numtasks != nprocs)

sendbuf = rank;

/* extract the original group handle */

mpi_comm_group

(mpi_comm_world,

&orig_group)

;// 獲取與通訊因子關聯的組控制代碼

/* divide tasks into two distinct groups based upon rank */

if(rank < nprocs /2)

else

/* create new new communicator and then perform collective communications */

mpi_comm_create

(mpi_comm_world, new_group,

&new_comm)

;// 根據通訊因子和組生成新的通訊因子

mpi_allreduce

(&sendbuf,

&recvbuf,

1, mpi_int, mpi_sum, new_comm)

;// 傳送資料到指定的通訊因子

mpi_group_rank

(new_group,

&new_rank)

;// 獲取當前程序在組中的秩

printf

("rank= %d newrank= %d recvbuf= %d\n"

, rank, new_rank, recvbuf)

;mpi_finalize()

;}

學習筆記 MPI組通訊的散發與組收集

在mpi組通訊中,散發操作有兩個函式,分別是mpi scatter與mpi scatterv。分別與之前所說的mpi gather,mpi gatherv為互逆操作。使用mpi scatter函式可以將root程序的傳送緩衝區中的資料順序地分發給各個程序 自己的接收緩衝區也會接收到 呼叫方式為 mp...

vue學習筆記(五) 元件通訊

關於vue父子元件通訊 github suerimn 如果元件是乙個單頁面,元件之間存在父子關係,資料傳遞就需要根據父子不同的地位使用不同的辦法。借助新建的electron vue專案自帶的兩個元件來說明。目錄結構如下 其中landingpage.vue是父元件,systeminformation....

zigbee學習筆記十二 組播通訊

1 協調器建立網路,並加入乙個組,向組內成員組播資料 i am coordinator device n 2 終端1加入網路,並加入與協調器相同的組,收到協調器傳送而來的資料 2 終端2加入網路,並加入另外乙個組,不能收到協調器發來的資料 1 複製工程模板,並重命名 2 加入串列埠通訊 3 配置組播...