对于Kepler架构GPU的新特性——HyperQ,往上的讨论贴子还是比较少的,官方文档中也只是有一个sample,给出了代码,但对于有些情况下,HyperQ不能成功的原因没有过多的涉及,我们今天就来谈一谈。HyperQ允许多个CPU线程或进程同时向一个GPU发射任务,提高了GPU的使用率。
        我们来看一个例子:

C/C++ code?
1
2
3
4
5
6
for(int i = 0; i < 3; i++)
{
        A<<<gdim, bdim, smem, streams[i]>>>();
        B<<<gdim, bdim, smem, streams[i]>>>();
        C<<<gdim, bdim, smem, streams[i]>>>();
}

如果是在Fermi架构上运行上述代码,每一个流的三个Kernel函数会串行执行,它们有各自的任务队列,根据流的特性,只有A1 C0和A2 C1会具有并行性,如下图:

        我们再来看一个开发包自带的例子:

C/C++ code?
1
2
3
4
5
6
7
for(int i = 0; i < nstreams; ++i)
{
        kernel_A<<<1, 1, 0, streams[i]>>>(&d_a[2 * i], time_clocks);
        total_chocks += time_clocks;
        kernel_B<<<1, 1, 0, streams[i]>>>(&d_a[2 * i + 1], time_clocks);
        total_clocks += time_clocks;
}

下图是在Fermi架构的时序图:

        而在具有HyperQ特性的Kepler架构的GPU上,时序图是这样子的:

        可见,HyperQ特性将同时执行所有流的Kernel函数。
        下面我们来讨论两个问题:
         1. HyperQ和流的关系:
        HyperQ和流的区别。我们看到上边的例子都有流的参与,流可以实现“数据的传输和kernel函数同步执行”,即传输数据的同时,执行kernel函数;而HyperQ则是更高大上的实现了kernel同时执行。如果程序的函数执行时间远远大于数据的传输时间,那么HyperQ就减少了很多很多的执行时间。二者实现的功能是不一样的,这对于初次接触HyperQ的小伙伴们是容易迷惑的地方。
         2. 只要是Kepler架构的GPU,按照上述例子那样写代码,就一定能实现kernel函数并行吗?
        不一定。这句话正确的描述应该是:“只要是Kepler架构的GPU就可以支持HyperQ特性,而HyperQ能不能达到使kernel函数并行的目的是不一定的,要看GPU的资源状况”。什么意思?就是说:如果GPU还有资源,包括显存、空闲的SMX等,那么是可以并行的,如果一个kernel已经让GPU满载运作了,还怎么加入第二个kernel,更不用说多个并行了。有兴趣的小伙伴们可以自行将CUDA中HyperQ的例子使用的资源量加大,在观察时序图。因此,任何高大上的新特性,都是有使用前提的,不能一味的盲目使用。
        上述两点就是本人使用HyperQ的心得,如果在资源允许、GPU没有满载的情况下,HyperQ还是一个很好的特性,减少了程序运行时间;但如果kernel函数的任务量很繁重,那么HyperQ就体现不出kernel并行的特点了,实际执行还是串行的。大家也来谈谈你们使用HyperQ时遇到的问题吧~

kepler架构GPU新特性--HyperQ相关推荐

  1. 超融合基础架构HCI新特性

    重复数据删除和压缩: 重复数据擦除支持REFS格式(原来仅支持NTFS),通过重擦和压缩,SDS可以获得高达10倍的空间使用,Windows Admin Center一键式启用,多线程处理体系结构最大 ...

  2. Docker跨平台架构的新特性buildx的启用方式

    Docker在19.03引入了一个新的特性,使得Docker可以构建不同CPU体系结构的镜像,比如ARM镜像,这是不必引入模拟器的情况下,Docker自身所提供的原生统一构建机制,但是使用时需要进行设 ...

  3. 老黄投下新核弹:英伟达十年力作图灵架构,新GPU支持光线追踪

    夏乙 发自 凹非寺 量子位 出品 | 公众号 QbitAI "买得越多,省得越多." 今天早上,英伟达CEO黄仁勋,在温哥华的SIGGRAPH会议上,又喊出了他的GPU发布宣言,扔 ...

  4. oracle 12c dg新特性,oracle 12c:新特性-网格(Grid)基础架构的增强

    oracle 12c:新特性-网格(Grid)基础架构的增强,传统标准集群和Flex集群. Flex 集群 Oracle 12c 在集群安装时支持两类配置:传统标准集群和Flex集群.在一个传统标准集 ...

  5. Intel Skylake (Server) 架构/微架构/流水线 (2) - 体系结构新特性

    Intel Skylake Server微架构引入了如下的新特性(某些特性可能不是全系处理器标配),允许程序员为应用程序优化性能和能耗. 处理器核基于Intel Skylake Server微架构,这 ...

  6. 不停歇的Java即将发布JDK16新特性速览及从菜鸟到架构师[图]

    一.不停歇的Java即将发布JDK16新特性速览 当开发者深陷Java8版本之际,这边下一版本Java16有了最新的消息,与Java15一样,作为短期版本,Oracle仅提供6个月的支持. 根据发布计 ...

  7. hadoop3.0新特性介绍

    hadoop3.0新特性介绍 1. 基于jdk1.8(最低版本要求) 2. mr采用基于内存的计算,提升性能(快spark 10倍) 3. hdfs 通过最近black块计算,加快数据获取速度(块大小 ...

  8. 如何利用 NVIDIA 安培架构 GPU 的新一代 Tensor Core 对计算进行极致加速

    时隔三年,英伟达最强芯片 Tesla V100 终于有了继任者,那就是在2020年5月14日, NVIDIA发布的最新GPU A100. GPU A100不仅能实现 1-50 倍的扩展,还让其吞吐性能 ...

  9. AI算力霸主诞生!英伟达发布首款安培架构GPU,性能提升20倍

    来源:雷锋网 由于疫情缘故,本该在今年3月英伟达(NVIDIA)GTC 2020上发布的安培(Ampere)架构曝光多次却一直未发布. 5月15日,英伟达CEO黄仁勋发布了英伟达新一代GPU架构安培, ...

最新文章

  1. DOCX file format element list
  2. JAVA进阶day07JNI(java调用c)A部分
  3. TeXmacs - 所见即所得 - 专业排版软件
  4. 继Nat Friedman离开Github之后,Xamarin联合创始人离开微软
  5. TIOBE 12 月编程语言排行榜:争夺年度编程语言,Java、C、Python、C# 即将开战!...
  6. L3-029 还原文件 (30 分)-PAT 团体程序设计天梯赛 GPLT
  7. 解决JSP路径问题的方法(jsp文件开头path, basePath作用)
  8. Firefox扩展推荐
  9. linux和windows php pdf转图片,扩展安装imagick和ImageMagick
  10. 好书推荐之周立功《抽象接口技术和组件开发规范及其思想》
  11. 鼠标单击双击事件监听
  12. Tmux_Hotkey
  13. Vue template挂载中el和mouted的使用和区别
  14. 计算机开不了机反复重启,电脑一直重启就是开不了机怎么样解决
  15. Unity3D 2D游戏摄像机的跟随实现
  16. 【Arduino学习笔记】使用L298N电机驱动模块驱动直流电机
  17. [转]普通软件项目开发过程规范(五)—— 总结
  18. 如何从0快速上线一个网站---详细
  19. 如何使用开源搜索引擎制作属于自己的个人网络?
  20. 小孩子竟然也会得抑郁症,孩子得抑郁症怎么办?

热门文章

  1. 剑指offer: 不用加减乘除做加法
  2. Mac本地生成SSHKey的方法
  3. MongoDB Hot Backup 测试及痛点
  4. javascript12-object04-毕包
  5. ICallbackEventHandler使用
  6. poj 3469(最小割)
  7. java 对字符串中的数值排序
  8. NYOJ 496 巡回赛 拓扑排序
  9. vue json 导出 excel
  10. springboot系列八、springboot整合kafka