APP下载

在代码的世界里追寻创世之乐

2021-06-24个个尹

思维与智慧·下半月 2021年5期
关键词:编译器奇缘编程语言

个个尹

胡渊鸣——一个非凡的普通科研人。

2010年高一即获得清华大学保送资格,2013年正式进入清华大学姚班。本科期间,先后前往东京大学、斯坦福大学訪学。2017年,进入麻省理工学院读博。入学13个月后,拿到麻省理工学院硕士学位。

本科期间在微软亚洲研究院实习,这是微软公司在美国本土以外最大的基础研究机构。从事深度学习和计算机图形学研究,本科便有多篇论文中选CVPR(美国电气和电子工程师协会国际计算机视觉和模式识别会议)、SIGGRAPH(计算机图形学会议)等国际顶会。

事实上,上述短短几行履历远远不能概括出胡渊鸣。最近,让胡渊鸣为大家熟知的是他的一篇文章——《99行代码的“冰雪奇缘”》。99行代码虽短,背后的技术故事却很长。故事要从物质点法说起,这是一种在影视特效领域广受青睐的模拟连续介质方法,《冰雪奇缘》就用到了它。早期,它运行速度非常慢,比如《冰雪奇缘》里安娜过雪地的镜头,据说要在集群上跑整整一个星期。大四毕业的暑假,胡渊鸣投入了移动最小二乘物质点法的研究,为的就是提高物质点法的运行速度和性能。

胡渊鸣的灵感是,用移动最小二乘法统一仿射粒子细胞法中的仿射梯度场和物质点法中的变形梯度更新两种离散化。在宾夕法尼亚大学蒋陈凡夫教授的指导下,胡渊鸣等人完成了移动最小二乘物质点法方法的研究,不仅实现了新的应力散度离散化,使物质点法的运行速度快了两倍,还成功模拟了物质点法此前并不支持的各种新现象。这项成果最终发表在SIGGRAPHP。

值得一提的是,虽然很多报道把重点放在了99行代码上,但胡渊鸣真正令人崇拜的地方不仅于此。代码行数只是表象,胡渊鸣令人称赞的是创造了Taichi(太极)这个编程语言。相比TensorFlow(开放源代码软件库,用于进行高性能数值计算)和PyTorch(开源的Python机器学习库,用于自然语言处理等应用程序),太极的渲染速度分别比前者快了188倍和13.4倍,并且能够模拟雪等物理流体,创造出类似《冰雪奇缘》中的魔法场景的场景。

毫无疑问,太极编程语言的工作量非常大。这是一个全新的系统,项目早期要做的设计决策非常多,需要花费大量的时间和精力。有一次,胡渊鸣连续在家写代码,最后,他实在受不了没人说话的生活,就去实验室找同学聊天,结果被同学调侃“身上‘长蘑菇了”。

太极的编写过程不容易。一开始,胡渊鸣低估了写编译器的工作量,没有完成一个月写出一个理想编译器的设想。其中,因为第一次写的缘故,他缺乏设计汇编者的经验,还把IR(中间表现形式)设计错了,最后只好砍掉重来……正是他不厌其烦的改进和坚持,才有了现在Hierarchical SSA(一种分层静态单赋值)的结构,使得很多优化成为可能,促成了太极编程的诞生。

用太极语言编写的模拟器大大简化了代码,可微分弹性对象模拟器只用了110行代码,而直接用CUDA(由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题)编写则需要490行。同时,太极的速度还很快,相比CUDA版本几乎没有什么损失。而且,神经网络控制器一般只需要几十次迭代,即可完成优化。

近年来,Python这门计算机语言因为入门方便,实用性高,热度极速上升,不少人纷纷通过它开启编程的大门。考虑到Python的这一特性,胡渊鸣转变了原来要将太极做成一门单独的编程语言的方向,而是把太极改成了pypi(Python软件包索引)安装包,让太极能够基于Python运行,他还为此编写了完整的使用教程。这些做法既体现了胡渊鸣缜密的思维,又进一步地扩大了太极的使用范围,降低了使用难度。

网友看了胡渊鸣的事迹后,不由感叹道:“图形+系统+编译,真是创世的快乐。”这个评价十分贴切,他也曾表达了自己在钻研编译器中获得的快乐。每天对于太极编程语言相关问题的思考,大大丰富了他自己的精神世界,把人世间的种种噪声都隔绝了,这让他的生活质量有了很大的提高。

这个时代缺少学霸或科研人员吗?或许并不是,比起学霸光环,更难能可贵的是,在自己擅长的领域,享受钻研的乐趣。饱含一腔热情并愿意静下心来做真正有意义的事情,这正是胡渊鸣最让人佩服的地方。

(王世全摘自《知识窗》2021年第1期)

猜你喜欢

编译器奇缘编程语言
压力-体积转换在CFC编程语言中的实现解析
美味奇缘
基于相异编译器的安全计算机平台交叉编译环境设计
我的“森林奇缘”之旅
Java编程语言的特点与应用
浅谈不同编程语言对计算机软件开发的影响
面向对象Web开发编程语言的的评估方法
通用NC代码编译器的设计与实现
编译器无关性编码在微控制器中的优势
基于ARM嵌入式平台的x86译码SOC架构设计