CUDA基础
来源:互联网 发布:underscore.js源码分析 编辑:程序博客网 时间:2024/05/18 12:35
1. 设备的计算能力:设备计算能力的版本描述了一种GPU对CUDA功能的支持程度,版本号用两位小数表示,如1.3硬件,小数点的前一位表示设备的核心架构,小数点后一位表示更加细微的进步。
2. CUDA的安装和编译:需要下载相应显卡版本的驱动、CUDA工具包和CUDA SDK包。
3. CUDA的编程模型:CUDA模型将CPU作为主机(Host),GPU作为设备(Device),cpu和gpu协同进行异构运算,cpu负责逻辑性强的事务处理和串行运算,而GPU负责执行高度线程化的并行处理任务。运行在GPU上的CUDA并行计算函数称为kernel(内核函数),该kernel函数存在两个层次的并行,Grid中的block间的并行和block中的thread间并行。kernel函数通过 __global__标识符定义,如__global__ void myKernel(float *A){},在调用的使用则使用myKernel<<<1,N>>>(A)形式对myKernel内核函数进行调用,其中<<<>>>运算符中是内核函数的执行参数,用于说明执行内核函数的线程数量以及线程是如何进行组织的,1表示grid中只有一个block,每个block中有N个thread。小括号中的史书则是函数的参数。
4. 线程的结构:CUDA有很强的扩展能力,一个程序编译一次后,可以在拥有不同核心数量的硬件上准确运行。为此,CUDA将计算任务映射为大量可以并行执行的线程,并有硬件动态调度和执行这些线程。kernel以线程网格(Grid)的形式组织,每个线程网格由若干个线程块(block)组成,每个线程块又有若干个线程(thread)组成。实际上,kernel是以block为单位执行的,grid只是为了表示可以被并行执行的的block集合。值得注意的是,各block是并行执行的,但是block之间是无法通信的,也没有执行顺序。
5. CUDA C语言:
函数类型限定符:__device__ , __host__, __golbal__
变量类型限定符:__device__, __shared__, __constant__
内建矢量类型: char4, unshort3, double2, dim3
四个内建变量:blockIdx, threadIdx, gridDim, blockDim
kernel执行运算符:<<<>>>,用于指定线程网格和线程块的维度
一些函数:memory fence函数,同步函数,数学函数,纹理函数,测时函数,原子函数,warp vote函数
6. dim3是基于uint3定义的矢量类型,相当于由三个unsigned int组成的结构体。CUDA的内建变量threadIdx和blockIdx均是dim3类型。
7. CUDA存储器模型
如图
图中所示,每一个线程拥有自己的私有存储器Registers和Local Memory; 每一个线程块拥有一块shared memory; grid中的所有线程可以访问Global Memory、Constant Memory和Texture Memory.
下表为每种存储器的详细说明:
存储器
位置
拥有缓存
访问权限
变量生存周期
特点
Register
GPU片内
N/A
Device 可读/写
与thread相同
极低延迟
Local memory
板载显存
无
Device 可读/写
与thread相同
访问速度慢
Shared memory
GPU片内
N/A
Device 可读/写
与thread相同
线程间通信最小延迟
Constant memory
板载显存
有
Device可读,host可读/写
可在程序中保持
存储需要频繁访问的参数
Texture memory
板载显存
有
Device可读,host可读/写
可在程序中保持
Global memory
板载显存
无
Device可读/写,host可读/写
可在程序中保持
高带宽,高延迟
Host memory
Host内存
无
host可读/写
可在程序中保持
Pinned memory
Host内存
无
host可读/写
可在程序中保持
可通过zero-copy功能映射到设备地址空间,从GPU直接访问
- CUDA基础
- CUDA基础
- CUDA基础
- CUDA基础学习笔记
- CUDA编程基础
- cuda编程基础
- CUDA 之基础
- cuda基础学习笔记
- CUDA基础介绍
- cuda底1课:cuda基础
- CUDA Architechure Basics(CUDA 架构基础)
- cuda编程基础学习初探
- 并行编程1:CUDA基础
- CUDA编程基础系列1
- cuda编程基础概念语法
- CUDA编程—硬件基础
- cuda编程基础概念语法
- GPU和CUDA基础介绍
- Flex视频播放及其控制视频大小显示
- 学习笔记
- 监控mysqlreport的shell脚本
- spring3.0 mvc
- 重载,覆盖,隐藏 (写的特别清楚)
- CUDA基础
- python 学习
- javascript 获取form里的表单元素
- ORACLE 10G 手动建库
- NET MVC 2 多语言网站的实现
- JAVA多线程复习
- javascript 阻止表单提交
- Year To Date - YTD
- Visual Studio 2010: Duplicated backslashs '\' are recognized for Directory class