ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Taichi Lang:面向高性能数值计算的 Python 嵌入式并行编程语言实战指南

Taichi Lang:面向高性能数值计算的 Python 嵌入式并行编程语言实战指南 Taichi Lang面向高性能数值计算的 Python 嵌入式并行编程语言实战指南【免费下载链接】taichiProductive, portable, and performant GPU programming in Python.项目地址: https://gitcode.com/GitHub_Trending/ta/taichiTaichi Lang 是一个开源、命令式、并行的编程语言专为高性能数值计算设计它嵌入在 Python 中借助 LLVM 等 JIT即时编译框架将计算密集型的 Python 代码编译为原生 GPU 或 CPU 指令。本文以项目 README.md 为主线结合仓库源码系统讲解 Taichi Lang 的定位、核心特性、安装方式、首个程序的完整写法、命令行工具、源码构建方法以及示例生态读完即可上手编写并运行自己的并行计算程序。Taichi Lang 是什么根据 README.md 的定义Taichi Lang 是an open-source, imperative, parallel programming language for high-performance numerical computation即开源采用 Apache License 2.0 分发见 LICENSE命令式imperative以语句序列描述计算过程与 Python 的编程心智模型一致并行ti.kernel中的顶层for循环默认被并行化自动映射到 GPU/CPU 的多核执行嵌入式embedded in Python不是独立的解释器而是作为 Python 包存在直接复用 Python 的语法与生态NumPy、PyTorch 等JIT 编译运行时将 Python 代码即时编译为原生指令而不是解释执行。从仓库结构可以印证这一架构Python 前端位于 python/taichiC 编译器核心位于 taichi包含analysis、transforms、codegen、runtime等子系统两者通过taichi/_lib/core原生扩展桥接见 python/taichi/init.py。Taichi Lang 的应用范围非常广泛涵盖实时物理仿真、数值计算、增强现实AR、人工智能、视觉与机器人、影视与游戏视觉特效、通用计算等领域。仓库 python/taichi/examples 中的示例即是这些应用方向的直接体现。为什么选择 Taichi LangREADME 归纳了四大核心优势每一点都能在仓库源码中找到对应实现1. 围绕 Python 构建语言零门槛Taichi Lang 与 Python 语法几乎一致同时深度融入 Python 生态包括 NumPy 与 PyTorch。这意味着算法表达几乎没有额外的心智负担if/else、while、for、函数调用等写法都与 Python 相同。2. 灵活性SNode 数据结构Taichi Lang 提供一组通用的数据容器统称为SNode读作 /ˈsnoʊd/Sparse Node 的缩写用于组合层次化、多维的 field字段。SNode 可以覆盖数值模拟中的大量使用模式例如空间稀疏计算spatially sparse computing。仓库中的 python/taichi/examples/features/sparse/taichi_sparse.py 是一个典型示例它通过 SNode 层次结构构建了三级稀疏场block1 ti.root.pointer(ti.ij, n // 64) block2 block1.pointer(ti.ij, 4) block3 block2.pointer(ti.ij, 4) block3.dense(ti.ij, 4).place(x)ti.root是 SNode 树的根pointer、dense等节点逐级嵌套最终通过place(x)将数据落地。代码中还使用了ti.is_active、ti.rescale_index、block1.deactivate_all()等稀疏场专用 API——这正是 SNode 支撑按需激活、稀疏存储计算的核心能力。3. 性能ti.kernel与 JIT 编译使用ti.kernel装饰器标注的函数会被 JIT 编译器自动编译为高效的 GPU 或 CPU 机器码并并行执行。开发者用 Python 写算法编译器负责生成高性能原生代码无需手写 CUDA/汇编。4. 可移植性一次编写到处运行代码只需编写一次即可在不同后端运行。目前 Taichi Lang 支持绝大多数主流 GPU API。仓库中的后端清单定义在 taichi/inc/archs.inc.h类别后端说明CPUx64AMD64 / x86_64完全可用CPUarm64Aarch64WIPGPUcudaNVIDIA CUDAGPUmetalApple MetalGPUopenglOpenGL Compute ShadersGPUdx11/dx12Microsoft DirectXWIPGPUamdgpuAMD GPUGPUvulkanVulkanGPUglesOpenGL ES其他js/opencl预留暂不可用N/A5. 更多特性GGUI跨平台的、基于 Vulkan 的 3D 可视化器仓库中 ggui_examples 提供了mpm128_ggui.py、fem128_ggui.py、stable_fluid_ggui.py等 3D 交互示例可微编程differentiable programming支持自动微分对应 taichi/transforms/auto_diff.cpp 及 python/taichi/ad 模块量化计算quantized computation实验性低比特精度模拟对应 QuanTaichi 相关工作。安装 Taichi Lang环境要求Prerequisites根据 README 的安装前提说明操作系统Windows、Linux、macOSPythonREADME 声明为 3.6 ~ 3.10仅 64 位而当前仓库 setup.py 的classifiers中列出 3.7 ~ 3.11且 version.txt 当前版本为v1.8.0实际支持的版本范围以构建配置为准计算后端x64/ARM CPU、CUDA、Vulkan、OpenGL4.3、Apple Metal以及实验性的 WebAssembly。使用 pip 安装稳定版pip install --upgrade taichi安装完成后即可使用两条核心命令验证环境pip install taichi # 安装 Taichi Lang ti gallery # 启动示例展示画廊安装 nightly 版本可选有风险项目还提供 nightly 包。注意nightly 包未经完整测试可能崩溃项目方不保证其有效性尝鲜未测试新功能风险自负。nightly 包托管在自建 PyPI 上自建源可以更频繁、更长期地发布pip install -i https://pypi.taichi.graphics/simple/ taichi-nightly验证安装安装成功后可以运行 README 中的分形示例更直接的方式是执行ti gallery它会打开一个交互式画廊窗口用鼠标点选并运行仓库内置的示例程序详见下文命令行工具一节。第一个程序2D 分形Julia SetREADME 提供了完整的入门示例——一个用 Taichi 编写的 2D Julia Set 分形动画。完整代码如下与仓库 python/taichi/examples/simulation/fractal.py 对应# python/taichi/examples/simulation/fractal.py import taichi as ti ti.init(archti.gpu) n 320 pixels ti.field(dtypefloat, shape(n * 2, n)) ti.func def complex_sqr(z): return ti.Vector([z[0]**2 - z[1]**2, z[1] * z[0] * 2]) ti.kernel def paint(t: float): for i, j in pixels: # Parallelized over all pixels c ti.Vector([-0.8, ti.cos(t) * 0.2]) z ti.Vector([i / n - 1, j / n - 0.5]) * 2 iterations 0 while z.norm() 20 and iterations 50: z complex_sqr(z) c iterations 1 pixels[i, j] 1 - iterations * 0.02 gui ti.GUI(Julia Set, res(n * 2, n)) for i in range(1000000): paint(i * 0.03) gui.set_image(pixels) gui.show()这个 23 行左右的程序浓缩了 Taichi 的核心编程模型逐段拆解如下ti.init(archti.gpu)初始化 Taichi 运行时并指定后端为 GPU。ti.gpu会自动在当前环境可用的 GPU 后端CUDA/Vulkan/Metal/OpenGL中选择也可以显式指定archti.cpu多核 CPU或archti.cuda等具体后端。ti.field(dtypefloat, shape(n * 2, n))声明一个形状为640×320的标量场作为像素缓冲区。ti.field是 Taichi 最基础的数据容器底层即由 SNode 组织。ti.func与ti.kernelti.func用于定义可在 kernel 内调用的设备函数如复数平方complex_sqrti.kernel标记的paint(t: float)则是可编译、可并行执行的内核t是内核参数。for i, j in pixels这是 Taichi 并行化的关键语法。对场或ti.ndrange的顶层for循环会被自动并行化——注释# Parallelized over all pixels说明每个像素独立计算互不依赖因此可安全并行。内层的while循环则是每个线程内的串行迭代此处迭代最多 50 次逼近 Julia 集。ti.VectorTaichi 内置的向量类型z.norm()计算模长支持逐分量运算pixels[i, j]以 Python 风格的多维索引读写场元素。ti.GUI(Julia Set, res(n * 2, n))创建 2D 显示窗口。主循环中反复调用paint(i * 0.03)更新画面时间参数随帧推进通过gui.set_image(pixels)将场数据上传到窗口gui.show()刷新显示。仓库版本在 fractal.py 中进一步用while not gui.get_event(ti.GUI.ESCAPE, ti.GUI.EXIT)监听 ESC 键退出并封装了main()入口。安装正常的话运行后将看到随时间连续变化的 Julia Set 分形动画而这套ti.field存数据 ti.kernel并行计算 ti.GUI可视化的流程正是 Taichi 绝大多数示例包括 MPM 物理仿真的通用骨架。命令行工具ti gallery与ti exampleti gallery等命令由ti命令行入口提供其实现位于 python/taichi/_main.py入口在 python/taichi/main.py调用main()。从源码看gallery命令python/taichi/_main.py的工作方式如下读取包内预生成的画廊底图assets/**/ti_gallery.png_main.py中通过glob递归查找见 python/taichi/_main.py用ti.GUI(Taichi Gallery, ...)打开窗口按 2 行 × 4 列的网格ncols 4布局 12 个示例磁贴每个磁贴128×128像素磁贴间距等参数在源码中以常量定义通过gui.get_cursor_pos()与gui.is_pressed(ti.GUI.LMB)检测鼠标悬停与左键点击命中后打印示例源码并用subprocess启动对应脚本_exec_python_file。gallery内置的 12 个示例见 python/taichi/_main.py包括poisson_disk_sampling泊松圆盘采样、mass_spring_3d_ggui3D 质点弹簧、sdf_rendererSDF 渲染、fractal、mpm128、pbf2d流体、mass_spring_game等基本覆盖了采样、仿真、渲染几大类典型用途。此外ti example 名称命令python/taichi/_main.py 附近可以直接运行指定名称的示例脚本例如ti example mpm128。_main.py中还注册了gif、video、video_speed、video_crop、video_scale、test等命令可用于示例录屏与测试。从源码构建 Taichi Lang如果想尝试实验性特性或为特定环境构建 Taichi可以走源码构建路线。README 指向了开发者安装文档从仓库本身来看构建系统基于scikit-buildCMake setuptools 的结合见 setup.py 开头的from skbuild import setup构建流程会把external/assets拷贝到python/taichi/assets编译 C 扩展并打包taichi_python支持通过环境变量定制构建TAICHI_CMAKE_ARGS向 CMake 传递额外参数setup.py中用shlex.split解析见 setup.pyBUILD_NUM_THREADS控制并行编译线程数DEBUG/RELWITHDEBINFO/MINSIZEREL切换 C 扩展的构建类型CMake 相关配置分布在 cmake 目录例如 TaichiCore.cmake、TaichiCXXFlags.cmake 等依赖的第三方库LLVM、Vulkan 头文件、SPIRV-Tools、glfw、eigen 等统一放在 external 目录。仓库中的示例生态python/taichi/examples 按主题组织了数十个可直接运行的示例simulation/物理仿真如 mpm128.py128² 网格的移动粒子半隐式 MPM 雪/水仿真含ti.svd奇异值分解、塑性硬化、P2G/G2P 等完整流程、euler.py、stable_fluid.py、pbf2d.py、nbody.py、game_of_life.py等rendering/渲染如sdf_renderer.py、rasterizer.py、cornell_box.py、taichi_ngp.pyfeatures/特性演示sparse/稀疏场、gui/交互与 IO、io/导出网格/PLY/视频ggui_examples/基于 Vulkan 的 3D 交互可视化示例graph/Taichi 图模式ti.graph示例如mpm88_graph.pyautodiff/自动微分示例simple_derivative.py、regression.py等algorithm/算法示例mgpcg.py多重网格预条件共轭梯度、poisson_disk_sampling.py等。更多扩展项目与社区示例的汇总索引见 misc/links.md。文档与学习资源README 提供的主要文档入口均为官方文档站资源此处不做跳转包括技术文档Technical documents、API 参考API Reference与官方博客Blog。仓库内也自带部分文档资料docs包含lang语言教程文章、design如 LLVM 稀疏运行时设计 docs/design/llvm_sparse_runtime.md、rfcsRFC 提案等示例源码本身就是极好的学习材料从 minimal.py 这类最小示例开始逐步阅读simulation/下的完整仿真。研究引用如果在研究工作中使用了 Taichi LangREADME 给出了对应的学术论文BibTeX 条目均收录在仓库 misc 目录(SIGGRAPH Asia 2019) Taichi: High-Performance Computation on Sparse Data Structures—— Taichi 语言与稀疏数据结构编译器的基础论文BibTeX 见 misc/taichi_bibtex.txt(ICLR 2020) DiffTaichi: Differentiable Programming for Physical Simulation—— 可微物理仿真的 DiffTaichi 框架BibTeX 见 misc/difftaichi_bibtex.txt(SIGGRAPH 2021) QuanTaichi: A Compiler for Quantized Simulations—— 量化仿真的 QuanTaichi 编译器BibTeX 见 misc/quantaichi_bibtex.txt。许可证与社区Taichi Lang 以Apache License 2.0分发完整条款见仓库根目录 LICENSE。项目鼓励开源社区贡献参与方式与规范见 CONTRIBUTING.md社区讨论、议题报告与联系方式等信息同样收录在 README 中。对于安全相关问题可通过 README 中列出的邮箱直接联系维护团队。小结从 README.md 出发结合仓库源码可以看到Taichi Lang 的核心价值在于Python 的易用性 编译器的性能 多后端的可移植性三者的统一。通过ti.init选择后端、ti.field声明数据、ti.kernel编写并行内核、ti.GUI或 GGUI 完成可视化一条完整的高性能计算开发链路清晰可见。对于物理仿真、数值计算、可微编程、图形渲染等场景的开发者而言安装taichi后运行ti gallery就是探索这门语言能力边界的最好起点。【免费下载链接】taichiProductive, portable, and performant GPU programming in Python.项目地址: https://gitcode.com/GitHub_Trending/ta/taichi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表