2021年12月24日,第四届中国软件开源创新大赛决赛在线上举行;12月26日决赛结果在北京CCF中国软件大会揭晓并颁奖。本届大赛由国家自然科学基金委信息学部、中国软件行业协会、中国开源软件推进联盟、全国高等学校计算机教育研究会、信息技术新工科产学研联盟、新一代人工智能产业技术创新战略联盟作为指导单位。主办单位为北京大学、绿色计算产业联盟。本届大赛设有项目创新、任务挑战、实践教学、代码标注四大赛道;共计有36727人参赛,覆盖1427所高校,提交有效作品7378项;吸引了如华为、百度、arm中国、开放原子开源基金会、飞腾、Ascend等共计225万元奖金的赞助。由中国科大计算机学院下一代移动计算及数据创新实验室张昱老师带领的s4plus-云惊队在大赛的开源项目创新赛命题组以优异成绩荣获一等奖。
本届大赛赛事委员会主席、北京大学金芝教授宣布颁奖仪式的开幕。她指出,2021年“开源”被明确列入《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》,这是开源首次被列入国家五年规划。大赛指导委员会主任、中国科学院院士王怀民在致辞时谈到,赛事名称由原来的绿色计算大赛更名为“中国软件开源创新大赛”,突出了开源创新的意义与价值;并希望大赛越办越好,为中国开源产业赋能。
在开源项目创新赛命题组赛道,由计算机学院研究生丁伯尧、王瑞凯组成的s4plus-云惊队在张昱老师指导下,选择了赛题“OpenAtom XuperChain区块链项目开发”中的任务:“基于x86_64指令集的国密算法性能提升”。国产密码算法(国密算法)是指国家密码局认定的国产商用密码算法。现有的国密算法基于纯Go语言实现,没有充分利用CPU指令集里面的特殊指令进行优化,在性能上低于Go标准库里的对应算法实现,因此希望参赛者对现有的国密算法进行优化,在确保接口兼容标准库接口的情况下,实现性能上的提升。
在历时三个多月的比赛中,s4plus-云惊队成员密切配合、分工明确、攻坚克难,并且积极和指导老师进行讨论研究,最终实现了对国密SM2算法的优化。在优化中深入调研文献,通过设计预计算窗口和对蒙哥马利模乘的优化,完成了算法层次的优化;通过使用向量指令集,借助开源工具c2goasm快速将编写的高效C函数翻译成Go编译器使用的Plan9汇编,再通过开展强度削弱、语句重排、循环展开等程序优化,实现了对国密算法的计算优化;通过对国密算法实现代码的深入分析以及对Go语言及其编译系统的充分认识,结合逃逸分析实现了Go语言特性相关的内存优化。最终,经过不懈努力,将SM2算法在x86_64架构下的整体性能提升了接近五倍,其中对于SM2算法的解密操作的性能提升更是达到了接近九倍的优化效果。
目前,s4plus-云惊队对XuperChain的密码库(https://github.com/xuperchain/crypto)所提交的反映上述优化的Pull Request已经于2021年12月1日被xuperchain/crypto合并接受。
s4plus意为“系统软件与软件安全+X”,旨在以系统软件和软件安全为基石,开展支撑人工智能、物联网、端边云及量子计算等新一代信息技术的研究与教学。在本届中国软件开源创新大赛中,s4plus队结合课题组开展的深度学习以及Go语言运行时的系统优化研究,选择与研究有关的赛题锻炼同学们团结协作、系统优化、求实创新的能力。
附:
提交的Optimize SM2 nearly 5 times的PR:https://github.com/xuperchain/crypto/pull/24
被xuperchain/crypto项目合并接受的commit 5d650d5:https://github.com/xuperchain/crypto/commit/5d650d