|
在Taichi语言的官方示例ti example中积累了大量代码精炼,趣味性十足的demo,但是由于没有配套解说,且Taichi语言本身也逐步加入了很多新功能新用法,使得很多想要学习借鉴的同学望而却步。此次文章计划准备挑选其中最具代表性的一些demo出来进行解说,并采用由简到难,逐步点亮Taichi技能树的教程形式展开,希望可以为社区中对example的实现原理感兴趣的同学提供参考。
& X$ u' k, I3 g6 S* Z' f7 W) ? 动图封面 4 y, m' [! z- E
ti-example算例展示
5 p+ k( S5 f: }0 l; a 本次文章计划将基于Taichi 1.6.0的版本,还没有安装Taichi的同学可以通过如下命令安装Taichi: % X( A* N1 N$ u% {& M
pip install-U taichi ' B: ^. E- K' E6 k! x; s$ S
关于不同平台的安装问题,请先参考官方文档。
# k, W) O: z( c' P: \ 本系列文章此次将采用基于代码解说的方式,另一个目标是给大家提供一个和官方文档“自底向上”的风格截然不同的实战练级路径,不再拘泥于系统性地说明Taichi语言本身的语法,而是帮助读者理解代码中的实现原理以便后续根据自己的兴趣方向展开更多的实验开发。关于本次文章计划的选题,如果有特别希望解说的example可以在评论区留言,我们会根据社区需求安排在完成第一季的文章后进行不断补充。废话不多说,让我们进入本次的主题:第一个example fractal.py吧! 9 p/ _0 K, Q5 r' Y# D# I0 Z$ S, W$ `
初次运行Taichi与Taichi的初始化 $ v1 Q; Y7 A( |+ \' I; m5 r
Taichi是一门嵌入在Python中的高性能计算语言。说到“语言”,很多同学可能会先打个激灵:难道我为了加速计算又双叒要学一门新的语言了?别急,我们强调Taichi的语言属性更多的是因为其独立编译的属性,从用户的角度看,实际上Taichi的用法非常接近于大家熟悉的Numpy,PyTorch等Python库,使用时只需简单的import后调用相应接口即可。
; D) n) i+ L+ O3 t 安装Taichi以后我们可以在命令行中用如下命令来试玩Taichi的官方示例:
# q2 ?# P/ {% J4 x$ W ti example
/ s6 s: Z y0 ` 在随后的交互页面输入example编号即可运行。另外,如果需要将相应的example代码抓取到当前目录,可以利用-s选项,比如用如下命令就可以抓取到本次文章所用的示例代码了: ( a- O4 N4 n6 e8 i. [# _
ti example-s fractal 3 [$ q; h* [8 ?0 t. T* y% w
在所有Taichi程序包括fractal.py代码中,我们需要先引入Taichi并将其初始化:
! `/ Y0 m2 x6 p3 P2 h) W: S import taichi as ti 4 ^: ^' |0 E. F! N- B2 y
ti.init(arch=ti.gpu) * p0 f; l! l5 D; C/ [. N
其中,ti.init()中的arch参数告诉Taichi编译器应该将代码编译到何种后端。目前Taichi可用的后端已经非常丰富,其中ti.cpu代表在CPU上运行,ti.gpu代表在GPU上运行,其中GPU包括多种后端包括ti.cuda,ti.metal等。
' i5 |8 K2 F1 m$ c& ? c! i Taichi多后端编译示意图
2 Y2 L+ e4 R; _' K 在了解了基本的安装与运行后,就让我们来看看用taichi计算Julia-set分形的思路吧。taichi https://taichi-lang.cn/
0 f# s# A4 ?! ?) T' N |