本文逐节对应 CUDA Programming Guide v13.3 的 4.1 Unified Memory,以中文技术转述保留 API 语义、支持条件和限制。示例为基于原理重新编写的最小代码。 CUDA Features 中文系列目录 本系列将 CUDA Programming Guide 13.3 的第四章整理为 20 篇中文技术文章。建议先按顺序建立内存、提交、片上流水...
系列说明 这套专项题库包含 M001-M140 共 140 道 Megatron 面试题。每道题都提供前置知识、逐步分析、10 分主问题评分、完整追问回答和 5 分追问评分,目标是从会使用配置推进到能解释张量、通信、状态、源码和生产决策。 flowchart LR A[MCore 架构] --> B[模型数据流] B --> C[TP 与 SP] ...
系列说明 这套题库以 8 张 Tesla V100 PCIe 的真实实验为证据底座,共包含 145 道核心题和 8 道编码/上机题。内容从 GPU 基础、训练运行时、多维并行和推理引擎,逐步深入到 kernel、生产可靠性、系统设计和框架底层契约。 flowchart LR A[GPU 与通信] --> B[训练运行时] B --> C[多维并行] ...
系列说明 这套材料基于 vLLM 与 SGLang 的固定源码版本和真实运行实验整理。主线题库共 60 题,从推理基础递进到 Staff 级系统设计;另保留 24 道长篇综合题和一册源码实验手册。部分主题有意重复,因为分卷题库用于系统训练,综合题解用于模拟一题多轮深挖,回答结构和考察角度不同。 flowchart LR A[推理基础] --> B[请求生命周期] ...
分布式数据 背景 系统始于单节点,由于单节点的硬件限制(CPU,硬盘等资源)以及单点故障问题,系统走向分布式架构,如何分散存储数据? 分区 将一个大的数据集拆分成多个较小的数据集,通过增加节点来增大存储以及处理数据的规模。分区分为水平分区与垂直分区。 水平分区: 对表的行进行拆分,表的特性得以保留。例如把十年的订单记录按年划分到10个物理节点中存储。 垂直分区: 对表的列...
本文旨在记录自己使用 minio 与 Go 语言实现的个人 Typora 图床,此外 minio 还可以用于私人的存储服务。 搭建 minio 服务 Docker 部署 首先需要搭建 minio 对象存储服务,需要通过环境变量设置 root 用户的账号密码 docker run -d --name minio-server \ -p 9000:9000 -p 9001:900...
本文逐节对应 CUDA Programming Guide v13.3 的 4.20 Driver Entry Point Access。 4.20.1 引言 从 CUDA 11.3 起,应用可按名称和 ABI 版本取得 Driver API 函数地址,作用类似 POSIX dlsym 或 Windows GetProcAddress,但 CUDA API 额外理解 Driver...
本文逐节对应 CUDA Programming Guide v13.3 的 4.19 CUDA Interoperability with APIs。互操作 API 的 handle ownership 和平台差异非常细,生产代码应同时核对 CUDA 与对端 API 的规范。 互操作的目标是让 CUDA kernel 直接读写其他 GPU API 创建的数据,避免 staging ...
本文逐节对应 CUDA Programming Guide v13.3 的 4.18 CUDA Dynamic Parallelism。本章描述 CUDA 12.0+ 默认的 CDP2;很多旧教程讲的是 CDP1,尤其是 device-side cudaDeviceSynchronize,不能直接套用。 4.18.1 引言 4.18.1.1 概览 CUDA Dynamic Pa...
本文逐节对应 CUDA Programming Guide v13.3 的 4.17 Extended GPU Memory。 Extended GPU Memory(EGM)面向集成 CPU-GPU NVIDIA 系统。它把 CPU attached memory 与 GPU HBM 放入可经 NVLink-C2C、GPU NVLink 和 NVSwitch fabric 高带宽...
本文逐节对应 CUDA Programming Guide v13.3 的 4.16 Virtual Memory Management。VMM 是 Driver API 的低层能力,示例省略了逐调用错误检查,实际代码不可省略。 cudaMalloc 同时给出地址和背后的物理显存;传统 peer enable 还可能把过去与未来的全部 allocation 都映射给 peer。VM...
本文逐节对应 CUDA Programming Guide v13.3 的 4.15 Interprocess Communication。 同一进程内的线程共享 CUDA device pointer 和 event handle;不同进程有各自虚拟地址空间,不能把指针数值直接发送过去。CUDA IPC 的共同模式是导出 process-portable handle,用 OS ...
本文逐节对应 CUDA Programming Guide v13.3 的 4.14 Memory Synchronization Domains。 4.14.1 Memory Fence Interference CUDA 内存模型具有 cumulativity。若 GPU 线程 2 通过 device-scope acquire 看到了线程 1 的写,再用 system-sc...
本文逐节对应 CUDA Programming Guide v13.3 的 4.13 L2 Cache Control。 重复访问的数据称为 persisting access,只访问一次或很少复用的数据更接近 streaming access。计算能力 8.0+ 可用 Runtime API 影响数据在 L2 中的持久倾向;libcu++ 还提供 cuda::annotated_...
本文逐节对应 CUDA Programming Guide v13.3 的 4.12 Work Stealing with Cluster Launch Control。 固定“每 block 一份任务”具有低调度开销和良好抢占点,但尾部 block 负载不均会拖慢 grid;固定少量常驻 block 用 grid-stride loop 能自行取任务,却会让一个长 kernel ...
本文逐节对应 CUDA Programming Guide v13.3 的 4.11 Asynchronous Data Copies,分别讨论 LDGSTS、TMA 与 STAS。三者方向、粒度、完成机制和硬件代际不同,不能互换理解。 GPU kernel 经常把 global memory tile 搬到 shared memory,再执行复用密集的计算。异步复制允许发起线程在...
本文逐节对应 CUDA Programming Guide v13.3 的 4.10 Pipelines。 Pipeline 把异步批次组织成固定 stage 数的 FIFO。producer 获取空 stage 并提交工作,consumer 等待已提交 stage、使用结果后释放。它把常见的多 barrier 双缓冲协议封装为更清晰的状态机。 4.10.1 初始化 block...
本文逐节对应 CUDA Programming Guide v13.3 的 4.9 Asynchronous Barriers。 异步 barrier 将“我已完成本阶段责任”和“我要等待其他参与者”拆成两个动作。线程 arrive 后可以继续独立工作,稍后 wait;barrier 还可把异步内存事务纳入完成条件。 4.9.1 初始化 cuda::barrier<Sco...
本文逐节对应 CUDA Programming Guide v13.3 的 4.8 Error Log Management。 4.8.1 Background 错误码只告诉调用方某次 API 成功或失败,往往缺少驱动内部的诊断上下文。Error Log Management 为 Driver API 提供结构化日志输出、回调和缓冲区导出,使库作者能在不改每一处错误处理逻辑的情况...
本文逐节对应 CUDA Programming Guide v13.3 的 4.7 Lazy Loading。 4.7.1 Introduction CUDA Lazy Loading 延迟准备尚未使用的 module 和 kernel,减少进程初始化时间与初始设备内存占用。它改变的是“何时加载”,不改变 kernel 的计算结果;代价是第一次真正使用时可能出现一次性延迟。 4...
A new version of content is available.