衡阳网站seo管理系统和网站哪个好做
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:53
当前位置: 首页 > news >正文
衡阳网站seo,管理系统和网站哪个好做,门户网站建设公司,泰州建站程序博客补充#xff1a;
CUDA C 编程指南学习_c cuda编程-CSDN博客https://blog.csdn.net/qq_62704693/article/details/141225395?spm1001.2014.3001.5501NVIDIA GPU 架构是围绕可扩展的多线程流式多处理器 #xff08;SM#xff09; 阵列构建的。当主机 CPU 上的 CUDA 程序…博客补充
CUDA C 编程指南学习_c cuda编程-CSDN博客https://blog.csdn.net/qq_62704693/article/details/141225395?spm1001.2014.3001.5501NVIDIA GPU 架构是围绕可扩展的多线程流式多处理器 SM 阵列构建的。当主机 CPU 上的 CUDA 程序调用内核网格时网格的块被枚举并分发到具有可用执行能力的多处理器。线程块的线程在一个多处理器上并发执行多个线程块可以在一个多处理器上并发执行。当线程块终止时将在空出的多处理器上启动新块。
多处理器旨在并发执行数百个线程。为了管理如此大量的线程它采用了一种称为 SIMT单指令、多线程的独特架构如 SIMT 架构中所述。指令是流水线化的利用单个线程中的指令级并行性以及通过同步硬件多线程实现的广泛线程级并行性如硬件多线程中所述。与 CPU 内核不同它们是按顺序发布的没有分支预测或推测执行。
SIMT 体系结构和硬件多线程描述了所有设备通用的流式多处理器的体系结构功能。计算能力 5.x、计算能力 6.x 和计算能力 7.x 分别提供了计算能力 5.x、6.x 和 7.x 的设备的具体信息。
NVIDIA GPU 架构使用 little-endian 表示。
4.1. SIMT 架构
多处理器以 32 个并行线程称为 warp为一组创建、管理、调度和执行线程。组成 warp 的各个线程从同一个程序地址一起开始但它们有自己的指令地址、计数器和寄存器状态因此可以自由分支和独立执行。经线一词起源于织造这是第一种平行线技术。半 Warp 是 Warp 的前半部分或后半部分。四分之一经纱是经纱的第一、第二、第三或第四四分之一。
当一个多处理器被赋予一个或多个线程块来执行时它会将它们划分为 warp每个 warp 都由 warp 调度器调度执行。块被划分为 warps 的方式总是相同的;每个 warp 都包含连续的线程线程 ID 不断增加第一个 warp 包含线程 0。线程层次结构 描述线程 ID 与块中的线程索引的关系。
一个 warp 一次执行一条公共指令因此当 warp 的所有 32 个线程都同意其执行路径时就可以实现最高效率。如果 warp 的线程通过数据依赖的条件分支发散则 warp 将执行所采用的每个分支路径从而禁用不在该路径上的线程。分支发散仅发生在 warp 内;不同的 WARP 独立执行无论它们是执行公共代码路径还是不相交的代码路径。
SIMT 架构类似于 SIMD Single Instruction Multiple Data 向量组织因为单个指令控制多个处理元素。一个关键区别在于SIMD 向量组织向软件公开 SIMD 宽度而 SIMT 指令指定单个线程的执行和分支行为。与 SIMD 向量机相比SIMT 使程序员能够为独立的标量线程编写线程级并行代码以及为协调线程编写数据并行代码。为了正确性程序员基本上可以忽略 SIMT 行为;但是通过注意代码很少要求 warp 中的线程发散可以实现实质性的性能改进。在实践中这类似于传统代码中 cache 行的作用 在设计正确性时可以安全地忽略 Cache 行大小但在设计峰值性能时必须在代码结构中考虑它。另一方面矢量架构需要软件将负载合并为矢量并手动管理发散。
在 NVIDIA Volta 之前warp 使用在 warp 中的所有 32 个线程之间共享的单个程序计数器以及指定 warp 活动线程的活动掩码。因此来自不同区域或不同执行状态的同一 warp 的线程无法相互发出信号或交换数据并且需要精细共享由锁或互斥锁保护的数据的算法很容易导致死锁具体取决于争用线程来自哪个 warp。
从 NVIDIA Volta 架构开始独立线程调度允许线程之间完全并发而不管 warp 如何。使用独立线程调度GPU 可以维护每个线程的执行状态包括程序计数器和调用堆栈并且可以在每个线程的粒度上产生执行以更好地利用执行资源或允许一个线程等待另一个线程生成数据。调度优化器确定如何将来自同一 warp 的活动线程分组到 SIMT 单元中。这保留了与以前的 NVIDIA GPU 一样 SIMT 执行的高吞吐量但具有更大的灵活性线程现在可以以 sub-warp 粒度发散和重新收敛。
如果开发人员对 warp-synchronicity 做出假设则独立线程调度可能会导致一组与预期完全不同的线程参与执行的代码2以前的硬件架构。特别是任何 warp 同步代码例如无同步、intra-warp 减少都应该重新审视以确保与 NVIDIA Volta 及更高版本兼容。有关更多详细信息请参阅 Compute Capability 7.x。 注意 参与当前指令的 warp 线程称为活动线程而不在当前指令上的线程处于非活动状态禁用。线程处于非活动状态的原因有很多包括比其 warp 的其他线程更早退出采用的分支路径与 warp 当前执行的分支路径不同或者是线程数不是 warp 大小的倍数的块的最后一个线程。 如果 warp 执行的非原子指令写入 warp 的多个线程的全局或共享内存中的同一位置则对该位置发生的序列化写入次数会因设备的计算能力而异请参阅计算能力 5.x、计算能力 6.x、 和 Compute Capability 7.x并且哪个线程执行最终写入是不确定的。 如果 warp 执行的原子指令对 warp 的多个线程的全局内存中的同一位置进行读取、修改和写入则对该位置的每次读取/修改/写入都会发生并且它们都被序列化但它们出现的顺序是不确定的。 4.2. 硬件多线程
由 multiprocessor 处理的每个 warp 的执行上下文 程序计数器、寄存器等 在 warp 的整个生命周期内都保留在片上。因此从一个执行上下文切换到另一个执行上下文没有成本并且在每个指令发出时warp 调度器都会选择一个具有线程准备执行其下一条指令warp 的活动线程的 warp并向这些线程发出指令。
特别是每个 multiprocessor 都有一组在 warps 之间分区的 32 位 registers以及一个在 thread blocks 之间分区的 parallel data cache 或 shared memory。
对于给定内核可以在 multiprocessor 上驻留并一起处理的 blocks 和 warp 的数量取决于 kernel 使用的 registers 和 shared memory 的数量以及 multiprocessor 上可用的 registers 和 shared memory 的数量。每个多处理器也有最大常驻块数和最大常驻 warp 数。这些限制以及 multiprocessor 上可用的 registers 和 shared memory 数量是器件计算能力的函数在 Compute Capabilities 中给出。如果每个 multiprocessor 没有足够的 registers 或 shared memory 来处理至少一个 block则内核将无法启动。
一个区块中的 warp 总数如下 T 是每个块的线程数 Wsize 是变形大小等于 32 ceilx y 等于 x 向上舍入到最接近的 y 的倍数。
为块分配的寄存器总数和共享内存总量记录在 CUDA 工具包中提供的 CUDA 占用计算器中。
2
术语 warp-synchronous 是指隐式假设同一 warp 中的线程在每条指令上都同步的代码。
- 上一篇: 衡阳市建设工程质量监督站网站怎么制作表白链接
- 下一篇: 衡阳网站seo优化coreldraw
相关文章
-
衡阳市建设工程质量监督站网站怎么制作表白链接
衡阳市建设工程质量监督站网站怎么制作表白链接
- 技术栈
- 2026年03月21日
-
衡阳企业网站中企动力是干嘛的
衡阳企业网站中企动力是干嘛的
- 技术栈
- 2026年03月21日
-
衡水做网站开发的湖南最新消息今天
衡水做网站开发的湖南最新消息今天
- 技术栈
- 2026年03月21日
-
衡阳网站seo优化coreldraw
衡阳网站seo优化coreldraw
- 技术栈
- 2026年03月21日
-
衡阳网站建设ss0734制作网页软件有哪些
衡阳网站建设ss0734制作网页软件有哪些
- 技术栈
- 2026年03月21日
-
衡阳网站建设设计玉溪网站开发公司
衡阳网站建设设计玉溪网站开发公司
- 技术栈
- 2026年03月21日
