Baste 发表于 2022-2-3 19:21

第一届九坤并行程序优化大赛总结

原文链接

背景

2021 年 9 月,量化头部公司九坤举办了其第一届并行程序优化大赛,相关介绍可参考推送。赛题如下:


赛题是 C/C++ 的 codebase,然而我与一起组队的两位同学基本都对 C/C++ 不太熟悉,于是我们起名叫做了"只会 JAVA 队"。作为三个在体系结构几乎一窍不通的小白,在一个多月断断续续的不到 10 次线下沟通中,我们逐渐对体系结构入了门,在 192 个队伍脱颖而出,并在决赛取得了第 4 名的成绩(PS:离苹果周边只差一步真的好可惜),具体可以参考总结推送。



这里简单做一总结,贴一些当前的资料和想法,以备之后回忆和反思。
赛题

第一题

在深度学习中,卷积操作在神经网络中扮演了重要的作用。2015 年,Andrew Lavin 等人提出了快速计算卷积的算法 Winograd,通过降低计算复杂度,相比直接卷积的算法提升 4 倍效率,成为了深度学习中非常重要的一个算法。本次比赛的第一题就是优化 Winograd 算法。各参赛队的通过优化比赛方给出的 Winograd 算法代码,缩短其运行时间,提升该算法时间的每秒浮点计算次数(FLOPS)。
第二题

金融数据是真正的“大数据”。每天市场上的交易会产生海量的数据,这些数据对于预测未来市场走势只非常重要。因此负责高速储存、读取这些数据的 IO 系统成为了行业内重要的一环。目前金融数据中常用 HDF5 文件系统库进行大规模的数据存储。本次比赛第二题要求各参赛队探索 HDF5 文件系统,通过一个跑分程序 h5bench 来完成 IO 系统的性能研究和调优。
代码 & 文档


从赛题可以看到,此两题能够检验选手最大化压榨 CPU 和 IO 性能的能力。

有关赛题的代码和文档均已开源,可移步 Github 查看。欢迎交流~
此外,在此处简单列举一下我们组在两个题目上的学习资料,希望能对大家有帮助。
第一题:

[*]SIMD 简介
[*]AVX / AVX2 指令编程
[*]为什么向量化计算会这么快?
[*]高性能深度学习的编译优化
[*]卷积神经网络中的 Winograd 快速卷积算法
[*]优化 CPU 矩阵乘法
[*]矩阵运算库在性能上区别大吗?
[*]NCNN
[*]FeatherCNN
[*]Optimization of Spatial Convolution in ConvNets on Intel KNL
[*]Winconv
[*]Fast Algorithms for Convolutional Neural Networks
[*]Sparse Winograd Convolutional neural networks on small-scale systolic arrays
[*]Perf
第二题:

[*]h5bench: HDF5 IO Kernel Suite for Exercising HPC IO Patterns
[*]On Implementing MPI-IO Portably and with High Performance
[*]h5bench
[*]hdf5
总结

就 CPU 题目而言,我们此次尝试了以下优化和工具:

[*]算法优化:winograd4x3-3D
[*]指令级并行:循环展开,分支预测
[*]数据级并行:AVX128,256,512
[*]线程级并行:OPENMP
[*]编译器:尝试 gcc 不同版本,对比 llvm
[*]内存排布:36*STRIDE
[*]冒险尝试:merge_array
[*]Profiling:perf

其实这里有好多思想都已经在数据库领域存在了。比如向量化引擎,比如 codegen 的 llvm 优化,比如对 cache 友好的 push 查询引擎等等。

个人认为,数据库做到极致便是对硬件性能的一种体现。因此,一个优秀的数据库工程师应该对体系结构具有一定的了解,这样才有可能进一步压榨硬件性能,从而达到更好的数据库性能。

一直以来,我希望分布式数据库能够成为自己的一个标签。通过这次比赛,我意识到高性能计算也是一个很有趣且硬核的方向,其不仅能够给企业迅速带来真金白银的收益(节约成本),而且也是很多领域做到极致的一种出路。

希望未来还能有契机去进一步深挖此方向吧。

acecase 发表于 2022-2-3 19:24

作为比赛组织者看到这么认真的总结,给你点赞

Doris232 发表于 2022-2-3 19:30

感谢组织方[赞]

APSchmidt 发表于 2022-2-3 19:32

[捂脸]这题不会是凯亮出的吧...

rustum 发表于 2022-2-3 19:33

这个得奖了是不是可以进九坤工作呀?

jquave 发表于 2022-2-3 19:42

俺只是入了个门,九坤的工程师都是 HPC 的大佬,俺不配[大哭]

JamesB 发表于 2022-2-3 19:46

哈哈不知是哪位大佬[惊喜]

Mecanim 发表于 2022-2-3 19:47

哼~╯^╰
页: [1]
查看完整版本: 第一届九坤并行程序优化大赛总结