CUDA实践指南(二十五)

简介:

指令优化:
对指令执行方式的了解通常允许进行低级别的优化,尤其是在频繁运行的代码(程序中所谓的热点)中尤其有用。 最佳实践表明,在完成所有更高级别的优化之后执行此优化。
算术指令:
单精度浮点数提供了最佳的性能,并且极大地鼓励了它们的使用。单个算术运算的吞吐量详见CUDA C编程指南。
划分模数:
低优先级:使用移位操作来避免代价大的除法和模数计算。
整数除法和模运算特别昂贵,应尽可能地避免或用位操作替换:如果是2的幂,(i/n)相当于($i>>log_{2}(n)$)和($i%n$)相当于($i&(n-1)$)
如果n是文字,编译器将执行这些转换。 (有关更多信息,请参阅CUDA C编程指南中的性能指南)。
Reciprocal Square Root:
倒数平方根应该总是以单精度的rsqrtf()和双精度的rsqrt()显式调用。 只有在不违反IEEE-754语义时,编译器才会将1.0f / sqrtf(x)优化为rsqrtf()。
其他算术指令:
低优先级:避免将双打自动转换为浮动。
编译器必须偶尔插入转换指令,引入额外的执行周期。 这是:

  • 在char或short上运行的函数通常需要将其操作数转换为int
  • 双精度浮点常量(定义为不带任何类型后缀)用作单精度浮点计算的输入

后一种情况可以通过使用单精度浮点常量来避免,这些常量用f后缀定义,例如3.141592653589793f,1.0f,0.5f。 除了其对性能的影响之外,该后缀还具有准确性含义。 对精度的影响在促使双精度和截断浮点运算中讨论。 请注意,这种区别对计算能力2.x的设备的性能特别重要。
对于单精度代码,强烈建议使用浮点类型和单精度数学函数。 编译不具备双精度支持的设备(例如计算能力为1.2或更低版本的设备)时,每个双精度浮点变量将转换为单精度浮点格式(但保留64位大小) 精度算术降级为单精度算术。
还应该注意的是,CUDA数学库的补充错误函数erfcf()在全单精度精度下特别快速。
用小分数参数求幂:
对于一些分数指数,与通过使用平方根,立方根和它们的倒数使用pow()相比,可以显着加速取幂指数。 对于指数不能完全表示为浮点数(如1/3)的指数,由于使用pow()会放大初始表示误差,因此这可以提供更准确的结果。
1
2

目录
相关文章
|
存储 网络协议 编译器
探索C++14新特性:更强大、更高效的编程
探索C++14新特性:更强大、更高效的编程
探索C++14新特性:更强大、更高效的编程
|
开发框架 机器人 .NET
我们需要安装`pybullet`模块,这可以通过pip来完成:
我们需要安装`pybullet`模块,这可以通过pip来完成:
|
Linux 调度 Windows
【操作系统】线程、多线程模型
【操作系统】线程、多线程模型
235 1
|
机器学习/深度学习 数据采集 人工智能
从零开始构建大语言模型(MEAP)(1)
从零开始构建大语言模型(MEAP)
559 1
|
开发框架 人工智能 前端开发
【GitHub】github学生认证,在vscode中使用copilot的教程
【GitHub】github学生认证,在vscode中使用copilot的教程
2660 4
|
存储 传感器 安全
【C++ std::variant】深入探索 C++ std::variant:构造方法与实践应用
【C++ std::variant】深入探索 C++ std::variant:构造方法与实践应用
622 5
|
计算机视觉
OpenCV 图片尺寸缩放——resize函数
OpenCV 图片尺寸缩放——resize函数
1039 0
OpenCV 图片尺寸缩放——resize函数
|
Android开发 数据安全/隐私保护 开发者
【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 完整代码示例 | 申请权限 | 申请权限原理对话框 | 引导用户手动设置权限对话框 )(一)
【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 完整代码示例 | 申请权限 | 申请权限原理对话框 | 引导用户手动设置权限对话框 )(一)
533 0
【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 完整代码示例 | 申请权限 | 申请权限原理对话框 | 引导用户手动设置权限对话框 )(一)
|
数据安全/隐私保护 Android开发 iOS开发
解决第三方邮箱APP登陆QQ、163邮箱无法验证账户名或密码的问题(IOS、MacOS、Windows、Android)
解决第三方邮箱APP登陆QQ、163邮箱无法验证账户名或密码的问题(IOS、MacOS、Windows、Android)
466 0
|
SQL 弹性计算 Cloud Native
分布式事务 GTS 的价值和原理浅析
GTS 今年双 11 的成绩 今年 2684 亿的背后,有一个默默支撑,低调到几乎被遗忘的中间件云产品——GTS(全局事务服务,Global Transaction Service),稳稳地通过了自 2014 年诞生以来的第 5 次“大考”。
4437 78
分布式事务 GTS 的价值和原理浅析