• 首页
  • 赛事活动
    • 海洋计算挑战赛(MCC)
    • 全国并行应用挑战赛(PAC)
  • 新闻公告
  • 资料站
  • 机时申请
  • 联系我们
登录

中山大学 | 算法优化与硬件利用的实战经验

10月23

在今年的PAC大赛中,我有幸参与其中,经过初赛和决赛的两轮激烈角逐,不仅提升了自己的编程和优化技能,也积累了宝贵的经验。整个参赛过程中,我和团队遇到了许多技术上的挑战,但通过不断的思考和尝试,最终成功解决了这些难题。以下,我将分享我们在初赛和决赛中的经历、遇到的困难以及我们最终采用的解决方案和心得。

初赛、决赛的技术挑战与成长

在初赛阶段,我们面对的主要任务是优化CPUBench和Winograd算法。虽然这看似是常见的算法优化问题,但实际上隐藏了许多复杂的技术细节。

首先,在CPUBench优化中,我们遇到了一个棘手的问题:某些子项频繁申请和释放内存,导致性能严重下降。默认的BLAS库也并不能很好的利用上硬件的算力。为了解决这些问题,我们决定更换更高效的malloc实现,并选用了性能更优的BLAS库。在性能上实现了显著提升。这个经历让我深刻体会到,工具和库的选择在优化中起到了至关重要的作用。

接着是Winograd赛题。在这个问题中,我们需要优化小矩阵乘法的效率。然而,随着问题的深入,我们发现传统的矩阵乘法算法在缓存利用率上存在问题,导致小矩阵乘法效率不够高。为了解决这个问题,我们首先研究了不同的数据排布方式,希望通过更合理的内存布局提升缓存的亲和性。同时,我们还尝试了手动编写SVE intrinsics,以期更高效地执行小矩阵乘法内核。在这过程中,虽然直接编写intrinsic代码的复杂度较高,但通过不断调试和优化,我们的矩阵乘法效率得到了显著提升。由此可见,在优化过程中,深入了解底层硬件架构和手动编写底层指令可能是提升性能的一个关键突破口。

进入决赛后,赛题难度进一步升级,比赛内容主要围绕两个多项式计算优化的题目展开。其中的核心挑战是如何高效地进行向量化计算,特别是在需要计算变量x的不同幂次时,如何利用硬件的向量化指令进行优化。

面对这个问题,我们意识到,如果采用传统的逐步计算x的幂次,效率会非常低下。为此,我们决定利用内联汇编来加速计算,并使用向量化指令集对x的不同幂次进行并行计算。通过这种方式,我们成功地缩短了计算时间,大幅度提升了计算效率。

此外,另一个赛题是有关stencil计算的问题,涉及到多个多项式幂次的数据复用。在这里,我们面临的挑战是如何避免重复计算,提高数据复用率。我们仔细分析了每个多项式的结构,设计了一种算法,能够在计算中高效地管理和复用数据,减少了大量不必要的重复计算。通过这个优化,我们提高了运算效率。这让我认识到,优化算法不仅仅是靠硬件性能的提升,更重要的是理解问题本质,从算法设计层面着手解决问题。

硬件理解与算法创新是性能提升的关键要素

      通过这次PAC大赛,我积累了许多宝贵的经验。首先,我深刻认识到深入理解硬件架构和工具链的重要性,比如在初赛的CPUBench优化中,我们通过更换高效的内存分配器和BLAS库,大幅提升了性能,证明了选择合适工具的重要性。其次,数据结构与缓存优化在高性能计算中至关重要,在Winograd赛题中,我们调整数据排布,提高了缓存亲和性,显著改善了效率。同时,虽然手动编写SVE指令和内联汇编的复杂度较高,但在处理底层硬件瓶颈时,这些方法能够带来意想不到的优化效果,比如在决赛中通过向量化计算x的幂次取得的提升。最后,比赛让我认识到精巧的算法设计有时比单纯依赖硬件优化更为关键,尤其在决赛的stencil问题中,通过避免重复计算和提升数据复用率,我们实现了更高效的性能优化。

总体而言,这次PAC大赛让我在算法优化和硬件利用方面得到了极大的提升。不仅学到了很多实用的技术,更加深了我对高性能计算的理解。这次参赛经历不仅让我见识到了优化的广度和深度,也让我更加自信地面对未来的技术挑战。

全国并行应用挑战赛(Parallel Application Challenge 简称PAC)2013年创办,由中国计算机学会高性能计算专业委员会、北京并行科技股份有限公司等共同倡导发起,竞赛旨在培养和发掘杰出计算人才,寻找行业最佳应用,践行新发展理念,助力相关产业高质量发展!

官方通知

23
中山大学 | 算法优化与硬件利用的实战经验

2024/10/23

23
南开大学 | 探索新知与突破自我

2024/10/23

23
少年强,行业兴丨PAC 2023-2024赛季圆满闭幕

2024/9/30

23
第十一届PAC 大赛决赛晋级榜单公布:“HPC+AI”成新趋势

2024/8/22

23
第十一届PAC大赛高校培训季纪实(三):PAC优质“实践性”学习平台

2024/7/24

23
第十一届PAC大赛高校培训季纪实(二):聚焦大咖报告,探寻师资传承

2024/7/12

23
第十一届PAC大赛高校培训季纪实(一):对话参赛师生解析行业动态

2024/6/22

23
一路相伴,一往直前丨第十一届PAC全国并行应用挑战赛启幕

2024/4/26

23
十年筑梦,向新而行 | PAC全国并行应用挑战赛在京启幕

2022/7/7

23
PAC: 十年筑梦,向新而行

2022/5/7

23
这是属于PAC的高光时刻!

2021/10/27

23
决战珠海,PAC2021并行应用挑战赛优化组初赛晋级名单公布

2021/9/2

23
PAC2021应用组初赛晋级名单揭晓!

2021/8/23

23
PAC2021优化组赛题招募启动

2021/4/29

23
第九届“英特尔”杯全国并行应用挑战赛竞赛规程

2021/3/22

23
赛题招募 英雄留步丨IPCC2021即将启动

2021/3/8

23
第五届“神威杯”国产CPU并行应用挑战赛竞赛规程

2021/3/22

合作与支持单位

中国计算机学会

ACM中国

 

中国科学院计算技术研究所

中国科学院计算机网络信息中心

清华大学

机械工业出版社

联系我们

地址:北京市海淀区西北旺东路10号院东区21号楼三盛大厦

邮编:100193

邮箱:parallel_edu@paratera.com

京ICP备09053078号