热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

GPU/CUDA是SIMD的核心吗?

如何解决《GPU/CUDA是SIMD的核心吗?》经验,为你挑选了2个好方法。

我们来看看nVidia Fermi Compute Architecture.它说:

第一款基于Fermi的GPU采用30亿个晶体管实现,具有多达512个CUDA内核.CUDA核心为每个线程执行浮点或整数指令.512个CUDA内核由16个SM组成,每个内核32个内核.

[...]

每个CUDA处理器都有一个完全流水线的整数算术逻辑单元(ALU)和浮点单元(FPU).

[...]

在Fermi中,新设计的整数ALU支持所有指令的完整32位精度,符合标准编程语言要求.整数ALU也经过优化,可有效支持64位和扩展精度操作.V

据我所知,以及对我来说不清楚的是,GPU在所谓的warp中执行线程,每个warp由~32个线程组成.每个warp只分配给一个核心(是真的吗?).这是否意味着,单个SM的32个内核中的每一个都是SIMD处理器,其中一条指令处理32个数据部分?如果是这样,那么为什么我们说warp中有32个线程,而不是单个SIMD线程?为什么内核有时被称为标量处理器,而不是矢量处理器



1> Robert Crove..:

每个warp只分配给一个核心(是真的吗?).

不,这不是真的.warp是32个执行线程的逻辑集合.要从单个warp执行单个指令,warp调度程序通常必须调度32个执行单元(或"核心",尽管"核心"的定义有些松散).

核心实际上是标量处理器,而不是矢量处理器.32个核心(或执行单元)由warp调度程序编组,以跨32个线程执行单个指令,这是"SIMT"名字来源的地方.


我想这个问题可以转化为关于GPU执行机制的完整教程.我鼓励你利用现有的资源,因为这涵盖了其他地方多次覆盖的基础.SM中的warp调度程序可以在每个指令周期从*任何可用的warp*中选择新指令.可用的warp可能来自当前驻留在SM上的任何线程块.指令*不需要来自相同的warp或threadblock*,从一个周期到下一个周期.GPU是一种延迟隐藏的机器,并且喜欢有许多可用的warp.
幻灯片中的绿点表示硬件资源(执行单元),而不是线程.图片具体表示"GK110框图".这是一个硬件芯片,而不是一个线程集合.当选择其中一条指令执行时,单个warp在32个执行单元中"扩展"该时钟周期.在下一个时钟周期,可以在那些相同的执行单元上安排不同的warp.SM以某种未定义的顺序执行warp - 基于指令选择的特定顺序.
GK110每个SM没有32个核心.这在任何地方都没有说明.(也许你很困惑*Fermi* - 你最初的白皮书链接 - 与*Kepler* - 视频中讨论的内容.)GK110每个SM有192个核心.这就像说图中的单个SM中有192个绿色页面."执行单位=核心"是."核心=一个线程"没有.CPU核心是否等于CPU线程?它不是.一个是硬件资源.另一个是指令的逻辑集合.当warp调度程序在那里放置指令时,线程(SW)*将*映射到绿点(HW)*.
当我说执行单位时,我的意思是,为了讨论的目的,一个核心.GK110 SM有192个实际上是一个执行单元,每个时钟可以退出1个单精度浮点运算(2个用于融合乘法加法).还有其他类型的执行单元 - 每个SM的数量不同 - 用于执行其他类型的操作,例如双精度浮点,超越函数,加载/存储操作等.指令序列的执行将通常不完全由单个核心或执行单元(类型)执行
我相信Kepler warp调度程序可以在同一个循环中执行来自同一线程的2条指令,但受某些限制.参考[GK110白皮书](http://www.nvidia.com/content/PDF/kepler/NVIDIA-kepler-GK110-Architecture-Whitepaper.pdf),"Kepler的quad warp调度程序选择了四个warp和两个独立的指令每个周期可以发送每个周期"

2> einpoklum - ..:

CUDA“核心”可以被认为是SIMD通道。

首先让我们回想一下,术语“ CUDA核心”是nVIDIA的营销口号。这些不是CPU具有内核的核心。同样,“ CUDA线程”与我们在CPU上已知的线程不同。

与GPU上的CPU内核等效的是“对称多处理器”:它具有自己的指令调度程序/调度程序,自己的L1高速缓存,自己的共享内存等。它是CUDA线程块,而不是翘曲分配给GPU内核(即流式多处理器)的对象。在SM中,将选择经纱以为整个经纱排定指令。从CUDA的角度来看,它们是32个独立的线程,这些线程是指令锁定的。但这与说warp就像单线程,只执行32通道宽的SIMD指令一样,没有什么不同。当然,这并不是一个完美的类比,但我觉得这很不错。您对CPU SIMD通道不太了解的是对正在执行的通道的掩盖,其中不活动的通道不会对有效通道的寄存器值设置,内存写入等产生影响。

我希望这对您有直觉的意义(或者您在过去两年中已经弄清楚了这一点)。


推荐阅读
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 达人评测 酷睿i5 12450h和锐龙r7 5800h选哪个好 i512450h和r75800h对比
    本文介绍了达人评测酷睿i5 12450h和锐龙r7 5800h选哪个好的相关知识,包括两者的基本配置和重要考虑点。希望对你在选择时提供一定的参考价值。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 嵌入式处理器的架构与内核发展历程
    本文主要介绍了嵌入式处理器的架构与内核发展历程,包括不同架构的指令集的变化,以及内核的流水线和结构。通过对ARM架构的分析,可以更好地理解嵌入式处理器的架构与内核的关系。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
author-avatar
迷-糊-娃娃
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有