当前位置: 首页 > news >正文

[10] CUDA程序性能的提升 与 流

CUDA程序性能的提升 与 流

1. CUDA程序性能的提升

  • 在本节中,我们会看到用来遵循的基本的一些性能来提升准则,我们会逐一解释它们

1.1 使用适当的块数量和线程数量

  • 研究表明,如果块的数量是 GPU 的流多处理器数量的两倍,则会给出最佳性能,不过,块和线程的数量与具体的算法实现有关
  • GPU 的流多处理器则可以通过获取设备属性的方法获得

1.2 最大化数学运算效率

  • 数学运算效率的定义是,数学运算操作和访存操作的比率

  • 常见的内核执行有3个瓶颈:卡在计算瓶颈上、卡在访存上和卡在延迟掩盖上:

    • 如果卡在计算上,则应当考虑将一些计算等效的转换成访存,例如一些运算可以尝试转换成存储器查表
    • 如果卡在访存上,则可以将一些访存转换成对应的计算,例如一些数据不是重新载入,而是直接计算出来
  • 缓存的使用也有助于减少存储器访问时间,最终一定程度地辅助达成减少(内核的)全局内存的带宽需求就能减少花费在访存上的时间的目的。高效的使用存储器对提升CUDA程序性能非常重要,当显存带宽是瓶颈的时候,减少带宽需求有助于提升性能

1.3 使用合并的或跨步式的访存

  • 合并访存大致意味着线程束(warp)整体读取或者写入连续的存储器区域,这种对存储器的访问对GPU来说是最高效的。
  • 如果 warp 的线程固定步长地离散式访问某段存储器区域,这叫做跨步式访存,

相关文章:

  • 【面试】Java虚拟机的生命周期
  • 如何在一个 JavaScript 文件中引入另一个 JavaScript 文件
  • android11禁止进入屏保和自动休眠
  • 关于微信小程序低功耗蓝牙ECharts实时刷新(涉及自定义缓冲区)
  • 景源畅信电商:抖音开店步骤是什么?
  • 服装服饰商城小程序的作用是什么
  • 向npm发布自己写的vue组件,使用vite创建项目
  • 一个生动的例子——通过ERC20接口访问Tether合约
  • 继电器的选型和英应用
  • 【Linux系统】--- Linux内核日志等级详解
  • 【Python001】python批量下载、插入与读取Oracle中图片数据(已更新)
  • mysql中的内连接与外连接
  • 新火种AI|寻求合作伙伴,展开豪赌,推出神秘AI项目...苹果能否突破AI困境?
  • 【busybox记录】【shell指令】mkdir
  • K8s service 进阶
  • (三)从jvm层面了解线程的启动和停止
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • 2019年如何成为全栈工程师?
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • JSONP原理
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • js中forEach回调同异步问题
  • Mac转Windows的拯救指南
  • Mysql优化
  • mysql中InnoDB引擎中页的概念
  • passportjs 源码分析
  • ReactNative开发常用的三方模块
  • 关于使用markdown的方法(引自CSDN教程)
  • 免费小说阅读小程序
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 排序算法学习笔记
  • 盘点那些不知名却常用的 Git 操作
  • 前端技术周刊 2019-01-14:客户端存储
  • 如何进阶一名有竞争力的程序员?
  • 算法---两个栈实现一个队列
  • 王永庆:技术创新改变教育未来
  • 新手搭建网站的主要流程
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • $L^p$ 调和函数恒为零
  • (4)(4.6) Triducer
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (十一)手动添加用户和文件的特殊权限
  • (转)为C# Windows服务添加安装程序
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET Remoting学习笔记(三)信道
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • @requestBody写与不写的情况
  • [ NOI 2001 ] 食物链
  • [1]-基于图搜索的路径规划基础
  • [④ADRV902x]: Digital Filter Configuration(发射端)