初探Taichi图形编程语言
时间:2022-10-16 22:41:41 阅读:95
一.连结!Python与Taichi
“Python,你被强化了”——Taichi
正如这门名为Taichi的语言的目标——专攻图形学,找个胶水角色比较强的平台扎根在所不辞。而Python作为胶水大火,因此Taichi着陆了。
Python与Taichi紧密相连,甚至Taichi可以算是Python的一个扩展。弥补了Python在并行计算方面的不足(Python相比于C++/C可是众所皆知的慢)。
在Taichi之前,我们可以先用Python组织项目一下结构,再用CUDA翻译一下完成项目。Python的开发效率相当高,以至于翻译为CUDA的过程相比起来就像是——数你祖父毛衣背心上的网眼一样令人抓狂。
然而,哪里有需求哪里就有解决方案。
Taichi想方设法代替掉了写CUDA这个枯燥无味令人发指的过程,使Python的图形计算在效率上产生了巨大的改观。
二.Taichi的基础设定
Taichi是一门强类型的语言,强类型一般意味着更高的速度,同理,弱类型意味着代码运行时需要花费更多的时间用来检查类型
Taichi是一门专注于生产力,意味着语法更符合直觉,代码自解释能力更强,反面例子请见Brainfuck
Taichi是注重可移植性的语言,这意味着可以在不同的机器上运行,(almost)无需在乎操作系统、GPU CPU型号的区别
Taichi是一门即时编译(just-in-time compile)的语言,采用懒惰的政策(lazy policy)来编译,这一点相当符合Python的胃口
Taichi适用于Python版本3.7、3.8,不吃3.9这一套
三.Taichi的特性(features)
一般而言,feature是体现语言的设计哲学的
先来看一段代码(下面)
我们可以注意到Taichi需要作为包的形式引入Python
然后就像开技能前的吟唱一样打出一串——ti.init(arch=ti.gup),注意,这里的gup完全可以换成cpu作为初始化的参数
注意到ti.kernel以及func就像贞节牌坊一样立在在函数的面前
其中贞节牌坊的实现依靠的是Python的装饰器(decorator)
这些函数都是包含有关计算的代码的打工人,为了更好的控制这些打工人,Taichi把他们分化为两个阶级
1.func打工人小弟,
2.kernel打工人の包工头
taichi不同的阶级意味着不同的待遇,func必然只能被其他func小弟或者kernel包工头调用,为了更快的运行速度,func都被强制内联(inline),inline这个东西在C++算法竞赛的时候经常用到 taichi https://taichi-lang.cn/
“Python,你被强化了”——Taichi
正如这门名为Taichi的语言的目标——专攻图形学,找个胶水角色比较强的平台扎根在所不辞。而Python作为胶水大火,因此Taichi着陆了。
Python与Taichi紧密相连,甚至Taichi可以算是Python的一个扩展。弥补了Python在并行计算方面的不足(Python相比于C++/C可是众所皆知的慢)。
在Taichi之前,我们可以先用Python组织项目一下结构,再用CUDA翻译一下完成项目。Python的开发效率相当高,以至于翻译为CUDA的过程相比起来就像是——数你祖父毛衣背心上的网眼一样令人抓狂。
然而,哪里有需求哪里就有解决方案。
Taichi想方设法代替掉了写CUDA这个枯燥无味令人发指的过程,使Python的图形计算在效率上产生了巨大的改观。
二.Taichi的基础设定
Taichi是一门强类型的语言,强类型一般意味着更高的速度,同理,弱类型意味着代码运行时需要花费更多的时间用来检查类型
Taichi是一门专注于生产力,意味着语法更符合直觉,代码自解释能力更强,反面例子请见Brainfuck
Taichi是注重可移植性的语言,这意味着可以在不同的机器上运行,(almost)无需在乎操作系统、GPU CPU型号的区别
Taichi是一门即时编译(just-in-time compile)的语言,采用懒惰的政策(lazy policy)来编译,这一点相当符合Python的胃口
Taichi适用于Python版本3.7、3.8,不吃3.9这一套
三.Taichi的特性(features)
一般而言,feature是体现语言的设计哲学的
先来看一段代码(下面)
我们可以注意到Taichi需要作为包的形式引入Python
然后就像开技能前的吟唱一样打出一串——ti.init(arch=ti.gup),注意,这里的gup完全可以换成cpu作为初始化的参数
注意到ti.kernel以及func就像贞节牌坊一样立在在函数的面前
其中贞节牌坊的实现依靠的是Python的装饰器(decorator)
这些函数都是包含有关计算的代码的打工人,为了更好的控制这些打工人,Taichi把他们分化为两个阶级
1.func打工人小弟,
2.kernel打工人の包工头
taichi不同的阶级意味着不同的待遇,func必然只能被其他func小弟或者kernel包工头调用,为了更快的运行速度,func都被强制内联(inline),inline这个东西在C++算法竞赛的时候经常用到 taichi https://taichi-lang.cn/
郑重声明:文章内容来自互联网,纯属作者个人观点,仅供参考,并不代表本站立场 ,版权归原作者所有!
相关推荐