Taichi 开源与创业故事
时间:2022-11-20 22:45:21 阅读:83
我们最近也对Taichi进行了一些性能评测,那么在我们相对来说还算丰富的测试用例上面,我们在一些case上面基本上可以发现Taichi和CUDA进行比较的时候,它的代码量相对来说会短很多,性能通常是能够比肩CUDA的,在一些case上面甚至能达到更高的性能。Taichi的性能和生产力和一些竞品比起来都是有一些优势的,这是为什么大家愿意用Taichi去进行一些高性能计算程序的开发。
接下来我会花几分钟时间,简单的讲一讲Taichi整个项目发展的历史。Taichi大概是2015年的时候开始研发,到2016年的时候,我们就把它开源在了GitHub上面,当时就起了一个名字叫做Taichi。之所以起这个名字是希望这个项目能够被更多的国际上的友人能够熟悉,然后希望中文名大家听起来耳熟能详,并且英文也被国际上广泛接受。当时就起了太极这个名字,太极它的英文就是Taichi,也是一个在世界范围内被广泛接受的概念。我们也挺希望,作为中国的一个基础设施,能够有一些世界范围内的影响力,现在Taichi社区还是相当的国际化的。
当时为什么要做Taichi这个项目?是因为我对计算机图形学非常感兴趣,我当时在清华还是个本科生,就想能不能去写一个计算机图形学的库,来解决一些计算机图形学当中常见的问题。有一些问题大家今天看起来会觉得难以想象得缺乏解决方案。如果你学过计算机图形学,你会发现大家都要写一个作业叫做光线追踪,就是你去写一个Ray Tracer,去进行一个渲染。很多同学渲染器写好了后会遇到一个很大的问题,即不知道怎么把渲染结果显示在屏幕上。老师就会说,要不装个OpenCV这个库。OpenCV可以相对容易地显示一张图片,我当时就觉得这个非常诧异,因为OpenCV是一个Computer Vision的库,我们要做的事也只是显示一张图片,为什么要装这么重的一个库?当时为了解决这个问题,于是造了Taichi这个东西。
Taichi开始的定位是一个可重用的图形学基础设施,我当时自己用Taichi,一个人写代码写的很嗨,用它去实现了各种各样的物理仿真,还有一些离线渲染的算法,做得非常开心。
经过几年的深度开发,我们也发表了好几篇SIGGRAPH之类的顶级学术会议的论文,其中包括这样的一些软体,还有刚体的物理仿真,特别有意思,这些基础设施就是以Taichi为基础设施去开发的。
但是后来,我就发现一个事情。因为计算机图形学有独特的几个特点,第一计算量很大,第二背后的硬件比较复杂,有时候要用CPU,有时候更多是要用GPU去进行计算。相对来说,写一个库对于解决很多图形学的问题是比较难的。所以,当时我作为一个比较渴求知识的年轻人,就想能不能去学一学编译原理,把Taichi从一个库转成一个编程语言。这基本上就是我的博士论文了,我到了MIT读博士以后就一直在做这个事情。
把Taichi从一个库变成一个编程语言以后,我们就可以把Taichi嵌入到Python之中。目前最主要的前端还是用Python,这个编译器大家都知道它分为前端,中间表示和后端,前端现在还是主要还是用Python,当然也有其他的前端,我们也在规划一些新的前端。它的中间表示是一个可移植的、并行计算的表示方法,后端有好多像CPU、GPU这种。当时可以用Python来写前端是一个很好的事情,因为这样让所有的Python程序员都可以比较低成本的能够用上Taichi。
把taichi从一个库变成编译器,到底能额外做些什么?各种各样的物理仿真、高分辨率、高精度、甚至是可微的物理仿真。什么是可微的物理仿真?就是你希望求出这个物理仿真的结果。有一些初始条件和外部输入的导出,求出这个极限结果后,就可以比较好进行一些优化,像神经网络的控制、结构的优化都可以用太极去做。一个库很难高性能地做这个事情。taichi https://taichi-lang.cn/
接下来我会花几分钟时间,简单的讲一讲Taichi整个项目发展的历史。Taichi大概是2015年的时候开始研发,到2016年的时候,我们就把它开源在了GitHub上面,当时就起了一个名字叫做Taichi。之所以起这个名字是希望这个项目能够被更多的国际上的友人能够熟悉,然后希望中文名大家听起来耳熟能详,并且英文也被国际上广泛接受。当时就起了太极这个名字,太极它的英文就是Taichi,也是一个在世界范围内被广泛接受的概念。我们也挺希望,作为中国的一个基础设施,能够有一些世界范围内的影响力,现在Taichi社区还是相当的国际化的。
当时为什么要做Taichi这个项目?是因为我对计算机图形学非常感兴趣,我当时在清华还是个本科生,就想能不能去写一个计算机图形学的库,来解决一些计算机图形学当中常见的问题。有一些问题大家今天看起来会觉得难以想象得缺乏解决方案。如果你学过计算机图形学,你会发现大家都要写一个作业叫做光线追踪,就是你去写一个Ray Tracer,去进行一个渲染。很多同学渲染器写好了后会遇到一个很大的问题,即不知道怎么把渲染结果显示在屏幕上。老师就会说,要不装个OpenCV这个库。OpenCV可以相对容易地显示一张图片,我当时就觉得这个非常诧异,因为OpenCV是一个Computer Vision的库,我们要做的事也只是显示一张图片,为什么要装这么重的一个库?当时为了解决这个问题,于是造了Taichi这个东西。
Taichi开始的定位是一个可重用的图形学基础设施,我当时自己用Taichi,一个人写代码写的很嗨,用它去实现了各种各样的物理仿真,还有一些离线渲染的算法,做得非常开心。
经过几年的深度开发,我们也发表了好几篇SIGGRAPH之类的顶级学术会议的论文,其中包括这样的一些软体,还有刚体的物理仿真,特别有意思,这些基础设施就是以Taichi为基础设施去开发的。
但是后来,我就发现一个事情。因为计算机图形学有独特的几个特点,第一计算量很大,第二背后的硬件比较复杂,有时候要用CPU,有时候更多是要用GPU去进行计算。相对来说,写一个库对于解决很多图形学的问题是比较难的。所以,当时我作为一个比较渴求知识的年轻人,就想能不能去学一学编译原理,把Taichi从一个库转成一个编程语言。这基本上就是我的博士论文了,我到了MIT读博士以后就一直在做这个事情。
把Taichi从一个库变成一个编程语言以后,我们就可以把Taichi嵌入到Python之中。目前最主要的前端还是用Python,这个编译器大家都知道它分为前端,中间表示和后端,前端现在还是主要还是用Python,当然也有其他的前端,我们也在规划一些新的前端。它的中间表示是一个可移植的、并行计算的表示方法,后端有好多像CPU、GPU这种。当时可以用Python来写前端是一个很好的事情,因为这样让所有的Python程序员都可以比较低成本的能够用上Taichi。
把taichi从一个库变成编译器,到底能额外做些什么?各种各样的物理仿真、高分辨率、高精度、甚至是可微的物理仿真。什么是可微的物理仿真?就是你希望求出这个物理仿真的结果。有一些初始条件和外部输入的导出,求出这个极限结果后,就可以比较好进行一些优化,像神经网络的控制、结构的优化都可以用太极去做。一个库很难高性能地做这个事情。taichi https://taichi-lang.cn/
郑重声明:文章内容来自互联网,纯属作者个人观点,仅供参考,并不代表本站立场 ,版权归原作者所有!
上一篇:罚金会要妻子承担吗
相关推荐