CUDA学习笔记0924

一、nvprof分析线程束和内存读写

(1)线程束占用率分析

线程束占用率:nvprof --metrics achieved_occupancy

(2)内存读写分析

内核数据读取效率:nvprof --metrics gld_throughput

程序对设备内存带宽利用率:nvprof --metrics gld_efficiency

二、GPU动态并行

1. 动态并行概念

(1)在GPU上动态创建内核并同步内核执行

(2)通过动态并行技术可以在内核运行时设置线程模型配置

(3)动态并行技术有效减少GPU、CPU间执行权限的切换和数据传输

2. 动态并行特点

(1)线程网格、线程块、线程模型配置以及内核函数启动方式在动态并行中仍然适用

(2)动态并行中内核执行分为两类:父内核执行(父线程、父线程块、父线程网格)、子内核执行(子线程、子线程块、子线程网格)

(3)父内核执行由主机程序发起、子内核执行由父内核执行发起

(4)父内核与子内核共享全局(global)和常量(constant)内存

(5)父内核与子内核具有各自独立的本地(local)和共享(shared)内存

三、GPU内存结构

CUDA内存模型将独立的主机内存和GPU设备内存作为整体形成完整的内存层次结构

(1)非可编程内存

(2)可编程内存

1. 寄存器

(1)速度最快

(2)内核函数中无修饰符的自动变量

(3)数组索引为常量或在编译时有确定数值时,数组可以保存在寄存器中

(4)寄存器中数据为每个线程独有,并具有与内核函数相同的生命周期

(5)查看寄存器使用:nvcc --resource-usage 源程序

四、寄存器溢出

内核函数使用的寄存器数量超过硬件限制时,数据会被保存到线程的本地内存(local memory)中

1. 使用控制

(1)内核函数 __launch_bounds__

(2)nvcc编译参数-maxrregcount,(设置__launch_bounds__时该参数被忽略)

五、本地内存和共享内存

本地内存

(1)本地内存由每个线程独有,延迟比寄存器大

(2)寄存器溢出时会被保存到本地内存

(3)内核编译时无法确定索引的数组保存在本地内存中

(4)结构体和大数组保存在本地内存中

(5)无法保存在寄存器中的其他数据

共享内存

(1)__shared__修饰,低延迟、高带宽

(2)可被线程块中所有线程访问

(3)具有与其线程块相同的生命周期

(4)是一种线程间通信机制

(5)对共享内存的访问必须要做同步处理,__syncthreads()

(6)流处理器中的L1缓存和共享内存 共享 片上的64K存储区域

(7)动态配置共享内存:cudaFuncSetCacheConfig

六、常量内存

(1)常量内存(constant memeory)是GPU设备上的内存区域,每个流处理器有独立的常量内存

(2)常量变量必须由__constant__关键字修饰

(3)常量变量必须在全局域中声明

(4)常量内存对程序中所有的内核可见

(5)内核函数只能读取常量内存中的数据

(6)常量内存大小为64K

初始化

(1)常量内存在主机程序中初始化:cudaMemoryToSymbol

 

七、全局内存

概念

(1)全局内存是GPU上容量最大、延迟最大、使用最多的内存空间

(2)全局内存具有与程序相同的生命周期

(3)全局内存可被所有流处理器访问

(4)全局内存首字节地址必须是32字节、64字节、128字节的整数倍

初始化

(1)使用__device__关键字静态声明全局内存

(2)主机代码中使用cudaMalloc动态声明全局内存、cudaFree释放全局内存

 

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

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

相关文章

《动手学深度学习 Pytorch版》 7.4 含并行连接的网络(GoogLeNet)

import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2l7.4.1 Inception块 GoogLNet 中的基本卷积块叫做 Inception 块(大概率得名于盗梦空间),由 4 条并行路径组成。 前 3 条路径使用窗口…

【性能测试】JMeter:集合点,同步定时器的应用实例!

一、集合点的定义 在性能测试过程中,为了真实模拟多个用户同时进行操作以度量服务器的处理能力,可以考虑同步虚拟用户以便恰好在同一时刻执行操作或发送请求。 通过插入集合点可以较真实模拟多个用户并发操作。 (注意:虽然通过加入集合点可…

Go内置函数make和new的区别?

首先纠正一下make 和 new 是内置函数,不是关键字。 变量初始化,一般分为2步,变量声明变量内存分配,var 关键字就是用来声明变量的,new和make 函数主要是用来分配内存的。 var 声明值类型的变量时,系统会默…

Vector Art - 矢量艺术

什么是矢量艺术? 矢量图形允许创意人员构建高质量的艺术作品,具有干净的线条和形状,可以缩放到任何大小。探索这种文件格式如何为各种规模的项目提供创造性的机会。 什么是矢量艺术作品? 矢量艺术是由矢量图形组成的艺术。这些图形是基于…

怒刷LeetCode的第3天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一:动态规划 第二题 题目来源 题目内容 解决方法 方法一:模拟 方法二:数学规律 方法三:分组 第三题 题目来源 题目内容 解决方法 方法一:数学方法 方法…

QT:使用行编辑器、文本编辑器、单选按钮、水平布局、垂直布局做一个小项目

widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QLineEdit> //行编辑器 #include <QTextEdit> //文本编辑器 #include <QRadioButton> //单选按钮class Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *pare…

USB总线-Linux内核USB3.0主机控制器驱动框架分析(十二)

1.概述 如下图所示&#xff0c;Linux内核中USB主机体系结构由五部分组成&#xff0c;分别为Application Software、USB Class Driver、USB Core(USB Driver)、USB Host Controller Driver、USB Host Controller。应用程序处于用户空间&#xff0c;通过系统调用访问Class Drive…

关于计算机找不到d3dx9_43.dll,无法继续执行代码修复方法

d3dx9_43.dll是一个动态链接库文件&#xff0c;它是DirectX的一个组件&#xff0c;主要用于处理游戏中的图形、声音等多媒体元素。当这个文件丢失时&#xff0c;可能会导致以下问题&#xff1a; 1. 游戏无法正常运行&#xff1a;由于d3dx9_43.dll负责处理游戏中的多媒体元素&a…

Jumpserver堡垒机

一、堡垒机概述 1、堡垒机的基本概念 堡垒机也是一台服务器&#xff0c;在一个特定的网络环境下&#xff0c;为了保障网络和数据不受来自外部和内部用户的入侵和破坏&#xff0c;而运用各种技术手段实时收集、监控网络环境中每一个组成部分&#xff08;服务器&#xff09;的系…

C进阶-数据的存储

数据类型介绍 内置类型&#xff1a; //数据类型中的内置类型 // char //字符数据类型 // short //短整型 // int //整型 // long //长整型 // long long //更长的整型 // float //单精度浮点数 // double //双精度浮点数 //数据类型中的内置类型 单位是字节 // char //字…

大厂面试之算法篇

目录 前言 算法对于前端来说重要吗&#xff1f; 期待你的答案 算法 如何学习算法 算法基础知识 时间复杂度 空间复杂度 前端 数据结构 数组 最长递增子序列 买卖股票问题 买卖股票之交易明细 硬币找零问题 数组拼接最小值 奇偶排序 两数之和 三数之和 四数之…

速码!!BGP最全学习笔记:IBGP和EBGP基本配置

实验1&#xff1a;配置IBGP和EBGP 实验目的 熟悉IBGP和EBGP的应用场景掌握IBGP和EBGP的配置方法 实验拓扑 想要华为数通配套实验拓扑和配置笔记的朋友们点赞关注&#xff0c;评论区留下邮箱发给你! 实验步骤 1.IP地址的配置 R1的配置 <Huawei>system-view …

Android之AMessage机制存/取原理(四十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

Fiddler抓包工具配置+Jmeter基本使用

一、Fiddler抓包工具的配置和使用 在编写网关自动化脚本之前&#xff0c;得先学会如何抓包&#xff0c;这里以Fiddler为例。会抓包的同学可以跳过这一步&#xff0c;当然看看也是没坏处的…… 局域网络配置 将要进行抓包的手机与电脑连入同一局域网&#xff0c;电脑才能够抓到…

Elasticsearch(Es搜索(简单使用、全文查询、复合查询)、地理位置查询、特殊查询、聚合操作、桶聚合、管道聚合)

Elasticsearch&#xff08;三&#xff09;——Es搜索&#xff08;简单使用、全文查询、复合查询&#xff09;、地理位置查询、特殊查询、聚合操作、桶聚合、管道聚合 一、Es搜索 这里的 Es 数据博主自己上网找的&#xff0c;为了练习 Es 搜索。 1、Elasticsearch 搜索入门 …

阻塞队列-生产者消费者模型

阻塞队列介绍标准库阻塞队列使用基于阻塞队列的简单生产者消费者模型。实现一个简单型阻塞队列 &#xff08;基于数组实现&#xff09; 阻塞队列介绍 不要和之前学多线程的就绪队列搞混&#xff1b; 阻塞队列&#xff1a;也是一个队列&#xff0c;先进先出。带有特殊的功能 &…

PostgreSQL 技术内幕(十)WAL log 模块基本原理

事务日志是数据库的重要组成部分&#xff0c;记录了数据库系统中所有更改和操作的历史信息。 WAL log(Write Ahead Logging)也被称为xlog&#xff0c;是事务日志的一种&#xff0c;也是关系数据库系统中用于保证数据一致性和事务完整性的一系列技术&#xff0c;在数据库恢复、高…

若依前后端分离版搭建记录

一、如果是mysql8&#xff0c;得修改一下参数allowPublicKeyRetrieval为true&#xff0c;不然会报Public Key Retrieval is not allowed错误&#xff1a; 二、导入第二张表的数据库的时候&#xff0c;需要增加“--default-character-setutf8”参数才不会报错&#xff1a;

硕士应聘大专老师

招聘信息 当地人社局、学校&#xff08;官方&#xff09; 公众号&#xff08;推荐&#xff09;&#xff1a; 辅导员招聘 厦门人才就业信息平台 高校人才网V 公告出完没多久就要考试面试&#xff0c;提前联系当地院校&#xff0c;问是否招人。 校招南方某些学校会直接去招老师。…

DL2:A Deep Learning-Driven Scheduler for Deep Learning Clusters 阅读思考+组会

IEEE Transactions on Parallel and Distributed Systems CCF A 提问题记录 1、自己提出的问题 1.1 这篇文章解决的主要问题是什么&#xff0c;怎么理解&#xff1f; 传统的调度方法具有如下特点&#xff1a; 要么无法感知机器学习工作负载特性(如集群中的GPU的利用率)或ML…