入门并行编程MPI(七)

将数据块分配给所有组进程

MPI_Scatter函数将根进程发送缓冲区的消息分割成大小相等的sendcount部分,并将第i部分发送到第i号进程(包括它自己)的接收缓冲区。
    int MPI_Scatter(void* sendbuf, int sendcount, MPI_Datatype sendtype,
    void* recvbuf, int recvcount, MPI_Datatype recvtype。
    int root, MPI_Comm comm)

IN sendbuf - 分布式数据块放置的起始地址(仅在发送进程根部使用)。
IN sendcount - 发送给每个进程的元素数量。
IN sendtype - 要发送的项目的类型。
OUT recvbuf - 接收缓冲区的起始地址。
IN recvcount - 要接收的项目的数量。
IN recvtype - 要接收的项目的类型。
IN root - 发送进程的编号。
IN comm - 沟通者。

MPI_Scatter函数将根进程的发送缓冲区的消息分割成大小相等的sendcount部分,并将第i部分发送到第i号进程(包括它自己)的接收缓冲区。

进程根使用两个缓冲区(发送和接收),所以它调用的子程序中的所有参数都是重要的。在有comm的组中的其他进程只是接收者,所以指定发送缓冲区的参数对他们来说是不重要的。

sendcount元素的数量必须等于收到的recvcount元素的数量。

请注意,在根进程的调用中,sendcount的值是发送到每个进程的项目数,而不是项目总数。Scatter操作是Gather的逆操作。

MPI_Scaterv函数是MPI_Scatter函数的一个向量变体,允许向每个进程发送不同数量的元素。发送给第i个进程的块元素的原点在位移数组displs中指定,而发送的元素数量在sendcounts数组中指定。
    int MPI_Scatterv(void* sendbuf, int *sendcounts, int *displs,
                                 MPI_Datatype sendtype, void* recvbuf, int recvcount。
                                 MPI_Datatype recvtype, int root, MPI_Comm comm)

IN sendbuf - 发送缓冲区的起始地址(仅在发送进程根部使用)。
IN sendcoun

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值