大规模并行处理器编程实战笔记5
来源:互联网 发布:mysql数据库被攻击 编辑:程序博客网 时间:2024/06/13 19:00
浮点运算
1:浮点格式
浮点数的表示:S(符号位),E(阶码),M(尾数)
S:0/1
M:1<=M<2,规范化以后,只需要存储1.xxx后面的xxx部分,1.部分可以省略
E:使用余码表示,方便直接按照无符号数的方式进行比较大小
n位余码的计算方式:对n位原码求补码,再加上(2^(n-1) - 1)构成,等价于对某个十进制数取余
例子:
按照二进制补码的顺序排序的余3码
二进制补码 十进制值 余码表示
000 0 011
001 1 100
010 2 101
011 3 110
100 保留模式 111
101 -3 000
110 -2 001
111 -1 010
按照余码的顺序排序余3码
二进制补码 十进制值 余码表示
100 保留模式 111
101 -3 000
110 -2 001
111 -1 010
000 0 011
001 1 100
010 2 101
011 3 110
故如果使用余码表示,则其二进制的大小排序与十进制的一致,方便运算
故如果是十进制的0.5,使用六位二进制表示(S一位,E三位,M两位)表示成:001000
其中:S = 0,E = 010,M =(1.)00
2:能表示的数
非零数:
可以表示的数间隔取决于阶码(2位表示3个间隔);每个间隔中能表示的数取决于尾数(2位表示4个);这种格式中0没有办法表示;越靠近0的数间隔越小;0附近能表示的数会出现空白;
下溢出:
能够容纳0的一种方法是下溢出,将0附近的8个能表示的数(4个整数,4个负数)都设置为0,但是,0附近的数间隔变大了
非规格化:
IEEE中采用的非规格化的表示方法,在E=0时,不再要求M表示1.xx,而是表示0.xx,阶码表示的间隔不变,即此方法将最后一个间隔内能表示的4个数拉开(本来都在0.5-1之间,现在平均到0-1之间),弥补了0之间的空白区域。
3:特殊的位模式与精度
无穷:阶码所有位为1,尾数为0
NaN(Not a Number):阶码所有位为1,尾数非0
Signaling NaN:将尾数中Most Significant位置0来表示,常用于标记所有没有初始化的数据
quite NaN:将尾数中MostSignificant位置1来表示,常用于用户可以预先知道程序的运行结果,并在通过不同的输入可以得到更为有效的结果时,决定是否要重新运行程序(CUDA应用程序中输出结果时,quietNaN以NaN行四海输出,检测数据损坏的方法)
4:算术运算的准确度和舍入
阶码决定了表示范围,尾数决定了精确度
当操作产生的结果不能表示的时候,就要进行舍入(一般替代为最近的一个可以表示的数)
舍入的情况:浮点算术运算中需要进行预移位,两个操作数的阶码不同的时候,阶码较小的那个操作数的尾数通常需要右移,直到两者的阶码相等为止,而当操作数进行右移的时候,可能从可以表示的范围进入不可表示的放范围,这样就会将其替换称为最近的一个可以表示的数(进行舍入操作),导致准确度受损
5:算法的优化
由于大操作数在运算的时候将会“吃掉”小操作数,所以,在并行数值算法中,常常使用排序,将大小接近的数据放在同一组中进行运算,减少精度的损失
- 大规模并行处理器编程实战笔记5
- 大规模并行处理器编程实战笔记1
- 大规模并行处理器编程实战笔记2
- 大规模并行处理器编程实战笔记3
- 大规模并行处理器编程实战笔记4
- 大规模并行处理器编程实战
- [大规模并行处理器编程实战]读书笔记_Heterogeneous Parallel Programming_CHAPTER_01
- [大规模并行处理器编程实战]读书笔记_Heterogeneous Parallel Programming_CHAPTER_02
- [大规模并行处理器编程实战]读书笔记_Heterogeneous Parallel Programming_CHAPTER_03
- 《大规模并行处理器编程实战(第2版)》今年翻译的一本书出版
- 在大规模并行处理器编程实战中遇到第四章的课后习题blocksize的问题
- 【ARM-Linux开发】OpenACC并行编程实战笔记
- Hbase协处理器实战笔记
- 阅读 《大规模并行处理器程序设计》影印版心得 第三章 Introduction to CUDA
- 阅读 《大规模并行处理器程序设计》影印版心得 第四章 CUDA Threads
- 阅读 《大规模并行处理器程序设计》影印版心得 第五章 CUDA Memories
- 阅读 《大规模并行处理器程序设计》影印版心得 第六章 Performance Consideration
- C++并发编程实战chapter1你好,C++的并发世界--笔记1--任务并行和数据并行
- DOS下面的一些命令
- 计算机网络中各层的一些协议
- 转载:成为GPU架构师
- 值得开发者关注的5个新兴平台
- 大规模并行处理器编程实战笔记4
- 大规模并行处理器编程实战笔记5
- 论文阅读笔记1
- Android实现下拉导航选择菜单效果
- 论文阅读笔记2
- 论文阅读笔记3
- 论文阅读笔记4
- 基于CUDA的GPU优化建议
- 使用R处理大数据集
- Android Push Notification实现信息推送使用