CUDA -编辑模型

编程模型可以理解为,我们要用到的语法,内存结构,线程结构等这些我们写程序时我们自己控制的部分,这些部分控制了异构计算设备的工作模式,都是属于编程模型。

GPU中大致可以分为:

  • 核函数
  • 内存管理
  • 线程管理

  • 从宏观上我们可以从以下几个环节完成CUDA应用开发:
  1. 领域层
  2. 逻辑层
  3. 硬件层第一步就是在领域层(也就是你所要解决问题的条件)分析数据和函数,以便在并行运行环境中能正确,高效地解决问题。
    当分析设计完程序就进入了编程阶段,我们关注点应转向如何组织并发进程,这个阶段要从逻辑层面思考。
    CUDA模型主要的一个功能就是线程层结构抽象的概念,以允许控制线程行为。这个抽象为并行变成提供了良好的可扩展性(这个扩展性后面有提到,就是一个CUDA程序可以在不同的GPU机器上运行,即使计算能力不同)。
    在硬件层上,通过理解线程如何映射到机器上,能充分帮助我们提高性能。

线程管理

我们必须明确,一个核函数只能有一个gri
d,一个grid可以有很多个块,每个块可以有很多的线程

一个线程块block中的线程可以完成下述协作:

  • 同步
  • 共享内存

不同块内线程不能相互影响!他们是物理隔离的

依靠下面两个内置结构体确定线程标号:

  • blockIdx(线程块在线程网格内的位置索引)
  • threadIdx(线程在线程块内的位置索引)

posted on 2023-08-23 12:20  Ultraman_X  阅读(14)  评论(0编辑  收藏  举报

导航