初探Taichi图形编程语言
时间:2022-11-06 21:30:12 阅读:89
非常给力,毕竟是本土开发者胡渊明同志主导的项目,有适合像我这种英语不好的高中毕业生的简体中文视频介绍
以下是正文
TaichiのTAG镇纸
一.连结!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打工人の包工头
不同的阶级意味着不同的待遇,func必然只能被其他func小弟或者kernel包工头调用,为了更快的运行速度,func都被强制内联(inline),inline这个东西在C++算法竞赛的时候经常用到
不过inline带来的后果是递归被ban了,这是理所应当的,且对于本就追求速度的的程序员来说将递归转化为非递归模式就跟饭前洗手一样自然,更何况需要用到递归的场景十分罕见
kernel不可以直接调用kernel,要小老板给小老板打工成何体统.....taichi https://taichi-lang.cn/
以下是正文
TaichiのTAG镇纸
一.连结!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打工人の包工头
不同的阶级意味着不同的待遇,func必然只能被其他func小弟或者kernel包工头调用,为了更快的运行速度,func都被强制内联(inline),inline这个东西在C++算法竞赛的时候经常用到
不过inline带来的后果是递归被ban了,这是理所应当的,且对于本就追求速度的的程序员来说将递归转化为非递归模式就跟饭前洗手一样自然,更何况需要用到递归的场景十分罕见
kernel不可以直接调用kernel,要小老板给小老板打工成何体统.....taichi https://taichi-lang.cn/
郑重声明:文章内容来自互联网,纯属作者个人观点,仅供参考,并不代表本站立场 ,版权归原作者所有!
相关推荐