CUDA编程:SM(Streaming Multiprocessing)

CUDA学习——Chapter 3(1)流式多处理器(SM)介绍 第三章 上一章我们讨论了不同内存布局对核函数性能的影响,这一章我们就从硬件的角度,去探究为什么布局会导致核函数运行的不同。 SM简介 上一节我们说到deviceProp的时候,不知道会不会有读者有疑惑,为什么突然会提到multiprocessor(多处理器)这个概念,这个概念又是什么?其实这个multiprocessor,就是我们这一篇推文要介绍的SM。 先来给大家看看SM的结构: 这是Ferm... 阅读详情

部分内容出自 :

http://ju.outofmemory.cn/entry/292387

http://www.hds.bme.hu/~fhegedus/C++/Professional%20CUDA%20C%20Programming.pdf

  1. 一个 GPU 包含多个 Streaming Multiprocessor ,而每个 Streaming Multiprocessor 又包含多个 core 。 Streaming Multiprocessors 支持并发执行多达几百的 thread 。 
  2. 一个 thread block 只能调度到一个 Streaming Multiprocessor 上运行,直到 thread block 运行完毕。一个 Streaming Multiprocessor 可以同时运行多个thread block 。

  1. 这里有两种分割数据的方式:block就是按线程数等分数据,10个线程就把数据分成10份,一个线程处理一份;而cyclic则是数据的份数大于线程数,举个例子,10个线程把数据分成20份,第一个线程处理第1,11份,第二个线程处理第2,12份。。。。。。,循环处理多次。
  • Even though many-core and multicore are used to label GPU and CPU architectures, a GPU core is quite different than a CPU core.
  • A CPU core, relatively heavy-weight, is designed for very complex control logic, seeking to optimize the execution of sequential programs.
  • A GPU core, relatively light-weight, is optimized for data-parallel tasks with simpler control logic, focusing on the throughput of parallel programs.
  1. CPU处理器相对重量化,设计用来应对复杂的控制逻辑,寻求优化序列化程序的执行方法。
  2. GPU处理器相对而言轻量化,经过优化之后用较为简单的控制逻辑来处理并行数据任务,主要集中于并行程序的使用。

一个基本的CUDA程序架构包含5个主要方面:

A typical CUDA program structure consists of five main steps:
1. Allocate GPU memories. 分配GPU的内存
2. Copy data from CPU memory to GPU memory. 复制CPU内存数据到GPU内存
3. Invoke the CUDA kernel to perform program-specific computation. 激活CUDA内核去计算特定程序的计算
4. Copy data back from GPU memory to CPU memory. 将数据GPU再一次拷贝回到CPU当中
5. Destroy GPU memories.  删除GPU数据

 

When a kernel function is launched from the host side, execution is moved to a device where a large number of threads are generated and each thread executes the statements specified by the kernel function. CUDA exposes a thread hierarchy abstraction to enable you to organize your threads. This is a two-level thread hierarchy decomposed into blocks of threads and grids of blocks:

当一个核函数在host side启动(即 CPU 处理器端),执行过程将会被移动到device上(即GPU上),在GPU上会产生大量的线程(Threads),每一个线程都执行和函数的一个特定代码。CUDA 中有两种抽象层级,让你可以安排组织你的线程。这两种层级的线程层可以分解成两部分:线程块和包含块的格。

 All threads spawned by a single kernel launch are collectively called a grid. All threads in a grid share the same global memory space. A grid is made up of many thread blocks. A thread block is a group of threads that can cooperate with each other using:
➤ Block-local synchronization
➤ Block-local shared memory
Threads from different blocks cannot cooperate.

 所有由一个核产生一系列线程将成为一个集合,名为 grid 。在一个格子内的所有线程将分享一样的全局内存空间。一个 grid 由许多的 block 组成。一个线程块(thread block) 是一组线程的组合,它们可以互相之间合作(用下面的方法):

  1. Block-local synchronization
  2. Block-local shared memory

不同的block中的线程不可以合作。

 

关于kernel

A kernel function is the code to be executed on the device side. In a kernel function, you define the computation for a single thread, and the data access for that thread. When the kernel is called, many different CUDA threads perform the same computation in parallel.

一个核函数是将要在设备端(device)运行的一系列代码。在核函数中,你为一个单独的线程指定运算和线程可以接触到的数据。当这个核被激活时,许多的CUDA线程并行同样的计算。

The following restrictions apply for all kernels:
➤ Access to device memory only 只可以接触设备的内存
➤ Must have void return type  返回值必须是空
➤ No support for a variable number of arguments 不支持一个参数的变量
➤ No support for static variables  不支持静态变量
➤ No support for function pointers  不支持函数指针
➤ Exhibit an asynchronous behavior  表现为一个非同步的

变量类型

 

关于SM

Jetson AGX Orin 上适配 Unsloth:嵌入式大模型微调实战指南 LoRA微调是轻量化大模型适配边缘设备的核心技术,其原理依赖CUDA算子融合、低秩参数注入与混合精度训练。在Jetson AGX Orin等嵌入式平台,受限于sm_87计算能力、LPDDR5x内存带宽及JetPack定制工具链,标准Unsloth无法直接运行——必须重构编译流程、patch CUDA内核并重设训练策略。该方案的技术价值在于突破数据中心级框架的部署边界,实现7B级模型在25W功耗、32GB内存约束下的端到端微调闭环。典型应用场景包括智能终端模型迭代、高校低成本算法验证及边缘AI产品原型开发。本 阅读详情

相关推荐

Qwen 3.6生产级兼容性测试:Spark+Halo+CUDA/HIP全栈验证

大模型落地本质是系统工程,而非单点推理——核心在于能否无缝融入企业现有大数据栈与异构算力底座。Qwen作为主流开源大模型,其工程价值取决于在Spark数据流水线中的特征提取稳定性、在Halo等轻量分布式框架下的微调可扩展性,以及对CUDA/HIP双生态、多版本(11.0–13.2)、多硬件(A100/MI250X/T4)的真实兼容能力。本文基于TB级日志处理、酒店智能推荐、空气质量时序预测等典型场景,揭示Qwen 3.6在数据搬运、算子融合、显存复用与跨设备通信四大承压断面的表现,为算法工程师、MLOps团

weixin_33857230的博客 413

GPU与CPU分工原理:从CUDA报错看并行计算本质

并行计算是现代AI与高性能计算的基石,其核心在于任务如何在CPU与GPU间合理拆分。CPU擅长低延迟、强分支、异构任务调度,GPU则专精于高吞吐、规则化、数据并行的数学运算。这种差异源于二者底层架构:CPU依赖复杂流水线与缓存一致性,GPU采用SIMT模型与Warp级同步。CUDA并非简单加速库,而是涵盖驱动、运行时与编译器的完整协同系统,负责内存管理、Kernel调度与版本对齐。典型问题如'no kernel image available'实为CUDA Toolkit、PyTorch二进制包与GPU计算

weixin_30410119的博客 620

Warp:GPU性能瓶颈的底层真相与优化实战

Warp是NVIDIA GPU硬件强制执行的最小调度单元(32线程同步组),本质是硅基物理约束而非软件抽象。其核心原理在于通过SIMT架构实现指令级并行,并依赖warp级合并访问、低分歧度和高调度并发来隐藏内存延迟。技术价值体现在直接决定SM计算资源利用率、显存带宽实际吞吐及kernel吞吐上限;典型应用场景涵盖深度学习训练推理、科学计算加速、实时渲染与FlashAttention等高性能算子实现。理解warp行为,是突破PyTorch/CUDA性能天花板、规避nvidia-smi‘假高载’陷阱的关键基础。

weixin_30307921的博客 337

NVIDIA GPU- 流式多处理器(Streaming Multiprocessor)

流式多处理器(Streaming Multiprocessor,简称SM)是NVIDIA GPU的基本计算单元。理解SM的结构和功能对于最大限度地利用GPU的计算能力非常重要。总结:SM是NVIDIA GPU的核心计算单元,负责执行CUDA线程。理解其工作原理有助于更好地设计和优化CUDA程序。

青衫客36的博客 6229

开源大模型架构真相:MoE、vLLM与生产级部署全解

开源大模型远不止于发布权重文件,其核心是可复现、可调试、可演进的完整技术栈。从Transformer基础结构到MoE稀疏激活机制,原理上需理解专家路由、张量并行与KV缓存管理;技术价值体现在推理效率跃升与资源利用率优化;典型应用场景覆盖高并发API服务、多卡分布式推理及Agent智能体编排;而真正落地依赖vLLM等工业级引擎对PagedAttention、Expert Parallelism和OpenAI兼容协议的深度开源实现。本文聚焦MoE架构在真实服务器中的运行逻辑与工程细节。

weixin_33767813的博客 568

RAG评估去黑盒化:Ollama本地实现faithfulness归因与answer_relevancy可解释性

RAG评估本质是验证生成答案的事实忠实性(faithfulness)与用户意图相关性(answer_relevancy),其核心原理在于解耦‘检索-生成-验证’链路,避免大模型自评带来的幻觉放大风险。技术价值在于将模糊评分转化为token级归因报告,提升调试确定性与优化靶向性;典型应用场景包括无GPU环境下的知识助手效果验证、低成本合规审计、以及RAGAS分数异常时的根因诊断。本文聚焦Ollama轻量模型驱动的本地化实现路径,深度融合faithfulness归因与answer_relevancy可解释性两大

weixin_34194359的博客 484

GPU架构分析

GPU相关基本概念以及内存情况

qq_47564006的博客 3520

PyTorch DataLoader底层原理与实战避坑指南

DataLoader是PyTorch数据加载的核心抽象,其本质是一套由Dataset、Sampler和DataLoader协同构成的运行时契约系统。理解其工作原理需从数据流水线的分层机制切入:Dataset负责单样本类型安全与纯函数式获取,Sampler控制采样逻辑与分布均衡,DataLoader则承担多进程调度、内存管理(如pin_memory)与批处理组装。该机制直接决定训练稳定性与GPU利用率,在缺陷检测(welding defect dataset)、交通标志识别(glare traffic sig

weixin_30613433的博客 383

GPU架构,由sp,sm,thread,block,grid,warp说起

掌握部分硬件知识,有助于程序员编写更好的CUDA程序,提升CUDA程序性能,本文目的是理清sp,sm,thread,block,grid,warp之间的关系。由于作者能力有限,难免有疏漏,恳请读者批评指正。   首先我们要明确:SP(streaming Process),SM(streaming multiprocessor)是硬件(GPU hardware)概念。而thread,block,grid,warp是软件上的(CUDA)概念。 1.从硬件看 SP:最基本的处理单元,streamin...

C/C++、嵌入式开发、深度学习算法、模型部署与推理优化 8674

PyTorch CNN落地全链路实战:从训练到Jetson部署避坑指南

卷积神经网络(CNN)是计算机视觉任务的核心架构,其本质是通过局部连接与权值共享实现特征提取;PyTorch作为主流深度学习框架,提供了灵活的张量运算与自动微分能力,但真实工程落地远不止定义nn.Conv2d——它涉及数据加载瓶颈、混合精度数值稳定性、CUDA硬件适配、TorchScript序列化与TensorRT推理优化等关键环节。技术价值在于 bridging the gap between academic code and industrial deployment,典型应用场景包括智能质检、边缘设

weixin_28224217的博客 236

ASPP - 空洞空间金字塔池化

文章目录1 空洞卷积1.1 空洞卷积的理解1.1.1 一维1.1.2 二维1.2 空洞卷积的优劣2. ASPP3. 代码 1 空洞卷积 1.1 空洞卷积的理解 1.1.1 一维 (a) 正常卷积:输入特征 Input feature,kernel = 3,stride = 1,pad = 1,输出特征 Output feature。 (b) 空洞卷积:与图 (a) 不同之处在于 pad = 2,同时引入一个 rate = 2(表示卷积核中参数间间隔的超参)。   还可通过下图进一步理解普通卷积与空洞卷

晓野豬 2万+

【GPU结构与CUDA系列2】GPU硬件结构及架构分析:流多处理器SM,流处理器SP,示例架构分析

1 GPU架构的发展 架构名 发布年份 显卡名称 每个SM中SP的数量 Tesla 2008 Fermi 2010 GTX400 GTX500 GF100:32;GF10X:48 Kepler 2012 GTX600 GTX700 192 Maxwell 2014 GTX800 GTX900 Jetson-Nano 128 Pascal 2016 GP100 GTX1000 MX150 MX250 Jetson-TX2 Volta 2017 GV100 Tesla

呆呆象呆呆的博客 1万+

大模型和任务型对话系统如何结合

三种方法都是基于prompt1.prompt中定义大量可分类的domain标签,每种标签含有的样例。走对话系统nlu常规步骤,domain分类,意图分类,slot提取等。缺点:需要很复杂的prompt,写的未必完善。需要多次调用llm2.prompt中定义每种query下可以调用的functioncall。3.也是基于prompt,可以管理对话主题,实现更丰富的话题流转。面向某个具体领域,没有细分的domain类别。

qq_29837229的博客 2450

CUDA_代码在编译时arch和gencode的设置说明_SM(流式多处理器)

SM(Streaming Multiprocessing):流式多处理器 https://blog.youkuaiyun.com/weixin_40427089/article/details/86741198 https://www.cnblogs.com/physutech/articles/10928077.html Nvidia GPU架构 - Cuda Core,SM,SP等等傻傻分不清? https://blog.youkuaiyun.com/asasasaababab/article/details/8044

jialibang的博客 2035

室内无人机自主定位:融合Mid360激光雷达与光流传感器的无GPS导航实践

本文详细介绍了室内无人机自主定位技术,通过融合Mid360激光雷达与光流传感器实现无GPS导航。文章分析了技术挑战、硬件配置、算法优化及实战调试,展示了在复杂室内环境中如何实现厘米级定位精度,为仓库巡检、隧道勘测等场景提供可靠解决方案。

weixin_30500105的博客 532

科研党必看!Zotero+Claude3插件实战:如何用AI高效阅读文献(附详细配置步骤)

本文详细介绍了如何通过Zotero与Claude3插件的深度整合,实现科研文献的高效阅读与管理。从环境配置到核心功能实战,包括智能摘要生成、精准学术翻译和论文写作辅助等,帮助科研人员大幅提升工作效率。特别适合需要处理大量文献的研究者使用。

o0p1q2r3的博客 433

ThinkStation PGX:首款Blackwell移动AI开发平台实战指南

统一内存架构与片上融合计算正重塑AI开发范式——当CPU与GPU通过NVLink-C2C实现1.8TB/s互连,传统PCIe带宽瓶颈被彻底消除,开发者首次获得接近‘单芯片’的低延迟、高带宽AI计算体验。Blackwell架构原生支持WGMMAs指令集与CUDA 12.6统一生态,使PyTorch编译、FlashAttention-2加速、AWQ量化等关键能力开箱即用,显著降低多模态模型(如Llama-3、Whisper-large-v3、FunASR)的部署门槛。该平台面向高校科研、边缘POC验证及自由AI

weixin_30363509的博客 476

嵌入式模拟电路面试题大全及参考答案(持续更新)

高输入阻抗:由于晶体管的基极-发射极(BJT)或栅极-源极(MOSFET)电压很低,跨导放大器具有很高的输入阻抗。低输出阻抗:晶体管的集电极-发射极或漏极-源极电阻较低,提供较低的输出阻抗。电压控制:输入信号控制晶体管的跨导,从而控制输出电流。晶体管:作为放大器的核心,可以是BJT或MOSFET。偏置电路:为晶体管提供稳定的工作点,确保其在放大区域内工作。负载电阻:与晶体管的集电极或漏极连接,将电流转换为电压。晶体管的选择:根据所需的增益、速度和功率消耗选择合适的晶体管。偏置稳定性。

大模型大数据攻城狮的专栏 989

Ubuntu 18.04深度学习环境搭建:cuDNN 7与NCCL 2精准配置指南

cuDNN和NCCL是GPU加速深度学习的核心底层库——前者为卷积等算子提供微架构级优化内核,后者实现GPU间零拷贝、拓扑感知的高效通信。其正确安装并非简单复制文件,而是需严格匹配CUDA版本、glibc ABI、内核模块与硬件拓扑的系统工程。在Ubuntu 18.04这一关键LTS平台上,cuDNN 7.6.5与NCCL 2.4.8构成TensorFlow 1.x和PyTorch 1.4等经典框架的稳定基线,广泛应用于ResNet、BERT等分布式训练复现。本文聚焦版本对齐原理、动态库加载机制、LD_LI

weixin_30924087的博客 445

将Keil中的变量数组导出

首先,写好导出数据的函数。

小柚子的博客 1952

2023年全国青少年信息素养大赛C++编程初中组决赛真题+答案解析

2023年全国青少年信息素养大赛C++编程初中组决赛真题+答案解析

伶俐角少儿编程 819

WSL2本地微调大模型实现Text-to-SQL全流程

Text-to-SQL是将自然语言查询自动转化为结构化SQL语句的关键技术,其核心在于让大语言模型精准理解数据库schema、遵循SQL语法规则并生成可执行代码。该任务依赖高质量指令微调、低秩适配(LoRA)与高效推理机制,技术价值体现在降低数据分析门槛、加速BI需求交付、推动企业数据民主化。典型应用场景包括电商订单分析、用户行为洞察、财务报表生成等需频繁对接关系型数据库的业务环节。本文聚焦在Windows笔记本(RTX 4070+WSL2)这一轻量硬件环境下,基于Llama-3-8B和Unsloth框架完

weixin_34269583的博客 378

【uni-app】PDA扫码枪获取扫码数据APP(通俗易懂),聚焦频繁弹软键盘输入法等各种坑完美解决方法,附完整代码

uniapp PDA扫码枪获取扫码数据APP(通俗易懂),频繁弹软键盘等各种坑完美解决方法

coderYYY的博客 7418

大模型训练工程化:显存优化与分布式通信实战指南

大语言模型(LLM)训练本质上是软硬件协同的系统工程,核心挑战在于突破GPU显存瓶颈、降低分布式通信开销,并保障高维参数流形的几何稳定性。其原理涉及梯度传播路径压缩、ZeRO分片数学等价性、AllReduce通信拓扑优化等底层机制。技术价值体现在千卡集群下稳定训练7B+模型、将OOM故障率降低90%、推理延迟压缩超50%。典型应用场景包括金融客服微调、代码生成Pipeline部署、长文档摘要服务等对延迟与事实一致性要求严苛的工业落地环节。本文聚焦LLM训练工程化与显存瓶颈突破两大热词,提供可直接集成至CI/

weixin_34006468的博客 515

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

人工神经网络全链路性能优化实战:从数据加载到推理部署

人工神经网络性能优化并非单一调参问题,而是涵盖数据加载、计算执行、梯度更新与模型部署的四层耦合系统工程。其核心原理在于识别并量化各层瓶颈——如DataLoader线程阻塞、FP16下溢、BatchNorm统计漂移或Dropout未关闭等——通过可测量、可归因的工程手段实现加速与稳定。技术价值体现在训练耗时降低40%、GPU利用率提升90%、验证波动压缩60%以上,并保障上线QPS与延迟稳定性。典型应用场景包括工业质检、金融风控、医疗影像等对精度、速度与鲁棒性均有严苛要求的AI落地环节。本文聚焦真实生产环境中

vanadiumlin 495

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

CUDA学习之核函数的并行机制(一)

一、背景 首先我一直有一个疑问?核函数中线程是如何执行的,他的并行性的执行机制是什么? 同一个warp是并行的,不同warp间是串行的吗 因此我们开始学习一下: 二、CUDA与GPU名词解析 首先我们要明确:SP(streaming Processor,流处理器),SM(streaming multiprocessor,流多处理器)是硬件(GPU hardware)概念。 而thread,block,grid,warp是软件上的(CUDA)概念。 2.1 (1)SP SP是最基本的处...

deep_love1314的博客 3956
上一篇: CVPR2019目标检测方法进展综述( 转载 )
下一篇: Latent Embeddings for Collective Activity Recognition
physuleo
博客等级 码龄12年 32粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值