继续有想法就多写点硬一些的内容。
关于计算机系统中的运算部件硬件实现,我脑子里面能想到的最近一次接触这些的时间可能还要追溯到在学校里面学数电那会了,而且大多数东西都忘得差不多了,刚好重新理一理并且顺便看一下浮点运算部件到底是怎么做的。
目前我们工作中并不会涉及到太深入到芯片设计方面的内容,因此本篇也只是对基础做一些整理,能帮助在脑子里面形成一个对不同运算部件的大体概念就不错了,充其量用这些在 MC 里面搞搞红石电路啥的。
篇尾还想找找 Nv 的硬件 spec 稍微对比分析下看看。
继续有想法就多写点硬一些的内容。
关于计算机系统中的运算部件硬件实现,我脑子里面能想到的最近一次接触这些的时间可能还要追溯到在学校里面学数电那会了,而且大多数东西都忘得差不多了,刚好重新理一理并且顺便看一下浮点运算部件到底是怎么做的。
目前我们工作中并不会涉及到太深入到芯片设计方面的内容,因此本篇也只是对基础做一些整理,能帮助在脑子里面形成一个对不同运算部件的大体概念就不错了,充其量用这些在 MC 里面搞搞红石电路啥的。
篇尾还想找找 Nv 的硬件 spec 稍微对比分析下看看。
随便写点东西,准备把 FlashAttention 系列的算法原理推一遍。
本着 Talk is cheap,show me the code 的思想,简单用 python 快速实现了一遍。
这里主要是对算法设计比较好奇,因此跟 cuda 相关的代码优化部分先忽略。搞懂算法实现后,系统同学可以自己想想 gpu 优化怎么做。
又是一年的 TVM conference,由于举办地在美国的时差关系,我们这边没有线上直接参加,由我们引擎团队负责人 蓝色 大佬给了个 talk。
Talk 的视频链接在:这里
在过去的快两年时间里,我们依靠 TVM 打造了 NIO 全栈自研的 AI 引擎,支持各种感知、规控等等自动驾驶算法在 NT2.0 平台上的高效运行。我们几乎是看着 ET7 交付启动时只有 AEB,到后来逐步版本迭代可以支持 NOP+,再到今年 NAD 也即将要在我们的引擎支撑下开放测试了。
由于 talk 的时间限制,PPT 上对很多部分都是简单带过了,这里想稍微细节展开讲一下,也算是对来 NIO 以后工作的一个总结。
一晃又就快 1 年过去了。
1 年间感觉世界发生了很多变化,技术方面,感觉我们这边是每个月都在 rush 新东西。
前段时间 TESLA 说他们要比之前说的纯视觉方案要走的更加极致了,连近距离的毫米波雷达都要取消了。惊叹于他们对自己技术实力的自信(和他们的胆子是真的大啊)的时候,也确实挺让人好奇这两年间 TESLA 的 FSD 有了什么样的改进。
自工作以来荒废了好久了,我又开始写博客啦~(不知道这一次能坚持多久…)
最近在比较多的帮团队面试,因为我们这边主要是 focus 在 AI 编译栈以及更偏底层一些的算子实现方面的工作,在面一些编译方向的候选人时,我这边最后一关通常是让他们写一个高效的矩阵乘的实现。
然后结果一直都没有遇到能写出来让我觉得还可以的人…唉,是我要求的太高了吗?
最近 NV 刚发布了新架构的 GPU,自之前理过 Intel CPU 的架构变化 后再来理一下 GPU 的。
硬/软件接口那篇有介绍过 GPU 的结构,当时也是以 Fermi 架构为例的,NV 很有意思的是会用一些历史上杰出的科学家的名字来命名自己的硬件架构。
总体上,NV GPU 用到的 SIMT 基本编程模型都是一致的,每一代相对前代基本都会在 SM 数量、SM 内部各个处理单元的流水线结构等等方面有一些升级和改动。这篇暂时不涉及到渲染管线相关的部分,其他诸如多少 nm 工艺、内存频率提升等等也都先略过,只关注计算相关的硬件架构演进。
这一篇来记一下 TVM 跟语法树 IR 相关的一些内容。
TVM 是在 Halide 的基础上发展而来的一套编译架构。早一点版本的 TVM 其实还能看到 Halide 是作为一个 git 的 submodule 放在 TVM 目录里的,当时 TVM 自身的代码中还有一个 HalideIR
的 namespace,也有不少的结构是直接继承了 Halide IR 里的内容:
1 | ... |
还是应该多写东西,感觉离开学校以后写的越来越少了,真是惭愧。
之后的工作有很多是要跟神经网络的编译执行相关,准备继 TF 拆包之后再来记一下我对 TVM 的探索过程。这个系列的坑会开多久也不一定,毕竟之前 TF 的其实也只做了一点点微小的工作,还有很多方面的内容没有看,另外 TF 要更到 2.0 之后可能有不少地方已经有一些变动了。
(也许有空也会看一下 XLA 吧,不过那个应该是要合到 TF 的拆包系列里面去了)
一些基础的背景可以见前面一篇对 TVM 作者一门课的课程记录:【CSE 599W: Systems for ML】