(Cuda)基础知识(一)

本文地址http://blog.csdn.net/mounty_fsc/article/details/51092920

本部分内容为[1]CUDA_C_Programming_Guide.pdf中笔记

1 限定符

1.1 函数限定符

限定符执行调用
__device__devicedevice
__global__devicehost(计算能力3.x可device )
__host__hosthost

1.2 变量限定符

限定符变量位置device访问host访问生命周期
__device__device(global memory default)所有线程通过运行时库application
__constant__constant memory所有线程通过运行时库application
__shared__shared memory of a thread block块内线程不可访问block
  • 注:__device__可以与__constant____shared__配合使用

2 内建类型变量

2.1 内建类型

  1. 基本类型:char, short, int, long, longlong, float, double
  2. 向量类型:基于基本类型,如int1,int2,int3,int4,uint4等等,每一维分别由x,y,z,w访问
  3. 维度类型:dim3,基于unit3,未初始化的维度赋值为1

2.2 内建变量

变量类型说明
gridDimdim3一般用2维
blockDimdim3一般用2维
blockIdxuint3当前grid中block索引
threadIdxuint3当前block中thread索引
warpSizeintwarp size in threads(1.0:24,>1.0:32)

- warp 线程束

3 Kernels

Kernels为从CPU上调用,在GPU上执行的函数。该函数由GPU上的线程执行N次。
定义方式为:

__global__ void Func(float* parameter);

调用方式为:

Func<<< Dg, Db, Ns, S >>>(parameter);

其中:

  • Dg规定了Grid包含Block的维度(尺寸),类型为dim3
  • Db规定了Block包含Thread的维度(尺寸),类型为dim3
  • Ns规定了每个Block中动态分配的共享存储器(shared memory)大小(可选,默认为0)
  • S为流(可选,默认流为0)

4 线程层次

4.1 线程层次

一个Grid -> 多个Block -> 多个Thread

这里写图片描述

4.2 线程索引

  • 列优先
  • 一维block:线程索引x与线程ID相等
  • 二维block(Dx,Dy):索引index (x, y)的线程ID为 (x + yDx)
  • 三维block(Dx,Dy,Dz):索引index (x, y, z)的线程ID为(x + yDx + zDxDy)

4.3 其它

  • 当前一个block最多可以有1024个线程(老一点设备为512)

5 存储器层次

这里写图片描述

  • 常量、纹理存储器为只读

6 软件栈

这里写图片描述

[1].CUDA_C_Programming_Guide.pdf

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值