TensorRT及CUDA自学笔记003 CUDA编程模型、CUDA线程模型及其管理、CUDA内存模型及其管理

TensorRT及CUDA自学笔记003 CUDA编程模型、CUDA线程模型及其管理、CUDA内存模型及其管理

各位大佬,这是我的自学笔记,如有错误请指正,也欢迎在评论区学习交流,谢谢!

CUDA编程模型

在这里插入图片描述
我们使用CUDA_C语言进行CUDA编程,
1,CUDA编程模型提供了线程抽象接口用于控制GPU中的线程
2,CUDA编程模型提供了内存访问控制,我们可以实现主机和GPU设备内存的控制,我们可以实现CPU和GPU之间内存的数据传递。
3,CUDA编程模型提供了内核函数,进行并行运算时,就是由GPU协调处理线程指向并行运算多个内核函数。

CUDA线程模型

线程模型结构

从逻辑层面讲,CPU内线程可以被划分为grid(网格)和block(块)。
在这里插入图片描述
每一个内核执行,就会产生一个与之对应的grid运行。
grid和block都是多维的。它们最多可以是三维的。

线程管理

  1. 每一个线程具有blockIdx和threadIdx唯一标识。blockIdx和threadIdx是三维的,通过x、y和z访问。
  2. 线程模型维度通过blockDim和gridDim标识。它们一样是三维的,一样通过x、y和z访问。
  3. 线程ID(thread ID)用于标识线程在block中的相对位置的标识,和可以由线程标识和blockDim计算出来,如果block维度为(Dx,Dy)线程标识为(i,j)那么thread ID=(i+j*Dx)
    在这里插入图片描述
    上图中的thread ID 以此为 0 ,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15。

内存模型

在这里插入图片描述
shared memory(共享内存)
共享内存被同一个block中的所有线程所共享,它是一种片上存储空间,具有低延迟和高带宽的特点。
内核函数中使用__shared__修饰的变量保存在shared memory中。
register(寄存器)
每个线程独有一个register,其他线程不能访问。
它是访问速度最快的内存,内核函数代码中没有任何其他修饰符的自动变量存放在register中,以此加快运行速度。
local memory(本地内存)
每个线程独有一个local memory,其他线程不能访问。
其速度略慢于register。
内核函数中无法放在register中的变量会存放在local memory中,如无法确定下标的数值,较大的数据结构等。
constant memory(常量内存)
全局内存用于host和所有的thread都可以访问到global memory。
内核函数中使用__constant__修饰的变量存储在constant memory中。
global memory(全局内存)
全局内存用于host和所有的thread都可以访问到global memory。
在CUDA编程中,它是内存数量最大、使用最多、延迟最大的内存
静态分配时,使用__device__关键字修饰,动态分配时,在主机中使用内存管理函数。
其适用于主机和device的大量数据交互。

内存管理

内存管理的API接口
在这里插入图片描述

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

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

相关文章

【Vue3】‘vite‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。

问题 今天拿到别人项目的时候,我平时比较习惯用pnpm,我就使用pnpm i先下载依赖包,下载完成后,启动项目,就开始报以下错误! 但是当我执行pnpm i的时候,vite不应该就已经被我下载下来了吗 研究了…

学习JAVA的第五天(基础)

目录 API 字符串 String概述 比较的是什么? 关于字符串的比较 字符串代码展示 StringBuilder概述 StringBuilder方法的代码展示 StringJoiner概述 StringJoiner方法的代码展示​​​​​​​ 练习-用户登录 API API(Application Programing I…

【Java程序设计】【C00307】基于Springboot的基Hadoop的物品租赁管理系统(有论文)

基于Springboot的基Hadoop的物品租赁管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的基于 Hadoop的物品租赁系统的设计与实现,本系统有管理员、用户二种角色权限; 前台首页&#…

day11-项目集成SpringSecurity-今日指数

项目集成SpringSecurity 学习目标 理解自定义认证和授权过滤器流程;理解项目集成SprignSecurity流程; 第一章 自定义认证授权过滤器 1、SpringSecurity内置认证流程 通过研究SpringSecurity内置基于form表单认证的UsernamePasswordAuthenticationFi…

【工程院院士加盟】第四届计算机通信与人工智能国际会议

CCAI 2024 | Xian, Chinahttp://ccai.net/ - IEEE出版,EI核心和Scopus检索 - 工程院院士,IEEE Fellow等学术大咖主题演讲 - 会议时间-地点:2024年5月24-26日,中国西安 会议简介 Brief Introduction 作为人工智能的重要传播技术…

Linux环境下基本指令

今天我们一起来认识一下Linux环境下一些基本的指令,这些指令是我们学习Linux的基础,只有掌握了这些指令,我们才能在Linux环境下进一步学习知识,话不多说,我们开始(以下演示操作是在云服务器的环境下&#x…

基于SSM的车位租赁系统(有报告)。Javaee项目。ssm项目。

演示视频: 基于SSM的车位租赁系统(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring Spri…

MySQL TO_DAYS() 函数详解与实际应用

前言 在数据库操作中,日期和时间函数是处理日期相关计算和筛选数据时不可或缺的一部分。MySQL 作为广泛应用的关系型数据库管理系统,提供了丰富的日期时间函数供开发者使用。本文将详细介绍 MySQL 中的 TO_DAYS() 函数,包括其基本功能、用法…

【数据分析之Numpy基础004】数学运算大揭秘:轻松玩转ndarray的强大实力

ndarray的数学运算是一项非常重要的操作,包括不同对象之间的四则运算,三角函数变换、求和、求平均等操作 1、四则运算 如果参与运算的两个对象都是ndarray,并且形状相同,那么就可以进行对位之间的四则( - * / &#x…

unity学习(37)——自动保存

虽然脚本图片这些东西可以自动保存,但是场景中的控件不会自动,需要增加以下控件。 unity运行自动保存_unity自动保存-CSDN博客 Asset->创建Editor->创建autosave.cs,脚本代码如下: using UnityEditor; using UnityEngine…

前后端分离vue.js+nodejs学生考勤请假系统 _fbo36

此系统设计主要采用的是nodejs语言来进行开发,采用vue框架技术,框架分为三层,分别是控制层Controller,业务处理层Service,持久层dao,能够采用多层次管理开发,对于各个模块设计制作有一定的安全性…

UI设计中,2D、2.5D、3D、4D该如何辨别?教会你

hello,我是大千UI工场,从事UI设计8年之久,在日常工作中经常听到一些概念,现在将这些概念图文并茂的呈现给您,欢迎点赞评论,如有设计需求,可以私信我们。 在UI设计中,2D、2.5D、3D和4…

【Pytorch深度学习开发实践学习】B站刘二大人课程笔记整理lecture09 Softmax多分类

代码: import torch from torchvision import datasets, transforms from torch.utils.data import DataLoader import torch.nn as nn import torch.nn.functional as Fbatch_size 64 transform transforms.Compose([transforms.ToTensor(), transforms.Normali…

python:读 Freeplane.mm文件,使用 xml.etree 生成测试案例.csv文件

Freeplane 是一款基于 Java 的开源软件,继承 Freemind 的思维导图工具软件,它扩展了知识管理功能,在 Freemind 上增加了一些额外的功能,比如数学公式、节点属性面板等。 强大的节点功能,不仅仅节点的种类很多&#xf…

不用加减乘除做加法

1.题目: 写一个函数,求两个整数之和,要求在函数体内不得使用、-、*、/四则运算符号。 数据范围:两个数都满足 −10≤�≤1000−10≤n≤1000 进阶:空间复杂度 �(1)O(1),时间复杂度 &am…

web安全学习笔记【13】——信息打点(3)

信息打点-JS架构&框架识别&泄漏提取&API接口枚举&FUZZ爬虫&插件项目[1] #知识点: 1、业务资产-应用类型分类 2、Web单域名获取-接口查询 3、Web子域名获取-解析枚举 4、Web架构资产-平台指纹识别 ------------------------------------ 1、开源…

2.5G/5G/10G高速率网络变压器(网络隔离变压器)产品介绍(1)

Hqst华轩盛(石门盈盛)电子导读:高速率/2.5G 的带POE插件(DIP)款千兆双口网络变压器2G54801DP特点 一 ﹑2.5G高速率网络变压器(网络隔离变压器):2G54801DP外观与尺寸 2G54801DP这颗产品尺寸为:长…

C++ 学习(1)---- 左值 右值和右值引用

这里写目录标题 左值右值左值引用和右值引用右值引用和移动构造函数std::move 移动语义返回值优化移动操作要保证安全 万能引用std::forward 完美转发传入左值传入右值 左值 左值是指可以使用 & 符号获取到内存地址的表达式,一般出现在赋值语句的左边&#xff…

【Python笔记-设计模式】装饰器模式

一、说明 装饰器模式是一种结构型设计模式,旨在动态的给一个对象添加额外的职责。 (一) 解决问题 不改变原有对象结构的情况下,动态地给对象添加新的功能或职责,实现透明地对对象进行功能的扩展。 (二) 使用场景 如果用继承来扩展对象行…

Debezuim详细介绍

参考视频: 【尚硅谷】大数据Debezium开源工具(安装/部署/使用)_哔哩哔哩_bilibili 介绍: Debezuim是用于捕获变更数据的开源工具,可以响应数据库的所有插入,修改,删除操作。它是一种CDC工具&a…