- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CUDA-GPU-入门介绍
--An introduction to beginners GPU CUDA 内容 1 GPU高性能计算 2 CUDA架构 3 CUDA环境搭建 4 CUDA简单例子 1. GPU高性能计算 GPU: 从图形处理到通用计算 GPU: Graphic Processing Unit GPU为高度并行的实时3D渲染计算而设计, 高GFLOPS , 高带宽 3D渲染技术及3D API的发展, 促进GPU向通用计算处理器发展 NVIDIA GPU为通用计算专门优化设计, 于2007年推出CUDA GPU多”核”:SM 真正意义的变革 通用计算 重要突破 GPU通用计 算开始出现 GeForce 8800 GeForce 6800 GeForce 3 GeForce 256 世界上第一个GPU 1. GPU高性能计算 GPU VS CPU: 计算能力 8x double precision ECC L1, L2 Caches 1 TF Single Precision 4GB Memory NVIDIA GPU X86 CPU 1. GPU高性能计算 GPU VS CPU: 硬件体系 目标: 最小的指令延迟 巨大的缓存 复杂的控制逻辑 目标: 最大吞吐量 更多寄存器、高带宽 通过线程轮换隐藏延迟 多个线程共享控制逻辑 1. GPU高性能计算 GPU应用领域 用同一计算方法对很大量的数据进行并行计算 数据相关度低 计算密度大,计算所花的时间比数据存储的时间大得多 1. GPU高性能计算 GPU关键概念 SM: Stream Multiprocessor SP: Stream Processor 每个SM包含8个SP, 由SM取指, 解码, 发射到各个SP, GPU可看作是一组SM SMEM: shared memory, GPU片内每个SM所占有的高速存储器 Global memory: GPU板载显存 2. CUDA架构 CUDA– Compute Unified Device Architecture 由NVIDIA 2007年推出的通用并行计算架构 第一种不需要借助图形学API就可以使用类C语言极性通用计算的开发环境和软件体系 在采用了统一架构的GPU上运行 NVIDIA提供完全免费的CUDA开发工具包和SDK 对标准C语言的简单扩展, 以最小的扩展集实现CUDA架构 2. CUDA架构 存储器模型 Thread私有register (RW) Thread私有local memory (RW) Block的shared memory (RW) Grid的global memory (RW) Grid的constant memory (RO) Grid的texture memory (RO) Host可以通过API完成显存与主存交互 2. CUDA架构 线程组织模型 每个内核程序 (Kernel) 包含非常多的线程 所有线程执行相同的顺序程序 层次结构:Grid ? Block ? Thread 线程被划分成线程块 (Block) 同一线程块内的线程可以通过共享SM资源相互协作 每个线程和线程块拥有唯一ID 通过内建变量读取 2. CUDA架构 线程映射 Thread ? SP Block ? SM Grid ? GPU 把GPU看作一个包含很多个核心的多核处理器 有自己的本地存储器 大量的线程并行执行 每个线程拥有私有变量/存储区域 线程之间拥有共享的存储区域 与CPU的差别: GPU的线程是轻量级的(代码少,硬件轮换,资源负担小);需要很大量的线程才能使GPU满载 2. CUDA架构 CPU/GPU异构并行模型 由CPU端 (主机端) 传送参数及配置Kernel的执行 (Block, Thread数量, 尺寸等) Kernel在GPU (设备端) 上执行 显存分配, 显存与PC主存间的交互通过API完成 2. CUDA架构 CUDA C扩展: 编译器nvcc CUDA源程序 -- CU文件 编译器驱动 分离主机端源代码和设备端源代码 编译设备端源代码到GPU汇编代码(PTX)或GPU二进制代码(CUBIN) 把最终GPU代码包裹在主机端源代码中 CUDA C扩展: API Driver API 调用Kernel较繁琐 Runtime API 较方便 2. CUDA架构 CUDA C扩展: 函数限定符 __global__ GPU Kernel代码, 由CPU发起, 返回void, 不能由其它Kernel调用 __device__ 由GPU Kernel调用的函数, 不能由CPU发起 __host__ 在CPU上执行的函数 CUDA C扩展: 变量限定
文档评论(0)