windows下的taichi初体验

  |   0 评论   |   0 浏览

背景

taichi是一个MLS-MPM求解器。

初体验

安装

Taichi 支持的 Python 版本有 3.6/3.7/3.8 (64-bit)。

安装python

conda create -n taichi python=3.8
conda activate taichi

安装taichi

python -m pip install taichi

结果

Successfully installed astor-0.8.1 colorama-0.4.4 dill-0.3.3 numpy-1.20.2 pybind11-2.6.2 sourceinspect-0.0.4 taichi-0.7.17

确认安装成功

>>> import taichi
[Taichi] mode=release
[Taichi] version 0.7.17, llvm 10.0.0, commit 489586af, win, python 3.8.8

helloworld

# fractal.py
import taichi as ti

ti.init(arch=ti.cpu)

n = 320
pixels = ti.var(dt=ti.f32, 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: ti.f32):
  for i, j in pixels: # 对于所有像素,并行执行
    c = ti.Vector([-0.8, ti.sin(t) * 0.2])
    z = ti.Vector([float(i) / n - 1, float(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("Fractal", (n * 2, n))

for i in range(1000000):
  paint(i * 0.03)
  gui.set_image(pixels)
  gui.show()

运行即可。

结果如下图。

https://github.com/yuanming-hu/public_files/raw/master/graphics/taichi/fractal.gif

更多例子

官方示例

官方提供了四十个左右的例子,可以看到:

ti example

结果

ti example
[Taichi] mode=release
[Taichi] version 0.7.17, llvm 10.0.0, commit 489586af, win, python 3.8.8

*******************************************
**      Taichi Programming Language      **
*******************************************

Docs:   https://taichi.rtfd.io/zh_CN/latest
GitHub: https://github.com/taichi-dev/taichi
Forum:  https://forum.taichi.graphics

usage: ti example [-h] [-p] [-P] [-s]
                  {ad_gravity,autodiff_minimization,autodiff_regression,cg_possion,comet,cornell_box,euler,export_mesh,export_ply,export_videos,fem128,fem99,fractal,fullscreen,game_of_life,gui_image_io,gui_widgets,keyboard,laplace,mass_spring_3d,mass_spring_game,mciso,mciso_advanced,mgpcg,mgpcg_advanced,minimal,mnist,mnist_download_data,mpm128,mpm3d,mpm88,mpm99,mpm_lagrangian_forces,nbody_oscillator,odop_solar,particle_renderer,pbf2d,physarum,quadtree,renderer_utils,revert_image_color,sdf2d,sdf_renderer,simple_uv,stable_fluid,taichi_autodiff,taichi_bitmasked,taichi_dynamic,taichi_logo,taichi_sparse,tree_gravity,vortex_rings,waterwave}

运行例子

ti example mpm128,可以用鼠标交互。

保存代码

ti example mpm128 -s

FAQ

CUDA_ERROR_OUT_OF_MEMORY

CUDA Error CUDA_ERROR_OUT_OF_MEMORY: out of memory while calling malloc

设置内存小一点。

ti.init(arch=ti.cuda, device_memory_fraction=0.3)

当在 Windows 平台 或者 ARM 设备(如 NVIDIA Jetson)上使用 CUDA 后端时, Taichi 会默认分配 1 GB 显存用于张量存储。如需重载显存分配,你可以在初始化的时候通过

ti.init(arch=ti.cuda, device_memory_GB=3.4) 来分配 3.4 GB 显存,或者使用 ti.init(arch=ti.cuda,device_memory_fraction=0.3) 来分配所有可用显存的 30%

参考