windows下的taichi初体验
背景
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()
运行即可。
结果如下图。
更多例子
官方示例
官方提供了四十个左右的例子,可以看到:
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%
。