CUDA学习(二十五)

硬件实施(HARDWARE IMPLEMENTATION):
NVIDIA GPU架构是围绕可扩展的多线程流处理器(SM)阵列构建的。 当主机CPU上的CUDA程序调用内核网格时,网格块被枚举并分配给具有可用执行能力的多处理器。 一个线程块的线程在一个多处理器上同时执行,多个线程块可以在一个多处理器上同时执行。 当线程块终止时,在空闲的多处理器上启动新的块。
多处理器被设计为同时执行数百个线程。 为了管理如此大量的线程,它采用了SIMT架构中描述的称为SIMT(单指令,多线程)的独特架构。 这些指令被流水线化以利用单个线程内的指令级并行性,以及通过硬件多线程中详细描述的同时硬件多线程广泛地实现线程级并行性。 与CPU内核不同,它们是按顺序发布的,没有分支预测,也没有推测性执行。
SIMT体系结构和硬件多线程描述了所有设备共有的流式多处理器的体系结构特征。 计算能力3.x,计算能力5.x,计算能力6.x和计算能力7.x分别为计算能力3.x,5.x,6.x和7.x的设备提供具体信息。
SIMT架构:
多处理器创建,管理,调度和执行32个并行线程组的线程,称为warps。 单独的线程在同一个程序地址上组成一个warp起始点,但是它们有自己的指令地址计数器和寄存器状态,因此可以自由地分支和独立执行。 术语warp起源于编织,第一个平行螺纹技术。 半经线是经线的前半部分或后半部分。 四分之一翘曲是经线的第一,二,三或四分之一。
当一个多处理器被赋予一个或多个线程块执行时,它将它们分成warp,每个warp被warp调度器调度执行。 块被划分成扭曲的方式总是相同的; 每个warp包含连续的,增加线程ID的线程,第一个warp包含线程0. ThreadHierarchy描述线程ID如何与块中的线程索引相关。
一个warp一次执行一个共同的指令,所以当一个warp的所有32个线程都同意它们的执行路径时,就可以实现完全的效率。 如果warp的线程通过依赖于数据的条件分支发散,则warp执行每个分支路径,禁用不在该路径上的线程。 分支发散只发生在经线内; 不同的warps独立执行,不管它们是执行共同的还是不相交的代码路径。
SIMT体系结构类似于SIMD(单指令多数据)矢量组织,因为单指令控制多个处理单元。一个关键的区别是SIMD向量组织将SIMD宽度暴露给软件,而SIMT指令指定单个线程的执行和分支行为。与SIMD向量机相反,SIMT使程序员能够为独立标量线程编写线程级并行代码,并为协调线程编写数据并行代码。为了正确,程序员可以基本上忽略SIMT行为;然而,通过注意代码很少要求变形中的线程发散,可以实现显着的性能改进。实际上,这与传统代码中缓存行的作用类似:在设计正确性时,可以安全地忽略缓存行大小,但在设计峰值性能时必须考虑代码结构。另一方面,矢量架构需要软件将负载合并到矢量中,并手动管理差异。
timg

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/460371

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。