(一)Taichi项目结构及源码编译
今天我没来探索一下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
到此就源码编译安装完成了。
(一)Taichi项目结构及源码编译相关推荐
- 【Flink源码篇】Flink 1.15.0源码编译
目录 1. 下载源码并解压 2. Flink项目配置 3. 源码编译 4. 编译问题记录 5. IDEA调试Flink程序 1. 下载源码并解压 从github下载Flink的源码:https://g ...
- 项目编译失败_Swift源码编译让底层更清晰
WWDC2020 大会将通过 Apple Developer App 和 Apple Developer网站免费向所有开发者开放! 从去年火遍全网的 SwiftUI 以及 Combine 到今年全新的 ...
- centos 访问网页重启php_php项目上线基于docker运行php+源码编译实现Nginx+阿里云RDS连接实现...
项目背景: 公司项目上线要求运维把上线工作做好,并实现稳定性运行,活不多说,干! 环境要求: CentOS Linux release 7.2.1511 (Core) docker 版本:19.03. ...
- 源码编译SSH项目问题记录
源码编译spring2.5.6+Hibernate3.2.5ga+ structs2.1.8在 Apache Tomcat/5.5.25的部署, JDK1.5环境下编译,IDE工具MyEclipse8 ...
- java调用clang编译的so_写Java这么久,JDK源码编译过没?编译JDK源码踩坑纪实
好奇害死羊 很多小伙伴们做Java开发,天天写Java代码,肯定离不开Java基础环境:JDK,毕竟我们写好的Java代码也是跑在JVM虚拟机上. 一般来说,我们学Java之前,第一步就是安装JDK环 ...
- 如何在ARM开发板上从源码编译安装OpenCV和OpenCV contrib
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文主要介绍如何在ARM开发板上从源码编译安装OpenCV和OpenCV contrib. OpenC ...
- activiti源码编译
分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519) activiti源码编译,近期有人问activiti 源码编译的一 ...
- 听说你还没学Spring就被源码编译劝退了?30+张图带你玩转Spring编译
之所以写这么一篇文章是因为群里的小伙伴在编译源码时碰到了问题,再加上笔者自身正准备做一个源码的注释版本,恰好也需要重新编译一份代码,至于为什么要将源码编译到本地就不用多说了吧? 比如,你可以任意的 ...
- Jetson Agx Xavier USB驱动裁剪+can时钟修改+内核源码编译流程(jetpack4.6.1)
自己做了一块Xavier载板,硬件裁剪了一些功能,导致官方镜像usb无法使用,我使用的是jetpack4.6.1(R32.7.1),所以进行驱动修改,重新编译内核. 一.虚拟机环境 在Windows下 ...
最新文章
- 漫画设计模式:什么是 “装饰器模式” ?
- python手机版下载372-Mac下python环境的安装
- linux snap安装redis-desktop-manager
- 【笔记】跨域重定向中使用Ajax(XHR请求)导致跨域失败
- cas java web,CAS干单点登陆(SSO)——集成Java Web 项目
- 前端学习(1390):多人管理项目10服务器认证
- 5shift shell
- Java集合转化为数组
- django-模板渲染上下文context-0223
- java 通过类名创建类,通过类名动态生成对象
- android语音控制歌曲播放,Amazon Music应用程序已支持Alexa语音控制歌曲播放
- C++:建立一个被称为sroot()的函数,返回其参数的二次方根。重载sroot()3次,让它返回整数、长整数与双精度的二次方根
- k8s节点NotReady问题定位
- DepthPano-TOG2020 学习整理(一)——有关全景图的三维场景重建
- 无人机——开源飞控简介
- 写出python字符串三种常用的函数或方法_Python字符串的使用和相关函数方法
- 基于OpenGL的冰川与火鸟(光照计算模型、视景体、粒子系统)
- Go使用redigo实现简单分布式锁
- 关于百度和Google的中文搜索
- CO2激光切割机雕刻机打标机写字机喷涂机巡边机控制软件