03 MPI数据类型的匹配和数据类型的转换
来源:互联网 发布:监控上显示无网络视频 编辑:程序博客网 时间:2024/06/05 16:01
一 数据类型的匹配
MPI的消息传递过程可以分为三个阶段:
1.消息装配—将发送数据从发送缓冲区中取出,加上消息信封等形成一个完整的消息2.消息传递—将装配好的消息从发送端传递到接收端
3.消息拆卸—从接收到的消息中取出数据送入接收缓冲区
在这三个阶段,都需要类型匹配:在消息装配时,发送缓冲区中变量的类型必须和相应的发送操作指定的类型相匹配 ;在消息传递时,发送操作指定的类型必须和相应的接收操作指定的类型相互匹配;在消息拆卸时,接收缓冲区中变量的类型必须和接收操作指定的类型相匹配。
在MPI中,类型匹配有两个方面的意思:1.宿主语言的类型和通信操作所指定的类型相匹配,2.发送方和接收方的类型相匹配。
上述类型匹配规则的例外是对于MPI提供的MPI_BYTE和MPI_PACKED,它们可以和任何以字节为单位的存储相匹配 包含这些字节的类型是任意的 MPI_BYTE用于不加修改地传送内存中的二进制值,MPI_PACK用于数据的打包和解包——MPI_UNPACK。
归纳起来,可以概括为:
1.有类型数据的通信—发送方和接收方均使用相同的数据类型
2.无类型数据的通信—发送方和接收方均以MPI_BYTE作为数据类型
3.打包数据的通信—发送方和接收方均使用MPI_PACKED
二 数据类型的转换
所谓的数据转换包括两个方面的意思:数据类型的转换、数据表示的转换。
数据类型的转换是指改变一个值的数据类型,比如将实型转换为整型(通过舍入操作),或将整型转换为实型等。
数据表示的转换是指改变一个值的二进制表示,比如高字节和低字节顺序的改变,将浮点数从32为表示改变为64为表示等。
由于MPI严格要求类型匹配,所以在MPI中不存在数据类型转换的问题。但是,MPI必须实现数据表示的转换,这是因为MPI的目的之一是对异构环境的支持,在异构系统中,不同的系统其数据的内部表示往往是不同的,因此MPI必须负责实现这些不同表示之间的相互转换。
在MPI中,没有限定数据表示转换的细节,但总的目标是希望这样的转换保留整型,逻辑以及字符值不变,而把浮点值转为在目标系统上能表示的最接近的值。
在浮点转换过程,上溢和下溢可能发生。当一个值能在一个系统中表示而不能在另一个系统中表示时,整型或字符的转换也可导致异常。在表示转换过程中,一个异外发生会导致一个通信失败,在发送操作、接收操作或两者也都发生错误。
如果在一个消息中发送的一个值是无类型的 (例如,MPI_BYTE类型),那么在接收者存储的字节的二进制表示与接收者接收的字节的二进制表示一样,无论发送者和接收者运行在同一环境或不同环境,这都是正确的,不要求表示转换。
- 03 MPI数据类型的匹配和数据类型的转换
- javascript之数据类型、数据类型的转换、&&和||
- 数据类型的自动转换和强制转换
- Oracle的数据类型和SQLServer的数据类型转换
- Oracle的数据类型和SQLServer的数据类型转换
- SQL数据类型和C#数据类型间的转换
- SQL SERVER数据类型与C#数据类型的转换和相关.........
- SQL数据类型和C#数据类型间的转换
- java基本数据类型和基本数据类型的转换
- JavaScript数据类型和数据类型之间的转换关系
- 数据类型和数据类型转换以及if语句的使用
- java中的数据类型和数据类型间的转换
- 数据类型的转换
- 数据类型转换的整理
- 数据类型的互相转换
- 数据类型的转换
- 数据类型转换的文章
- VC的数据类型转换
- Python基础(二)
- web.xml中freemarker配置文件
- [HDU-5934] BOMB
- 简单的几种网络超时检测
- Eclipse中配置好Tomcat后在Eclipse里能打开网页在外部的浏览器打不开
- 03 MPI数据类型的匹配和数据类型的转换
- 机器学习面试需要准备啥
- 使用JDBC进行后台登录和注册操作
- java基础--一个简单的记事本
- Python 第三方库(requests)的使用(转)
- 使用Mybatis实现数据库一对多查询
- Day14_Java_作业
- day3网络编程-2017-11-13 HTTP协议
- 2017年11月13日作业