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

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

CUDA程序性能的提升 与 流

1. CUDA程序性能的提升

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

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

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

1.2 最大化数学运算效率

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

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

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

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

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

相关文章:

  • TH方程学习(1)
  • 【九十七】【算法分析与设计】图论,迷宫,1207. 大臣的旅费,走出迷宫,石油采集,after与迷宫,逃离迷宫,3205. 最优配餐,路径之谜
  • 【Tools】SpringBoot工程中,对于时间属性从后端返回到前端的格式问题
  • 算法训练营day35
  • 代码随想录-Day23
  • 基于Visual Studio版本的AI编程助手
  • 04-Vue:ref获取页面节点--很简单
  • CBK-D2-安全与架构工程.md
  • Windows驱动开发系列文章一
  • java项目之人事系统源码(springboot+vue+mysql)
  • I/O '24|学习资源焕新,技术灵感升级
  • 前端应用开发实验:表单控件绑定
  • [双指针] --- 快乐数 盛最多水的容器
  • 操作系统 - 输入/输出(I/O)管理
  • 代码随想录算法训练营第22天(py)| 二叉树 | 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
  • 使用C语言实现学生信息管理系统
  • 上下文视觉提示实现zero-shot分割检测及多visual-prompt改造
  • WebGL学习(一)渲染关系
  • 人生建议:向猫学习
  • 软件架构设计属性之三:结构性属性浅析
  • JAVA:多线程常见的面试题和答案
  • 短信平台-平台群发短信
  • C++:类和对象
  • JavaScript条件语句与逻辑判断:解锁代码逻辑的奥秘【含代码示例】
  • sparksql自定义函数
  • 新人开发新系统,旧人维护旧系统
  • 鸿蒙应用模型:【Stage模型开发】概述
  • java使用jdbcTemplatep批量插入数据
  • K8s service 进阶
  • CompletableFuture详细讲解