CUDA实践指南(七)

简介:

数值精度和精度:
由于计算和存储浮点值的方式,导致错误或意外的结果主要来自浮点精度问题。 以下各节介绍了感兴趣的主要项目。 “CUDA C编程指南的特性和技术规范”以及有关浮点精度和性能的白皮书和附带网络研讨会中提供了浮点运算的其他特性,可从http://developer.nvidia.com/content/获得精密performancefloating-点和IEEE-754符合,NVIDIA的GPU。
Single vs. Double Precision:
浮点数学不关联:
每个浮点算术运算都涉及一定数量的舍入。 因此,算术运算的执行顺序非常重要。 如果A,B和C是浮点值,则(A + B)+ C不能保证等于A +(B + C),因为它在符号数学中。 并行化计算时,可能会改变操作顺序,因此并行结果可能与顺序结果不匹配。 此限制不是CUDA特有的,而是浮点值并行计算的固有部分。
提升双精度和截断单精度:
在比较主机和设备之间的浮点变量计算结果时,请确保在主机上以双倍精度进行的提升不考虑不同的数值结果。 例如,如果代码段:

float a;
...
a = a*1.02;

在计算能力为1.2或更低的设备上执行,或者在具有计算能力1.3但在不启用双精度(如上所述)的情况下编译的设备上执行,则乘法将以单精度执行。 但是,如果代码是在主机上执行的,文字1.02将被解释为doubleprecision数量,并且会被提升为双精度,乘法将以双精度执行,结果将被截断为float - 从而 产生稍微不同的结果。 但是,如果文字1.02被替换为1.02f,则结果在所有情况下都是相同的,因为不会升级为精度。 为确保计算使用单精度算术,总是使用浮点文字。
除了准确性之外,双精度和浮点数之间的转换(反之亦然)对性能有不利影响,正如指令优化中所讨论的。
符合IEEE 754标准:
所有CUDA计算设备都遵循IEEE 754标准的二进制浮点表示法,但有一些小例外。 这些例外(详见CUDA C编程指南的特性和技术规格)可能导致与主机系统上计算的IEEE 754值不同的结果。
其中一个主要区别是融合乘加(FMA)指令,它将乘加操作组合成单个指令执行。 其结果通常与分别进行两项操作所获得的结果略有不同。
x86 80位计算:
执行浮点计算时,x86处理器可以使用80位双精度扩展精度。 这些计算的结果可能会与CUDA设备上执行的纯64位操作有所不同。 为了在值之间获得更接近的匹配,请将x86主机处理器设置为使用常规双精度或单精度(分别为64位和32位)。 这是通过FLDCW x86汇编指令或等效的操作系统API完成的。

目录
相关文章
|
人工智能 算法 数据挖掘
技术沙龙直播|3D-Speaker多模态说话人开源详解
技术沙龙直播|3D-Speaker多模态说话人开源详解
|
设计模式 人工智能 JSON
一文掌握大模型提示词技巧:从战略到战术
本文将用通俗易懂的语言,带你从战略(宏观)和战术(微观)两个层次掌握大模型提示词的常见技巧,真正做到理论和实践相结合,占领 AI 运用的先机。
240439 5
|
关系型数据库 MySQL Shell
Windows下的mysql字符集格式修改
在Windows上的MySQL 5.7.17,若安装时未设置字符集,可能导致乱码问题。本文提供了解决方案:首先,通过`mysql -uroot -p`登录并使用`show variables like '%char%';`查看当前字符集。然后,有两种修改方法:一是使用Shell命令临时修改9个相关属性为utf8;二是永久修改,在my.ini配置文件中将[mysqld]、[client]、[mysql]下的字符集改为utf8。记得重启MySQL服务以应用更改。此外,还提供了修改数据库和表字符集的SQL命令。
|
机器学习/深度学习 人工智能 算法
AI+组合优化 |机器学习顶会ICLR/ICML/NeurIPS'23最新进展-MIP求解篇(附原文源码)
本文梳理了ICLR 2023、ICML 2023、NeurIPS 2023有关机器学习+混合整数规划问题求解加速求解加速的研究成果,总共包含8篇文章。
1644 0
|
API Windows
Windows服务器安装graylog-sidecar实现系统日志快速接入Graylog
Windows服务器安装graylog-sidecar实现系统日志快速接入Graylog
1160 0
Windows服务器安装graylog-sidecar实现系统日志快速接入Graylog
|
数据可视化 数据挖掘 Python
【Python】数据分析与可视化实践:收支日统计数据可视化的实现 Python数据分析与可视化实践:收支日统计数据可视化的实现
【Python】数据分析与可视化实践:收支日统计数据可视化的实现 Python数据分析与可视化实践:收支日统计数据可视化的实现
840 0
|
机器学习/深度学习 并行计算 PyTorch
CUDA和显卡驱动以及pytorch版本的对应关系
CUDA和显卡驱动以及pytorch版本的对应关系
8497 0
|
Ubuntu 关系型数据库 Unix
从小白到专家 PG 技术大讲堂 - Part 1:PG 简介
从小白到专家 PG 技术大讲堂 - Part 1:PG 简介
636 2
|
XML SQL Java
[翻译]Mybatis useGeneratedKeys参数的使用和自增主键的获取方式
对于支持自动生成记录主键的数据库,如 MySQL 和 SQL Server,将 useGeneratedKeys 参数的值设置为 true,就可以在记录insert成功后获得数据库自动生成的主键 ID
717 0
|
存储 Kubernetes Cloud Native
带你读《云原生机密计算最佳实践白皮书》——基于runtime-attestation使用机密容器(3)
带你读《云原生机密计算最佳实践白皮书》——基于runtime-attestation使用机密容器(3)
411 0