浅谈CUDA并行计算体系
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
等。 而设备程序主要就是完成并行计算的任务。 C U D A 编程模 型分为两个主要部分 : C U D A 软件架构和C U D A 硬件架构。 其中 c u D A 软件架构又包括了软件栈、 通用编程模型和存储模 型三 个方面。 下面将从上述 内容对C U D A 的编程模型进行介绍。
由英伟达 ( N V I D I A ) 公司推 出的一种基于G P U 通 用计算的编程 块 , 线程索引( x , y ’ z ) 所对应 的线程 I D 为x + y m + z m n 。 C U D A 线 模型和计算体系。 该架构不需要借助图像学A P I , 直接使用类 程 的开辟是根据所需解决问题 的数据大小来确定的, 而每个 C 语言即可完成并行计算, 使得使用G P U 处理图像中的复杂计 线程块 内的线程 数由于其共享一个核心处理器的存储器 资 算 成 为可 能 。 源, 则块内线程 数量是有 限制的, 这个可 以通过N V I D I A 给出
摘 要: 近年来, 图形处理器 ( G r a p h i c P r o c e s s U n i t , G P U ) 的快速 发展使得其逐步用于通用计算。 在性能各 异的并行计算
平台中, 英伟达 ( N V I D I A ) 公 司推 出的计算统一设备 架构 ( C o m p u t e U n i f i e d D e v i c e A r c h i t e c t u r e , C U D A ) 因为充分 利用G P u ( G r a p h i c P r o c e s s i n g u n i t ) 强大的计算能力实现了通用并行 计算而受到研 究者们的青睐。
1 . 1软件 模 型 根 据N V I D I A 的官方 文 档 , C U D A 的软 件体 系共 分3 个 方面 :
的资料查询 。 一般 为了使每个线程块 的调度达到最优值 , 每 个块 内的线程数一般设为1 6 的倍数, 但不能超过限定值 。 3 存储器模型 C U D A 内部存储器的结构是由寄存器、 全局存储器 、 共享 内存、 本地寄存器 、 常量 内存和纹理内存组成 。 下面是对这6 个存储器的介绍: 寄存器位于G P U 晶体片中, 在各种C U D A 存储结构中, 它的访 问速度快, 因为它是线程所私有的, 不允许其他线程访问和使 用。 但 由于G P U 硬件的限制, 寄存器不是无限的, 每个线程块中 的寄存器是事先分配好的。 但如果内核函数中分配的寄存器数
1 C UD A 编 程 模 型
C U D A 将C P U 串行处理和G P U 并行处理完美的结合起来。 一
个完 整的C U D A 程序 是由主机 ( C P U ) 程 序和设备 ( G P U ) 程 序 共 同组成, 主机程序主要是为设备程序的运行做前期准备工 作, 主要包括数据初始化 、 数据拷贝、 内核函数间数 据交换
量 超 过了寄存 器的总数 , 编译器 会 默认 的将 数 据转 入设备端的
C U D A 设备驱动程 序、 C U D A 运行时库和编程接口、 C U D A  ̄方函 数库 。 其中, 设备驱动器是直接作用于G P U 上的, 开发者可以 通过C U D A 运行时库和C U D A 函数库中的函数调用来使用设备。 C U D A 编程模型可以根据不同的需求提供不同的A P I , 开发者 可根据对G P U 的控制程度来使用 。 并且为了很 好的利用C U D A 架构, C U D A 还提供了一 系列的辅助开发、 调试的工具 。
本地内存中, 这样就会大大降低程序数据访问的效率。 全局寄存器也称之为线性寄存器 , 占设备 内存的D R A M 的 大部分空间, 在 内核函数运行时, 所有 的线程都可 以读 写其 中的数据。 正因如此, 它的访 问速度较慢 , 耗时较多, 线程访 问全局寄存器一般都要花费几百个时间周期 。 全局寄存器一 般在C P U 中完成数据空间的开辟、 数据的拷贝和传输、 数据的 1 . 2硬件 模 型 释放等操作。 软件程 序的运行是建立在硬件的基础 上的, 而G P U 之所 常量存储器位于显存 中, 空间大小一般为6 4 K , 是一段只 以能够比C P U 处理数据更加有效, 在于G P U 中有更多的晶体结 读的地址空间, 由于其具有缓存并且无访问冲突的优势, 常 构可用于计算。 而在C U D A 的硬件架构中, 流处理器阵列是 由 常 用于常 数 的访 问。 多个线程处理器簇组成 , 而每个T P C 又是由多个流处理器组 本地存储器是位于编译器分配的全局存储 中, 是归每个 成的。 每个流处理器 拥有一套完整 的逻辑处理单元, 就有一 系列的功能 , 如取值、 编码、 译码等 。 每个流处理器是由8 个 流处理单元和2 组超级函数单元构成。 2 线程模型 在C U D A 编程模 型中是 通过大量 的并行线程来实现计算 的, 因此C U D A 架构下最小的执行单元线程 ( t h r e a d ) 。 每个 线 程块 中是 由多个可以通信 的线程组 成, 每个 线程和线程块 都有唯一的标示I D , 则可以通过索引确切定位到每个线程 。 线程的索引和线程的I D 是与线程块 的维度所确定的, 一维线 线程所私有的数据空间, 与全局存储器相同, 其在程序运行 过程 中不会缓存 , 所 以其访问速度也较慢。 本地存储器一般 用来存放内核函数所声明的变量。 共享存 储器是可 以被 同一块中的所有线 程访 问的可读 写存储器 , 它的生存期就是块的生命期。 在没有冲突的情况 下, 访 问共享存储 器几乎与访问寄存器 一样快 , 是实现线程 间通信 的最 好方法 。 在 同一个 块 内, 所 有 的线 程都能够读 共享存储器 中的数据 , 相比于A M D 的显卡来 说, 共享存储 器
关键词: 图形处理器; C U D A ; 并行处理
0 引言
程 索引和I D 是相 同的, 二维维度 为( m , n ) 的线程 块, 线程索
C U D A ( C o m p u t e U n i f i e d D e v i c e A r c h i t e c t u r e ) 模型是 引( x , y ) 所对应的线程I D 为x + y m ; 三 维维度为 ( m , n , k ) 的线程
第6 期
2 0 1 5 钽3
无线 互联 科技
Wi re l e s s I n t e rn e t T e C hn o i o
No. 6 March,201 5
浅谈C U ห้องสมุดไป่ตู้ D A 并行计算体系
叶毅 嘉
( 南昌航 空大学信息工程 学院, 江西 南昌 3 3 0 0 6 3 )