跳转至

Programming

AutoFuse

导言

  • DeepSeek V4 加大了与Ascend的合作;
  • 在华为稼先上的技术报告,除了Ascend C对attention有算子优化;
  • 通过pytorch的算子自动融合 AutoFuse 处理一些非常规的计算,可以实现E2E加速31%。并且说可以修改一行之间开启。

故了解相关概念,但是实际上 AutoFuse只适合非常规计算特别多,又没有人力投入的情况,可以考虑AutoFuse。但是对于Qwen3.5 这种优化后就只有一半Matmul/GMM,一半GDN的情况,AutoFuse接入的收益就不足了。

TileLang & Mega-kernel

导言

  • triton 虽然主流,大部分硬件都支持,虽然能快速拿到一部分收益,但是却较难极致性能。
  • 但是Ascend C / PyPTO 又过于Ascend定制化,(学了怎么跳槽啊)
  • 寻找一种更底层,支持极致性能的通用算子编程语言,是极致性能优化里不可或缺的一环。

PyPTO

导言

  • 浦江现场性能优化时,原始 triton 的 GDN性能相对于H200的triton性能很差;
  • 接入了 Ascend C的若干GDN算子实现,提速了一倍;
  • 接入 mojo_opset 的 casual_conv1d; 或者 huawei-csl的 sglang的高性能 solve_tril 。性能又提升一波,但和竞品还是有差异。
  • 2012实验室对 PyPTO 有精细调优,现在想接入

Triton & Triton Ascend

导言

  • Ascend上训练编译成全图有功能问题,导致下发问题并不能像GPU一样完全解决;
  • 在浦江实验室的经验是,triton确实能快速拿到2~3倍的收益,如果算子还有问题就能考虑

Pytorch 2.5 :Dataset & Dataloader

导言

  • 数据集与数据加载器:学习如何使用torch.utils.data.Dataset和DataLoader来加载和处理数据。
  • 数据预处理:介绍常用的数据预处理方法,如归一化、数据增强等。

宛如泥潭的大型项目开发困境

导言

当时我选择一线的原因是决定能最解决客户,每个工作能产生最大的价值。

通过一段时间的开发,我感觉在一线开发就像在泥潭里前进:走得越快越远,泥潭陷得越深,前进阻力越大。

困境为何而来,如何解决困境,是我想讨论的重点。

Naming

导言

变量和函数的命名一直是程序员最头疼的事,好的命名应该简洁且自注释,同时还要注意冲突、和相似命名的歧义。

本文将从以下几个方面展开:

  1. 驼峰型 、下划线型
  2. 命名示例

[C++] Destructor Order

导言

  • 一般来说,析构函数应该只处理释放资源,不处理逻辑。
  • 但是PTA的代码里,在全局变量的析构函数里,写了向子线程发送结束信号的函数,和childThread.join()。这导致了很奇怪的问题,string demalloc等。

为此,想研究一下C++的析构函数执行顺序。包括嵌套的Class结构,和全局变量的析构时机。