作者 | 陈大鑫
最近一年,计算机图形学正在迎来产业新浪潮,各路计算机图形学大神纷纷创业成立新的公司。
然而这里面最引人瞩目的还得属今年年初,出身清华姚班、MIT博士毕业的胡渊鸣团队创建的太极图形。
身为一家初创企业,想要一直保持竞争力,就必须要不断的成长。
那么这半年多来,太极图形发展如何呢?太极编程语言又都取得了哪些最新进展呢?
金色九月(9月4日),为了让开发者更加真实更加近距离的来了解太极,太极图形于北京中关村创业大街举办了一场面向开发者的技术交流盛会。
太极图形的联合创始人和核心开发人员们亲临现场,同步 Taichi 编程语言的最新进展,并与所有参会的开发者们面对面交流,会前参会者踊跃报名,会中参会者积极提问,更是有近千位同学在线上观看了当天的直播。毫无疑问,这是一场 Taichi 开发者知识与思辨的盛宴。
太极简史
大会伊始,联合创始人兼 CEO 胡渊鸣为大家回顾了一遍太极图形精彩的前世今生。
2016年春天,胡渊鸣第一次萌生了打造“可重用图形基础设施”的想法。考虑到优秀的图形基础设施将会创造无数个虚拟世界,胡渊鸣决定将项目命名为“太极”:“太极”在中国传统哲学中意指“宇宙最原始的状态”,并且其英文“Taichi”已经广泛被非汉语母语者接受,为未来的国际化发展奠定基础。
转眼5年已经过去,Taichi 已经由一套C++库变成了完整的编程语言和编译器、胡渊鸣也从清华姚班的一个大二本科生成长为了一个创业公司的CEO。
下图的时间轴详细地展示了太极从项目奠基到公司成立壮大的发展历程。
许多人通过知乎上《99行代码的冰雪奇缘》知道了Taichi,只需要99行代码就可以写一个简单的连续介质模拟器,模拟三种相互作用的不同材料(水,果冻,雪),效果逼真。时隔一年又半载,太极软件工程师展示了最新的3D版“冰雪奇缘”,即 Taichi 基于GPU 的高性能 GUI 解决方案。GGUI可以直接获取位于 GPU 上的太极物理仿真数据进行交互,并直接在GPU上进行渲染,实现了渲染性能的大幅提升。Taichi Zoo上演示的2D“冰雪奇缘”—Yuanming Hu实时3D MPM仿真—Dunfan Lu被广泛认可的太极
太极的愿景是希望打造一个世界级的开源图形基础设施和云平台,让图形计算惠及每一人,使命是解放创造力。太极的团队来自麻省理工学院,哈佛大学、微软、谷歌、Facebook等顶尖的学府和企业,有超过半数的同学本科来自清北,2/3的同学拥有海外经历。开源是刻在太极基因里面非常重要的一点,太极是全球最大的开源平台Github 上面最受关注的图形计算基础设施项目之一,也是一个由中国人主导的GPU编程系统,拥有世界范围内的影响力。
从外界认可方面来看,太极获得了红杉资本数百万美元的天使轮投资和中国计算机学会 2020年度最佳图形开源软件奖。
商业方面,太极和快手进行了合作,使得太极的基础设施能够切切实实的让每一个手机上面有 GPU 的同学可以去体验到太极的美妙,可以享受到实时物理仿真,给他们生活带来乐趣。
有近百万用户快手用户拍摄并上传基于太极开发的魔法表情特效,其特效被2000多万快手用户观看到。
在此发展过程中太极也收获到了来自学术界和产业界众多积极良好的反馈。
如快手 Y-tech 图形 AI 团队负责人马重阳表示:
太极编程语言和传统的GPU编程方式比起来极其容易学习,即使是实习生也能在 1小时内基本掌握。并且,太极程序一次开发后,可在 iOS、Android、PC等多平台运行… 满足了快手魔法表情快速迭代的需求,对繁重的设备部署工作起到了很好的加速作用。
谷歌的资深研究科学家 Alexander 表示:
我经常抱怨类似 Numpy 的框架(如Tensorflow、JAX、PyTorch)在新型计算任务下不够高效,今天我 benchmark了Physarum这个任务;Tensorflow 耗时 11.9 秒,但是 Taichi 只要240毫秒,Taichi 快了40~50倍,并且代码更加可读。
中国计算机学会CG&CAD 专委会表示:
Taichi(太极)为整个仿真行业注入了新的力量,对于领域和学科的发展有很好推动作用。太极也拥有非常强的国际影响力,其内核算法和衍生应用频繁在最近的图形学和机器学习会议上出现… 代码规范,文档充足,并且维护人数正在变多,经评委会严格评审及讨论,一致认为 Taichi 开源软件获得2020年度 “图形开源软件奖”。
麻省理工学院的博士生 Jie Xu表示:
当我们在参加 MIT 斯隆商学院的金融工程课时,需要求解一个高维动态规划以来为金融产品定价时。编写 C++ 甚至CUDA的巨大工作量让我们望而却步。好在太极提供了一个极其方便的 GPU 并行编程方案,使得我们的代码不但比C++快了两个数量级,而且更加容易编写、维护。
活动当天,美国、中国香港、杭州的三位太极用户在线上进行了实例分享:用太极编写不可压缩流体模拟器(如卡门涡街仿真)、太极在SLAM上的牛刀小试以及用太极实现双向光线追踪积分器(BDPT)。
卡门涡街-Zhuo Wang
这三位来自计算流体力学、工业机器人和图形学的工程师分别展示了太极在各自研究领域内的应用,笑谈道“以前用C++实现很劝退的,现在用太极容易很多”。除了易用性的增强,太极朝并行编程语言发展的潜力也逐渐在更多领域凸显。
Taichi编程语言的格局正在从“Graphics Programming for Everyone” 向 “Parallel Programming for Everyone”逐渐展开
实例 1: 用Taichi编写不可压缩流体模拟器 (基于FVM和SIMPLE格式) from 包乾
不可压缩流体是流体仿真中最基本的一种计算类型,也是很多更为复杂流体的计算的基础。作者采用不可压缩流体仿真中普遍被采用的有限体积法(FVM)和SIMPLE算法,实现了用Taichi语言在二维管道内的非定常流体模拟,并通过添加障碍物的形式观测到了卡门涡街的产生和发展。通过本项目,作者展示了Taichi语言在流体计算方面的易用和高效特性,并探索了工程流体仿真和计算机图形学流体仿真的区别与联系。
实例 2: Taichi在SLAM上的牛刀小试 徐浩
SLAM全称为Simultaneous localization and mapping,即实时定位与地图构建,对移动机器人/无人机/自动驾驶/eVTOL等至关重要。使用Taichi进行mapping的SLAM后端,能够快速遍历特定层次、实现“免费”的并行加速,并可专注于算法实现。
实例 3: 如何用Taichi实现一个双向光线追踪积分器 林耀冬
双向路径追踪方法相比传统单向方法,能更好模拟各种光学现象,但由于算法流程复杂,很少有并行实现的开源代码。本项目利用了太极上手简单,自动并行的特性,使用500行左右代码,实现了双向路径追踪的并行版本,大大节省了搭建该算法原型的时间。
本次大会设置了互动性极强的技术实战环节—用太极实现N-body仿真,并讲解了Taichi编程语言的基本语法。从为电脑装载太极程序开始,太极图形编译器架构师张爱玲手把手带观众编写自己的第一个太极程序—弹簧-质点仿真游戏。
几十位观众抱着电脑当场开码,全神贯注宛如考试现场。太极图形的软件工程师们遍布各个角落给大家答疑,当场有十多名同学成功完成实战,最快的一位同学仅用时40分钟。
太极图形开发者大会上,太极图形联合创始人兼CTO匡冶正式发布了在线实时创作分享平台 Taichi Zoo(beta)。
许多同学在电脑前自行体验了一番,在Taichi Zoo中只需简短地编写代码、调整参数,点击编译,就可以立马看到自己调试的动态效果,还可以将自己的作品一键分享给同伴。
“尝鲜地址”:zoo.taichi.graphics
本次大会现场有6位太极图形的软件工程师进行了技术进展分享,展现了太极在易用性的提升:包括动态field的添加删除、紧密排布的内存优化、集成测试上的完善等等。
1、GGUI: Taichi基于GPU的高性能GUI解决方案 from 卢敦凡
本演讲介绍了GGUI:太极基于GPU的高性能GUI解决方案。GGUI可以直接获取位于GPU上的太极物理仿真数据进行交互,并直接在GPU上进行渲染,这使得GGUI可以高效地渲染。
2、Packed Mode: 有效降低 Non-power-of-two Fields 的内存占用 from 徐毅
本演讲主要介绍了Taichi新特性Packed Mode的设计。在Packed Mode下,Taichi不会自动将Field每一维的大小对齐到二的次幂,因此能有效降低本身大小不是二的次幂的Field的内存占用。本次演讲详细分析了二的次幂在Taichi Field实现过程中的使用(包括内存排布、坐标映射、Struct For到Range For的转化等),并讲解了如何不利用二的次幂进行等价的实现。
3、Dynamic Indexing: 运行时自由访问向量与矩阵元素 from 方燠
张量计算被广泛运用在物理仿真,真实感渲染和模型处理等多个领域。Taichi编程语言针对张量必须使用常数下标的这一限定,在优化性能的同时,也给代码实现增加了额外的限定,生成过量指令减缓编译。演讲从地址访存的角度出发,探讨了针对不同的变量类型,如何全面地支持动态下标,使太极语言更加完善。
4、 Taichi的CI/CD系统 from 张家声
Taichi作为一个社区的开源项目,是如何搭建起自己的CI/CD系统的?本次演讲主要分享了Taichi在搭建CI/CD的过程中遇到的问题以及解决方案。
5、与社区共建Taichi的Vulkan GPU后端 from 余畅
本演讲主要分享了太极社区的开发者们如何协作完成Taichi Vulkan GPU后端的建设,在这个过程中遇到了一系列工程问题及解决方案,同时介绍了Taichi对于Unified Device API的未来规划。
6、Dynamic SNodes:在运行时灵活添加、删除Taichi Fields from 刘剑成
本篇演讲主要内容为介绍Taichi的新特性——动态申请和回收field。演讲基于简单的案例,简要分析了如何在Taichi中声明和使用数据结构SNodeTree,和Taichi是如何在即时编译以及运行时将声明的SNodeTree利用起来达到访存的目的的。在此之上,讲解了如何使用开发的FieldsBuilder类进行动态申请与回收field,并剖析了它在Taichi中的实现细节,分析了这种实现的优势,和已知的局限性,展望了未来可供进一步开发的方向。
活动当天,太极开源社区共建计划、2022校招及太极图形课第一季也重磅官宣。太极人从办公室走到了用户中间,聆听所有的问题和建议,Taichi 也从高性能的编程语言走向了越来越广阔的世界。
太极图形 B站观看大会回放(持续更新中):https://space.bilibili.com/1779922645
雷锋网雷锋网(公众号:雷锋网)雷锋网
雷锋网版权文章,未经授权禁止转载。详情见。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/161615.html