当前位置: 首页 > article >正文

CUDA C++ Best Practices Guide读书笔记

性能优化量化意识为王。阅读大纲目标系统掌握 CUDA 优化知识服务于 tiled 矩阵乘 FlashAttention 实现策略读一层、做一层交替进行不要先读完再动手Layer 1GPU 执行心智模型 ✅章节Ch3 — Heterogeneous Computing核心问题GPU 为什么需要数万个线程什么代码适合放 GPU延迟隐藏Latency Hiding是什么依赖什么条件Layer 2学会用数字衡量性能章节Ch9 — Performance Metrics核心问题如何计算 Theoretical Bandwidth理论带宽上限如何计算 Effective Bandwidthkernel 实际使用的带宽两者之比说明了什么动手对 naive 矩阵乘 kernel 测量实际带宽和理论上限对比Layer 3内存优化最重要章节Ch10 — Memory Optimizations阅读顺序Host ↔ Device 数据传输PCIe 瓶颈 ↓ Global Memory Coalescing合并访问 ← 重点 ↓ Shared Memory Tiling ← 重点FlashAttention 核心 ↓ L1/L2 Cache、Texture Memory ← 了解即可动手实现 naive 矩阵乘观察 global memory 访问模式实现 tiled 矩阵乘对比带宽和性能用 Ch9 的方法量化优化效果Layer 4线程执行模型章节Ch6-8Execution Configuration Ch13 — Control Flow核心问题Warp 是什么为什么是 32 个线程Branch Divergence 如何导致性能损失Occupancy 是什么如何影响延迟隐藏如何配置 block/grid 大小让 SM 充分利用动手为 softmax 实现做准备理解 warp 内 reduction 的写法Layer 5指令级优化按需章节Ch12 — Instruction Optimization内容浮点精度与性能权衡快速数学函数__float2int、-use_fast_math编译器 flag有具体性能瓶颈时再读不需要提前啃。暂时跳过章节原因Ch4 Application Profiling有具体项目再看Ch16 多 GPU先打好单 GPU 基础Ch17-19 数字精度按需查阅Ch20 编译器选项参考手册用到再看与 FlashAttention 实现的对应关系FlashAttention 组件依赖的 CUDA 知识对应章节Tiling分块计算Shared Memory 使用Ch10高效矩阵乘Coalescing TilingCh10Online SoftmaxWarp ReductionCh13避免 HBM 读写内存层次理解Ch9 Ch10线程配置Occupancy 调优Ch6-8Layer 1: GPU 执行心智模型Ch3核心结论CPU 设计目标最小化延迟少数线程跑得快GPU 设计目标最大化吞吐量海量线程用并发掩盖延迟关键机制Latency Hiding延迟隐藏GPU 有成千上万的线程分成若干 warp每个 warp 32 个线程。当某个 warp 等待内存数据时内存延迟约 400-800 个时钟周期GPU 立刻切换到其他就绪的活跃 warp 继续执行等数据回来再切回来。为什么切换没有代价每个线程有独立分配的寄存器切换时不需要保存/恢复任何状态直接换。延迟隐藏失效的条件活跃 warp 数量不足——当所有 warp 都在等内存时没有就绪的 warp 可以切换GPU 空转。运算/传输比Operation-to-Transfer Ratio判断一个计算是否值得放在 GPU 上核心指标是ratio运算次数传输元素数\text{ratio} \frac{\text{运算次数}}{\text{传输元素数}}ratio传输元素数运算次数​比值越高GPU 越划算传输代价被大量计算摊薄。矩阵加法N×N项目数量运算次数N²每个元素一次加法传输元素数3N²A、B、C 各一个矩阵比值O(1)结论不值得放 GPU。传输代价无法被计算收益覆盖。矩阵乘法N×N项目数量运算次数N³N² 个输出元素每个需要 N 次 multiply-add传输元素数3N²A、B、C 各一个矩阵比值O(N)结论值得放 GPU且 N 越大收益越高。什么代码适合放 GPU运算/传输比高大量计算少量数据搬运可大量并行数万个线程同时做独立计算数据尽量留在 GPU 上哪怕某一步在 CPU 更快只要能避免一次 Host-Device 传输在 GPU 上算也值得相邻线程访问相邻内存为 coalescing 做准备详见 Ch10与 FlashAttention 的联系FlashAttention 的核心问题就是第一层的直接应用N×N attention 矩阵N1024 时约 4MB远超 shared memory 容量48-96KB标准 softmax 需要看完整一行才能归一化 → 必须把完整矩阵写回 HBMglobal memoryOnline softmax 允许分块计算数学上消除全局依赖 Tiling物理上适配 shared memory两者结合才能把中间结果留在 shared memory避免反复读写 HBM

相关文章:

CUDA C++ Best Practices Guide读书笔记

性能优化,量化意识为王。 阅读大纲目标:系统掌握 CUDA 优化知识,服务于 tiled 矩阵乘 FlashAttention 实现 策略:读一层、做一层,交替进行,不要先读完再动手Layer 1:GPU 执行心智模型 ✅ 章节&…...

Bean 的“出生证明”:BeanDefinition 解析与扫描机制深度剖析

欢迎来到 20年代——Spring 容器的“设计院” 在 Spring 的世界里,有一个常见的误区:认为 @Component 或 <bean> 标签一写,对象就立刻诞生了。大错特错!Spring 容器启动时,第一件事绝不是 new Object(),而是读图纸。这张图纸,就是 BeanDefinition。 BeanDefinitio…...

Android的配置笔记

MyAndroidApp A new Android project. 配置_笔记。 SDK的路径配置 。 在文件 {ProjectRootDir}/gradle/wrapper/gradle-wrapper.propertieslocal.properties 中的内容示例如下。 # You can first download the file to your local machine and then reference the local path. …...

锦江酒店数百家IT资产远程运维实践:从“救火”到“主动服务”

引言&#xff1a;酒店巨头的数字化新挑战 自1935年锦江茶室创立&#xff0c;到如今成为全球领先的酒店集团&#xff0c;锦江酒店&#xff08;以下简称“锦江”&#xff09;见证了中国酒店业的发展。在数字化浪潮中&#xff0c;锦江一直走在行业前列——从收购法国卢浮集团到搭…...

技术干货版|HLS 流媒体调试必备:m3u8live.cn 在线 M3U8 播放器,免安装一键验流

在直播、点播、Web 视频、在线教育、IPTV 等流媒体业务中&#xff0c;HLS&#xff08;M3U8&#xff09; 已经成为最主流、兼容性最强的传输协议。而日常开发、测试、运维里最高频的场景&#xff0c;就是快速校验一个 M3U8 地址是否有效、能否正常播放、哪里出了问题。 传统方式…...

文件io:一、io的引入与介绍

1.前言&#xff1a;在linux里&#xff0c;几乎所有的可操作设备或者接口都是文件。无需理解&#xff0c;只要记住即可。这些东西比如键盘&#xff0c;鼠标&#xff0c;硬盘&#xff0c;串口&#xff0c;触摸屏&#xff0c;显示器&#xff0c;网络通讯端口甚至是进程间的通讯管道…...

大数相加(高精度加法):C++实现详解

#include <bits/stdc.h> using namespace std;int main() {// 定义两个字符串接收数据string s1, s2;// 定义三个int数组&#xff0c;用于分别存储s1和s2以及s1s2的和int a1[505], a2[505], a3[505];// 输入数据cin >> s1 >> s2;// 翻转s1和s2for (int i 0;…...

Java运算

//定义a,b的值int a 6;a;//自增a的变量 7System.out.println(a);int b 15;b--; //自减b的量 14System.out.println(b);// 定义a/b/c的值int a 4;int b 8;int c 2;int x a b;//将ab的值赋值给x 12int y x - c;//x-c的值再赋值给y 10System.out.println(y);//输出Yin…...

从零开始:OpenClaw 安全远程访问完全指南(SSH隧道实战版)

摘要&#xff1a;本文手把手教你从零部署 OpenClaw 网关&#xff0c;并通过 SSH 隧道实现安全的远程访问。涵盖 OpenClaw 安装配置、防火墙安全加固、SSH 隧道搭建&#xff08;含 Windows/Mac/Linux 全平台方案&#xff09;&#xff0c;以及常见问题排查。无需公网暴露端口&…...

100多套减速机齿轮,齿轮轴CAD图纸

在机械传动领域&#xff0c;减速机齿轮与齿轮轴的设计是保障设备稳定运行的核心环节。这批涵盖大量减速机齿轮及齿轮轴的CAD图纸&#xff0c;系统呈现了从基础结构到复杂配合的完整设计逻辑。齿轮作为动力传递的关键部件&#xff0c;其齿形、模数、压力角等参数直接影响传动效率…...

文件io:二、系统io和api

1.前言&#xff1a;先讲讲为什么要打开文件或者关闭&#xff1a;我们已知linux的各种东西都是文件&#xff0c;也就是io。你不打开文件你怎么写程序和编程&#xff1f;&#xff1f;&#xff1f;因此我们需要打开文件&#xff0c;编写和操作文件&#xff0c;然后再关闭文件。1.1…...

shell脚本语言知识点总结

一、ShellScript 概述1. 基础定义Shell 脚本&#xff08;ShellScript&#xff09;是运行在 Linux 终端的脚本语言&#xff0c;本质是Linux 命令的集合&#xff0c;与 C/Java 等编译型语言不同&#xff0c;无需编译即可执行。2. 核心特性弱类型语言&#xff1a;无需提前定义变量…...

SEO_详解SEO关键词研究的完整步骤与工具推荐

SEO关键词研究的完整步骤与工具推荐在当今竞争激烈的互联网环境中&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;是提升网站排名和吸引流量的关键。而在SEO的众多策略中&#xff0c;关键词研究占据了核心位置。本文将详细解析SEO关键词研究的完整步骤与推荐的工具&#…...

消息中间件RabbitMQ04:路由模式+死信队列的应用实践模板

一、Demo场景基于 RabbitMQ 实现带死信队列的消息收发场景&#xff0c;生产者发送消息至 Direct 交换机&#xff0c;普通消费者处理消息&#xff08;50% 失败率&#xff09;&#xff0c;失败 / 超时消息自动进入死信队列&#xff0c;由死信消费者兜底处理&#xff0c;避免消息丢…...

RPC核心原理:组件与调用流程

RPC核心原理&#xff1a;组件与调用流程 RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;的核心价值是屏蔽网络通信的底层复杂性&#xff0c;让开发者调用远程服务的方法时&#xff0c;体验与调用本地方法完全一致。其实现可拆解为5个核心组件和1个…...

二十、kubernetes基础-30-kubernetes-ha-binary-deployment-07-dns-operations

CoreDNS 部署、集群可用性验证与节点管理全攻略 技术深度&#xff1a;⭐⭐⭐⭐⭐ | CSDN 质量评分&#xff1a;97/100 | 适用场景&#xff1a;Kubernetes 服务发现、集群运维、节点管理 作者&#xff1a;云原生架构师 | 更新时间&#xff1a;2026 年 3 月 摘要 本文深入解析 K…...

刚刚!GPT-5.4 mini/nano正式发布,轻量编程模型性能逼近满血版

文章目录前言速度快到飞起&#xff0c;程序员终于可以少等会儿了nano来了&#xff1a;便宜到离谱&#xff0c;速度狂魔专属ChatGPT免费用户也能蹭一波福利价格涨了&#xff0c;但性价比其实更高了&#xff1f;小模型崛起&#xff0c;AI开始学会"分工协作"对我们普通人…...

玄晶引擎XgenCore Works V2.8.1升级解析 技术迭代赋能场景 代理模式全新落地

在AI与RPA技术深度融合、数字化转型加速推进的背景下&#xff0c;玄晶引擎XgenCore Works持续深耕产品迭代&#xff0c;正式推出V2.8.1版本。本次升级聚焦RPA技术优化、场景化落地与市场生态拓展&#xff0c;兼顾技术专业性、功能实用性与商业可行性&#xff0c;严格遵循CSDN平…...

Springboot项目常用工具对比总结

1.json工具对比在 Java 开发中&#xff0c;ObjectMapper.readValue()&#xff08;Jackson 库&#xff09;和 JSONObject.parseObject()&#xff08;FastJSON 库&#xff09;都是将 JSON 字符串转换为 Java 对象的核心方法&#xff0c;但两者分属不同的 JSON 解析框架;总结 核心…...

Part 1:Python语言核心 - 内建数据类型

Python 数据类型 - 内建数据类型 基本类型 Python 运行时最底层、最稳定、最常被优化的一类对象。 它们的共同点&#xff1a; 都是 内建类型&#xff08;built-in types&#xff09;都是 不可变对象&#xff08;immutable&#xff09;都有 明确的 C 层实现都深度参与 Python 的…...

RK3588 OpenClaw 定时任务踩坑与守护进程方案

这是 RK3588 部署 OpenClaw 系列的第二篇文章&#xff0c;记录 Android/Termux/PRoot 环境下定时任务失效的踩坑全过程。 系列文章目录&#xff1a; 第一章 RK3588 部署 OpenClaw 完整记录第二章 RK3588 OpenClaw 定时任务踩坑与守护进程方案&#xff08;本文&#xff09; 相…...

SEO_长期有效的SEO策略应该如何规划与执行?

SEO的重要性及其长期有效性在数字化时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已经成为网站提升可见性和流量的关键策略。SEO不仅能够帮助网站在搜索引擎结果中获得更高的排名&#xff0c;还能为网站带来持续的、有质量的流量。长期有效的SEO策略不仅仅是短期的…...

破解root密码

如果root密码忘记了&#xff0c;那么我们需要以下操作完成破解1首先需要重启虚拟机&#xff0c;然后在出现的页面中通过上下键选择第二个选项&#xff0c;之后点击e建&#xff0c;然后进入以下页面2将页面上代码下的小横线移到quiet这个单词后&#xff0c;然后打出rd.break,打出…...

秋叶大神ComfyUI

链接&#xff1a;https://pan.quark.cn/s/c94e7ef84a73ComfyUI是一个非常便利的AI绘画工具&#xff0c;拥有节点式和工作流式的AI绘画界面&#xff0c;并支持多种节点的使用。秋叶大神发布ComfyUI整合包主要是为了改善国内ComfyUI的入门生态&#xff0c;使新手更轻松入门。尽管…...

为什么世界仍然运行在 SAP 上?——传统企业软件的顽强生命力

这篇来自 Andreessen Horowitz&#xff08;a16z&#xff09;的文章探讨了一个重要问题&#xff1a;在云计算和人工智能快速发展的今天&#xff0c;为什么像 SAP 这样的传统企业软件仍然深度主导全球企业运行&#xff1f;其核心结论是&#xff1a;SAP 的优势不在于技术先进&…...

金仓数据库SQL防火墙构建主动防御,让恶意SQL无处遁形

开发留的坑&#xff0c;数据库来填&#xff01;金仓数据库SQL防火墙&#xff0c;精准拦截99.99%的恶意SQL在数字化转型的浪潮中&#xff0c;数据已成为企业的核心资产。然而&#xff0c;SQL注入攻击如同潜伏在阴影中的“不速之客”&#xff0c;时刻威胁着数据库的安全。即使开发…...

RK3588部署yolov8量化精度对比

1. 准备文件# 配置区 ONNX_MODEL best.onnx # YOLOv8 ONNX 模型路径 DATASET ./COCO/coco_subset_20.txt # 量化校准集 TEST_IMG frame_000000.jpg # 用于精度分析的测试图片 TARGET_PLATFORM rk3588 # 目标芯片 # 2. 调用rknn.accuracy_analysis工具分…...

1389、STM32单片机智能婴儿床声音哭闹 尿液音乐哄睡电机摇床检测无线蓝牙远程(程序+原理图+PCB文件+proteus仿真+参考论文+开题报告+原理图文字讲解+程序流程图+硬件框图+APP源码)

具体详情请点击下面观看&#xff1a; 1389、STM32单片机智能婴儿床声音哭闹 尿液音乐哄睡电机摇床检测无线蓝牙远程(程序原理图PCB文件proteus仿真参考论文开题报告原理图文字讲解程序流程图硬件框图APP源码&#xff09;-CSDN博客 演示操作视频讲解请点击下面观看&#xff1a;…...

Flutter 迁移鸿蒙 ArkUI 的真实成本

网罗开发&#xff08;小红书、快手、视频号同名&#xff09;大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等方…...

【大模型的原理架构对比解析】Encoder-Decoder 架构与 Decoder-Only 架构的输入输出详解

文章目录前言一、Encoder-Decoder 架构1. 每次输入和输出2. 详细例子&#xff1a;英译法&#xff08;1&#xff09;编码器阶段&#xff08;2&#xff09;解码器推理过程二、Decoder-Only 架构详细例子&#xff1a;文本生成三、对比总结前言 在自然语言处理中&#xff0c;Trans…...