下面简单介绍一些cuda中的共享存储器和全局存储器 

共享存储器,shared memory,可以被同一块中的所有线程访问的可读写存储器,生存期是块的生命期。

Tesla的每个SM拥有16KB共享存储器。

在编程过程中,有静态的shared memory 动态的shared memory

静态的shared memory 在程序中定义   __shared__ type shared[SIZE];

动态的shared memory 通过内核函数的每三个参数设置大小 extern __shared__ type shared[];

共享存储器被组织为16个bank,每个bank拥有32bit的宽度。

无bank conflict时,一个half-warp内的线程可以在一个内核周期中并行访问

对同一bank的同时访问导致bank conflict   只能顺序处理 访存效率降低

如果half-warp的线程访问同一地址时,会产生一次广播,不会产生bank conflict

__shared__ float shared[256];

float foo = shared[threadIdx.x];

没有访问冲突

__shared__ float shared[256];

float foo = shared[threadIdx.x * 2];

产生2路访问冲突

__shared__ float shared[256];

float foo = shared[threadIdx.x*8];

产生8路访问冲突

【CUDA学习】共享存储器的更多相关文章

  1. CUDA学习,第一个kernel函数及代码讲解

    前一篇CUDA学习,我们已经完成了编程环境的配置,现在我们继续深入去了解CUDA编程.本博文分为三个部分,第一部分给出一个代码示例,第二部分对代码进行讲解,第三部分根据这个例子介绍如何部署和发起一个k ...

  2. CUDA学习之二:shared_memory使用,矩阵相乘

    CUDA中使用shared_memory可以加速运算,在矩阵乘法中是一个体现. 矩阵C = A * B,正常运算时我们运用 C[i,j] = A[i,:] * B[:,j] 可以计算出结果.但是在CP ...

  3. CUDA学习之一:二维矩阵加法

    今天忙活了3个小时,竟然被一个苦恼的CUDA小例程给困住了,本来是参照Rachal zhang大神的CUDA学习笔记来一个模仿,结果却自己给自己糊里糊涂,最后还是弄明白了一些. RZ大神对CUDA关于 ...

  4. CUDA学习笔记(三)——CUDA内存

    转自:http://blog.sina.com.cn/s/blog_48b9e1f90100fm5f.html 结合lec07_intro_cuda.pptx学习 内存类型 CGMA: Compute ...

  5. CUDA学习笔记(二)【转】

    来源:http://luofl1992.is-programmer.com/posts/38847.html 编程语言的特点是要实践,实践多了才有经验.很多东西书本上讲得不慎清楚,不妨自己用代码实现一 ...

  6. CUDA学习ing..

    0.引言 本文记载了CUDA的学习过程~刚开始接触GPU相关的东西,包括图形.计算.并行处理模式等,先从概念性的东西入手,然后结合实践开始学习.CUDA感觉没有一种权威性的书籍,开发工具变动也比较快, ...

  7. cuda学习2-block与thread数量的选取

    由上一节可知,在main函数中,cuda程序的并行能力是在add<<<N,1>>>( dev_a, dev_b, dev_c )函数中体现的,这里面设置的是由N个b ...

  8. cuda学习3-共享内存和同步

    为什么要使用共享内存呢,因为共享内存的访问速度快.这是首先要明确的,下面详细研究. cuda程序中的内存使用分为主机内存(host memory) 和 设备内存(device memory),我们在这 ...

  9. 【CUDA学习】__syncthreads的理解

    __syncthreads()是cuda的内建函数,用于块内线程通信. __syncthreads() is you garden variety thread barrier. Any thread ...

随机推荐

  1. pycharm Cannot find declaration to goto----解决方案

    系统中已经有了该类库,还是找不到类提示 close the project in intellij. close intellij. go to the project folder and dele ...

  2. iOS 开发线程 gcd

      基础知识: 下午9:09 一.基础概念 1.什么是GCD 全称是Grand Central Dispath 纯C语言编写,提供非常多且强大的函数,是目前推荐的多线程开发方法,NSOperation ...

  3. I hate it

    Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老 ...

  4. VO,DO,DTO,PO,POJO,EJB

    PO:persistent Object,持久化对象,和数据库一一对应. VO:view Object,视图对象,用于展示,把某个页面或者组件的数据封装起来. DO:Domain Object,领域对 ...

  5. [原] XAF ListView显示隐藏Footer菜单

    using System; using DevExpress.ExpressApp; using DevExpress.ExpressApp.Win.Editors; using DevExpress ...

  6. 人脸识别经典算法一:特征脸方法(Eigenface)

    这篇文章是撸主要介绍人脸识别经典方法的第一篇,后续会有其他方法更新.特征脸方法基本是将人脸识别推向真正可用的第一种方法,了解一下还是很有必要的.特征脸用到的理论基础PCA在另一篇博客里:特征脸(Eig ...

  7. mysql 怎么查询出,分组后的总条数。。。也就是有多少组数。。。。怎么写

    SELECT COUNT(*) AS 多少组数FROM( SELECT id FROM 表 GROUP BY id) subQuery;Mysql,有一个表含有以下字段,uid 发帖人id,title ...

  8. PHP会话Session

    <?php //开启会话,PHP会话也提供多种存储方式,文件.数据库等 session_start(); if(isset($_GET['user'])) { $_SESSION['user'] ...

  9. EJDB 1.1.18 发布,嵌入式JSON数据库

    EJDB 1.1.18 增加对 MongoDB 操作符 $and 和 $or 的支持,支持 MongoDB 的 $ 推断操作符,修复了 $fields 提示的bug,提升了查询处理的性能. EJDB ...

  10. Google被墙 Android开发工具下载地址

    Android开发环境的官网下载地址 可以直接下载 (1)Adt Bundle Platform Package Size MD5 Checksum Windows 32-bit adt-bundle ...