ITPub博客

首页 > Linux操作系统 > Linux操作系统 > CUDA 学习笔记之存储器

CUDA 学习笔记之存储器

原创 Linux操作系统 作者:洛欣 时间:2010-04-30 10:25:05 0 删除 编辑

每一个线程都有它自身的register,有时也有local memory,但是我不建议使用local memory, 应由系统自己处理这个问题。放在register中的变量不用任何修饰符。

 

       每一个block内的线程共享shared memory(一块内存空间),大小现在是16k。因此在访问时,可能要同步,使用内置的函数_syncthreads()内建函数来处理同步,在该函数的调用处,块内所有的线程都得等待,直至当前block内所有的线程都到达此处,如果有的线程被中止,就成了永远等待了,要注意这种情况。用__shared__来修饰放在shared memory中的变量,但是在声明的时候不能初始化,而且必须在函数内部声明。

 

       此外还有两个只读存储器,可由所有block的线程访问,一个是常量存储器,存入其中的变量值不可在kernal中修改,用 __constant__来修饰,但是其值可以进行复制等一些操作,也可以在主机上通过运行时函数访问,但是必须定义成全局变量,这不太好。一个是纹理存储器,它必须绑定到某个数据集,但是它不是可改的。对于一个应用程序启动的内核而言,所有的存储器空间都是持久的。

 

       最后就是device memory了,它可以由所有的block的线程共享,作用域在于文件,用__device__来修饰,要定义成全局变量,尽量不用它。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22785983/viewspace-661686/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-11-12

  • 博文量
    111
  • 访问量
    273833