0%
PL_8编译器概述
计算机图形基础学习笔记
记录下《Fundamentals of Computer Graphics》这本书的学习过程。
Flutter动态化更新
flutter_engine_building_environment_setup
本文主要是记录在WSL2 Ubuntu22.04上搭建Flutter Engine编译环境的整个过程。
回望2023
劈里啪啦、劈里啪啦的声音已经远去,过节的气氛也已在忙碌的工作中慢慢消散了。在节日的尾巴来到了首都出差,吃了14块钱但只有两块牛肉的牛肉面。闲暇时刻,写一些去年的总结。
扩展到超级块的摇摆模调度的实现
摘要
本论文详细介绍了摇摆模调度的实现,这是一种软件流水技术,在编译时间和生成代码质量上具有有效性和高效性。软件流水致力于挖掘循环中的指令级并行度,这往往有助于科学和图形应用程序。
模调度是一类尝试重叠单基本块循环的迭代和基于优先级(来自一组启发式)调度指令的算法。摇摆模调度使用的方法被设计用于取得高度优化的调度,保持低寄存器压力,以及在取得两者的同时有个合理的编译时间。
摇摆模调度的一个缺点,(以及所有的模调度算法)是只处理单基本块循环会导致失去更多指令级平行度的优化机会。这篇论文详细介绍了将摇摆模调度算法扩展成以超级块的方式处理多个基本块循环。超级块是一组基本块,其单入口多出口的。将摇摆模调度扩展成能处理这种类型的循环,可以增加摇摆模调度可以应用的循环的数量。此外,它允许模调度应用到热点路径上(也是单入多出的),根据 profile 信息可以离线或者在运行时进行优化。
我们的摇摆模调度实现以及扩展到超级块循环的算法都进行了评估,发现它们是既有效又高效。对于原始算法,测试集被转换了有 10-33% 的性能收益,同时扩展的算法增加了测试集 7-22% 的性能收益。