EDA精英挑战赛回顾
0、磨刀霍霍
准备考研的过程中就认识到:微电子是门实践性很强的学科,之后多实践,多做项目,才能更加透彻地加深理解。所以平时的时候一定要多做题,多仿真,多做项目。电子类的竞赛也是相当好的练习项目。
如愿考上之后,刚好初期课业不多,刷到了EDA精英挑战赛的通知,便开始鼓动室友打一枪,然后在半推半就下,报了个名(菜鸡队),顺便把导师也拉了进去,这样一来,便骑虎难下了,硬着头皮也要做下去。
1、初赛
初稿提交是在12月初,正式开始发动进攻是在国庆。国庆之前做了一些基本的准备,比如指令集、多线程方面的测试。有一说一,基本的代码测试非常重要!毫不夸张地说,我70%的时间用在了搜索相关代码,测试代码,10%的时间用在写比赛代码,20%的时间debug。
我大部分的时间用在了指令集加速,多线程方面用的是宏模块的omp库。大峥的战斗力很强,经常能找到我看不懂的文献,还一度想复现高性能库里的稀疏矩阵算法,后期也时不时卷到很晚,然后我早上接力。辛总负责和叶老师沟通进展,时不时质疑我们的做法,偶尔泼泼冷水,活像八戒,哈哈。
探索的过程没有一帆风顺,有半个月毫无进展,因为数据太稀疏,导致指令集加速毫无效果,其他的优化方法,比如指令预取、亲和性等效果不佳,又找不到其他突围的方法,曾一度想放弃,和开始必拿20万的雄心壮志形成鲜明的对比!
“山重水复疑无路,柳暗花明又一村。”这次可算是真切体会到了:一次披星戴月和大峥头脑风暴之后,入睡前突然灵光闪过,似乎看到曙光!
离提交还剩两小时的时候,大峥还在卷。说实话,我当时没抱什么希望,只求有始有终。没想到大峥弄了一堆看不懂的编译选项,然后用上所有优化方法,产生了一个究极进化体,名曰“M1”,向Apple的Arm cpu致敬。
2、小插曲
一次在公共服务器上测试亲和性,大峥中午测了一下,然后服务器莫名崩了。待服务器修好之后 ,我晚上又试了一下亲和性,结果有崩了,才确定是亲和性设置的问题!omp中设置亲和性有风险。晚上寝室吐槽说我们的“龟速矩阵运算”确实龟速,速度没提升多少,竟然跑崩了服务器,还是无语凝噎。
大赛结束之后,组委会的史老师看到叶老师朋友圈的证书,认出“龟速矩阵运算”,又被鞭尸一通。
3、复赛
复赛需要到南京,一开始都不想去,但叶老师到南京有其他事,要求辛总一定去,于是又是半推半就,买了机票,不太情愿地去了。机场上大家轮着休息,我做展示的PPT还有熟悉一下学生代表的发言。大峥和辛总还想用性能分析工具看看到底慢在哪,是否还有优化的空间。这也是几年来第一次通宵,算是年轻了一回。
从机票到酒店再到下馆子,全是辛总一手操办,确实有两下子。早上9点南京相当冷,地铁上还无聊登了下腾讯会议看了眼模大课,约一个小时到了酒店。放下行李轮番作战,终于在5点前完成了ppt,赶去报到。当天晚上还小测了一下linux相关的笔试,然后回去准备第二天的讲稿。
第二天的比赛顺利开幕,发言时对着稿子慢慢念,不求精彩,但求无过。昨日的抽签安排到了下午,因此上午还在不停熟悉稿子。中午接到消息说,答辩只要一个人讲,这下慌了神,到底谁上呢?我和大峥都做准备,然后辛总看试讲的效果。
最后我负责做汇报,大峥负责口嗨答辩,总算是有始有终。
4、路演
就这我们要松口气的时候,叶老师告诉我们说总成绩排名第一,需要参加第三天的路演,争夺麒麟杯,晚八点到酒店一起商讨。我们当时就裂开了,因为知道我们做的不是很好,竟然莫名奇妙排在第一。事后知道,有个速度最快的队伍不讲武德,代码是他们的导师写的;然后赛方看到我们做法的创新性,给了较高的分数。
从晚饭到8点,我们一直挺纠结的,做太烂,没法讲,连我们都不清楚具体哪里有瓶颈,哪里加速快,有点名不副实,终于体会到“德不配位”的痛苦了。为之奈何?
晚八点与叶老师会面,他回忆了白天所有的答辩情况,说东南大学的一支队伍确实比我们做得好,他们列出了一步一步优化所取得的效果,逻辑和层次感很强,而且最后的速度也比我们快。唯一美中不足的是,由于需要呈现的内容太多,答辩时讲得过快,口齿不太清楚。
我们也讲了我们的顾虑,最后和老师决定,将路演的资格给他们,让他们冲击麒麟杯!
那一晚,我们如释重负,是这些天来最轻松的一晚,我打开b站刷了一期“观视频”。
5、精益求精
从他们路演的内容得知,我们的多线程有重大提升空间,需要用pthread库,这样可以更好分配线程、设置亲和性。因为数据过于随机,提升的最佳途径就是多线程,而我们的多线程仅仅是包装后的omp库,显然不能将其性能发挥到极致!
时隔一个半月,忙完了期末考,终于有机会再优化性能,多线程的提速方式很实用,非常值得再卷卷。
上上周便利用pthread库做了许多测试,从简单的添加多线程,到添加亲和性,再到线程池,最后到加锁。找了很多资料,测试了不是代码,也请教了东南的兄弟,获益匪浅!
如果有时间,也想将pthread部分的例子做一个系列总结。
6、有始有终
从9月到现在,断断续续持续了5个月,终于可以画个句号,也算是自己参与的第一个项目,中途几次想不干,但看看还在挑灯夜战的大峥,看看还在叶老师前侃侃而谈的辛总,还是硬着头皮撑下来,还真应了那句话——“一个人走得快,一群人走得远。”