- 博客(63)
- 收藏
- 关注
原创 【学习】 NVIDIA CFT(Compute Fabric Transport)特性分析
CFT(Compute Fabric Transport,计算织物传输)是 NVIDIA 从 NCCL 2.31 / CUDA 13.3 开始提供的设备端通信能力:它把 CUDA fabric 的逻辑端点(logical endpoint)暴露给 GPU 内核,让内核直接用 fabric 指令发起异步 put / get / 归约 / barrier操作,跨 NVLink 织物(fabric)移动数据,而无需把远端 GPU 内存映射进本地进程的虚拟地址空间。
2026-10-10 17:49:20
220
原创 【学习】【NV】NCCL M2N 与 T-CCL 分析
跨 group 的 M-to-N 重排,没有原生集合表达nccl_m2n:M2N 回答 "该传哪些字节、走哪条路",T-CCL 回答 "用谁去搬字节、谁去做归约"—— 两者可叠加。
2026-10-10 07:47:35
285
原创 【学习】【NV】基于pipeline的生产者与消费者
Producer 负责"把数据写进 buffer",Consumer 负责"把数据读出来用"。两者通过 barrier 互相等待,不直接同步。场景:等待期间想先干别的(如计算元数据、推进另一条流水线)。(官方设计说明):consumer 可"wait 到 buffer N+1"的同时仍"持有 buffer N 未 release"——适合消费者需要"先看下一份、再慢慢还上一份"的算子(如双缓冲 accumulate)。场景:长序列(链式 GEMM、专家多阶段)需要按 group 排序,后一组等前一组完成。
2026-10-07 08:34:18
328
原创 【学习】mKernel 分析
mKernel 没有公开发布通用 API,但论文设计隐含了一套可形式化的多节点融合 kernel 编程模型。下面把它的原语与最小接口显式定义出来——这是把它移植到其他芯片(昇腾)的前提。// 多节点融合 kernel 抽象接口(基于 mKernel 设计的还原定义)ComputeKernel compute, // 计算 tile 逻辑int sm_budget[], // 各角色 SM 数(可被 controller 改写)
2026-10-06 15:11:28
146
原创 【学习笔记】【NV】GIN
这 10 项构成一条完整的GIN 全链路增强发起语义(① counted-write/wait)→ 传输通道(② socket 后端)→ 拓扑分配(③ LAG-aware QP)→ 资源注册(④⑤ 窗口与 mcst)→ 上层集合通信(⑥⑦)→ 安全(⑧)→ 可观测(⑨⑩)。其中 ①-⑤ 是 GIN 内核开发者直接受益的部分;⑥⑦ 服务于 Blackwell 大规模训练;⑧⑨⑩ 面向部署与运维。若你关注 MoE 通信或自定义通信 kernel,重点看 ①-⑤;若关注大规模训练稳定性,重点看 ⑥⑦⑩。
2026-10-05 09:58:16
230
原创 【学习】ParallelKittens(PK)学习与分析
算力与互连的剪刀差持续扩大,使通信成为现代 AI 负载的一级瓶颈:即便有 NVLink/NVSwitch,LLM 负载中通信仍可占据 50% 以上执行时间,GPU 算力大量空转。NVIDIA 路线图 NVL72 → NVL144(2026)→ NVL576(2027),机内 scale-up 系统持续变大。核心问题:能否用一小撮简单、可复用的原则系统性指导最优多 GPU kernel 设计,而不是每个算子重新发明一次?原则一:传输机制选择。 三种机制各有带宽上限:功能矩阵:CE 不支持任何归约;TMA 支持
2026-10-05 08:37:49
197
原创 【学习笔记】【NV】MRC 规范
MRC(Multipath Reliable Connection,多路径可靠连接)是一种面向大规模 AI/ML 工作负载的 RDMA 传输协议。它扩展了 InfiniBand 的传输模型,为单条 RDMA 连接引入显式多路径支持、拥塞控制、路径健康跟踪与故障恢复机制,使端点在标准尽力而为(best-effort)以太网上保持高有效吞吐(goodput)。核心价值。
2026-10-03 15:36:27
377
原创 [AI][昇腾950]atomic 性能摸底
核数是主导因子:开销随并发核数单调上升。低核数(4→8→16)线性温和增长;32 核出现跃变——多数配置 16→32 核开销翻 2~6 倍(如 stride 128:741→4568,约 6.2×;stride 16:1499→4193,约 2.8×),表明 32 核并发原子 + 全 cache DCI 汇聚成为瓶颈。步长效应非单调,与核数耦合低核数(4/8/16)下大步长更优。
2026-09-24 10:57:03
289
原创 [AI][昇腾]Cube 引入L0A/L0B 必要性分析
规格:Ascend 910。默认 GEMM:(M=N=K=1024),blockNum(G=32)。
2026-09-17 09:12:53
322
原创 [AI][昇腾950] 低 Bit 量化
(OCP Microscaling Format):每 N 个低 bit 元素共享一个 8-bit scale (2^N 形式),Scale = (要素值 × 2^scale) 恢复实际值。:FP32 → FP8 无直接指令时,需双步转换:FP32 → BF16(RNE) → FP8(RNE),但 RNE 两次舍入会产生。:训练时模拟量化误差(forward: 量化+反量化,backward: STE 直通),使模型适应低精度。以 C=4, H=2, W=2, C0=2 的张量为例。这是低 bit 量化。
2026-09-11 08:40:34
71
原创 [AI][昇腾950] PCIe Through 学习总结
(PCIe-through)是 David 芯片在 PCIe 互联场景下,Device 侧(STARS/AIC/RDMA 等)直接通过 PCIe 链路访问 Host 侧内存空间的一种数据通路机制。它区别于 PCIe DMA(使用 IOB TX ATU 进行地址翻译的常规 Outbound 事务),PCIe-through 请求不使用 IOB TX ATU,而是通过 CHI 总线直接将请求送入 PCIe 核心层,以特定的请求格式携带 VF function 等信息访问 Host。
2026-09-03 08:15:07
213
原创 [AI][昇腾950]UB子系统学习
TP / CTP / UBmem / UBoE / NC —— 分别承担处理器卡和交换芯片互连功能。(与 9 种模式属两个维度)
2026-08-27 15:24:22
408
原创 [AI][昇腾950]UBG 与 UBoE 学习总结
UBG(UB Global)和 UBoE(UB over Ethernet)都是URMA(Unified Remote Memory Access)通信模式的子模式,二者使用相同的软硬件编程接口(Jetty 事务层接口),区别在于底层链路不同。工作模式Mode 1(URMA 通信)Mode 4(URMA 通信)报文格式底层链路物理层H112 SerDes (最高 118Gbps/Lane)H112 SerDes (Eth 模式)传输层TP(可靠传输)TP(可靠传输)网络层地址EID。
2026-08-27 08:37:36
348
原创 [AI][昇腾950]TP(Transport Layer,传输层)学习笔记
学习要点:负载均衡有三级——TP/TPG 级(vTP 映射)、CTP 端口级(DCNA 查表)、VL Group 级(三层水线)。学习要点:5 种拥塞算法分两类——DCQCN(基于 ECN 反馈)和窗口类(LDCP/CAQM/ACC1.1)。学习要点:这些约束是踩坑高发区。学习要点:利用 CTP 的高包率 + 多路径带宽,由 CCU 接收侧用 counter+flag 自己保序,绕开 TP 的保序瓶颈。学习要点:TPC 是 TP 的"灵魂表"——保序、重传、拥塞、port 切换、路由全在这里配置。
2026-08-24 08:11:18
242
原创 [AI][昇腾950]TA 学习
学习要点:TA 之下还有 TP(可靠传输)/ CTP(简易传输,无端到端重传)。TA 不直接碰链路,它把软件下发的"事务"交给 TP 去搬运。
2026-08-23 10:48:15
237
原创 [AI][昇腾950]AIV 直驱 URMA(UDMA)与 RoCE 对比学习
传统路径:Host / AICPU 组 WQE、敲 doorbell,AIV 只能等结果。ACLSHMEM 把数据面下沉到 AIV后续设计把通信部分功能下沉到asc-comm仓,实现通信的统一管理Host 只做控制面(Channel):建链、注册 MR、把队列上下文发布到 Device HBM。AIV 在 kernel 内直接从(Channel) 获取:读队列上下文(SQ/CQ/DB、远端寻址信息)组装 WQE 到 SQ ring写 doorbellpoll CQE 完成 quiet。
2026-08-15 09:13:34
470
原创 [AI][昇腾950]smmu的功能与优化
│ SMMU 核心要点 ││ ││ 1. SMMU 是 I/O 设备的内存管理单元 ││ • 提供 IOVA → PA 地址转换 ││ • 提供安全隔离和访问控制 ││ • 支持虚拟化 (VFIO 直通) ││ ││ 2. 硬件功能 ││ • 两级转换 (Stage1+Stage2) ││ • 大页支持 (4KB/2MB/1GB) ││ • TLB 缓存加速地址转换 ││ • CMDQ/EVTQ/PRIQ 队列机制 ││ ││ 3. 软件控制 │。
2026-08-14 07:30:00
323
原创 [AI][昇腾950]内存可见性 / 一致性 / 串行化 在 GPU/NPU 上的语义与差异
内存可见性:一个线程(或核)写入的数据,在何时、在何种条件下能被其他线程(或核)观测到。内存一致性:多个线程对同一内存位置的操作,能否保持一致的全局顺序。串行化:多个并发操作被强制按顺序执行的过程,通常由资源竞争或原子性要求引起。
2026-08-13 19:07:25
267
原创 [AI][NV] NVIDIA Thread Block Cluster 编程模型解析
问题传统方案Cluster 方案改善跨 Block 通信DSMEM延迟降 10~100×跨 Block 同步原子+忙等简洁低开销数据局部性无法保证亲核放置延迟降低粗粒度协作不支持支持新算法可能│ Thread Block Cluster 核心要点 ││ ││ 1. Cluster 解决的问题: ││ • 跨 Block 通信延迟高 → DSMEM 低延迟通信 ││ • 跨 Block 同步困难 → cluster.sync() │。
2026-08-11 07:53:12
233
原创 [AI][shmem] Aiv 直驱RDMA
AIV kernel 内部→ 在 HBM 中直接构造 NIC 认识的 WQE→ AIV 直接向 doorbell 寄存器写值(MMIO store)→ NIC 取描述符、DMA 读数据、发包Host CPU 完全不参与数据面,只做初始化(建路);通信可在 kernel 运行中任意时刻发起,与计算与通信做block 级重叠;一次提交开销为几十至一百多 ns(几条指令 + 一次 MMIO);小包端到端(对端 flag 可见)延迟约1.5 ~ 3 μs(RoCE 同机房)。
2026-08-10 08:53:56
380
原创 [NV]L2 Cache Persistence 控制行为分析
Persistent 只改 L2 eviction 优先级。控制面分两层——Host 划空间;Stream 挂 Access Policy Window。Kernel 被动继承 stream 策略。
2026-08-08 14:05:53
328
原创 [AI][昇腾950]AIV直驱 SDMA
传统路径是 Host/AICPU 组 SQE、敲 doorbell,AIV 只能被动等结果。ACLSHMEM 的AIV 直驱 SDMAHost 只做控制面:建 STARS stream / SQ、分配 workspace、创建 Notify。AIV 在 kernel 内直接:读组装 64B SDMA SQE 到 SQdcci刷 cache写 SQ Tail doorbellSTARS/SDMA 引擎 DMA 搬数,AIV 用或做完成同步。收益:去掉 Host 往返;
2026-08-06 11:39:15
412
原创 [AI][昇腾950]多pipeline 编程
基于昇腾社区(CANN / Ascend C 文档)与仓资料整理。适用芯片:Ascend 950PR / Ascend 950DT(= 3510)。
2026-08-06 09:24:44
442
原创 [AI][C++26] SIMD 编程模型思考
SIMD 处理固定为 128B, 与 GPU的warp 处理长度对齐simd-tile:以 128B 字节为长度的向量单位。整块(full tile):一整块 128B 的有效载荷,走无谓词快速路径。尾块(tail / epilogue):少于 128B 的剩余元素,单独作 epilogue 处理(mask/narrow/scalar)。
2026-08-03 12:01:05
325
原创 [AI][昇腾950] Scalar 性能优化
MainScalar 是 AICore 的串行控制单元,负责取指、译码、参数计算、指令发射、流程控制。当 MainScalar 的指令吞吐跟不上 MTE/Vector/Cube 的执行能力时,计算单元空闲等待,称为。理想(无 Scalar Bound):Scalar: [cfg][cfg]....[cfg].... ← 轻量,提前配置好MTE: [════搬运════][═══搬运═══] ← 持续满载Cube: [═══计算═══][═══计算═══] ← 持续满载。
2026-08-02 13:12:41
407
原创 [AI][UB]UB 传输层四种模式
背景:URMA(统一远程内存访问)通过 Jetty 提交的事务,经事务层封装后交给传输层。传输层有四种模式可选,是核心差异维度。
2026-07-31 11:39:53
226
原创 [AI][UB] UB专业名词说明
来源:华为《灵衢基础规范 2.0》范围:面向超节点互联协议 UnifiedBus(UB)规范中的专业名词与缩略语说明:本文档依据原规范"1.5 术语定义"、"附录 A 缩略语"以及各章正文整理,并补充正文上下文释义,按主题分组归类,便于查阅。
2026-07-31 07:36:44
502
原创 [AI][昇腾950]同步BufID 方案
在 Ascend950 上,每个 AI Core 内置32 个硬件缓冲锁槽位(buffer-lock slots),每个槽位由一个 5 位编号标识。每个槽位是一个二值信号量,可被核内异步流水线(MTE2/MTE1/M/V/MTE3/FIX/S)通过get_bufrls_buf指令获取与释放。
2026-07-28 20:22:51
200
原创 [AI][昇腾950]ND-DMA 详解
c_api(DataCopy:GM → UB(仅 AIV 核执行;:1 ~ 5 维basic_api 额外支持 int64/uint64/double(仅常量 0 填充)
2026-07-28 08:08:08
1460
原创 [AI][昇腾950]NVMe驱动方式分析
昇腾950 平台驱动 NVMe SSD 有4 条可行路径路径Master硬件支撑软件复杂度适用场景1Host CPU / STARS 调度 PCIe DMA✅低(标准 NVMe driver)主流方案,大块数据2AIV PCIE-THROUGH 直接搬运✅中(需配 VA window + AIV kernel)AIV 自治、低延迟小数据3✅中(STARS 软件 + PCIe TH 配置)STARS 直接与 Host 交互 SQE/CQE4STARS 调度 SDMA。
2026-07-24 10:22:52
428
原创 [AI][昇腾950]高性能数据搬运
硬件背景:Ascend AICore 是流水线架构(MTE2 搬入 → Vector/Cube 计算 → MTE3 搬出),。profiling 中经常 ≥ 95%,意味着绝大多数算子是而非计算 bound。本文档汇总把搬运打到理论带宽的关键注意事项。
2026-07-22 08:18:27
472
原创 [AI][昇腾950]Simd-VF 编程(4)
多步算子(如 Sigmoid、LayerNorm、Softmax)在 MemBase 写法下中间结果反复读写 UB,既占带宽又增加延迟。:LayerNorm(mean→var→normalize→scale→shift)、Softmax(exp→sum→div)、GELU(div→erf→add→mul)、attention score 缩放等。单元素 8B,VL=256B 时只能放 32 个,但 ALU 处理 64 位运算时实际需要 512B 输入。:避免先在 UB 写一个常量向量再加载,直接。
2026-07-22 07:38:03
201
原创 [AI][昇腾950]Simd-VF 编程(3)
标量操作数直接从立即数或 aux scalar 寄存器取,省去一次 LoadAlign 加载 scalar 向量,减少 UB 占用和 Load 带宽。:在 SIMD VF 函数内,连续两次写入同一 UB 地址,且第二次读前一次写的结果(RAW 依赖)。的 condition 数组转换为 mask(非零→1,零→0),常用于 cond mask 的下采样。融合后单拍完成,对量化场景(int8↔fp32 转换 + 缩放)收益明显。,但完全在寄存器侧完成,不需要先在 UB 中准备好常量向量。
2026-07-22 07:37:28
236
原创 [AI][昇腾950]Simd-VF 编程(2)
适用场景:Embedding 查表、稀疏 attention、ROI Align 等不规则访问。寄存器之间的数据拷贝,配合 mask 可做 lane 选择。(950PR 都是 8 个 Block 拼成 256B)。按寄存器中的 index 从 UB 取散列数据,用于输出长度非对齐或需要紧凑存储的场景,必须配。
2026-07-21 17:33:47
250
原创 [AI][昇腾950]Simd-VF 编程(1)
Reg API(寄存器级向量计算 API)是 Ascend C 在 CANN v9.0.0 引入的的编程接口,对应硬件 SIMD Vector Core 内部的(Vector Function Register)文件。所有 Reg API 都位于命名空间,使用修饰。与传统基础 API(DataCopy__aicore__MaskReg。
2026-07-21 14:46:09
325
原创 [AI][昇腾950]数据搬运
数据搬运高性能实现的核心五原则大分块:单次搬运 ≥ 128KB,充分利用 GM 带宽主维对齐:主搬运维度被 TILE_N 整除,连续字节数 ≥ 512B(A2/A3)/ 128B(950PR)分片复用 L2Cache:重复访问数据先分片(< 128MB),片内连续多次访问多核错开访问:按 blockIdx 轮转 GM 分片顺序,规避同地址冲突搬运/计算重叠:Double Buffer + 轻量 SetFlag/WaitFlag 同步,隐藏搬运延迟附加优化:UB 内 bank 冲突调优(
2026-07-21 08:52:32
446
原创 [AI][昇腾950]ND-DMA与PCIe-Through
是 AICore 中 MTE2(Memory Transfer Engine 2)模块提供的硬件 DMA 指令,用于在 OUT(DDR/L2-cache)与 UB(Unified Buffer)之间执行。它将传统 DMA 的"一维搬运"扩展为"5 维循环 + 5 维独立 stride"的通用形式,使得 transpose、broadcast、reshape+broadcast_pad、as_strided 等 AI 算子可通过完成。
2026-07-20 19:42:16
436
原创 集合通信算法详解:从原理到图形示意
集合通信是指在一组进程(称为通信组)中,按照特定模式进行数据交换的操作。参与方固定:通信组在操作开始前就已确定语义明确:每个操作都有明确的输入输出定义同步性:通常需要所有参与进程都到达同步点优化实现:底层库(如MPI、NCCL)会针对特定硬件优化。
2026-07-17 09:25:57
939
原创 [AI][通信][SDMA]
分配 SQ 内存 3×64B,CQ 内存 3×16B;TDB/HDB=0。软件向 SQ 写 2 个 SQE,SQE1.IE=1。软件更新。SDMAM 检测 TDB≠HDB,读 SQE0~1。SQE 处理:源/目的地址送 SMMU 翻译得 PA → 拆分为多个物理搬运子任务(最大包 2M)→ 广播给各 DMAA → DMAA 搬运后向 SDMAM 应答。全部子任务完成 → SDMAM 写 CQ:CQE0.SQ HeadDB=0,P=1;SQE1.IE=1 → 触发 IOC 中断。
2026-07-16 21:14:05
397
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅