cuda block grid等介绍

news2024/10/6 1:41:49

这里写目录标题

  • cuda层次结构
  • 程序架构
  • 层次结构
  • cuda程序调用
  • cuda 内置变量
  • GPU内存模型
    • 内存结构
  • 可编程内存
    • 内存作用域
    • 寄存器
    • 本地内存
    • 共享内存
    • 共享内存访问冲突
    • 常量内存
    • 全局内存
      • gpu缓存

cuda层次结构

在这里插入图片描述

程序架构

在这里插入图片描述

申请内存时是线性的内存,需要知道是按行还是按列排列
设计的好的话内存是对齐的
我们希望线程和内存都是线性排列对齐,效果就会很好。

层次结构

在这里插入图片描述
grid每个维度有多少block
block则是定义每个维度有多少线程

cuda程序调用

在这里插入图片描述

cuda 内置变量

在这里插入图片描述
建立全局一维排序,从而建立宏
从而按照逻辑顺序处理整个向量

处理矩阵的话可以用二维的网格和块

在使用 CUDA 进行矩阵乘法等大规模矩阵计算时,通常需要将输入矩阵按照块的形式划分为多个子矩阵,然后分配到不同的线程块中去计算,以充分利用GPU并行计算的优势。

对于二维的网格和块而言,其可以很好地描述矩阵的结构,这样可以方便地对每个块做相对应的操作。比如,我们可以定义一个2D线程块,其中每个线程块由多个2D线程组成,每个线程处理一个小块或者一个小行/列。然后,我们可以按行、列或元素交错地访问内存,使所有线程能更加高效地并行访问主机内存。

在处理一维向量时,可以考虑将其作为一个一维数组,在代码中可以从全局索引映射到局部索引。在这种情况下,通常需要对齐内存以提升访问速度和性能。具体来说,可以使用 __align__(n) 修饰符来对变量进行对齐处理,将其地址对齐到 n 的倍数上。例如,使用 __align__(16) 可以将变量地址对齐到16字节边界上。

对于单个块的情况,可以使用共享内存来提高访问速度,以便线程块中的所有线程都可以快速、有效地访问它。同时,在使用共享内存时,需要确保线程块中的线程都能够正常读写,以避免竞争条件的发生。

总之,在 CUDA 中处理矩阵和向量时,需要根据任务的具体特点进行灵活选择和处理,以充分发挥GPU并行计算的优势。

GPU内存模型

内存结构

在这里插入图片描述
在这里插入图片描述
每个MP都有L1,还有通过L2共享,和全局相连
在这里插入图片描述

可编程内存

可读可写

不可编程内存 cpu和gpu自己管理的内存
在这里插入图片描述

内存作用域

线程自己的内存一般都是用完了就释放了
在这里插入图片描述

寄存器

在这里插入图片描述

本地内存

在这里插入图片描述

共享内存

在这里插入图片描述
比方共享32k L1自己的16k
在这里插入图片描述

共享内存访问冲突

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
有一些优化机制,比如说广播

常量内存

在这里插入图片描述
在这里插入图片描述

全局内存

常说的显存,比方说8g 16g
延迟最高,通过l2和mp相连

读的时候有cache 写的时候没有 GPU通过cache大幅度提高效率
在这里插入图片描述
在这里插入图片描述
有些数据用不到会降低吞吐量

gpu缓存

在这里插入图片描述
因为这些缓存的存在提前将要读的数据 load, 极大提高效率

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/612422.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】Linux内核编译与入门

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍Linux内核编译。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习知识,共同进步。 喜欢的朋友可以关注一下,下次更新不迷路&am…

DM数据库TEXT类型字段查询返回时的问题

一、问题描述: 在项目中使用到了DM数据库连接,查询某些数据,然后以Map形式返回时TEXT类型是会出现一些问题,默认会转换为dm.jdbc.driver.DmdbNClob类型的对象,某些情况下(不知道具体原因)在JSON…

移动端布局之flex布局1:flex布局体验、flex布局原理、flex布局父项常见属性

移动端布局之flex布局1 flex布局体验传统布局和flex弹性布局的区别初体验index.html flex布局原理布局原理 flex布局父项常见属性常见父项属性flex-direction设置主轴的方向(重要)主轴与侧轴属性值flex-direction: row;flex-direction: row-reverse;flex…

笔试强训9

作者:爱塔居 专栏:笔试强训 文章简介:简单记录学习的细碎~ day15 一. 单选 1.给出数据表 score(stu-id,name,math,english,Chinese), 下列语句正确的是( ) A Select sum(math),avg(chinese) from score B Select *,s…

麒麟V10防火墙,VNC,YUM源, nfs ,磁盘格式化

麒麟V10防火墙,VNC,YUM源, nfs ,磁盘格式化 麒麟V10开启防火墙并设置开机自启 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status firewalld 开机禁…

2023年Q1电商平台饮料行业数据分析报告

我国的饮料市场非常庞大,从碳酸饮料到茶饮料,从功能性饮料到水,各个品类都有广泛的消费者基础。加之如今饮料消费场景不断延伸,家庭囤货、户外即饮、运动健身等成为消费者饮料需求的新场景,新需求带动线上饮料市场持续…

Numpy---创建多维数组、创建正态分布、创建均匀分布

1. 创建一个随机整数的多维数组 np.random.randint(low, highNone, sizeNone, dtypel) 参数说明: low : 最小值 highNone: 最大值 highNone时,生成的数值在【0, low)区间内 如果使用high这个值,则生成的数值在【low, high)区…

Nginx服务——主配置文件-nginx.conf

一、全局配置的6个模块简介 模块说明全局块全局配置,对全局生效events块配置影响 Nginx 服务器与用户的网络连接http块配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置server块配置虚拟主机的相关参数,一个 http 块中可…

SSD源码总结

一、生成默认框 默认框的宽高 默认框的宽高是相对于原图的尺寸计算出来的。 默认框的中心 默认框的中心是相对于特征图的尺寸计算出来的。 二、将真实框分配给默认框 1、区分正负样本 1.1、选取正样本 计算真实框(bboxs)与每个默认框(…

centos安装etcd

方法1:默认安装(不建议) 运行命令 yum install etcd 即可,只是安装的etcd版本较低,一般是 etcd-3.3.11,如下图 手动开启etcd,可以看到etcd服务已经开启来了,如下图 特别注意&#x…

Java开发手册中为什么要求谨慎使用ArrayList中的sublist方法

场景 Java开发手册中对于ArrayList的subList的要求如下: 【强制】ArrayList 的 subList 结果不可强转成 ArrayList,否则会抛出 ClassCastException 异常: java.util.RandomAccessSubList cannot be cast to java.util.ArrayList。 说明&a…

Customizable constraint systems for succinct arguments学习笔记(2)

微软研究中心Srinath Setty、a16z crypto research 和 Georgetown University Justin Thaler、Carnegie Mellon University Riad Wahby 20203年论文《Customizable constraint systems for succinct arguments》。 前序博客有: Customizable constraint systems f…

别小瞧,搬迁网络机房,讲究的可不少

大家好,我的网工朋友 最近围观咱们网工交流群,不少朋友提到机房搬迁这档子事,毕竟嘛,做到这方面项目的概率还是很高的。 别看机房搬迁很简单,其实可讲究了。 随着企业、单位的不断深入发展,机房搬迁&…

【正点原子STM32连载】 第二十六章 USMART调试组件实验摘自【正点原子】STM32F103 战舰开发指南V1.2

1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id609294757420 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第二十…

记录搭建hadoop集群的过程

Linux(CentOS-7.6-x64位)基础配置, 虚拟机平台VmWare15 CentOS-7.6-x64镜像下载: https://www.aliyundrive.com/s/72Xg449t6i8 提取码: 32rm VmVare15安装包下载带序列号:VmVare15安装包下载带激活序列号资源-CSDN文库 点击关闭,点击完成&…

NineData,稳定、高效的Redis数据同步解决方案

在 DB-Engines 网站的排名中,Redis 在 Key-value 存储的NoSQL领域连续霸榜多年,是目前最流行的键值对存储数据库,被广泛用于缓存、队列、实时分析等多种高并发的场景中。在生产环境中,我们会遇到对Redis进行版本升级和架构的扩缩容…

vue 自定义el-table穿梭框功能

一、需求描述:前段时间接到一个需求是点击做一个类似穿梭框的表格点击选中功能,弹框的左边是全部数据展示,点击表格行数据可以选中自动增加到右边的已选框,并且可以手动删除、重置选中数据。点击确定后到展示到主页面,…

深入理解Linux虚拟内存管理(四)

系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核(一) 深入理解 Linux 内核(二) Linux 设备驱动程序(一) Linux 设备驱动程序(二) Linux 设备驱动程序(三&#xf…

精选一线企业最佳生产实践,《Apache Doris 用户案例集》重磅发布!

过去的一年势必是 Apache Doris 在发展历程中有着浓墨重彩的一年,凭借对技术创新的执着与用户体验的追求,Apache Doris 已俘获全球范围内超过 2000 家企业的认可,拥有了极为广泛的用户规模、在企业实时数据分析的多种场景中得到广泛应用&…

热门AI通用大模型对比盘点(附论文)

今天我来和大家聊聊通用大模型,垂直领域大模型等整理完了再和大家分享。大家可以先关注一下我,有更新可以立马看见。 本文文末有整理好的通用大模型论文,都是各个大模型的原始论文,强烈建议大模型方向的同学,或者对大…