CUDA中的基本概念

要学习cuda的同学相信已经对其有一定的了解了,至少直到它是干什么的了。这篇文章主要是对cuda编程中的主要概念进行总结,有了一个大致的轮廓后就好入手了。

异构架构

异构架构即使用CPU和GPU共同进行计算。GPU不能作为一个独立的运行平台(程序无法单独在GPU上运行),它只能作为CPU的一个附属计算加速器。
在这里插入图片描述
上图展示了异构架构中CPU和GPU的关系。CPU和GPU通过PCIe总线进行数据传输。在碰到计算密集型任务时,CPU将数据传给GPU,GPU计算完成后再传输回CPU。
从上述架构途中也可看出,GPU上有更多的算术逻辑单元,计算能力更强。

主机(host)和设备(device)

由于CPU和GPU的这种从属关系,CPU所在的位置被称为主机端(host),GPU所在位置被称为设备端(device)。在cuda编程中,主机端代码和设备端代码是有严格区分的。核函数的代码只能在GPU上运行。

CUDA中的线程和一般的多线程有什么区别

CPU上的线程是重量级的,上下文切换缓慢且开销较大, 且线程数量往往有限。CPU的线程相对于GPU的线程更适合处理控制密集型任务(多个if-else).
GPU上的线程是轻量级的。现代GPU上可以同时有成千上万个线程并发。GPU的线程更适合控制简单,但是计算密集的任务。

流式多处理器,线程束

GPU架构是围绕流式多处理器(SM)展开的, GPU上有很多个SM,每个SM能够支持数百个线程并发执行,因此在一个GPU上并发执行数千个线程是很容易的。下图所示为一个SM的关键组件(了解即可):
在这里插入图片描述
每个SM上有多个线程,每32个线程被组织成一个线程束(thread wrap)。

线程网格,线程块

线程束是物理上线程的划分,但是在cuda编程中,逻辑上更多地是将线程分为不同的线程块(thread block),不同的线程块又分到不同的线程网格(thread grid)中。在编程中,每个在GPU上运行的核函数都要指定线程块和线程网格的维度。线程块和线程网格的维度都可以是一维二维或者三维。

  • 区分线程块和线程束
    线程束表示的是线程资源。一个线程块可能会占用多个线程束。假设在编程中指定一个线程块中有80个线程,那么这个线程块将占用3个线程束,多出来的线程束将不会活跃,如下图所示:
    在这里插入图片描述
    多个线程块在一起将会被组织成网格。
    好了,上述就是几个比较重要的概念,后面将直接通过代码来学习cuda。

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

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

相关文章

【LINUX网络】HTTP协议基本结构、搭建自己的HTTP简单服务器

目录 1. 初识HTTP 2. URL 2.1 基本结构 2.2 URL中的?与urldecode\urlencode 易混淆:URL和HTTP传输请求两者是什么关系? HTTP的宏观结构 3. DEMO CODE loop模块,核心逻辑 HttpServer 初代版本(DEMO 0.0) DEMO 1.0 DEMO…

Spring Boot 静态函数无法自动注入 Bean?深入解析与解决方案

在 Spring Boot 项目中,开发者常遇到一个典型问题:在静态方法或静态变量中尝试使用 Autowired 注入 Bean 时,始终得到 null 值。本文将深入剖析这一问题的根源,并提供多种可靠解决方案。问题重现:为什么注入失败&#…

存储过程作为系统逻辑核心的架构思考 —— 以 SaaS 系统为例

在企业级系统尤其是 SaaS 架构中,技术选型一旦确定,就意味着底层数据库类型基本不会轻易更换。既然如此,我们可以更大胆地将数据库能力本身纳入系统设计的核心,而不仅仅把它当成一个被动的存储引擎。存储过程(Stored P…

Ubuntu20.04下Remmina的VNC密码忘记后重置

你遇到的错误: ** error creating password: /home/ysc/.vnc/passwd storepasswd: No such file or directory说明:x11vnc -storepasswd 无法创建密码文件,因为 .vnc 目录不存在。 虽然你可能以为路径是对的,但系统找不到 /home/y…

从“存得对”到“存得准”:MySQL 数据类型与约束全景指南

目录 一、为什么需要数据类型与约束? 二、MySQL 数据类型全览 1. 数值类型:精确 VS 近似 2. 日期时间类型:别让“0000-00-00”出现 3. 字符串类型:CHAR、VARCHAR、TEXT、BLOB 4. JSON 类型:文档与关系共舞 5. 空…

Effective C++ 条款42:了解 typename 的双重含义

Effective C 条款42:了解typename的双重含义 核心思想:在模板声明中,typename和class可互换使用,但在模板内部,typename必须用于显式指明嵌套从属类型名称(nested dependent type name)&#xf…

ENCOPIM, S.L. 参展 AUTO TECH China 2025 广州国际汽车技术展览会

ENCOPIM, S.L. 参展 AUTO TECH China 2025 广州国际汽车技术展览会2025年11月21-24日中国进出口商品交易会展馆D区(广州)AUTO TECH China 2025同期:第二十三届广州车展即将盛大开幕展商推荐ENCOPIM, S.L.展位号:3916企业简介:ENCOPIM, S.L.于…

30 HTB Soccer 机器 - 容易

主要知识点 第一阶段:侦查 nmap nmap快速扫描: oxdfhacky$ nmap -p- --min-rate 10000 10.10.11.194 Starting Nmap 7.80 ( https://nmap.org ) at 2023-06-04 13:32 EDT Nmap scan report for 10.10.11.194 Host is up (0.093s latency). Not shown:…

阿里云机器翻译接口SDK-RAM权限配置

用户授权翻译权限在数字化时代,短信作为企业与用户沟通的重要桥梁,其高效、可靠的送达直接影响业务转化与用户体验。SDK(软件开发工具包)的出现极大简化了短信功能的集成过程,让开发者能够快速在应用中嵌入短信验证、通…

ESXI 6.7服务器时间错乱问题

1. 设置ESXI服务器:在此主机上手动配置日期和时间管理-服务-ntpd-鼠标右键-策略-手动启动和停止,状态已停止管理-系统-时间和日期-编辑设置-检查是否选择了【在此主机上手动配置日期和时间】ntp服务状态已停止ntp服务器已停止2. 停止所有虚拟机自动更新时…

CV 医学影像分类、分割、目标检测,之【皮肤病分类】项目拆解

CV 医学影像分类、分割、目标检测,之【皮肤病分类】项目拆解第1-12行:导入库第14-17行:读取标签文件第19-21行:获取疾病名称第23-26行:获取图片名列表第28-35行:筛选有标签的图片第38-43行:提取…

【JavaEE】多线程 -- 线程状态

目录六大状态举例说明六大状态 New 新建状态:线程还没出创建,只有Thread 实例化的对象,调用start 方法之前的状态。Runnable 运行状态:被系统调度后,CPU 正在执行的,Ready 就绪态,系统调度&…

网络流初步

网络流初步 文章目录网络流初步概念介绍最大流费用流概念介绍 网络流不同之处在于它的本质图论,但是把图论的某些概念换了一个说法而已,初步只要了解网络流的各个概念就可以明白的很快。 下述概念是本人自己定义的,对于网络流的题目做的还不…

[系统架构设计师]系统架构基础知识(一)

[系统架构设计师]系统架构基础知识(一) 一.计算机系统基础知识 1.计算机系统概述 硬件软件及网络组成的系统 2.计算机硬件基础知识 冯 诺依曼结构:运算器,控制器,存储器,输入设备,输出设备 专用…

深入解析Java代理模式:灵活控制对象访问的核心技术

在日常开发中,我们常遇到这样的场景:需要控制对象访问权限、优化高成本操作,或给方法添加额外功能(如日志、事务)。代理模式(Proxy Pattern) 正是解决这类问题的金钥匙。作为结构型设计模式的代…

【学习笔记】Java并发编程的艺术——第9章 Java中的线程池

第9章 Java中的线程池 线程池优势: ①减少资源消耗 ②提高响应速度 ③统一管理 9.1 线程池的实现原理 当任务来后 ①判断核心线程池是否已满,若未满,创建一个核心线程来执行任务 ②若无空闲核心线程且核心线程已满,则将任务放入任…

Mybatis学习笔记(九)

常见问题与解决方案 简要描述:总结MyBatis-Plus开发过程中常见的问题、错误及其解决方案,帮助开发者快速定位和解决问题。 核心概念: 常见错误:开发中经常遇到的错误类型性能问题:性能相关问题的排查和解决配置问题&am…

数据类型 list

一、介绍类似于数组,顺序表,deque结构图特点:元素有序,元素允许重复由于头尾高效插入删除,可以模拟栈,队列二、常见 list 命令1、lpush key elem [elem ...]头插元素,返回值列表长度2、lrange k…

pyqt5无法显示opencv绘制文本和掩码信息

背景:pyqt5无法显示opencv绘制的标签和mask;我们在使用YOLO做实例分割做推理时,会使用opencv做后处理结果绘制(含标签绘制和掩码绘制);结果opencv绘制的解码却无法在pyqt的解码上面显示。pyqt转换代码如下&…

如何生成严格递增的分布式id?

本文字数:2604字预计阅读时间:15分钟01引言在现有分布式系统中,面对增长迅速的业务数据,id生成一直是非常重要的一环。而分布式系统的id生成方案需要满足几个重要特性:容错高可用、高性能高并发、全局唯一。02技术背景…