不知道大家注意到没有,今天我们的标题改为“阅读推荐”而不是以往的“学术论文推荐”,这是为什么呢?因为我们在平时的阅读中发现了很多有趣的资料,这些资料不一定是学术论文,却充满营养、智慧,给人以阅读的乐趣。因此我们会在往后的专栏中增加一些此类资料的推荐,希望大家喜欢(或者提意见)。
今天我们为大家推荐的是清华大学 TUNA 协会(即原清华大学学生网管会)组织的“金枪鱼之夜”活动中2022年3月19日这期活动——《金枪鱼之夜:高频交易与计算机科学》中的相关内容(https://tuna.moe/event/2022/high-frequency-trading/)。看起来这个内容好像是掉进了钱眼——由清华大学计算机系前0字班学长莫涛(OI知名选手,现在跑去搞量化交易了)组织了一场模拟交易赛,然后吸引了很多人参与。这个看似和计算机科学毫无关系的比赛究竟有什么有意思的内容呢?
外行看热闹,内行看门道,我们注意到知乎上有这么三篇连载文章《代码优化卷翻天:莫队交易赛复盘》(https://zhuanlan.zhihu.com/p/470766162),这里面记录了参赛选手(也是清华学生)的心得,仔细阅读你会发现,这文章写得就像冒险小说一样精彩。首先,作者就观察到了网络延迟对排名的影响(上海车牌交易团队召唤你啊童鞋!!!)
接下来,作者开始讲述自己在优化代码过程中的心路历程:
这哪里是金融交易,明明是算法+操作系统+网络+体系结构的综合大作业!在阅读中我们发现,作者对开发的熟练程度相当了得,不论是使用开发语言(Rust)、代码算法库、特定CPU指令集、汇编优化(以及反汇编分析)、网络操作还是对算法的改进都展现出了强大的实力。同时作者还使用了一定的钞能力(再次体现了金元科研的思想!):
很有意思是的,作者观察到256位整数计算的瓶颈(已有库的问题),就自己进行了实现,这部分内容实际上是现在常见的椭圆曲线密码算法中的一个关键优化点,作者并没有意识到这个,但他的实现已经很接近当前许多相关高性能实现的思路了(侧面也说明作者不熟悉椭圆曲线算法实现,否则可以直接copy相关底层代码):
作者还引入了一种优雅的方法来支持 Rust 使用 intrinsic 函数编写 SIMD,即使用平台无关的 std::simd 模块,实现了巨大的优化:
“在解锁了 AVX512 的洪荒之力之后,经过 SIMD 优化的 M2 和 M4 计算时间降低到了原来的一半左右。曲线一下子就起飞了,最终卷到了和 OS 专家(chi)并列第二名的位置”
接下来,作者开始展示决赛阶段比赛内容,主要展示的是竞争对手是如何卷死他人的:
最后本文作者写了很多值得一读的鸡汤:
过去一年的时间里我借着秋招的机会接触了很多公司和各种领域的人,给我的感觉就像打开了新世界的大门。让我意识到除了自己所在的象牙塔小圈子以外,外面其实还有很多广阔的世界:有做 DB 的,做 AI 的,做交易的;在技术之外,还有重业务的,做产品的,推商业的,搞投资的;在人生道路的选择上,有读博当老师的,有去公司挣钱的,有创业当老板的,还有在家躺着享受生活的……到处都有成功人士,人生并不是只有卷 GPA 写代码发论文这一条路,而且现实中很多事情比在学校里做一个玩具项目、水几篇论文要困难得多——这也是我很想对还在学校里的贵系同学们分享的话。所以我认为,要想避免自己被困在思维定势和信息茧房当中,就要不断扩展视野、接触更广阔的世界。只有知道了更多事情可以做,才能更从容地去选择做什么,去思考怎么做。
最后当然也要安利一下比赛里面手写操作系统大神的作品——评测鸭!
https://duck.ac/blog/0
读完这篇文章,老同志们感觉是不是被这样年轻的后浪拍死在沙滩上,一点也不冤。我们搞安全的筒子们,一定要加强计算机系统和算法的修养啊!!!
相关资料下载:
https://mirror.tuna.tsinghua.edu.cn/tuna/tunight/2022.03.19 高频交易与计算机科学(莫涛)/