CUDA内存访问模式

news2024/10/5 15:26:42

大多数设备端数据访问都是从全局内存开始的,并且多数GPU应用程序容易受内存带宽的限制。因此,最大限度的利用全局内存带宽是调控核函数性能的基本。

对齐与合并访问

如图,所有的应用程序数据最初存在于DRAM上,也就是物理设备内存上。核函数的内存请求通常是在DRAM设备和片上内存间以128字节或32字节内存事务来实现的。

所有对全局内存的访问都会通过二级缓存,也有许多访问会通过一级缓存,这取决于访问类型和GPU架构。如果都用到,就是128字节内存事务;如果只用了二级缓存,那么该内存访问是由一个32字节的内存事务实现的。

内存事务(Memory Transaction)指的是对内存进行的读取或写入操作。在GPU编程中,内存事务通常指的是对全局内存或共享内存的读取或写入操作,这些操作可以由单个线程或线程组(线程束)执行。

对齐的概念与C++类中的内存对齐概念相似,为了避免重复的读取数据,需要将数据在内存中对齐。

合并是指将多个内存事务合并为一个事务,合并通常发生在多个线程或线程束同时访问连续内存地址时。如果这些访问可以被合并为一个更大的内存事务,GPU可以更有效地利用内存系统的带宽和并行性。合并通常由GPU自动完成

全局内存读取

在SM中,数据通过以下3种缓存/缓冲路径进行传输,具体使用哪种方式取决于引用了哪种类型的设备内存

  • 一级和二级缓存
  • 常量缓存
  • 只读缓存

一级和二级缓存是默认路径。

CPU一级缓存和GPU一级缓存的差异

CPU一级缓存优化了时间和空间局部性。GPU一级缓存是专门为了空间局部性而不是为了时间局部性设计的。频繁访问一个一级缓存的内存位置不会增加数据留在缓存中的概率。

时间局部性和空间局部性

时间局部性认为如果一个数据位置被引用,那么该数据在较短的时间周期内很可能会被再次引用,随着时间,该数据被引用的可能性逐渐降低。空间局部性认为,如果一个位置被引用,则附近的位置也可能会被引用。

全局内存写入

一级缓存不能用在费米或开普勒GPU上进行存储操作,在发送到设备内存之前存储操作只通过二级缓存。

结构体数组和数组结构体

数组结构体(AoS)

struct S{
    float x;
    float y;
};

struct S myAoS[N];

结构体数组(SoA)

struct S{
    float x[N];
    float y[N];
};

画个图说明这两种结构体存储数据的区别

用AOS模式在GPU上存储一个只使用x字段的应用程序,将导致50%的带宽损失。y值在32字节或128字节缓存行上隐式的被加载。AOS模式也浪费了二级缓存的空间在不需要的y值上。

相比之下,SOA模式存储数据,可以更好的提高资源的利用率。

在并行编程中,更倾向于使用SOA模式。因为数据元素是为全局内存的有效合并访问而预先准备好的,而被相同内存操作引用的同字段数据元素在存储时是彼此相邻的。

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

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

相关文章

【HTTP上】协议/域名/url/请求和响应/状态码/重定向

文章目录 0.应用层协议0.1HTTP协议 1.域名2.DNS3.访问浏览器4.URL搜索特殊字符如#&~ 5.万维网6.http请求和响应的格式6.1HTTP请求格式6.2HTTP响应格式6.3示例6.3模拟HTTP【框架】6.4查看请求或响应的工具FiddlerPostman 7.网页7.0对访问网页的认识7.1wget7.2新的认识7.3GET…

使用DataGrip连接DM达梦数据库

目录 前言一、添加数据库驱动1.1 配置达梦驱动包1.1.1 配置达梦驱动1.1.2 配置驱动jar包 1.2 配置JDBC URL模板1.3 保存驱动配置 二、新建数据源2.1 填写数据库连接信息2.2 测试是否配置成功2.3 保存配置并退出 前言 达梦数据库虽然提供了官方的数据库管理工具"DM管理工具…

数据挖掘实战-基于CNN深度学习算法构建英文文本分类模型

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

零基础学习数据库SQL语句之操作表中数据的DML语句

我们的数据库是根据页面原型和相关需求完成相关开发的 在表中添加数据 删除数据 修改数据 添加数据 页面模型 当点击保存的时候就能将表单数据提交到服务端 服务端将数据添加到数据库 我们要用insert语句 将数据添加到数据库中 代码演示 CREATE DATABASE Dduo; USE Dduo…

【资源分享】CAD Map 3D2024安装教程

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验,帮助大家尽早适应研究生生活,尽快了解科研的本质。祝一切顺利!—…

Elasticsearch:探索 11 种流行的机器学习算法

作者:来自 Elastic Elastic Platform Team 过去几年中,机器学习(ML)已经悄然成为我们日常生活中不可或缺的一部分。它影响着从购物网站和流媒体网站上的个性化推荐,到保护我们的收件箱免受我们每天收到的大量垃圾邮件的…

docker compose mysql主从复制及orchestrator高可用使用

1.orchestrator 功能演示: 1.1 多级级联: 1.2 主从切换: 切换成功后,原来的主库是红色的,需要在主库的配置页面点击“start replication ”,重新连接上新的主库。 1.3 主从故障,从库自动切换新…

Redis系列-2 Redis持久化机制

背景: 服务器重启后会丢失内存中的全部数据,内存数据库如果没有持久化机制,难以保证数据的可靠性,如Memcached。Redis提供了RDB(基于全量)和AOF(基于增量)两种持久化机制,一方面可以保证数据的可靠性,当服…

38-4 Web应用防火墙 - WAF的使用及规则

准备:38-3 Web应用防火墙 - 安装配置WAF-CSDN博客 WAF的使用 启动 Nginx /usr/local/nginx/sbin/nginx 为了测试未启动 ModSecurity 时的访问效果,我们可以模拟攻击。要查看当前虚拟机的 IP 地址,可以使用命令 ifconfig 浏览器中访问ip,如果要在真实机中访问就需要关闭…

Sqlserver批量迁移Job

因为切换物理机,需要把数据库的作业从A机器迁移到B机器,数据库整体备份还原就可以了,数据库上的作业不会跟着带过去,需要手动创建,作业数量太多,逐一创建太浪费时间,Microsoft SQL Server Manag…

M2M设备、消费设备、IoT设备

有任何关于GSMA\IOT\eSIM\RSP\业务应用场景相关的问题,欢迎W: xiangcunge59 一起讨论, 共同进步 (加的时候请注明: 来自CSDN-iot). 您提供的链接指向一篇关于GSMA SGP.32标准,即eSIM物联网(IoT)标准的文章。以下是文章的主要内容概述: ##…

JAVA基础之Swing窗体的几种布局

1、边框布局BorderLayout 特点:5个方位(东(East)南(north)西(west)北(south)中(center)) 是一种简单的布局策略。 使用时,应将其看成一个“组件”。 同样,首先应通…

工业项目组态用这个开源软件ScadaBR

软件介绍 ScadaBR 是一个开源软件,提供完整的 SCADA(Supervisory Control and Data Acquisition,监控与数据采集)系统的所有功能。SCADA 类型的软件自60年代末开始存在,并且在涉及机器、可编程逻辑控制器(P…

【Linux入门】基础开发工具

本篇博客整理了Linux(centOS版本)中基础开发工具的用途和用法,旨在透过开发工具的使用,帮助读者更好地理解可执行程序的编写、编译、运行等。 目录 一、软件包管理器 yum 1.软件的下载与安装 2.Linux应用商店:yum …

ElementUI从unpkg.com完整下载到本地的方法 - 解决unpkg.com不稳定的问题 - 自建镜像站 - 不想打包只想cdn一下

方法 方法1)随便弄个文件夹,根据官网npm方法下载包,提取即可 npm i element-ui -S cd /node_modules/element-ui/ ls src 安装npm方法:https://nodejs.org/en 方法2)不推荐 - 在github中搜索对应的库zip包&#xff0…

webpack基础---常用loader

webpack 命令式和配置文件 html-webpack-plugin 配置项:{ templete: filename: inject: } 清除上次打包的文件,output: { clear: true } mode选项: none development prodution souce-map:可以精准定位代码行数 { devt…

基于51单片机的交通灯设计—夜间、紧急、复位、可调时间、四个数码管显示

基于51单片机的交通灯设计 (仿真+程序+原理图+PCB+设计报告) 功能介绍 具体功能: 1、采用四方向数码管设计,更加符合真实的交通信号灯设计; 2、左侧按键从上到下依次…

VMware中安装Ubuntu死机 - 笔记

1VMware中安装Ubuntu,使用十几分钟后出现突然卡顿的情况怎么解决? VMware中安装Ubuntu,使用十几分钟后出现突然卡顿的情况怎么解决?_vmware上ubuntu卡-CSDN博客 其他情况 如果出现系统提示不支持该虚拟化,则打开“启…

深入教程:在STM32上实现能源管理系统

引言 能源管理系统(EMS)在提高能源效率、减少能源消耗和支持可持续发展方面起着关键作用。本教程将介绍如何在STM32微控制器上开发一个能源管理系统,这种系统能够监控和控制能源使用,适用于家庭自动化、工业控制系统以及任何需要…

Docker Compose如何安装

Docker Compose的安装通常依赖于你的操作系统。以下是在不同操作系统中安装Docker Compose的方法: Linux 系统 //下载最新版本的Docker Compose sudo curl -L "https://github.com/docker/compose/releases/download/v2.5.1/docker-compose-$(uname -s)-$(un…