cuda 编程入门

  • GPU架构 alt TPC:流多处理器组成的小组

  • 流多处理器: alt

  • warp : 每个块可能有128、256个线程,每32个线程称为一个warp。 warp是一个虚拟的并行结构,并行计算时,每个warp是一个基本的运算单元(执行相同的命令)warp是最基本的执行单位

alt

  • 三级结构 网格(grid)、块(block)、线程(Thread) alt

alt 块内同步的一些操作

alt

alt

alt 这个是半个warp去访问16个bank,现在可能有1个warp访问32个bank?

alt

alt

alt

alt 存在bank冲突

alt 没有冲突

  • cuda编程模型
    • gpu和cpu是异构的,需要协同工作,
    • cuda程序中既包含host程序 又包含device程序,他们是分别在cpu和gpu上执行的
    • host和device之间可以进行通信,进行数据拷贝

alt

alt

alt (实际上启动了一百多万个线程)

alt

alt

alt (1)二维的网格,有6个block,block也是二维的,在x方向有5个元素,在y方向有3个元素(15个线程),一共90个线程(最好是32的倍数) (3)block虽然有三个维度,但是z方向的维度是1,实际上还是个二维的block

alt

alt 内置变量:不用声明就能用。

alt

alt 同步函数,gpu上的计算是异步的,使用这个函数来操作等待。

alt alt

alt

  • GPU内存模型 alt

alt

alt

alt

alt

alt 在SM里面

alt

alt

alt

alt 共享内存是按照bank来划分的(比如说32个字节一个bank

alt

alt

alt

alt

alt

alt

alt

alt

alt

alt 如果我们在传输数据的时候 用这个在cpu上申请内存,速度比malloc快一倍

alt 这块申请的内存可以同时被cpu和gpu访问。需要gpu满足一定的计算能力才能使用

alt 也就是说必须等sorce的数据全部拷贝到dest,这个函数才会结束,执行下一个函数。

alt

alt

alt

  • cuda程序执行与硬件映射 alt

alt

alt

alt

  • 规约算法 alt

alt 串行:使用for循环

alt 二分法

alt

alt 使用多个块减少资源浪费

alt 多个局部的规约 需要全局的同步 得到整体的规约

alt

alt

alt

alt

alt

alt

alt

alt

alt

alt

alt

alt

alt 浪费严重

alt

alt

alt

alt alt 跨bank,会造成数据的冲突

alt

alt

alt

alt

alt

alt

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-08 12:10
点赞 评论 收藏
分享
Twilight_m...:表格简历有点难绷。说说个人看法: 1.个人基本情况里好多无意义信息,什么婚姻状况、健康状况、兴趣爱好、户口所在地、身份证号码、邮政编码,不知道的以为你填什么申请表呢。 2.校内实践个人认为对找工作几乎没帮助,建议换成和测开有关的项目,实在没得写留着也行。 3.工作经历完全看不出来是干什么的,起码看着和计算机没啥关系,建议加强描述,写点你在工作期间的实际产出、解决了什么问题。 4.个人简述大而空,看着像AI生成,感觉问题最大。“Python,C,C++成为我打造高效稳定服务的得力工具”、“我渴望凭借自身技术知识与创新能力,推动人工智能技术的应用发展,助力社会实现智能化转型”有种小学作文的美感。而且你确定你个人简述里写的你都会嘛?你AI这块写的什么“深入研究”,发几篇顶会的硕博生都不一定敢这么写。而且你AI这块的能力和软测也完全无关啊。个人简述建议写你对哪些技术栈、哪些语言、哪些生产工具的掌握,写的有条理些,而且最好是和测开强相关的。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 12:05
点赞 评论 收藏
分享
评论
点赞
9
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务