MPI(二)

1 MPI预定义数据类型

MPI预定义数据类型相应的C数据类型
MPI_CHARsigned char
MPI_SHORTsigned short int
MPI_INTsigned int
MPI_LONGsigned long int
MPI_UNSIGNED_CHARunsigned char
MPI_UNSIGNED_SHORTunsigned short int
MPI_UNSIGNEDunsigned int
MPI_UNSIGNED_LONGunsigned long int
MPI_FLOATfloat
MPI_DOUBLEdouble
MPI_LONG_DOUBLElong double
MPI_BYTE无对应类型
MPI_PACKED无对应类型

MPI_BYTE的一个值由一个字节组成(8个二进制位)

附加的MPI数据类型相应的C数据类型
MPI_LONG_LONG_INTlong long int

2 MPI数据类型匹配和数据转换

  1. MPI类型匹配规则

    消息装配,消息传递,消息拆卸三个阶段都需要类型匹配

    宿主语言的类型和通信操作所指定的类型相匹配,发送方和接收方的类型相匹配

    (MPI认为MPI_INT和MPI_LONG是不同的类型)

    例外:MPI_BYTE和MPI_PACKED和人和任何以字节为单位的存储相匹配。

    MPI_BYTE用于不加修改地传送内存中的二进制值,

    MPI_PACK用于数据的打包和解包(MPI_UNPACK)

    总结:

    • 有类型数据的通信:发送方接收方均使用相同的数据类型
    • 无类型数据的通信:发送方接收方均以MPI_BYTE作为数据类型
    • 打包数据的通信:均使用MPI_PACKED
  2. 数据转换

    • 数据类型的转换:比如将实型转换为整型(通过舍入操作)
    • 数据表示的转换:改变一个值的二进制表示,比如高字节和低字节顺序的改变,将浮点数从32位表示改变为64位表示等

    MPI不存在数据类型转换,但实现数据表示的转换。

3 MPI消息

  1. MPI消息的组成

    • 信封:<源/目,标识,通信域>
    • 数据:<起始地址,数据个数,数据类型>

    标识的作用:当发送者发送两个相同类型的数据给同一个接收者时,标识用于区分这两个消息

  2. 任意源和任意标识

    MPI_ANY_SOURCR

    MPI_ANY_TAG

    可以同时使用或分别单独使用,

    但不能给comm指定任意值。

    一个接收操作可以接收任何发送者的消息,但对于一个发送操作,则必须指明一个单独的接收者。

    MPI允许发送者=接收者,但要注意死锁的产生

  3. MPI通信域

    • 进程组,编号:0到N-1
    • 通信上下文:提供一个相对独立的通信区域,不同的消息在不同的上下文中进行传递,不同上下文的消息互不干涉,通信上下文可以将不同的通信区别开来。

    预定义的通信域:MPI_COMM_WORLD

    用户可以在原有通信域的基础上,定义新的通信域

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值