第三篇:GPU 并行编程的运算架构 您所在的位置:网站首页 cuda流处理器有什么用 第三篇:GPU 并行编程的运算架构

第三篇:GPU 并行编程的运算架构

#第三篇:GPU 并行编程的运算架构| 来源: 网络整理| 查看: 265

前言

      GPU 是如何实现并行的?它实现的方式较之 CPU 的多线程又有什么分别?

      本文将做一个较为细致的分析。

GPU 并行计算架构

      GPU 并行编程的核心在于线程,一个线程就是程序中的一个单一指令流,一个个线程组合在一起就构成了并行计算网格,成为了并行的程序,下图展示了多核 CPU 与 GPU 的计算网格:

  

      二者的区别将在后面探讨。

      下图展示了一个更为细致的 GPU 并行计算架构:

      该图表示,计算网格由多个流处理器构成,每个流处理器又包含 n 多块。

      下面进一步对 GPU 计算网格中的一些概念做细致分析。

      1. 线程

      线程是 GPU 运算中的最小执行单元,线程能够完成一个最小的逻辑意义操作。

      2. 线程束

      线程束是 GPU 中的基本执行单元。GPU 是一组 SIMD 处理器的集合,因此每个线程束中的线程是同时执行的。这个概念是为了隐藏对显存进行读写带来的延迟所引入的。

      目前英伟达公司的显卡此值为 32,不可改动,也不应该对其进行改动。

      3. 线程块

      一个线程块包含多个线程束,在一个线程块内的所有线程,都可以使用共享内存来进行通信、同步。但一个线程块能拥有的最大线程/线程束,和显卡型号有关。

      4. 流多处理器

      流多处理器就相当于 CPU 中的核,负责线程束的执行。同一时刻只能有一个线程束执行。

      5. 流处理器

      流处理器只负责执行线程,结构相对简单。

GPU 和 CPU 在并行计算方面的不同

      1. 任务数量

      CPU 适合比较少量的任务,而 GPU 则适合做大量的任务。

      2. 任务复杂度

      CPU 适合逻辑比较复杂的任务,而 GPU 则适合处理逻辑上相对简单的任务 (可用比较少的语句描述)。

      3. 线程支持方式

      由于 CPU 中线程的寄存器组是公用的,因此CPU 在切换线程的时候,会将线程的寄存器内容保存在 RAM 中,当线程再次启动的时候则会从 RAM 中恢复数据到寄存器。

      而 GPU 中的各个线程则各自拥有其自身的寄存器组,因此其切换速度会快上不少。

      当然,对于单个的线程处理能力来说,CPU 更强。

      4. 处理器分配原则

      CPU 一般是基于时间片轮转调度原则,每个线程固定地执行单个时间片;而 GPU 的策略则是在线程阻塞的时候迅速换入换出。

      5. 数据吞吐量

      GPU 中的每个流处理器就相当于一个 CPU 核,一个 GPU 一般具有 16 个流处理器,而且每个流处理器一次能计算 32 个数。

总结

1. 了解 CUDA 的线程模型是 GPU 并行编程的基础。

2. 根据待处理数据类型来组织线程结构是非常非常重要的,而这并不轻松,尤其是当出现了需要共享的数据时。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有