@sumitdotml: 2026年第25周:C语言中CPU张量核心基础(加法/乘法、归约、步长、2D矩阵乘法等),阅读Arcee的一些内容
摘要
作者分享了用C语言构建纯CPU张量库的进展,涵盖了加法/乘法、归约、步长和2D矩阵乘法等基础知识,以及从阅读Arcee关于基础模型的技术博客中获得的见解。
查看缓存全文
缓存时间: 2026/06/22 19:51
week 25, 2026: cpu tensor core basics (add/mul, reduce, stride, 2d matmul, etc.) in c, reading some arcee https://t.co/ITIQ5I1xG7
2026年第25周 | sumit.ml
来源:https://sumit.ml/weekly/2026-w25/
这周,我从手写的矩阵练习过渡到了一个小型张量运行时。现在形成了一个类似张量库的项目(https://github.com/sumitdotml/tinytensor):仍仅支持 CPU 和 float32,但这也正是当前的目标——我想在加入 CUDA 之前先熟悉内存分配、形状元数据、步长、索引和正确性。此外,还粗略浏览了 Arcee 的博客文章(https://www.arcee.ai/blog)。
CPU 张量基础
我库中的 tensor(https://github.com/sumitdotml/tinytensor/blob/main/src/tensor.c)现在包含了我想明确化的几个部分:
float *data;
size_t ndim;
size_t shape[TT_TENSOR_MAX_DIMS];
size_t strides[TT_TENSOR_MAX_DIMS];
size_t numel;
步长这个概念这周在我脑中更加具体化了,感觉非常好。
例如,对于一个形状为 [2, 3, 4] 的张量,行优先的步长是 [12, 4, 1],因此一个位置的计算如下:
[1, 2, 3] -> 1 * 12 + 2 * 4 + 3 * 1 = 23
我还添加了第一批围绕步长的 CPU 辅助函数:
- 扁平化和多维的 get/set
add/mulsum/max/mean- 2D
matmul
目前的矩阵乘法有意保持简单:
[m, k] @ [k, n] -> [m, n]
基本上还没有批处理或广播功能;后续会稳步推进这些工作。话说回来,我最初的目标只是通过写 C 代码来进一步熟悉这门语言,以便在读 PMPP 这本书时减少一些障碍,所以这个做法已经很有帮助了。随着我对这本书的深入学习,我会在这个仓库中添加 CUDA 内核,同时也会做一些更高级的 CPU 运算。
关于技术论文阅读
这周我又深陷于 C 语言,不是特别自豪。不过,我还是读了几篇 Arcee 的技术文章:
- Arcee 4.5B 深度解析(https://www.arcee.ai/blog/deep-dive-afm-4-5b-the-first-arcee-foundational-model)
- 将 AFM-4.5B 扩展到 64k 上下文长度(https://www.arcee.ai/blog/extending-afm-4-5b-to-64k-context-length)(这个真的特别有意思)
- 以及《三一宣言》(The Trinity Manifesto)(https://www.arcee.ai/blog/the-trinity-manifesto)
Arcee 团队的博客演进非常有趣:他们先是从企业级模型微调技术入手,然后逐渐转向构建自己的基础模型——先通过 SLM 在小规模上实验,再通过 Trinity 系列向更大模型迈进。
这让我清晰地看到了 Arcee 的发展时间线,我相信学习这些内容会给我带来很多宝贵的知识。
下周计划
- 在 C 语言中实现完整的张量 softmax。
- 继续阅读 PMPP 书,争取完成第 3 章(可能有点难,但还是要努力)。
- 阅读 Arcee 博客 + 如果时间允许,对 Trinity Large 技术报告进行 2-3 轮精读。
- 处理一些个人事务(与职业相关)。
相似文章
@swyx: 链接汇总:
NVIDIA 发布 Cosmos 3(混合 Transformer 模型,参数最高达 64B)、Nemotron 3 Ultra(550B-A55B 大语言模型),并在 Computex 2026 上预览了 RTX Spark 个人超级芯片,在多个开源模型排行榜上达到 SOTA。
@kazukifujii: 技术博客发布日5 这是系列博客的第一篇,从基础开始讲解CUDA编程,以…
Kazuki Fujii 宣布发布CUDA编程基础系列博客的第一篇,以通俗易懂的方式撰写,对于理解FlashAttention和硬件感知加速技术至关重要。
@levidiamode: Day 138/365 of GPU Programming 今年我最喜欢的讲座之一是斯坦福大学的CS336第7讲关于GPU…
一位学习者分享了对斯坦福大学CS336第7讲关于GPU并行性的热情,该讲座涵盖了基本操作,并将其连接到多GPU设置以及张量并行、数据并行和流水线并行等技术。
最后,衷心感谢这个了不起的团队:@jcz42, Arjun, Driss, @tensorcore, @yoonrkim 和 @tri_dao!PDF: https://a…
CODA 引入了一种 GPU 内核抽象,将 transformer 计算重写为 GEMM-plus-epilogue 程序,减少内存受限操作,提高训练效率。
为Orange Pi AIPro(Ascend 310B)上的MiniCPM-V 4.6编写自定义C++引擎以绕过框架开销
为Orange Pi AIPro(Ascend 310B NPU)上的MiniCPM-V 4.6开发了自定义C++推理引擎,通过为matmul和causal-conv1d编写优化的AscendC内核,实现了相比原始框架2倍的加速,达到5.90 tokens/s。