|
“太极”跟“冰雪奇缘”这两个看似毫不相干的词汇是如何同框的?让我们跟随胡渊鸣博士的讲述来了解Taichi从诞生到走向大众面前再到“成人礼”再到茁壮成长的故事。希望Taichi的开源创业之路给大家的生产实践带来共鸣与帮助。 . j7 n0 `# m) _* U: \1 p
本文整理自太极图形联合创始人、首席执行官胡渊鸣在DIVE全球基础软件创新大会2022(创业与投资专场)的演讲分享,主题为“Taichi的开源与创业故事”。
C( t1 d0 f3 e 分享主要分三个部分展开:第一部分Taichi及其演化历史,第二部分Taichi开源社区的机遇与挑战,第三开源社区与公司如何相辅相成。
9 B+ s6 R2 _* W+ D+ B# G& h# O/ o 以下是分享实录: . t: c: {% X3 s+ P, o- ~" t
Hello,大家好,欢迎来到Dive全球基础软件创新大会,我是胡渊鸣,太极图形的联合创始人兼CEO。今天很荣幸能够借这个机会给大家讲一讲Taichi的开源与创业历程。
+ d, M8 M/ v# }5 v5 v 今天在接下来的大概40分钟的时间之内,我会简单的聊一聊Taichi及其演化的历史,我也会讲一讲Taichi开源社区遇到的机遇和挑战,最后我会希望谈一谈开源社区与公司如何能够做到相辅相成。 ! K5 D0 d/ |; e
Taichi及其演化历史
0 o* y9 Q( H( _8 W. H6 Q' u/ F 先来看看Taichi和它的演变历史。什么是Taichi?Taichi是一个开源的高性能并行编程语言,它有三个特性:优雅开发,高效运行和随处部署。一会我会仔细谈一谈这三个很重要的特性。 . I" h: f3 X- t8 B+ x! q* k$ B% [
太极编程语言除了上层编程语言之外,它有一个中间表示也是非常重要的,我们希望它的中间表示能够成为一个硬件中立的并行计算中间表示,它是一个拿来即用可部署的并行计算软件基础设施,这是我们更长远的一个规划。
- }( e: F/ q4 D! x1 j( K6 c 太极编程语言它的应用场景有哪些?在物理仿真、数值计算、机器学习、机器人、视觉特效、通用计算各种各样的地方,只要你要用上GPU,只要你的计算任务需要进行并行编程,你都可以使用Taichi来进行开发,目前全球已经有近百所的高校和企业的用户,自发的把Taichi用在各种各样的使用场景里面,包括科研、包括教学、包括生产。 ( S- L9 K3 ^5 L; N
在GitHub上面Taichi有将近两百位开发者。它一开始的时候只是我自己一个人的兴趣项目,但是随着时间的发展,现在已经有接近两百位开发者,一起来给Taichi贡献代码,我们也获得了一万八千多个Stars(截至演讲时),在一些统计数据上面,我们也看到Taichi有将近百万次下载,它是目前来看GitHub上面,全球范围之内,图形计算基础设施里面比较活跃的一个基础设施之一了。
" ~! @1 \4 L. n2 m& o) ? 接下来我来讲讲Taichi的三个核心的属性分别是易于开发,高效运行和随处部署。 ! J+ j: X+ s6 `- o. p- v1 ]8 m
先说一说易于开发这一块,这一块最经典的例子就是之前我写过一篇文章叫做99行代码的《冰雪奇缘》,你只用很少的代码就可以实现一些很Fancy的物理效果,这些物理效果,你可以在各种地方用到它,你可以在动画电影里面用到,你可以在一些工业仿真的场景里面也可以用到,你只要写右边这么短的代码就可以实现这种相对来说还算复杂的多材料物理仿真,特别的有意思,这是为什么大家愿意用Taichi来进行教学,因为它的代码相对来说比较短,写起来开发效率也非常高,并且写完了还可以在GPU上面运行,这是Taichi一个很重要的属性,你只要用很少的努力,就可以去创造出来比较高性能运行的程序。
1 D3 M' ~8 d: x4 n+ s8 l 易于部署可能是Taichi另外一个很重要的属性了,Taichi它作为一个编译器,它吐出的这些二进制,或者一些Shader文件,可以让你把Taichi部署在各种各样的地方,包括移动端、在云上面,甚至在浏览器里面都可以运行太极,这就使得Taichi代码只要编写一次就可以在各种地方用上,这是特别好的一个事情。 $ v2 a# r% C% h3 _! b e% e
上图左边是我们和快手合作的,运行在iPhone上面的一个流体仿真,中间是一个Android上面的Demo,右边是把Taichi运行在浏览器上面得到的一个效果,特别有意思,你基本上可以在任何地方,只要你能想到的设备,只要它有个显示器,大部分地方都是可以运行Taichi的,智能手表不算,智能手表上面还不能运行。
2 c& H- d. h7 _4 `" N' |. [ Taichi的第三个属性就在于它的高性能,这边我们可以用一块GPU去模拟大量的粒子一起掉落,这一个粒子里面有2.35亿个粒子,在有Taichi这样的基础设施之前,你是很难在一块GPU上面进行这样的运算的,有了Taichi以后,基于我们的这些数据结构,基于我们的这种量化的压缩的技术,你是可以在一块GPU上面进行,把它的运算性能发挥到极致,进行特别大规模的独立仿真,这是Taichi的高性能的一个特性。 + E; o$ w1 B; U$ |! U+ ?7 b0 f( F
当然这整个模拟器你用Taichi去写,代码行数也不是特别多,大概就小几百行代码,你如果没有Taichi这样的基础设施,它开发的成本就相对来说会高很多了。 5 b4 N- [: m/ I) N% z
如果你想要了解更多的关于Taichi的语法,你可以去看一看SIGGRAPH上面,我们有一个Taichi的课程,这个视频在YouTube和Bilibili都可以找到,这个是SIGGRAPH上的一个教程,这是有一段时间之前了,但是准备的相对来说还是比较充裕的。 ! ~6 L5 m! h. Z& M; y3 ?: n
Taichi本身是一个编译器,今天时间有限,而且我也看到这是一个基础软件的会议,所以大家对于Taichi的内部构造或许会有一些兴趣。这是Taichi的Kernel的一生,它在从最早的时候是在一个Python的代码,慢慢逐渐的Lower,一步步把它编译到最后可执行的各种各样的后端,包括各种各样的CPU后端,和各种各样的GPU后端,甚至我们现在可以把它编译到WebAssembly,甚至WebGPU,可以让它在浏览器上面运行,如果你想了解更多的关于编译器内部的这些信息,可以来我的网站上面看这个Life of a Taichi kernel这样的一个PDF里面有很多很详细的介绍。
& m- ^" s" J+ t* H 我们最近也对Taichi进行了一些性能评测,那么在我们相对来说还算丰富的测试用例上面,我们在一些case上面基本上可以发现Taichi和CUDA进行比较的时候,它的代码量相对来说会短很多,性能通常是能够比肩CUDA的,在一些case上面甚至能达到更高的性能。Taichi的性能和生产力和一些竞品比起来都是有一些优势的,这是为什么大家愿意用Taichi去进行一些高性能计算程序的开发。
( e1 D) C2 S0 B% S" s: ?* t+ k1 H 接下来我会花几分钟时间,简单的讲一讲Taichi整个项目发展的历史。Taichi大概是2015年的时候开始研发,到2016年的时候,我们就把它开源在了GitHub上面,当时就起了一个名字叫做taichi。之所以起这个名字是希望这个项目能够被更多的国际上的友人能够熟悉,然后希望中文名大家听起来耳熟能详,并且英文也被国际上广泛接受。当时就起了太极这个名字,太极它的英文就是Taichi,也是一个在世界范围内被广泛接受的概念。我们也挺希望,作为中国的一个基础设施,能够有一些世界范围内的影响力,现在Taichi社区还是相当的国际化的。taichi https://taichi-lang.cn/ & W8 l; w( l3 p
|