Slc Blog

等不是办法 干才有希望

学习计划

我的学习计划

测试~

基于LLVM的语言前端编写

学习笔记

Motivation 基于教程https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/index.html,实现了一套自己的语言,名为Kaleidoscope。希望借助该教程,能够学习到一些编译器相关的知识。

Pytorch 2.0.0 Debug版 报段错误

编译命令 通常编译pytorch debug版的命令为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 function init_torch() { # e...

Pytorch的cpp extension

Motivation 为了方便pytorch的算子拓展以及一些算子的手动融合,我们可以使用pytorch的cpp extension功能——先基于C++手动实现底层算子,之后通过pybind向上暴露接口。最后配置setup.py,将其作为pytorch的拓展包的形式进行安装。 一个简易的cpp拓展 1.定义底层算子 例如我们定义deeplink_add算子 1 2 3 4 5 6 7...

一些有趣的概念

LLVM LLVM项目是模块化、可重用的编译器以及工具链技术的集合。 传统的编译器架构分为前端、优化器、后端。但是LLVM将前端和后端分离,全部转化为LLVM的中间代码表示,这样的好处: 这样加入新的编程语言和硬件设备,只需要新加入前端后端即可。 优化在中间代码中执行,实现和前后端解耦,不受新增前后端的影响。 Clang 基于LLVM架构的C/C++/...

Pytorch的显存管理

Pytorch allocator

Pytorch的显存管理 Pytorch和设备强相关的库是C10,其包括了设备的显存管理等等。整体而言,Pytorch的显存管理为段式管理,但是这样容易带来内存碎片。具体展现出来的效果就是,明明剩余内存还够用,但是已经无法申请新的tensor,从而报OOM。如果不采用cache机制,时间又会耗费在频繁地申请和释放显存中。 整体而言,Pytorch的对显存采用隐式和显式两种方式同步进行管理...

第一篇博客

first blog

test my case~