[转]应付面试,CUDA内存类型

adagio_chen 2014-08-29 01:41:09
加精
前两天楼主面试时被问到CUDA内存类型的问题,关于各种缓存的问题没怎么弄清楚,乱答了一通。。。转个帖子简单归纳一下,下次面试再被问到的话就能回答的比较清晰了。

http://blog.csdn.net/augusdi/article/details/12186939

CUDA存储器类型:

每个线程拥有自己的register and loacal memory;

每个线程块拥有一块shared memory;

所有线程都可以访问global memory;

还有,可以被所有线程访问的只读存储器:constant memory and texture memory


1、 寄存器Register

  寄存器是GPU上的高速缓存器,其基本单元是寄存器文件,每个寄存器文件大小为32bit.

  Kernel中的局部(简单类型)变量第一选择是被分配到Register中。

  特点:每个线程私有,速度快。

2、 局部存储器 local memory

  当register耗尽时,数据将被存储到local memory。如果每个线程中使用了过多的寄存器,或声明了大型结构体或数组,或编译器无法确定数组大小,线程的私有数据就会被分配到local   memory中。

  特点:每个线程私有;没有缓存,慢。

  注:在声明局部变量时,尽量使变量可以分配到register。如:

  unsigned int mt[3];

  改为: unsigned int mt0, mt1, mt2;

3、 共享存储器 shared memory

  可以被同一block中的所有线程读写

  特点:block中的线程共有;访问共享存储器几乎与register一样快.

4、 全局存储器 global memory

  特点:所有线程都可以访问;没有缓存注:按手册上的说法,计算能力2.0以上也的也是有缓存的

5、 常数存储器constant memory

  用于存储访问频繁的只读参数

  特点:只读;有缓存;空间小(64KB)

   注:定义常数存储器时,需要将其定义在所有函数之外,作用于整个文件

6、 纹理存储器 texture memory

是一种只读存储器,其中的数据以一维、二维或者三维数组的形式存储在显存中。在通用计算中,其适合实现图像处理和查找,对大量数据的随机访问和非对齐访问也有良好的加速效果。

特点:具有纹理缓存,只读。

...全文
2799 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
存储器类型那些是最基本的吧。。。。 研究生搞了两年cuda,不过不打算找cuda相关的工作。
  • 打赏
  • 举报
回复
cuda用了两年,感觉找工作确实不易
ta88713419 2014-08-31
  • 打赏
  • 举报
回复
都是大手啊 佩服
lhw7791086 2014-08-30
  • 打赏
  • 举报
回复
YCMyTot 2014-08-29
  • 打赏
  • 举报
回复
谢楼主,分享了!!
adagio_chen 2014-08-29
  • 打赏
  • 举报
回复
引用 1 楼 ddl2111 的回复:
弱弱的问一下楼主,学cuda好找工作么
最多只是一个加分项,不会太被看重。还没毕业的话,多研究研究C++,数据结构,算法,这些才是王道。
AmelieLiu 2014-08-29
  • 打赏
  • 举报
回复
弱弱的问一下楼主,学cuda好找工作么

579

社区成员

发帖
与我相关
我的任务
社区描述
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
社区管理员
  • CUDA编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧