字体
大
中
小
关灯
上一页 回目录    收藏 下一页

第108章 小程序咬住大机房(2/3)

rolling_median7

rolling_rank

topk_window

其中rolling_rank 不是全市场横截面排序,而是固定小窗口内的局部排名。

真正的大横截面rank仍然留在后续审计清单里,不能用这套小窗口网络一口吞掉。

江临注视着这几个再普通不过的函数名,看了足足有半分钟。

然后,在这间略显昏暗的旧车库里,他几乎忍不住要笑出声来。

滚动中位数。

滚动排名。

窗口内前k个极值。

对于一家运作着千亿资金的量化私募而言,他们每天需要把成千上万只股票、期货合约,在过去好几年时间跨度里的分钟级甚至是tick级的切片数据全部铺开。

然后,系统必须像一个不知疲倦的机械齿轮,在这些天文数字般的数据序列上,挨个去计算过去七个时间切片内的中位数是多少,在当前这个滑动窗口里该标的排在第几名,这个时间段里成交量最大的几个切片是哪几个……

这是一种在逻辑上简单到不能再简单,甚至连大一新生都能用几行代码写出基本逻辑的窗口算子。

然而,在宏大的金融数据流面前,这种微小的算子,一个夜晚内,它们会被调用到十11甚至十12级别。

江临看着这份昂贵的火焰图,脑海中浮现出的,却是几个小时前在计算机学院陈启明办公室里,那张同样淌着性能鲜血的测试数据表。

陈启明表单里的median7_fast与top3_window,与此刻这份价值百万级优化的私募机房瓶颈,在物理意义和数学本质上,根本就是同一种东西。

一边是被困在象牙塔内,大学实验室的离线测试机里,学者们为了几条微内核指令争论不休。

另一边,是在寸土寸金的金融核心区,私募机构嗡嗡作响的庞大机房里,成群的服务器因为算力枯竭而发出不堪重负的哀鸣。

两个在现实维度上隔着十万八千里,看似毫无交集的世界,在最深邃的计算底层,竟然被同一类微不足道的小程序,死死地咬住了命运的咽喉。

江临回想起了那个被盲目调用了七千八百多万次的旧因子库,想起了那个让程序去寻找程序的疯狂构想。

在那个时候,这条通往极致优化的道路,在他的视野里还仅仅是一道透着微光的门缝。

从旧因子库里那七千八百万次小排序开始,到江氏砖验证过程中被反复打磨的mpS状态枚举与死路剪枝,再到今天陈启明办公室里的三层可重定向超优化框架……

这道门缝,正在被他用无可辩驳的工程实力,一寸一寸地地撑开,直至变成一条康庄大道。

他双手放上键盘,给沈承业回了一封简短有力的邮件。

【任务我接了,二十万的基础审计费按你说的走流程。

但在开始干活之前,有三点必须写进协议。

第一,我只接触脱敏后的性能审计包和远程沙箱,不接触真实策略、不接触交易信号、不接触客户持仓和资金参数。

第二,对方必须把缺失值、停牌哨兵、NaN、tie-breaking和复权异常的处理规则写成接口文档。

第三,我用来优化底层算子的工具链属于我个人,不随项目交付转移。】

邮件的最后,他略作思索,又加上了一段务实的声明。

【另外,鉴于这套微架构优化的复杂性,目前的性能优化只能先给他们提供一版打底的解决方案。

像他们这种量级的工业级应用,真正巨大的性能红利,必须得用更深维度的算法搜索去挖掘,那个工具我目前还在开发中。

至于这第一版打底方案究竟能帮他们压榨出多少耗时,等我挂上他们的硬件环境实测出了结果,再报给你。】

发送键按下后不到三分钟。

沈承业就给予了肯定的答复。

在接下来的几天时间里,江临的生活节奏,就像是处理器内部精密划分的时钟周期一样,被精准地切成了截然不同的两半。
本章未完,请翻下一页继续阅读.........
上一页 回目录    收藏 下一页