Taichi 是一门开源的、嵌入在 Python 中的并行编程语言

语法简单,上手容易,运行高效

大大简化高性能图形学、数值计算、人工智能应用开发T

官网地址:Taichi编程语言-开源并行计算框架

官方文档:Taichi Docs

学习课程:太极图形课-第一季 https://github.com/taichiCourse01

直播时间 回放视频 (B 站) 课件 代码 直播答疑时间 作业分享
第00讲:09/14 导览:什么是图形学?什么是太极? 课件 09/16
第01讲:09/22 Hello World:编写你的第一个太极程序 课件 代码 09/23 答疑PPT
第02讲:09/28 复用你的太极代码:元编程和面向对象编程 课件 代码 09/30
第03讲:10/12 大规模计算的关键:高级数据结构 课件 代码 10/14
第04讲:10/19 调试和优化你的太极程序 课件 代码 10/21 BESO拓扑优化 : PPT
第05讲:10/26 程序动画:生成你的第一个二维动画 课件 代码 10/28 蚂蚁吃太极: PPT
第06讲:11/02 渲染01:光线追踪概念和基础 课件 代码 11/04 墨戏 : PPT
第07讲:11/09 渲染02:光线追踪实战 课件 代码 11/11 太阳系仿真 : PPT
第08讲:11/16 弹性物体仿真01:时间和空间离散化 课件 代码 11/18 Marching Squares: PPT
第09讲:11/23 弹性物体仿真02:隐式积分和数值解法 课件 代码 11/25 双摆: PPT
第10讲:11/30 流体仿真01:拉格朗日视角 课件 代码 12/02 Ray tracing: PPT
第11讲:12/07 流体仿真02:欧拉视角 课件 代码 12/09 WCSPH: PPT
第12讲:12/14 神秘嘉宾客串:从太极的使用者变成太极的贡献者 课件
第13讲:12/21 太极图形课线上见面会

为什么要用Taichi

不妨想象你正在编写基于粒子的流体算法。 要开始并不难,你不费工夫就在网上找到可供参考的 C++/CUDA 作品(或者意外发现这就出自实验室伙伴之手)。 cmake .. && make,你打下一行指令。 糟糕!Cmake 抛出错误提醒,某个第三方库不能兼容。 安装、重新编译...... 这次没问题了。 然后你运行程序,却又出现了段错误(当然,还没有堆栈跟踪信息)。 你愁眉苦脸地紧盯着代码,把必要的资产文件放到正确的位置,修复了几个野指针,然后重新运行。 这次终于跑通了...... 但别急着高兴,你还要接入改良后的算法。 又是一场与 GPU 或 CPU 代码的苦战。 很多时候,你只是迷失在编程语言的细节问题中。

如果这一切听起来都过于熟悉,那么恭喜你!你可能能在这里找到解决方法!

Taichi 起步于 MIT 的计算机科学与人工智能实验室(CSAIL),设计初衷是便利计算机图形学研究人员的日常工作,帮助他们快速实现适用于 GPU 的视觉计算和物理模拟算法。 Taichi 选择了一条创新的路径:嵌入于 Python,使用即时编译(JIT)架构(如 LLVM、SPIR-V),将 Python 源代码转化为 GPU 或 CPU 的原生指令,在开发时和运行时均提供优越性能。

当然,以 Python 为前端的领域特定语言(DSL)不是什么新奇的创造。 过去几年里,Halide、PyTorch、TVM 等框架发展成熟,实际已塑造了图像处理、深度学习等领域的标准。 Taichi 与这些框架的最大区别在于其指令式编程范式。 作为一种领域特定语言,Taichi 并不专长于特定的某种计算模式。 这意味着更大的灵活度。 也许有人会假定灵活性需要牺牲优化程度,但对 Taichi 而言并非如此,主要有以下几个原因:

  • Taichi 的工作负荷呈现出不可利用的特点(如不支持逐元素运算),也就是说算法强度是固定不变的。 只要切换到 GPU 后端,用户就可以收获明显的性能提升。
  • 传统深度学习框架使用的运算符都是简单的数学表达式,需要在计算图层面融合运算符,以实现更高的算法强度。但 Taichi 的指令式编程让用户能在一个 kernel 中轻松完成大量计算。 我们将这样的 kernel 命名为 mega-kernel
  • Taichi 使用各种编译器技术大幅优化源代码,包括公共子表达式消除、死码删除、控制流图分析。 这些优化手段适用于各个后端,因为 Taichi 有自己的中间表示(IR)层。
  • 即时编译提供了更多的优化机会。

尽管如此,Taichi 远不止于一个 Python 的即时转译器。 最初的设计目标之一是将计算与数据结构解耦。 为此,Taichi 提供一套通用的数据容器,叫做 SNode (/ˈsnoʊd/)。 SNode 可以方便地构造或稠密或稀疏的多维 field,并形成清晰的层级。 在 AoS 和 SoA 两种内存布局间切换只需不到 10 行代码。 这启发了很多数值模拟领域的使用案例。 If you are interested to learn them, please check out Fields (advanced), Spatially Sparse Data Structures, or the original Taichi paper.

我们将解耦的概念进一步延伸到数据类型。 由于 GPU 内存容量和带宽已成为当前的主要瓶颈,让每个内存单位存储更多的数据变得至关重要。 2021 年,Taichi 引入了可定制量化类型, 允许定义任意位数的定点数或浮点数(但仍不能超过 64 位)。 从此,在单个 GPU 设备上进行超 4 亿粒子的 MPM 模拟成为可能。 论文《QuanTaichi》对此进行了详细介绍。

Taichi 是直观的语言。 如果你使用 Python,你就能使用 Taichi。 当你用 Taichi 编程,程序自动选择在 GPU 运行(CPU 为替补)。 Taichi 问世后,这样一个并不复杂的理念有幸获得了诸多关注,在众多贡献者的努力下,现在 Taichi 支持更多后端,包括 Vulkan、OpenGL,和 Direct X(仍在进展中)。 没有一个强大且专注的社区,Taichi 无法走到今天。

展望未来,前路不乏机遇,在这里愿与大家分享一些我们的愿景。

用 Python 轻松玩转并行编程 Taichi 加速相关推荐

  1. c++ 一个函数包括多个返回值判断_轻松玩转函数式编程

    最近和一些同学讨论了函数式编程,很多同学总觉得听起来很高大上,但用起来却无从下手.于是我抽时间捋了捋,将平时工作中用到的函数式编程案例和思想整理了出来,相信阅读本文后,大家都能快速上手函数式编程. 函 ...

  2. 手把手教你用Python轻松玩转SQL注入

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 山有木兮木有枝,心悦君兮君不知. ...

  3. 10分钟学会用Python轻松玩转Excel

    前言 当你需要每天对 Excel 做大量重复的操作,如果只靠人工来做既浪费时间,又十分枯燥,好在 Python 为我们提供了许多操作 Excel 的模块,能够让我们从繁琐的工作中腾出双手. 今天就和大 ...

  4. 用python轻松玩转Excel,完成数据分析与统计,学习心得分享

    个人的总结 有明确的目标 将大目标分解成最小颗粒的小目标 针对小目标,一个个去解决 举例 **目标:**有一份市面上主流机型使用某APP的兼容性测试报告,包括了详细的手机信息,其中报告中"日 ...

  5. 还在加班做数据吗?今天1分钟教你学会用Python轻松玩转Excel

    前言 当你需要每天对 Excel 做大量重复的操作,如果只靠人工来做既浪费时间,又十分枯燥,好在 Python 为我们提供了许多操作 Excel 的模块,能够让我们从繁琐的工作中腾出双手. 今天就和大 ...

  6. 一个wordcount程序轻松玩转MapReduce编程模型

    可以毫不夸张的说,几乎开发中绝大部分的MR程序都是基于wordcount编程模型而来,或者说用wordcount变化而来(改变的主要是业务方面的逻辑).所以,熟练掌握wordcount编程模型,是掌握 ...

  7. 40个案例教你用 Python 轻松玩转数据可视化

    大家好,数据可视化是数据科学中关键的一步.在以图形方式表现某些数据时,Python能够提供很大的帮助.不过有些小伙伴也会遇到不少问题,比如选择何种图表,以及如何制作,代码如何编写,这些都是问题! 今天 ...

  8. 用手机也能轻松玩转MATLAB编程

    因为下载渠道是google play商店的缘故,安卓版用户可能获取最新版matlab比较费劲.为了让大家在手机上也能够端畅通无阻地编写执行matlab程序,特此分享官方最新手机版matlab,最新版版 ...

  9. 微课|玩转Python轻松过二级(1.1节):Python命令式编程与函数式编程模式

    适用教材: 董付国.<玩转Python轻松过二级>.清华大学出版社,2018. 第1章  Python概述 1.1  Python是这样一种语言 图书购买链接 京东:https://ite ...

最新文章

  1. Local Response Normalization作用——对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力...
  2. opening tables mysql_MySQL 大量 Opening tables 案例分析-爱可生
  3. 黑马Java架构师实战训练学习手册
  4. Spring Boot 批量上传: The field files exceeds its maximum permitted size of 1048576 bytes.
  5. this.byId(SupplierForm).bindElement in SAP UI5
  6. mmap父子进程间通信
  7. SQL 强制指定索引加快查询速度
  8. ubuntu手动修改anaconda环境变量
  9. Android系统启动-SystemServer下篇
  10. Atitit usrqbg1834 html的逻辑化流程化 规范标准化解决方案
  11. python 回归方程及回归系数的显著性检验_回归方程及回归系数的显著性检验
  12. Java简易聊天室YYchat
  13. 2020年最值得收藏的60个AI开源工具
  14. 在线画图工具 免费
  15. 用74ls00,74ls153,74ls151,74ls138设计三变量表决器
  16. 取模运算和求余运算的区别
  17. C语言打印图形小妙招
  18. 主分区和逻辑分区的区别
  19. SWR 与前端数据依赖请求
  20. Windows 系统安装

热门文章

  1. Java结构化程序设计-实验报告
  2. 计算机毕业设计Java乐居租房网的设计与实现(源码+系统+mysql数据库+lW文档)
  3. STM32F103ZET6最小系统板制作指引
  4. Python实例1:温度转换问题
  5. 安恒堡垒机让您过一个轻松愉快的端午节
  6. 2020 高考延期:全国考生多复习 30 天,北京除外
  7. linux 修改tmpfs大小,修改默认共享内存tmpfs大小
  8. python卷积_直观地展示卷积积分,Python实例演示
  9. 支付宝商家分账--绑定,解绑,查询的简单实例。记录一下!!!
  10. 如何一篇文章说懂阿里云云监控