英伟达的GPU(3)

CUDA——wmma Tensor Core编程 share memory空间的申请 __shared__ int smem[1024] load_matrix_sync 从share memory load一个matrix到fragment中 wmma::load_matrix_sync(fragment<matrix_a/matrix_b, M, N, K, DType, row_major/col_major>& frag, const DType* p, unsigned ldm) 该接口是一个warp级别的操作, . 阅读详情

  上节内容:英伟达的GPU(2) (qq.com)

      书接上文,上文我们讲到CUDA编程体系和硬件的关系,也留了一个小问题CUDA core以外的矩阵计算能力是咋提供的

      本节介绍一下Tensor Core 

      上节我们介绍了CUDA core,或者一般NPU,CPU执行矩阵运算的逻辑,基本就是矩阵的一条横向量*另一个矩阵的列向量(逻辑上可以这么认为)

     

    如上面的图所示,左边代表了Pascal架构就是P架构的时候 CUDA core 来处理矩阵运算的逻辑,蓝色的矩阵和紫色的矩阵分别代表两个矩阵,然后他俩做点积的时候,基本就是一个横向量*一个列向量。

      我们把这个过程细化一下:

      两个矩阵A和B,他俩点乘等于一个C,写出来其实就是这样的

      

图片

       I和J代表行和列的角标,k就是算到第几轮计算了。

       这个好理解吧。

      虽然宏观上我们说是向量点乘向量,但是微观上,其实还是一个格子对一个格子的算。

     

CUDA Core 实现矩阵乘法

  1. 矩阵分块:将大矩阵划分成适合 CUDA 核心处理的小块(block)。通常每个 block 是一个二维块,其中包含多个线程(thread)。例如,16x16 或 32x32 的 block 大小是常见的选择。

  2. 线程分配:每个线程块中的线程负责计算结果矩阵 C 中一个小块的元素。例如,一个 16x16 的 block 会有 256 个线程,每个线程计算 C 中一个 16x16 小块中的一个元素。

  3. 并行计算:每个线程独立执行矩阵乘法的部分计算。具体来说,每个线程计算一个元素Cij,它需要遍历矩阵 A 的第 i 行和矩阵 B 的第 j 列,进行乘法和累加操作。

  4. 共享内存:为了提高性能,CUDA 核心利用共享内存。共享内存是一种高速缓存,允许同一个 block 内的线程共享数据。(这我后面讲Cache和显存那块会细讲)矩阵的分块计算过程中,子矩阵会被加载到共享内存中,减少全局内存访问次数,提高计算效率。

具体计算步骤

用代码表示:

  1. 分配线程和块:

    • 定义网格(grid)和块(block)的尺寸。(这块看不懂的,去看我上一节讲的CUDA编程线程分级体系)

    • 将计算任务分配给每个块和线程。

  2. 加载数据到共享内存:

    • 每个线程块加载一小块矩阵 A 和 B 到共享内存中。

    • 这些小块矩阵被多次重复使用,减少对全局内存的访问。

  3. 计算并累加结果:

    • 每个线程计算其负责的结果矩阵 C 中一个元素。

    • 进行多次小块矩阵乘法的累加,直到完成整个矩阵乘法运算。

  4. 写回结果:

    • 计算完成后,将结果写回全局内存中的结果矩阵 C。

图片

     

     上面对比图右边那个操作就是Tensor Core的矩阵计算操作,先不解释,就光看就比左边猛很多,对吧?它就不是行列级别了,就是直接矩阵和矩阵运算了,其实当时V系列第一次出Tensor core的时候是很让人惊艳的,但是到了现在,大多数NPU都支持MXM(matrix 乘模块),但是当年V系列推出的时候还是很惊艳的,现在其实也很猛,但是主要是连年的性能提高。

    Tensor Core除了对比图中展示的,直接矩阵*矩阵,在一个单位的时钟里面能提供尽可能多的计算能力以外,还有就是可以支持16和32的混合精度能力

图片

      如上图所示,在V100刚出的时候就推出了这个功能。

      每个 Tensor Core 一个计算周期能执行 4x4x4 GEMM,就相当于64 个 FMA。

     比如对于运算D=A*B+C,其中A、B、C 和 D 是 4×4矩阵。矩阵乘法输入 A 和 B 是 FP16矩阵,而累加矩阵 C 和 D我就不非得要求是 FP16,我是FP16还是FP32 矩阵都行。

     这个对于CUDA Core来讲,也不是做不到的,你可以手动实现可以通过 CUDA 代码手动实现混合精度计算,例如使用 FP16 数据类型进行部分计算,然后转换为 FP32 进行累加等。但是这么做,第一是墨迹,多出一步增加复杂度和延迟,第二是没专门硬件给你优化啊,因为CUDA Core我们第一章讲过,固定的精度,多少就是多少。

      所以对于混合精度,现在也是LLM训练必备的能力了,从某种意义上讲,在NV上想支持,Tensor Core就是必须的了。

     

图片

    再就是A100和后面的型号的sparse matrix的压缩

    

图片

    说白了就是 稀疏矩阵,NV的Tensor core给你做的话,能把0给压没了,你矩阵变小了,算的不就快了吗,这也是为什么大家看NV的datasheet总看不懂的原因

图片

      比如上图,看着这么猛,实际上都是按稀疏矩阵算的,所以我们正常算的时候都按1半算,这也就是大家一聊H100就说900多的原因。

      Tensor Core是怎么处理矩阵计算的呢?

Tensor Core 矩阵乘法运算

    还是假设有两个矩阵 A 和 B,它们的乘积是矩阵 C。Tensor Core 的主要特点是支持 WMMA(Warp Matrix Multiply-Accumulate)操作,这是一个特定的 CUDA 函数,用于执行矩阵乘法和累加。

Tensor Core 计算步骤

  1. 分配线程和块:

    • 使用 Warp(通常是 32 个线程)来分配计算任务。

    • 一个 Warp 负责计算结果矩阵 C 的一个 16x16 子矩阵。

  2. 加载数据到共享内存:

    • 将矩阵 A 和 B 的子矩阵块加载到共享内存中。

    • 这些子矩阵块在共享内存中进行矩阵乘法运算。

  3. 执行矩阵乘法和累加操作:

    • 使用 WMMA API 来执行矩阵乘法和累加操作。

    • Tensor Core 在一个时钟周期内执行多个浮点运算。

  4. 写回结果:

    • 计算完成后,将结果写回全局内存中的结果矩阵 C。

   

这里就得提一嘴WMMA了

WMMA(Warp Matrix Multiply-Accumulate)是 NVIDIA 为 Tensor Core 提供的专用 API,用于在 CUDA 中执行高效的矩阵乘法和累加操作。WMMA API 主要特点和工作原理如下:

WMMA API 的主要特点

  1. 高效的矩阵运算:

    • WMMA API 专门优化了矩阵乘法和累加操作,能够在一个时钟周期内执行多个浮点运算,从而显著提高性能。

    • 利用 Tensor Core 的硬件支持,实现高吞吐量的计算。

  2. 支持混合精度计算:

    • WMMA API 支持混合精度计算,即输入矩阵可以使用半精度浮点数(FP16),而计算和输出可以使用单精度浮点数(FP32)。

    • 这种方式不仅提高了计算速度,还在一定程度上保持了计算精度。

  3. Warp级别的操作:

    • WMMA API 在 Warp 级别(通常是 32 个线程)进行操作。每个 Warp 负责计算结果矩阵中的一个 16x16 子矩阵。

    • 通过并行执行多个 Warp,实现大规模并行计算。

  4. 片段操作:

    • WMMA API 引入了片段(fragment)的概念,用于存储子矩阵和累加器。

    • 片段在寄存器中进行存储和操作,减少了对全局内存的访问,从而提高了性能。

WMMA API 的工作流程

  1. 声明和初始化片段:

    • 使用 wmma::fragment 声明用于存储矩阵块和累加器的片段。

    • 使用 fill_fragment 对累加器片段进行初始化。

  2. 加载矩阵数据到片段:

    • 使用 load_matrix_sync 将全局内存中的矩阵数据加载到片段中。

    • 这些数据将被加载到共享内存或寄存器中,以便快速访问和计算。

  3. 执行矩阵乘法和累加操作:

    • 使用 mma_sync 执行矩阵乘法和累加操作。

    • 该函数将两个输入矩阵片段相乘,并将结果累加到累加器片段中。

  4. 存储结果到全局内存:

    • 使用 store_matrix_sync 将计算结果从累加器片段存储回全局内存。

    • 结果矩阵的子块被写回到指定的内存位置。

    代码样例:

图片

      最后值得一说的就是CUDA core 和Tensor Core支持的精度不一样,不是啥下游任务两个都可以做,还是得看具体支持。

  

图片

     本节完,下一章写缓存结构

CUDA编程之CUDA Sample-3_CUDA_Features-cudaTensorCoreGemm CUDA sample中3_CUDA_Features里包含一些展示 CUDA 各种特性的sample。cudaTensorCoreGemm这个sample展示了如何使用 WMMA (Warp Matrix Multiply Accumulate) API 执行矩阵乘法。 阅读详情

相关推荐

2025.3.23英伟达常用GPU参数速查表,含B300

含RTX5090、RTX4090D、L40、L20、A100、A800、H100、H800、H20、H200、B200、B300、GB300.....英伟达常用GPU参数速查表,

m0_71832273的博客 1万+

Nvidia Tensor Core-WMMA API编程入门

对于计算能力在7.0及以上的CUDA设备,可以使用CUDA C++ API调用Tensor Core,支持形如D = AB + C的混合精度的矩阵乘运算。

https://www.zhihu.com/people/mu-zi-zhi-6-28 4660

英伟达129.3亿美元收购Run:ai:GPU集群调度与算力利用率成为AI基础设施核心

在AI算力需求爆发式增长的今天,如何高效管理和调度GPU资源已成为所有深度学习团队必须面对的核心问题。传统集群中,GPU利用率普遍偏低,大量昂贵算力在排队、同步和空转中浪费。Kubernetes作为云原生编排的事实标准,正在成为AI基础设施的底座,通过设备插件、自定义调度器以及资源池化技术,可将GPU利用率从30%提升至80%以上。基于这一背景,英伟达斥资129.3亿美元收购全球领先的AI开源平台Run:ai,将其GPU池化、动态调度和多租户隔离能力纳入自身生态,标志着AI基础设施从单纯堆硬件走向软件定义算

weixin_29057237的博客 82

GEMM by CUDA WMMA

GEMM by CUDA WMMA (tensor core)

gtyinstinct的博客 2116

英伟达GB100介绍

具体来说,Blackwell GPU可能在一个封装中集成了多个小型GPU芯片(即小芯片),这些芯片通过先进的互连技术(如NVLink)相互连接,形成一个高效、可扩展的计算平台。1、灵活性:小芯片设计允许将不同功能的芯片(如计算芯片、内存芯片等)以模块化的方式组合在一起,从而提高了设计的灵活性。这种设计有助于降低生产成本并提高产品良率。1、高带宽和高速度:HBM3E提供了极高的数据传输速度,据不同来源的信息,其传输速度可达到8Gbps或更高(如9.6Gb/s、9.8Gbps等),这相比前代产品有了显著提升。

2402_84466582的博客 2428

关于DHCP Option60的认识

<br />       最近在网络建设过程中,必须面对一个实际存在的问题:当只有一根线入户时,该如何解决CATV和宽带业务的共存呢?这时就要考虑用到DHCP Option60了,那么DHCP Option60到底是如何来实现业务区分的呢?<br />首先先来看下DHCP协议,在DHCP协议中,定义了一个option字段,该字段主要是用来扩展DHCP协议的,Option 60 (Vendor class identifier)是DHCP报文中的一个选项字段,code为60,可以标识终端类型,根据不同的终

luoyingchuan的专栏 7940

令人头秃的cudaTensorCoreGemm详解

我曾被cudaTensorCoreGemm的代码苦苦折磨了一个月,官方文档也不够详细,代码虽然很多注释也不太好理解,于是决定自己写一个cudaTensorCore的详解。本文主要对cudaTensorCore中的compute_gemm函数进行分析。 Compute_gemm函数流程图如下图所示: Cuda wmma API主要用于使用SM中WARP和TensorCore加速矩阵乘加运算,标准公式如下(大写字母均为矩阵): D=α×A×B+β×C 其中A矩阵为M×K,B...

jianjianheng的博客 8297

2026年(新服务器默认密码)最新各大厂商默认凭证大全

本文整理了国内外主流服务器厂商的默认管理接口凭证信息,包括Dell、HPE、浪潮、华为等品牌的管理接口类型、默认用户名/密码和IP地址。特别强调国产服务器在信创环境下的安全风险,指出国内厂商部分型号仍保留固定默认密码(如浪潮admin/admin),而国际厂商多采用随机密码标签。文章提供了新机初始化安全流程建议:查找机箱标签、立即修改默认密码、配置网络隔离、更新固件等。最后提醒运维人员,服务器安全应从首次上电开始重视,管理接口暴露是重大风险点,必须严格执行安全规范。

你好,旧时光! 1705

卖GPU的巨头开始免费送大模型:英伟达开源Nemotron 3.5,一张显卡就能跑

卖GPU的巨头开始免费送大模型:英伟达开源Nemotron 3.5,一张显卡就能跑

math_bearrr的博客 276

深入浅出:.sh文件在Linux系统中的实战应用与技巧

本文深入浅出地介绍了.sh文件在Linux系统中的实战应用与技巧。从基础概念入手,详细讲解了Bash脚本的运行方法、权限管理,并通过编写自动化备份脚本等实例,展示了如何利用Shell脚本提升工作效率。文章还涵盖了脚本调试、错误处理以及函数、参数解析等进阶技巧,帮助读者从入门到精通,掌握这一强大的自动化工具。

weixin_29243279的博客 348

告别F5失灵!手把手教你为Cursor配置.Net Core控制台项目专属调试环境

本文详细指导如何在Cursor编辑器中为.Net Core控制台项目配置专属调试环境,解决F5失灵等常见问题。从调试器选择到launch.json配置,再到高级调试技巧,帮助开发者高效搭建完整的调试工具链,提升开发效率。

weixin_28834765的博客 285

英伟达高性能芯片供货周期缩短到2-3个月,今年GPU不再紧缺?

作为英伟达NPN合作伙伴,英智公司采用了英伟达顶配芯片,在深圳建设了一套千卡规模的人工智能智算集群。戴尔台湾地区总经理Terence Liao近日称,英伟达高性能 AI GPU的交付周期在过去几个月中已从3-4个月缩短到仅2-3个月,进入2024年以来交货等待时间一直在不短缩短,目前的2-3个月已经是英伟达高性能GPU最短的交货期。在国产芯片能够逐渐替代英伟达之前,至少还有三五年的过渡阶段,拥有足够多的英伟达芯片,目前是国内大多数企业在AI领域的竞争优势。目前这套千卡智算集群可。

ai2nv的博客 473

人工智能(AI)简史:推动新时代的科技力量

人工智能(AI,Artificial Intelligence)是计算机科学的一个分支,旨在研究和开发可以模拟、扩展或增强人类智能的系统。它涉及多种技术和方法,包括机器学习、深度学习、自然语言处理(NLP)、计算机视觉、专家系统等。

qq_17153885的博客 1万+

从3分到2.8秒,英伟达H100 GPU,将量子纠错校准压至秒级极限

量子硬件最残酷的物理真相,是它时刻都在。零点几毫开尔文的温漂、微观材料缺陷(两能级系统 TLS)的随机跃迁,足以在几分钟内让一台刚调优的芯片参数失真。这种漂移是量子纠错(QEC)的隐形杀手。解码器要想在海量伴随噪声的奇偶校验中挑出真凶,依赖一套精确标定底层噪声的数值权重(Weights)。权重一旦失真,解码器就会开始误诊,导致逻辑错误率雪崩。传统的应对极其绝望:停机、重新校准。为了通过最小化逻辑错误率(LER)训练出一组新权重,后端必须用解码器暴力解算数百万个错误综合征(Syndrome)。

Qtumist的博客 193

RK3568 HDMI输出调试:分辨率切换与EDID解析

厂商信息(Vendor ID)显示器型号(Product ID)支持的分辨率列表色彩特性音频支持情况检查项方法HPD 信号EDID 读取当前模式TMDS 时钟PHY 状态。

小灰灰的博客 1485

由JavaScript版迷宫游戏引出Java版迷宫地图生成器

Java案例:迷宫地图生成器 一、引入问题 本期18软件1班网页脚本实训项目是完成一个JavaScript版迷宫游戏。 迷宫地图是如何生成的呢?很简单,将一个正方形区域等分为若干行与若干列,比如25行25列,这样就有625个单元格,用一个二维数组map[25][25]就可以保存625个单元格信息,map[i][j] = 1表示该单元格要绘制砖,而map[i][j] = 0表示该单元格不绘制砖。 ...

howard2005的专栏 1473

评价deepseek v3:又一个相信自己比英伟达懂GPU计算并做到了的团队

相较于 fp8 这个可以被看做是相对独立的工程问题,我更喜欢的是他们通过扩大 batch size,提升工程效率的这种算法和工程的联调。deepseek 团队有这个勇气和能力直接抛开英伟达提出的 fp8 实践,给出了例如正反向都使用 e4m3,attention 后的 linear 输入的精度需要提升这样的细节,以及独立实现 per-group scaling 的训练(这部分也可以解读为受 B 系列显卡的 microscaling 启发),真的是非常令人佩服。fp8 训练应该算是各个工程团队长久的痛。

AIBigModel的博客 6272

C# 工业上位机集成 YOLOv8 全实战:模型转换→相机取流→PLC 联动落地部署

// 检测结果实体类,工业场景扩展置信度、坐标、类别字段set;set;set;set;/// 模型配置常量,与导出参数保持一致// 置信度阈值// 非极大值抑制阈值public static readonly string[] ClassNames = { "物料", "缺陷", "挡板" };// 自定义类别本文完整实现了YOLO模型转换→C#上位机集成→工业相机对接→PLC联动→现场部署标准化模型转换流程,杜绝C#端兼容性问题;解耦相机取流、推理、UI线程,满足工业高稳定性要求;

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 321

英伟达 Nemotron 3.5 Lightning 深度解析:300 亿参数 MoE 如何做到单 GPU 跑多智能体任务

英伟达开源Nemotron 3.5 Lightning模型,这是一款面向多智能体任务的300亿参数混合专家(MoE)模型,可在单GPU上高效部署。该模型通过稀疏激活技术(单token仅激活5%-10%参数)和FP8量化实现轻量化推理,相比同规模稠密模型可提升2-3倍推理速度。其核心创新包括:强化函数调用能力、长上下文压缩和角色一致性约束,特别适合多智能体协作场景。技术上采用Top-K路由机制,并针对Agent工作流优化了工具调用和结构化输出能力。英伟达通过开源此类模型,正从硬件供应商向全栈AI平台转型,同时

qq_31532979的贺公子之数据科学与艺术博客,致力于科技向善,拥抱开源,要用技术的影响力来领导团队,而不是威权和职位! 481

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

黄仁勋“站台开源”后首款模型落地:英伟达正式推出 Nemotron 3.5 Lightning,单张 GPU 即可运行

英伟达推出开源AI模型Nemotron3.5 Lightning,兑现黄仁勋支持开源的承诺。这款300亿参数的MoE模型专注于高效执行任务,每次推理仅激活30亿参数,可在单张GPU上运行。其性能出色,输出速度提升4倍,任务提速30%,并已在多个行业落地应用。模型完全开源,包括权重、数据和训练方法,支持低成本定制。配套发布的NeMo Switchyard模型路由库解决了多模型调度问题。这一发布标志着英伟达从硬件供应商向AI工作流定义者的战略转型,为开发者提供了更灵活的AI解决方案。

Rubin智造社|关注AI,AI驱动制造的先锋阵地,聚焦大模型、智能制造、智能电子产品三大核心 555

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

奇瑞采用英伟达GPU,将实现L3自动驾驶

Root 编译整理 量子位 出品 | 公众号 QbitAI汽车制造商奇瑞,将会使用德国采埃孚ProAI自动驾驶系统,以及英伟达专为无人车设计的DRIVE Xavier,实现L3级别的自动驾驶。德国采埃孚,是全球最大的汽车零件供应商之一。采埃孚ProAI自动驾驶系统,会处理多个摄像头及激光雷达的信号,整合信息后绘制出车辆周围环境的360°全景地图,并标注出车辆在地图中所在位置,帮助做出安全的行车决策

量子位 604

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

烧光3亿、资金断裂、欠薪,从砺算科技看国内GPU为什么跑不出“英伟达”?

1国产GPU新贵、硅谷创始团队、力争将国内第一颗6nm GPU推向市场......这是砺算科技以前的耀眼标签。2烧光3亿、半年发不出工资、并购拖延......这是砺算科技眼下的困局。什么原因让砺算科技身陷囹圄?而且近几年,资本的加持、AI的催化以及国家政策的支持,促使大量企业进入这一赛道。那么,其他GPU厂商活得怎么样?为什么说中国GPU炼不出英伟达这样的国际大厂?01烧光3亿、资金断裂、欠薪砺...

大数网 5622

英伟达下一代GPU技术规格分析

英伟达下一代GPU技术规格分析

2129

英伟达新核弹GPU:4nm制程800亿晶体管,20张即可承载全球互联网流量,全新Hopper架构太炸了...

丰色 萧箫 发自 凹非寺量子位 | 公众号 QbitAI他来了他来了,老黄带着英伟达的最新一代GPU来了。之前大家猜的5nm错了,一手大惊喜,老黄直接上了台积电4nm工艺。新卡取名H100,采用全新Hopper架构,直接集成了800亿个晶体管,比上一代A100足足多了260亿个。内核数量则飙到了前所未有的16896个,达到上一代A100卡的2.5倍。浮点计算和张量核心运算...

程序员小灰的博客 557

2025.3.23英伟达RTX50系列显卡GPU参数速查,备用

含RTX5090、RTX5090D、RTX5080、RTX5070TI、RTX5070.....

m0_71832273的博客 2274
上一篇: 小周夜话第一期之负样本和RAG优化
下一篇: 多模态MLLM都是怎么实现的(9)-时序LLM是怎么个事儿?
周博洋K
博客等级 码龄9年 2005粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值