这篇文章是2021年中国科学院大学李炼老师的《编译程序高级教程》一课的学习笔记,这门课程的内容主要是基于LLVM来做一些中间代码的优化。不建议没有学习或者了解过编译原理的同学选修,平时作业占比较大,一共三次大作业共占期末总成绩的80分,然后是期末考试只有20分(而且可以使用离线的电子设备。但是作业爆炸难,是使用LLVM来实现一些程序分析,实现一个简单的C程序解释器、数据流分析、指针分析等。很多知识也是在我写这篇笔记的整理与复习的过程中才看明白的。

相似的课程为多伦多大学的CSCD70。而且就在考试的前一周,国内也有这方面可以看的公开课视频了,那就是南京大学的软件分析,兄弟们把泪目打在公屏上!

还有一些非常有用的参考资料:

CompilerLLVMCourse

前言

在之前的文章里笔者已经记述了怎样在FPGA上映射由英伟达开源的加速器NVDLA。但是NVDLA的官方发布的工具链很弱,只能端到端地运行极为简单的分类网络,而现在在绝大部分的深度神经网络应用里分类往往只是其中一小部分。例如我现在想利用加速器去运行yolo,但其中有许多加速器并不支持的算子,加速器支持的convolution、pooling、relu等等算子最好都要用加速器运行,而那些不支持的算子则需要Fallback到CPU去运行。

这片文章要介绍的是笔者利用Open AI Lab开源的边缘设备推理框架Tengine,为NVDLA打造一套新的工具链!

banner

TengineNVDLA

为接下来要尝试基于 Tengine 完成 CPU Fallback 的工作,在组里的 ZCU 102 开发板上进行了 NVDLA 的移植。本来以为这个过程会很顺利,没想到还是因为各种问题还是花费了一个星期的时间。

这篇文章记述了部分关于 ZCU102 rev1.1 板卡的坑点,以及利用chroot基于Ubuntu Base Rootfs来订制 aarch64 ubuntu 的文件系统流程。

Digilal DesignEEEE

这两天在京举办的第六届 ChinaDA 的学术研讨会是我第一次参加的学术会议,写下本文记述一下会议上比较感兴趣的点。篇幅不会长,主要是因为会前没有挑几个自己感兴趣的报告专门认真听一下,也没有没有做笔记、拍视频照片。

PS:这张大会的Banner页是我做的!

ChinaDA是国内集成电路设计、自动化没计(EDA)等学科青年学者自发组织的学术共同体,其使命是推动国内集成电路设计、EDA,及与之交叉的计算机体系结构和工艺器件等领城研究,为青年人搭建同行学术交流平台,提高本学科在国内科研界的地位。ChinaDA自2018年特殊时刻创建以来,每年举办2次,本次是第6届。
Conference