【NVIDIA CUDA】2023 CUDA夏令营编程模型(二)

这篇具有很好参考价值的文章主要介绍了【NVIDIA CUDA】2023 CUDA夏令营编程模型(二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!
博主链接

本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。


博客内容主要围绕:
       5G/6G协议讲解
       算力网络讲解(云计算,边缘计算,端计算)
       高级C语言讲解
       Rust语言讲解



CUDA编程模型——共享内存

一、多种CUDA存储单元介绍

【NVIDIA CUDA】2023 CUDA夏令营编程模型(二),GPU,NVIDIA,CUDA,GPU

内存访问速度(由快到慢):

  • Register file
  • Shared Memory
  • Constant Memory
  • Texture Memory
  • Local Memory and Global Memory:位于Device memory中,空间最大,latency最大,是GPU最基础的内存;

1.1 共享内容介绍

实际驻留在GPU芯片上的内存只有两种类型:寄存器和共享内存。所以,Shared Memory是目前最快的可以让多个线程通信的地方。那么,就有可能会出现同时有很多线程访问Shared Memory上的数据。为了克服这个同时访问的瓶颈,Shared Memory被分成32个逻辑块,称为bank。

  • Shared Memory可以被设置成16KB,32KB ,48KB…剩下的给L1缓存;
  • 带宽可以使32bit 或者 64 bit;
  • 可以被多线程同时访问,因此存储器被划分为 banks;
  • 连续的 32-bit 访存被分配到连续的 banks;
  • 每个 bank 每个周期可以响应一个地址;
  • 如果有多个bank的话可以同时响应更多地址申请;

1.2 配方式

静态分配:

  • __shared__ int s[64];
    动态分配:
  • dynamicKernel<<<1, n, n*sizeof(int)>>>(d_d, n);
    extern __shared__ int s[];

1.3 bank竞争

  1. 同常量内存一样,当一个 warp 中的所有线程访问同一地址的共享内存时,会触发一个广播(broadcast)机制到
    warp 中所有线程,这是最高效的;
  2. 如果同一个 half-warp/warp 中的线程访问同一个 bank中的不同地址时将发生 bank conflict;
  3. 每个 bank 除了能广播(broadca st)还可以多播(mutilcast)(计算能力 >= 2.0),也就是说,如果一个 warp 中的多个线程访问同一个 bank 的同一个地址时(其他线程也没有访问同一个bank 的不同地址)不会发生 bank
    conflict;
  4. 即使同一个 warp 中的线程随机的访问不同的 bank,只要没有访问同一个 bank 的不同地址就不会发生 bank conflict;

【NVIDIA CUDA】2023 CUDA夏令营编程模型(二),GPU,NVIDIA,CUDA,GPU

如果没有bank冲突的话,Shared memory 跟 registers 一样快:

  • 快速情况:
    • warp 内所有线程访问 不同 banks, 没有冲突
    • warp 内所有线程读取同一地址,没有冲突(广播)
  • 慢速情况:
    • Bank Conflict: warp 内多个线程访问同一个bank
    • 访存必须串行化

1.4 如何避免冲突

先看一个有bank冲突的例子:

【NVIDIA CUDA】2023 CUDA夏令营编程模型(二),GPU,NVIDIA,CUDA,GPU
【NVIDIA CUDA】2023 CUDA夏令营编程模型(二),GPU,NVIDIA,CUDA,GPU
一个warp中的线程会访问,同一列中的数据,产生了bank冲突。

解决方法:

  • memory padding方法
    【NVIDIA CUDA】2023 CUDA夏令营编程模型(二),GPU,NVIDIA,CUDA,GPU

    使用了上面的内存padding方法之后,访问顺序编程了右图所示的“斜线”的顺序,代码如下:

    【NVIDIA CUDA】2023 CUDA夏令营编程模型(二),GPU,NVIDIA,CUDA,GPU



【NVIDIA CUDA】2023 CUDA夏令营编程模型(二),GPU,NVIDIA,CUDA,GPU文章来源地址https://www.toymoban.com/news/detail-683790.html

到了这里,关于【NVIDIA CUDA】2023 CUDA夏令营编程模型(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Datawhale夏令营】任务二学习笔记

    目录 一:python语法回顾 1.1  print() 1.2  列表与字典 1.3自定义函数与return 1.4火车类(面向对象)  实例化总结: 二:LightGBM 代码精读 2.1导入库 2.2数据准备与参数设置  2.3时间特征函数   2.4优化  2.5训练与预测 三:优化讲解 3.1: 3.2优化建议: 一:python语法回顾 1.1  print

    2024年02月14日
    浏览(46)
  • DataWhale AI夏令营——机器学习

    锂电池电池生产参数调控及生产温度预测挑战赛 已配置环境,跑通baseline,并在此基础上对数据进行了简单的分析。 对训练集中的缺失值和异常值进行分析 观察到数据中不存在缺失值,存在异常值 train_dataset[\\\'下部温度9\\\'] == -32768.000000] 。删除该缺失值。 对训练集和测试集中

    2024年02月15日
    浏览(49)
  • acm夏令营课后题(持续更新)

                                            米有程序题就懒得写哩           acm夏令营贪心算法选题_李卓航哇哇咔~的博客-CSDN博客  上面这个自己写的不知道为什么错哩,在网上找了下面这个。   这道题写的很顺      (这道题答案来源于网上)  网上答案写的很详细

    2024年02月13日
    浏览(40)
  • DataWhale 机器学习夏令营第三期

    DataWhale 机器学习夏令营第三期 ——用户新增预测挑战赛 已跑通baseline,换为lightgbm基线,不加任何特征线上得分 0.52214 ; 添加baseline特征,线上得分 0.78176 ; 暴力衍生特征并微调模型参数,线上得分 0.86068 赛题数据由约62万条训练集、20万条测试集数据组成,共包含13个字段

    2024年02月12日
    浏览(45)
  • 考研保研、夏令营推免的简历模板

      本文介绍在保研夏令营、考研复试等场景中, 个人简历 的制作模板与撰写注意事项。   这里就将当初我自己的简历分享一下,供大家参考。其实我的简历是那种比较简单、质朴的,通篇就一个颜色,没有太多花里胡哨的部分。我个人感觉,对于读研、升学而言,其实

    2024年02月04日
    浏览(37)
  • 北京大学2014计算机学科夏令营上机考试

    暴力必超时  利用栈的思想,利用一个(模仿栈)的数组,遇到男孩则入栈(即加入数组),记录当前位置(更新相对下标、绝对下表); 而遇到女孩,则出栈(男孩相对下标--),输出女孩与男孩的绝对位置。 2014计算机学科夏令营上机考试 B:排队游戏 找规律……#¥%……

    2024年02月12日
    浏览(48)
  • 北京大学2016计算机学科夏令营上机考试

      目录 A:分段函数【水题】 B:单词翻转【暴力不水】 C:反反复复【字符串】 D:文件结构“图”【图】 E:Exchange Rates【这不是我能做的】 F:Dungeon Master【没看懂题目什么意思】 G:重建二叉树【树】   希望全出这种题哈哈哈哈哈哈哈 ①fgets这个输入方式比较特殊 ②正着输入,判断

    2024年02月12日
    浏览(61)
  • AI夏令营第三期用户新增挑战赛学习笔记

    通过pd库的df.info()方法查看数据框属性,发现只有udmap字段为类别类型,其余皆为数值类型。 相关性热力图颜色越深代表相关性越强,所以x7和x8变量之间的关系更加密切,还有common_ts与x6也是。即存在很强的多重共线性,进行特征工程时可以考虑剔除二者中的一个变量,以免

    2024年02月11日
    浏览(35)
  • 保研之旅1:西北工业大学电子信息学院夏令营

    💥💥💞💞欢迎来到本博客❤️❤️💥💥 本人持续分享更多关于电子通信专业内容以及嵌入式和单片机的知识,如果大家喜欢,别忘点个赞加个关注哦,让我们一起共同进步~ 西北工业大学夏令营时间为1天,不报销路费,住宿安排在学校旁边的一个星级酒店里面(去的早的

    2024年02月12日
    浏览(46)
  • 用户新增预测(Datawhale机器学习AI夏令营第三期)

    内容为AI夏令营第三期 - 用户新增预测挑战赛教程的笔记,比赛链接为用户新增预测挑战赛,感觉教程比较适合新入门的小白,对新手很友好。这是我第一次参加机器学习相关的竞赛,记录小白升级打怪过程! 第一次修改时间:2023年8月18日,初步提交内容,完成教程了教程中

    2024年02月12日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包