自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 问答 (1)
  • 收藏
  • 关注

原创 AI编译通用底层优化(零)写在开始

从毕业一直在做AI编译器,自我感觉技术不错,但一直只是闷头干活。吹牛虽然不好,但该讲的还是要讲出来的。2、内存layout推导。

2025-04-03 11:20:21 169

原创 LLM性能优化(一)Flash Attention 1

未优化的计算流程(如左图)由于all超大,中间结果都要存在空间较大的低速缓存中。希望分块计算(如右图),中间结果存在空间较小的高速缓存里,直接参与下一步的分块计算。

2025-03-06 20:06:56 356

原创 c++(三)右值引用

c++中存在右值,简单的比如函数返回值,是临时值,但也是占用了一块内存的。想把函数返回值这块内存直接利用起来,避免再有内存的拷贝,即移动语义。注意任何有名称的变量本身都是左值,只是有的指向左值,有的指向右值。1、为什么引入右值引用?

2025-03-03 22:02:32 291

原创 c++(二)类型转换

一共4种类型转换,直接上代码吧,多写写什么都会了。

2025-02-25 14:55:31 247

原创 c++(一)继承与多态

如果定义两个完全独立的类,对于体重这种共同属性,两个类的代码会完全重复,而且“动物的体重”这一逻辑不容易实现。现在给出父类Animal的定义,以及一个animalEat接口,需要通过继承来定义大象与长颈鹿,之后实例化,通过子类调用printWeight方法验证继承,调用animalEat接口实现多态。所有动物都要吃东西,但不同的动物吃的东西和吃东西的动作是不一样的。因为要同时实现“大象吃东西”、“长颈鹿吃东西”、“动物吃东西”这些逻辑。特别是“动物吃东西”,要能判断出对象是大象还是长颈鹿。

2025-02-20 15:45:05 155

原创 c++(零)写在开始

最近要做一些架构相关工作,虽然一直在用c++,但从来没系统的学习过,是时候补一下基础了。个人认为简单基础的就不写了,先大致排一个顺序,尽量做到后面依赖前面。

2025-02-20 14:00:58 135

原创 onnx-mlir(四)llvm后端

直接看到这里吧,我理解这里就将mlir转换到llvm了。在这个函数中,前面都是mlir 内置 dialect的转换,直接调的llvm-project中的方法,最后使用“krnl::populateKrnlToLLVMConversion”方法将krnl dialect也转换到了llvm。

2023-12-25 15:35:42 725

原创 onnx-mlir(三)mlir内置dialect

按之前的流程跑下来,看log,可以看到一些mlir内置dialect,具体dialect介绍可以看官方文档。ConvertVectorToSCF:vector dialect转scf dialect。1、为什么要调这些pass,为什么按这个顺序,mlir有没有一个统一的整合好的调用接口呢?来看一下onnx-mlir中,对这些dialect调用了哪些pass。FoldMemRefAliasOps:没起作用,也没看懂。BufferDeallocation:看起来是内存释放。

2023-12-19 20:29:52 787

原创 onnx-mlir(二)onnx dialect与krnl dialect

可能因为模型比较常规,在onnx dialect层面,多个pass之后,IR变化很小。个人理解onnx-mlir是为了与onnx结构对齐,作用就是使onnx可以方便、直观的转换到mlir上来,很少涉及优化的概念。之后就是转换到krnl dialect了,看起来很复杂,完整的图是贴不下了,以max pool为例看一下吧。接下来就要看转成这么复杂的krnl dialect,是为了做什么优化了,有空补。之后看一下onnx dialect到krnl dialect的转换。

2023-12-17 16:08:27 981

原创 onnx-mlir(一)转换到mlir

可以看到在简单模型中,就是一个module中有一个main func函数。可以看到processInputFile函数,读入onnx文件路径。path/to/下会生成resnet18.onnx.mlir。大概就是这个样子了,细节可以多debug看一下。继续调试,看到创建module。随便找一个onnx运行。创建main func。

2023-12-16 12:26:31 1082

原创 第一篇博客尝试之onnx-mlir

深度学习有tensorflow、pytorch等框架,在onnx之前,各自将深度学习模型保存成不同类型的文件。深度学习模型要落地到实际硬件执行,第一步就是要解析不同类型的文件。onnx统一了模型的格式,所有框架最终都保存成onnx格式,之后就只解析onnx这一种文件就可以了。随着深度学习的爆发以及摩尔定律失效,DSA(领域专用处理器架构)看起来是一个方向。最近也是出现了许多新的硬件架构,新的硬件就需要新的编译器。但不同的编译器又有很多相似的处理流程,各自开发就会有很多重复的工作。

2023-12-16 11:11:12 1556 1

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除