Sticky Posts

3.9kwords4 mins.

# 暮冬 Z 羡慕 的博客 文章汇总 # 加速算法 【Im2Col】卷积加速算法【1】 NCHW 【Im2Col】卷积加速算法【2】NHWC 【im2col】AScend conv accelerate 【Winograd】卷积加速算法原理及实现 【gemm】Gemm 计算加速 【gemm】内存对齐 【Halide】调度优化【1】 【Halide】调度优化【2】 【conv 加速】NVDLA 卷积加速算法 # AI 推理引擎 【推理引擎】常见推理引擎 【推理引擎】NCNN 和 Tengine 量化推理逻辑对比 【量化】连续卷积层首尾量化的可

Post List

14kwords13 mins.

# 前言 本篇文章介绍 Halide 多级流水线调度优化策略。 本文来自于《Halide 官方教程》,读者可以去阅读原文。所以看本文的价值在于?呃…… 是中文的?(但原文肯定更准确)更简洁?(也许是缺点)画图更清楚?(假的,因为官网图更好,还是动图,我不想画了)。所以我也不知道为啥一定要看这篇文章而不是原文,唯一好处是我挑出了重点?官方教程文章太多,我只挑其中几篇重点,这是第一篇,全当自己记录了。 仍然建议看原文。 Halide 这篇教程的多级流水线(multi-stage pipelines)指的是多个计算步骤,第一个计算步骤的结果是第二个计算步骤的输入,怎样的流水线调度才能在空间占用、计算
999words1 mins.

# 进度 小说字数已经超过 24 万了! 情节确定之后,现在的进度要比以前快的多。 完成之后大概有 27 或 28 万吧,那时候会将其放在各种平台。 不过最后小说没有人看的话,还是会非常失望。 还是得说,没人看的概率比较大,这不是一篇适合作为网文的小说,也未用来迎合任何大众化的喜好。 她只是一个我构思了很久,条理逻辑还算严谨的故事。 唯一能确定的是,我喜欢这个故事。 整个系列规划了三部,但实际上后续的两部连骨架都不完善,更不用说躯干和血肉。小说写作是个漫长沉闷的过程,如果第一部没人看的话,我不确定后续还会继续写下去。 值得高兴的是,本部作品已经构思完所有细节,只等完成了…… 支撑我完成这部小说
11kwords10 mins.

# 前言 本篇文章介绍 Halide 的 Vectorize, parallelize, unroll , tile 等优化策略。 本文来自于《Halide 官方教程》,读者可以去阅读原文。所以看本文的价值在于?呃…… 是中文的?(但原文肯定更准确)更简洁?(也许是缺点)画图更清楚?(假的,因为官网图更好,还是动图,我不想画了)。所以我也不知道为啥一定要看这篇文章而不是原文,唯一好处是我挑出了重点?官方教程文章太多,我只挑其中几篇重点,这是第一篇,全当自己记录了。 仍然建议看原文。 Halide 的 Vectorize, parallelize, unroll , tile 等优化策略与 TV
3.6kwords3 mins.

# 序 转载一些有趣的文章,侵删。 导读:2021 年,北大中文系男足再度遭遇医学男足,这次又有怎样的火花呢? 后卫打飞乌龙球,中文男足 0:14 惜败医学 迟日江山丽,春风花草香。4 月 3 日早 10 点,中文男足迎来了 2021 年北大杯的首秀。在未名湖畔的鸟语花香中,中文男足的队员们诗兴大发,迷失了自我,全场所有射门 —— 无论是面对对方大门,还是面对己方大门,全部射偏,0:14 惜败医学。 赛前,中文男足曾组织队员集体观看蒙古对阵日本的比赛,希望可以向蒙古这样的职业球队学习如何对抗实力强劲的对手。结果,蒙古以 0:14 的比分惨败日本。 观战队员纷纷表示,蒙古连中文男足都不如。因为
5.1kwords5 mins.

# 前言 本篇通过举例说明 TVM 切分子图的方法。 TVM 切分子图,是将整个图中的部分算子拆分出来,包装为一个函数。TVM 把它称为复合函数。切分子图有很多用处,比如算子融合、跨平台优化、做 layergroup 等。TVM 为子图切分提供了好用的工具,本篇文章将结 《【BYOC】TVM 添加自定义编译器 ccompiler》,来介绍一下如何使用 TVM 的工具切分子图,令自定义编译器 ccompiler 支持的子图在 ccompiler 执行,不支持的子图在 CPU 运行的。 参考链接:《【BYOC】TVM 添加自定义编译器 ccompiler》 作为初学者,错误在所难免,还望不吝赐教。
3.2kwords3 mins.

# 序 转载一些有趣的文章,侵删。 导读:2020 年,北大中文系男足和医学系男足比赛,公众号发布的战况报道火了。 # 1 2020 年 10 月 17 日晚 6 点,中文男足迎来了 2020 年新生杯的首秀。又一次凑齐 11 人首发的他们昂首阔步地走入球场,在 80 分钟内被医学连射 40 多脚,却只丢了 12 个球。本轮战罢,中文男足凭借积 0 分、净负 12 球的战绩,排名 20 支参赛球队的倒数第一。 赛前,中文男足的目标是让医学男足以 11:0 的比分击败自己,从而为中文系 110 周年系庆献礼。不曾想,医学众将把中文系的历史想得过于悠久,打进了 12 球。中文男足超额完成任务,提前
4.8kwords4 mins.

# 前言 本篇文章总结【张量生命周期优化】算法。 作为初学者,错误在所难免,还望不吝赐教。 # 介绍 AI 编译器设计中用于神经网络模型推理的内存管理模块, 通常被称为内存分配规划 或 张量生命周期优化。 为了减少内存占用,提高内存利用率,对 Tensor 的内存分配和生命周期的管理必不可少。 内存分配就像是个拼图游戏,在二维坐标中,横轴是时间,纵轴是内容空间,然后将神经网络模型推理过程中需要用到的内存块, 拼到这个二维坐标中。 神经网络模型推理主要涉及三部分 Tensor 内存占用:输入输出 tensor、权重 tensor、临时中间 tensor。将这些 tensor 拼接到如下的坐标轴中
5.3kwords5 mins.

本文为 SystemC 实现寄存器来同步的建模方法。 # 应用场景 仿真时可能有类似这样的需求: 将一系列的指令发送到三个模块 A、B、C,三个模块相互独立地执行这些指令。 为了进行同步控制,这些指令中含有 sync 类型的指令,并借助寄存器来实现模块之间的同步。 比如我创建 20 个寄存器,A 模块的 Sync 指令是往寄存器 0 号位写入 1,B 收到的 sync 指令是读寄存器 0 号位,读到 1 才能执行后续指令;然后 B 往寄存器 1 号位写入 10,C 在寄存器 1 号位读到 10,才能够执行后续指令。以此实现执行同步。 # 初步尝试 依据上述需求,我非常直接地创建了 sc_si
754words1 mins.

# 前言 本篇文章简单总结脉动阵列加速矩阵运算的类型。 网上相关资料较多,可以自行搜索。 作为初学者,错误在所难免,还望不吝赐教。 # 脉动阵列类型 使用脉动阵列实现卷积的数据流类型。 使用脉动阵列实现卷积时,往往先将卷积转化为矩阵预算,然后再补零和分块矩阵乘。 脉动阵列设计中有 3 种典型的数据流: 输出固定 (Output Stationary, OS) 数据流、 权重固定 (Weight Stationary, WS) 数据流和输入固定 ( Input Stationary, IS) 数据流。 以下面这个 5*5 的矩阵乘为例:假设 M 是输入、N 是权重,Z 是结果。 以下是 输出固
8.1kwords7 mins.

# 前置信息 (1)本文讲解使用的例子 以如下的卷积为例,进行昇腾 Im2Col 卷积过程: Input 输入维度为 NHWC :【2,25,25,17】 外圈蓝色代表 pad Kernal 维度为 CCHkWk :【34,17,3,3】 操作为 3*3 卷积 pad=1, Group=1, Stride=1, 2D 卷积 得到输出的维度 为 NHWC : 【22,25,25,18】 从图上可以轻易看出相关信息。 现在想起来,光是遇到你这个家伙,就感觉自己赚到了。 ------ 大家好啊 我是 暮冬 Z 羡慕 (2)矩阵乘运算单元 昇腾