收官:出一份优化报告

收官:出一份优化报告

对同一段遍历,交出一份完整报告:改前块数 / 改后块数 / 降了几倍 / 结果一致否。

阅读更多 →
⚠️ 只看一个指标会挑错方向

⚠️ 只看一个指标会挑错方向

两种改法:一种把访问次数减半(步长改成 2),一种把顺序改成逐行。用装载次数各评一次,看哪一种真的有用。

阅读更多 →
合并两趟再优化一次

合并两趟再优化一次

在逐行的基础上,把「求和」和「求最大值」两趟合成一趟。给出合并前后的搬运趟数和两个结果。

阅读更多 →
优化一段真实的遍历

优化一段真实的遍历

把逐列求和改成逐行,用计量器量出前后的块数,并验证结果一致。

阅读更多 →
自己写:一个访问代价计量器

自己写:一个访问代价计量器

给一串下标,交出三样:访问次数 / 装载次数 / 浪费率(round 到两位,一个都没浪费就是 0.0)。

阅读更多 →
优化前后的两个数

优化前后的两个数

运行下面这段程序,填写它打印出来的结果。 BLK = 4 def loads(idxs): cur = -1 n = 0 for i in idxs: b =

阅读更多 →
怎么算优化成功

怎么算优化成功

一次内存访问优化算成功的判据是【0】。

阅读更多 →
优化之前先做什么

优化之前先做什么

着手优化内存访问之前,第一件该做的事是【0】。

阅读更多 →
⚠️ SIMD 的前提是数据挨着

⚠️ SIMD 的前提是数据挨着

比较两种数据摆放:连着的 32 个 vs 步长为 4 取出来的 8 个。各自装载了几次、能凑几整排。

阅读更多 →
自己写:算 SIMD 要几条指令

自己写:算 SIMD 要几条指令

给数据个数和通道数,算出「几整排 / 剩几个 / 一共几条指令」(剩下的每个算一条)。

阅读更多 →