今天我没来探索一下taichi 程序的整体生命周期,首先我们先看一下taichi的项目结构
文件层级很多,就没有树来进行展示了,直接看下面的截图
taichi 是一个eDSL语言,嵌入到python语言当中,利用了Python解释器作为了部分运行时,同时通过pybind链接到了底层taichi c++库, taichi语言的后端是利用c++实现高性能计算的。
如上图所示,项目本身是一个CMake项目,在根目录中项目整体CMakeList.txt, README文档和版本文档等其他配置文件,setup.py用于安装taichi的python包。taichi项目根目录有13个文件夹,其中核心程序文件在taichi文件夹和python文件夹中,taichi文件夹内为taichi的c++源码,Python中是上层的python库。taichi文件内又分为了用于即时编译jit文件夹, 用于代码生成的codegen文件夹,用于pybind绑定的python文件夹等。根目录的python文件夹中taichi是Python项目的最基础包,所有库都从这个包中导入,大部分的语言项目的功能都在taichi.lang包中。
现在我们来编译taichi程序,需要注意的是taichi项目中的第三包并没有加入到项目中,大家在克隆时需要试下下面的指令
git clone --recursive https://github.com/taichi-dev/taichi.git
不过Eigen库所引用的仓库已经无法访问了,实测大家可以使用这个仓库的eigen代码(https://github.com/PX4/eigen)。taichi需要用到pybind和llvm等第三方包,大家需要自行安装这些,pybind全部为头文件实现,安装十分方便,从git仓库中下载完成后直接cmake安装即可。llvm的话太极官方为大家提供了他们自定义版LLVM的预编译文件,大家可以在这里下载对应版本https://github.com/taichi-dev/taichi_assets/releases。
这些前置工作完成后直接,cmake + make build即可,将生成的pyd文件放到对应的python文件夹中,执行
python setup.py
到此就源码编译安装完成了。