Skip to content

Releases: taichi-dev/taichi

v0.8.3

14 Oct 08:41
021af5d
Compare
Choose a tag to compare

Full changelog:

  • [refactor] Rename nparray to external_array in Python-side (#3191) (by Yi Xu)
  • [misc] Version bump: v0.8.2->v0.8.3 (#3188) (by Bo Qiao)
  • [misc] Revert #3175 #3164 (#3185) (by Ye Kuang)
  • [Doc] Improve the documentation for ODOP (#3006) (by ljcc0930)
  • [CUDA] Update CUPTI profiling toolkit, add NVPW_MetricsEvaluator and its APIs for CUDA_VERSION >= 11.4 (#3172) (by rocket)
  • fix (#3175) (by Dunfan Lu)
  • [vulkan] Isolate vulkan runtime (#3164) (by Bob Cao)
  • [bug] Fix the mapping from virtual axes to physical axes again (#3170) (by Yi Xu)
  • [ci] Move pytest/pylint out of runtime dep. (#3169) (by Ailing)
  • [ci] Move code_format.py out of taichi package. (#3171) (by Ailing)
  • [gui] Use Device API memcpy in GGUI (#3163) (by Dunfan Lu)

v0.8.2

12 Oct 04:41
bfa5c28
Compare
Choose a tag to compare

Full changelog:

  • [bug] Fix the mapping from virtual axes to physical axes (#3159) (by Yi Xu)
  • [ci] Get rid of requirements_lint.txt. (#3161) (by Ailing)
  • [ci] Enable macos 10.14 in release.yml wip. (#3158) (by Ailing)
  • [refactor] [CUDA] Add optional metrics for KernelProfiler in Python scope (#3049) (by rocket)
  • [misc] Fix build on macos 10.14. (#3155) (by Ailing)
  • [bug] Fix Cpu/CudaDevice memory deallocation bug (#3157) (by Ye Kuang)
  • Revert "[Bug] Fix argument shadowed when there is a local variable with the same name (#3105)" (#3153) (by Ailing)
  • [Lang] Use ti.linalg.SparseMatrixBuilder as sparse matrix builder (#3152) (by FantasyVR)
  • [Doc] Add docstring and documents for sparse matrix (#3119) (by Jiafeng Liu)
  • [vulkan] Inter-device memcpy API (#3137) (by Dunfan Lu)
  • [Lang] Improve sparse matrix/solver API (#3145) (by FantasyVR)
  • Fix and cleanup GGUI examples (#3144) (by Dunfan Lu)
  • [ci] [vulkan] Upgrade Dockerfile to enable Vulkan tests (#2970) (by Bo Qiao)
  • [Example] An implicit mass spring demo with sparse matrix (#3116) (by FantasyVR)
  • [misc] Version bump: v0.8.1->v0.8.2 (#3149) (by Yi Xu)
  • [refactor] Get rid of the indirection between KernelCodeGen::compile and KernelCodeGen::codegen. (by Ailing Zhang)
  • [misc] Enable flushing when printing preprocessed ast. (by Ailing Zhang)
  • [Bug] Throw proper error message when creating more than 32 snode trees in LLVM backend. (by Ailing Zhang)
  • [Cuda] [opt] Fix duplicate shared memory allocation (#3140) (by Chang Yu)
  • [CI] Add pip cache (#3139) (by zstone12)
  • rgb_to_hex: fix typo and use bit operator instead of multiplication (#3136) (by gaoxinge)
  • [llvm] Establish a correspondence between SNodes and DevicePtr (#3120) (by Dunfan Lu)
  • [Metal] Support multiple SNode roots in codegen/runtime (#3090) (by Ye Kuang)
  • [Autodiff] Throw proper error message for unsupported ti.random. (#3131) (by Ailing)
  • [test] Parametrize test_ad_basics.py (#3129) (by Ye Kuang)
  • [ci] Fix sparse_solver for pylint. (#3132) (by Ailing)
  • [refactor] Enable user selected metrics for CUDA, remove print() method from class KernelProfiler (#3048) (by rocket)
  • [misc] Delete accidentally included spirv dump (#3130) (by Bob Cao)
  • [perf] Reduce SNodeTree materialization time in LLVM backends (#3127) (by Yi Xu)
  • [Lang] Move sparse matrix/solver into subfolder (#3115) (by FantasyVR)
  • [refactor] Enable pylint checking in ci and minor cleanup. (by Ailing Zhang)
  • [refactor] Move imports to the top level. (by Ailing Zhang)
  • [vulkan] Make atomic helper functions inline (#3118) (by Chang Yu)
  • [perf] Constant folding optimization (#3108) (by Bob Cao)
  • [Bug] Fix argument shadowed when there is a local variable with the same name (#3105) (by lin-hitonami)
  • [ci] Add back fixes for github actions windows image upgrade. (#3117) (by Ailing)
  • [doc] Update dev install about develop/install. (#3113) (by Ailing)
  • [cuda] Remove unified memory allocator (#3098) (by Dunfan Lu)
  • [refactor] Make ext_arr/any_arr/template to taichi.type.annotations. (by Ailing Zhang)
  • [refactor] Make type annotations simple, remove dep on high level data structures. (by Ailing Zhang)
  • [ci] Run shell scripts in CI (#3034) (by Jiasheng Zhang)
  • [Lang] Support chained assignments (#3062) (by Ce Gao)
  • [metal] Rearrange how KernelManager is initialized (#3109) (by Ye Kuang)
  • [GUI] Add context manager support for ui.Gui (#3055) (by Xuanwo)
  • [Lang] [bug] Fix support property decorator for data_oriented class (#3052) (by yihong)
  • [refactor] Work around some cyclic imports. (by Ailing Zhang)
  • [refactor] Remove importing outside top level. (by Ailing Zhang)
  • [refactor] Stop overriding taichi.core from taichi/lang/impl.py. (by Ailing Zhang)
  • [metal] Separate runtime and snodes initialization (#3093) (by Ye Kuang)
  • [ci] Copy paste linux & windows fixes from presubmit to release. (#3103) (by Ailing)
  • [Doc] Add documentation for gui system and install trouble shooting. (#2985) (by Jiasheng Zhang)
  • [doc] Fix the link to the QuanTaichi paper in README.md (#3102) (by Yi Xu)
  • [doc] Remove docs subpath and update references across the codebase (#3085) (by Chengchen(Rex) Wang)
  • [Lang] Use more user-friendly exception when converting from numpy array (#3058) (by Ce Gao)
  • renable sfg test (#3097) (by Dunfan Lu)
  • [cuda] Disable unified memory and make CI pass (#3067) (by Dunfan Lu)
  • [cuda] Fix a memory alignment bug in pre-allocated memory allocator (#3096) (by Dunfan Lu)
  • Fix minor bugs in GL Device (#3091) (by Bob Cao)
  • [metal] Pull out the Runtime MSL code into its own module (#3086) (by Ye Kuang)
  • [Doc] Fix an example in the documentation for coordinate offsets (#3089) (by 张皓)
  • [Example] A stable fluid demo with sparse matrix (#3081) (by Jiafeng Liu)
  • [doc] Add Vulkan into README.md (#3088) (by Bob Cao)
  • [refactor] Style police (#3082) (by Bob Cao)
  • [GUI] Extract the type casts of environment variables in misc.gui.gui into a reusable function (#3065) (by Dream Hunter)
  • [lang] Add a method to get all SNodes under a root (#3083) (by Ye Kuang)
  • [Test] Allow ti test work with -a cpu, cuda. (#3066) (by Ailing)
  • [refactor] Move the AST utils into taichi.lang.ast (#3063) (by Ye Kuang)
  • [refactor] Get rid of settings.py. (by Ailing Zhang)
  • [refactor] Get rid of build and load_module. (by Ailing Zhang)
  • [refactor] Move primitive_types.py to type folder. (by Ailing Zhang)
  • [refactor] Move record.py out of ti.core. (by Ailing Zhang)
  • [refactor] Move logging out of ti.core. (by Ailing Zhang)
  • [ci] Try moving all torch tests to single thread. (by Ailing Zhang)
  • [Doc] Update developer installation (#3070) (by Bo Qiao)
  • [Lang] Fix python AST print format issues in python/taichi/lang/transformer.py (#3061) (by Ce Gao)
  • [ci] Extend windows timeout. (#3068) (by Ailing)
  • [ci] Try fixing windows. (#3064) (by Ailing)
  • [Doc][autodiff] Add a section about customized gradient in autodiff. (#3054) (by Ailing)
  • [Doc] Update Type system (#3043) (by Tiantian Liu)

v0.8.1

29 Sep 12:05
cc2dd34
Compare
Choose a tag to compare

Full changelog:

  • [vulkan] Disable Vulkan validation layer (#3050) (by Ye Kuang)
  • [Doc] Update Python test doc (#3011) (by ljcc0930)
  • [Doc] Improve the documentation for profiler (#3014) (by rocket)
  • [Doc] Fix Arch Linux building guide clang dependence (#3042) (by Cinderella)
  • [Doc] Update kernels and functions (#2999) (by Mingrui Zhang)
  • [Doc] Update cpp_style.md (#3040) (by Ye Kuang)
  • [Doc] Developer installation update (#2996) (by Bo Qiao)
  • [Lang] [bug] Fix subscripting user classes in Taichi kernels (#3047) (by Yi Xu)
  • [misc] Version bump: v0.8.0->v0.8.1 (#3044) (by Yi Xu)
  • [Doc] Add docstring for init(), reset() and a few constants (#3026) (by Ye Kuang)
  • [gui] Fix mouse position error after window had been resized (#3041) (by Dunfan Lu)
  • [Doc] Performance tuning update (#2997) (by Bo Qiao)
  • [Doc] Update field (#2994) (by FantasyVR)
  • [Doc] Update interacting with external arrays (#3000) (by FantasyVR)
  • [Autodiff] Rename complex_kernel and complex_kernel_grad. (#3035) (by Ailing)
  • [Doc] Update contributor guidelines (#2991) (by Yi Xu)
  • [LLVM] Rename runtime memory allocation function (#3036) (by Bo Qiao)
  • [benchmark] [CUDA] Add the implementation of class CuptiToolkit (#2923) (by rocket)
  • [Doc] Add documentation for TLS/BLS (#2990) (by Ye Kuang)
  • [Doc] Update differentiable programming doc. (#2993) (by Ailing)
  • [Doc] Fix note format on webpage and code highlights for metaprogramming (#3027) (by Mingrui Zhang)
  • Disable validation layer with release builds (#3028) (by Bob Cao)
  • [Doc] Update the Type system section (#3010) (by Tiantian Liu)
  • [Doc] Add documentation for sparse computation (#2983) (by Yuanming Hu)
  • [Doc] Update metaprogramming doc (#3009) (by Mingrui Zhang)
  • [Doc] Improve the documentation for debugging and GGUI (#3002) (by Chang Yu)
  • [ci] Fix release.yml syntax error (#3022) (by Jiasheng Zhang)
  • [misc] Get changelogs via tags instead of commit messages (#3021) (by Yi Xu)
  • [Doc] Update documentation for fields (advanced) (#3012) (by Yi Xu)
  • [Doc] Improve the documentation for C++ style guide (#3001) (by Ye Kuang)
  • [Doc] Fix typo in data_oriented docstring (#3005) (by ljcc0930)
  • [Doc] Remove 'Versioning and releases'; Fix 'Documentation writing guide' (#2987) (by Yi Xu)
  • [misc] Add Vulkan as a target for ti diagnose (#2995) (by Yuheng Zou)
  • [Opt] [ir] [refactor] Remove exceptions from IR pass extract_constant (#2966) (by lin-hitonami)
  • [refactor] [benchmark] Add ti.profiler in python scope (#2922) (by rocket)
  • [refactor] Private field names and function restructure in cc backend. (#2989) (by Jiasheng Zhang)
  • [cpu] Cpu device 1/n: memory allocation (#2984) (by Dunfan Lu)
  • [refactor] Refactored and unified CC backend, removed CCProgram and use CCProgramImpl instead. (#2978) (by Jiasheng Zhang)
  • [CI] Better CI title check info (#2986) (by yihong)
  • [ci] Disable fail-fast matrix on release jobs. (#2982) (by Ailing)
  • [cuda] Cuda Device API 1/n: memory allocation (#2981) (by Dunfan Lu)
  • [misc] Add deactivate_all_snodes and ti.FieldsBuilder.deactivate_all (#2967) (by ljcc0930)
  • [misc] Remove unnecessary symlink step. (#2976) (by Ailing)
  • [ci] Releases must be done on buildbot-ubuntu machine. (#2977) (by Ailing)
  • [ci] Fix OOM on nightly release. (#2975) (by Ailing)
  • [Lang] Add error message for printing an incomplelely-defined field (#2979) (by yihong)
  • [refactor] Minimize Python context (#2971) (by Yi Xu)
  • [Doc] Installation with mirror source (#2946) (by FantasyVR)

v0.8.0

23 Sep 05:07
181c903
Compare
Choose a tag to compare

Highlights in v0.8.0

Packed Mode

Previously in Taichi, all non-power-of-two dimensions of a field were automatically padded to a power of two. For instance, a field of shape (18, 65) would have internal shape (32, 128). Although the padding had many benefits such as allowing fast and convenient bitwise operations for coordinate handling, it would consume potentially much more memory than people thought.

For people indeed want smaller memory usage, we now introduce an optional packed mode. In packed mode, no more padding will be applied so a field will not have a larger internal shape when some of its dimensions are not power-of-two. The downside is that the runtime performance will regress slightly.

A switch named packed for ti.init() decides whether to use packed mode:

ti.init()  # default: packed=False
a = ti.field(ti.i32, shape=(18, 65))  # padded to (32, 128)
ti.init(packed=True)
a = ti.field(ti.i32, shape=(18, 65))  # no padding

GGUI

A new GUI system, which is codenamed GGUI, is added to Taichi. GGUI will use GPUs for rendering, which enables it to be much faster than the original ti.gui, and to render 3d meshes and particles. It also comes with a brand new set of immediate mode widgets APIs.

Sample 3D code:

window = ti.ui.Window("Hello Taichi", (1920, 1080))

canvas = window.get_canvas()
scene = ti.ui.Scene()
camera = ti.ui.make_camera()

while window.running:

    camera.position(...)
    camera.lookat(...)
    scene.set_camera(camera)

    scene.point_light(pos=(...), color=(...))

    # vertices, centers, etc. are taichi fields
    scene.mesh(vertices, ...)
    scene.particles(centers, radius, ...)

    canvas.scene(scene)
    window.show()

Sample IMGUI code:

window = ti.ui.Window("Hello Taichi", (500, 500))
canvas = window.get_canvas()

gx, gy, gz = (0, -9.8, 0)

while window.running:

    window.GUI.begin("Greetings", 0.1, 0.1, 0.8, 0.15)
    window.GUI.text("Welcome to TaichiCon !")
    if window.GUI.button("Bye"):
        window.running = False
    window.GUI.end()

    window.GUI.begin("Gravity", 0.1, 0.3, 0.8, 0.3)
    gx = window.GUI.slider_float("x", gx, -10, 10)
    gy = window.GUI.slider_float("y", gy, -10, 10)
    gz = window.GUI.slider_float("z", gz, -10, 10)
    window.GUI.end()

    canvas.set_background_color(color)
    window.show()

For more examples, please checkout examples/ggui_examples in the taichi repo.

Dynamic SNode Allocation

Previously in Taichi, we cannot allocate new fields after the kernel's execution. Now we can use a new class FieldsBuilder to support dynamic allocation.

FieldsBuilder has the same data structure declaration API as the previous root, such as dense(), pointer() etc. After declaration, we need to call the finalize() function to compile the FieldsBuilder to an SNodeTree object.

Example usage for FieldsBuilder:

import taichi as ti
ti.init()

@ti.kernel
def func(v: ti.template()):
    for I in ti.grouped(v):
        v[I] += 1

fb = ti.FieldsBuilder()
x = ti.field(dtype = ti.f32)
fb.dense(ti.ij, (5, 5)).place(x)
fb_snode_tree = fb.finalize() # Finalizing the FieldsBuilder and returns a SNodeTree
func(x)

fb2 = ti.FieldsBuilder()
y = ti.field(dtype = ti.f32)
fb2.dense(ti.i, 5).place(y)
fb2_snode_tree = fb2.finalize() # Finalizing the FieldsBuilder and returns a SNodeTree
func(y)

Additionally, root now is implemented by FieldsBuilder implicitly, so we can allocate the fields directly under root.

import taichi as ti
ti.init() # ti.root = ti.FieldsBuilder()

@ti.kernel
def func(v: ti.template()):
    for I in ti.grouped(v):
        v[I] += 1

x = ti.field(dtype = ti.f32)
ti.root.dense(ti.ij, (5, 5)).place(x)
func(x) # automatically called ti.root.finalize()
# ti.root = new ti.FieldsBuilder()

y = ti.field(dtype = ti.f32)
ti.root.dense(ti.i, 5).place(y)
func(y) # automatically called ti.root.finalize()

Furthermore, after we called the finalize() of a FieldsBuilder, it will return a finalized SNodeTree object. If we do not want to use the fields under this SNodeTree, we could call destroy() manually to recycle the memory into the memory pool.

e.g.:

import taichi as ti
ti.init()

@ti.kernel
def func(v: ti.template()):
    for I in ti.grouped(v):
        v[I] += 1

fb = ti.FieldsBuilder()
x = ti.field(dtype = ti.f32)
fb.dense(ti.ij, (5, 5)).place(x)
fb_snode_tree = fb.finalize() # Finalizing the FieldsBuilder and returns a SNodeTree
func(x)

fb_snode_tree.destroy()
# func(x) cannot be used anymore

Full changelog:

  • [doc] Fix several typos in doc (#2972) (by Ziyi Wu)
  • [opengl] Runtime refactor 1/n (#2965) (by Bob Cao)
  • [refactor] Avoid passing device strings into torch (#2968) (by Yi Xu)
  • [misc] Fix typos in examples/simulation/fractal.py (#2882) (by Yilong Li)
  • [opt] Support atomic min/max in warp reduction optimization (#2956) (by Yi Xu)
  • [Bug] Add GIL that was accidentally removed in PR #2939 back (#2964) (by lin-hitonami)
  • [misc] Support clean command to setup.py. (by Ailing Zhang)
  • [misc] Fix some build warnings. (by Ailing Zhang)
  • [doc] Add docstring for GGUI python API (#2958) (by Dunfan Lu)
  • [gui] Move all ggui kernels to python by using taichi fields as staging buffers (#2957) (by Dunfan Lu)
  • [opt] Add conservative alias analysis for ExternalPtrStmt (#2952) (by Yi Xu)
  • [opengl] Move old runtime onto Device API (#2945) (by Bob Cao)
  • [Lang] Remove deprecated usage of ti.Matrix.init (#2950) (by Yi Xu)
  • [Lang] Add data_handle property to Ndarray (#2947) (by Yi Xu)
  • [misc] Throw proper error if real function is not properly annotated. (#2943) (by Ailing)
  • [gui] Fix normal bug when default fp is not f32. (#2944) (by Dunfan Lu)
  • [opengl] Device API: Adding GL error checks & correct memory mapping flags (#2941) (by Bob Cao)
  • [Lang] Support configure sparse solver ordering (#2907) (by FantasyVR)
  • [refactor] remove Program::KernelProxy (#2939) (by lin-hitonami)
  • [doc] Update README.md (#2940) (by Yuanming Hu)
  • [opengl] Initial Device API work (#2925) (by Bob Cao)
  • [Lang] Support ti_print for wasm (#2910) (by squarefk)
  • [Lang] Fix ti func with template and add corresponding tests (#2871) (by squarefk)
  • [doc] Update README.md (#2937) (by Yuanming Hu)
  • [metal] Fix metal codegen to make OSX 10.14 work (#2935) (by Ye Kuang)
  • [Doc] Add developer installation to README.md (#2933) (by Ye Kuang)
  • [misc] Edit preset indices (#2932) (by ljcc0930)
  • fratal example (#2931) (by Dunfan Lu)
  • [refactor] Exchange compiled_grad_functions and compiled_functions in kernel_impl.py (#2930) (by Yi Xu)
  • [Misc] Update doc links (#2928) (by FantasyVR)
  • Disable a few vulkan flaky tests. (#2926) (by Ailing)
  • [llvm] Remove duplicated set dim attribute for GlobalVariableExpression (#2929) (by Ailing)
  • [ci] Artifact uploading before test in release.yml (#2921) (by Jiasheng Zhang)
  • [bug] Fix the Bug that cannot assign a value to a scalar member in a struct from python scope (#2894) (by JeffreyXiang)
  • [misc] Update examples (#2924) (by Taichi Gardener)
  • [ci] Enable tmate session if release test fails. (#2919) (by Ailing)
  • [refactor] [CUDA] Wrap the default profiling tool as EventToolkit , add a new class for CUPTI toolkit (#2916) (by rocket)
  • [metal] Fix upperbound for list-gen and struct-for (#2915) (by Ye Kuang)
  • [ci] Fix linux release forgot to remove old taichi (#2914) (by Jiasheng Zhang)
  • [Doc] Add docstring for indices() and axes() (#2917) (by Ye Kuang)
  • [refactor] Rename SNode::n to SNode::num_cells_per_container (#2911) (by Ye Kuang)
  • Enable deploy preview if changes are detected in docs. (#2913) (by Ailing)
  • [refactor] [CUDA] Add traced_records_ for KernelProfilerBase, refactoring KernelProfilerCUDA::sync() (#2909) (by rocket)
  • [ci] Moved linux release to github action (#2905) (by Jiasheng Zhang)
  • [refactor] [CUDA] Move KernelProfilerCUDA from program/kernel_profiler.cpp to backends/cuda/cuda_profiler.cpp (#2902) (by rocket)
  • [wasm] Fix WASM AOT module builder order (#2904) (by Ye Kuang)
  • [CUDA] Add a compilation option for CUDA toolkit (#2899) (by rocket)
  • [vulkan] Support for multiple SNode trees in Vulkan (#2903) (by Dunfan Lu)
  • add destory snode tree api (#2898) (by Dunfan Lu)

v0.7.32

09 Sep 09:19
6652f94
Compare
Choose a tag to compare

Full changelog:

  • [vulkan] Turn off Vulkan by default and add dev install instructions (#2897) (by Dunfan Lu)
  • [Misc] Fix the path in conda_env.yaml (#2895) (by Ce Gao)
  • [ci] Rollback buggy Dockerfile (by Dunfan Lu)
  • [bug] [opt] Disable putting pointers into global tmp buffer (#2888) (by Yi Xu)
  • [Llvm] Increase the number of arguments allowed in a kernel (#2886) (by Yi Xu)
  • [gui] GGUI fix undefined variable (#2885) (by Mingrui Zhang)
  • [ci] Build and Release Vulkan in CI/CD (#2881) (by Dunfan Lu)
  • [Lang] Refine semantics of ti.any_arr (#2875) (by Yi Xu)
  • [refactor] OpenGL program impl (#2878) (by Dunfan Lu)
  • [refactor] Vulkan program impl (#2876) (by Dunfan Lu)
  • Clean up sparse matrix (#2872) (by squarefk)
  • Re-enable sfg test on CUDA (#2874) (by Bo Qiao)
  • [refactor] Unify llvm_program_ and metal_program_ in Program class. (by Ailing Zhang)
  • [refactor] Let LlvmProgramImpl inherit ProgramImpl. (by Ailing Zhang)
  • [refactor] Init ProgramImpl from MetalProgramImpl. (by Ailing Zhang)
  • [CUDA] [bug] Fix CUDA error "allocate_global (DataType type) misaligned address" (#2863) (by rocket)
  • [Lang] Experimental SpMV and direct linear solvers (#2853) (by FantasyVR)
  • [refactor] Get rid of some unnecessary get_current_program(). (by Ailing Zhang)
  • [ci] Enable CI on pushing to master. (#2865) (by Ailing)
  • [Lang] Support fill, from_numpy, to_numpy for ti.ndarray (#2868) (by Yi Xu)

v0.7.31

02 Sep 06:10
fa68168
Compare
Choose a tag to compare

Full changelog:

  • [doc] Remove links from documentation articles to API reference (#2866) (by Chengchen(Rex) Wang)
  • [Lang] Support struct fors on ti.any_arr (#2857) (by Yi Xu)
  • [ci] M1 release (#2855) (by Jiasheng Zhang)
  • [Doc] Update the API reference section. (#2856) (by Chengchen(Rex) Wang)
  • [LLVM] [Bug] fix typo of PR #2781 (#2854) (by rocket)
  • [Vulkan] Use reference counting based wrapper layer (#2849) (by Bob Cao)
  • [gui] Two sided mesh (#2851) (by Dunfan Lu)
  • [refactor] Make ti.ext_arr a special case of ti.any_arr (#2850) (by Yi Xu)
  • [Lang] Add ti.Vector.ndarray and ti.Matrix.ndarray (#2808) (by Yi Xu)
  • [ci] No need to specify arch on M1 CI. (#2845) (by Ailing)
  • [Lang] Customized struct support (#2627) (by Andrew Sun)
  • [Lang] Fix ti test parameters (#2830) (by squarefk)
  • [ci] Enable verbose on M1 CI to collect more info on hanging jobs. (#2844) (by Ailing)
  • [ci] Fixed bug of wrong os parameter (#2843) (by Jiasheng Zhang)
  • [gui] GGUI 17/n: doc (#2842) (by Dunfan Lu)
  • [gui] GGUI 16/n: examples (#2841) (by Dunfan Lu)
  • [refactor] Move FrontendContext from global into Callable class. (by Ailing Zhang)
  • [refactor] Decouple AsyncEngine with Program. (by Ailing Zhang)
  • [refactor] Decouple MemoryPool with Program. (by Ailing Zhang)
  • [refactor] Decouple opengl codegen compile with Program. (by Ailing Zhang)
  • [refactor] Unify compile() for LlvmProgramImpl and MetalProgramImpl. (by Ailing Zhang)
  • [refactor] Initial MetalProgramImpl implementation. (by Ailing Zhang)
  • [gui] GGUI small fixups (#2840) (by Dunfan Lu)
  • [ci] Fixed bugs of double env in release.yml (#2838) (by Jiasheng Zhang)
  • [Lang] Let rescale_index support SNode as input parameter (#2826) (by Jack12xl)
  • [refactor] Minor cleanup in program.cpp. (by Ailing Zhang)
  • [gui] GGUI 15/n: Python-side code (#2832) (by Dunfan Lu)
  • [gui] GGUI 14/n: Shaders (#2829) (by Dunfan Lu)
  • [Lang] Experimental sparse matrix support on CPUs (#2792) (by FantasyVR)
  • [Vulkan] Add relaxed FIFO presentation mode (#2828) (by Bob Cao)
  • [ci] Conditional build matrix on release (#2819) (by Jiasheng Zhang)
  • [gui] GGUI 13/n: Pybind stuff (#2825) (by Dunfan Lu)
  • [gui] GGUI 12/n: Window and Canvas (#2824) (by Dunfan Lu)
  • [gui] GGUI 11/n: Renderer (#2818) (by Dunfan Lu)
  • [gui] GGUI 7.5/n: Avoid requiring CUDA toolchains to compile GGUI (#2821) (by Dunfan Lu)
  • [vulkan] Let me pass (#2823) (by Dunfan Lu)
  • [ci] Add timeout for every job in presubmit.yml (#2820) (by Jiasheng Zhang)
  • [Vulkan] Device API Multi-streams, multi-queue, and initial multi-thread support (#2802) (by Bob Cao)
  • [Doc] Fix example path and conda instruction link (#2815) (by Bo Qiao)
  • [Lang] Fix unfolding subscripting inside ti.external_func_call() (#2806) (by squarefk)
  • Enable tensor subscripting as input for external function call (#2812) (by squarefk)
  • [gui] GGUI 10/n: IMGUI (#2809) (by Dunfan Lu)
  • [Vulkan] [ci] Enable and release Vulkan (#2795) (by Chang Yu)
  • [Vulkan] Fixing floating point load/store/atomics on global temps and context buffers (#2796) (by Bob Cao)
  • [gui] GGUI 9/n: Renderables and Scene (#2803) (by Dunfan Lu)
  • [vulkan] Fix bug in empty root buffer (#2807) (by Chang Yu)
  • [Lang] Fix tensor based grouped ndrange for (#2800) (by squarefk)
  • [gui] GGUI 8/n: Renderable class (#2798) (by Dunfan Lu)

v0.7.30

25 Aug 09:47
cee4566
Compare
Choose a tag to compare

Full changelog:

  • [gui] GGUI 7/n: Vertex class, and kernels for updating VBO/IBO/texture (#2797) (by Dunfan Lu)
  • [Refactor] Make Layout an Enum class and move it away from impl.py (#2774) (by Yi Xu)
  • app context and swap chain (#2794) (by Dunfan Lu)
  • [Refactor] Move snode_tree_buffer_manager and llvm_runtime to private. (by Ailing Zhang)
  • [Refactor] Move llvm_context_host/device to private. (by Ailing Zhang)
  • [Refactor] Further cleanup Program constructor. (by Ailing Zhang)
  • [Refactor] Move check_runtime_error to LlvmProgramImpl. (by Ailing Zhang)
  • [Refactor] Simplify synchronize and materialize_runtime in Program. (by Ailing Zhang)
  • [gui] GGUI 5/n: remove some stuff (#2793) (by Dunfan Lu)
  • [ci] Added gpu test timeout (#2791) (by Jiasheng Zhang)
  • [Vulkan] [test] Fix Vulkan CI test bug & Enable tests for Vulkan backend (#2776) (by Yu Chang)
  • [vulkan] Graphics Device API (#2789) (by Dunfan Lu)
  • [ci] Changed nightly tag from pre-release to post-release (#2786) (by Jiasheng Zhang)
  • [ci] Add Apple M1 buildbot (#2731) (by ljcc0930)
  • [Refactor] Move a few helpers in LlvmProgramImpl to private. (by Ailing Zhang)
  • [Refactor] Cleanup llvm specific apis in program.h (by Ailing Zhang)
  • [Ir] Clean up frontend ir for global tensor and local tensor (#2773) (by squarefk)
  • [Refactor] Only prepare sandbox for cc backend. (#2775) (by Ailing)
  • [gui] Remove DPI settings (#2767) (by Ye Kuang)
  • [Doc] Add instructions for how to use conda (#2764) (by Ye Kuang)
  • [Lang] Enable treating external arrays as Taichi vector/matrix fields (#2727) (by Yi Xu)
  • [Opt] [ir] Optimize offload (#2673) (by squarefk)
  • [Refactor] Add initialize_llvm_runtime_system to LlvmProgramImpl. (by Ailing Zhang)
  • [Refactor] Add materialize_snode_tree to LlvmProgramImpl. (by Ailing Zhang)
  • [Refactor] Move initialize_llvm_runtime_snodes to LlvmProgramImpl. (by Ailing Zhang)
  • [Refactor] Move clone_struct_compiler_initial_context to LlvmProgramImpl. (by Ailing Zhang)
  • [Refactor] Move is_cuda_no_unified_memory to CompileConfig. (by Ailing Zhang)
  • [Refactor] Add maybe_initialize_cuda_llvm_context to LlvmProgramImpl. (by Ailing Zhang)
  • [Refactor] Add get_snode_num_dynamically_allocated to LlvmProgramImpl. (by Ailing Zhang)
  • [Refactor] Move print_memory_profiler_info to LlvmProgramImpl. (by Ailing Zhang)
  • [Refactor] Move print_list_manager_info to LlvmProgramImpl. (by Ailing Zhang)
  • [Refactor] Move runtime_query to LlvmProgramImpl. (by Ailing Zhang)
  • [Refactor] Move get_llvm_context to LlvmProgramImpl. (by Ailing Zhang)
  • [Refactor] Move preallocated_device_buffer into LlvmProgramImpl. (by Ailing Zhang)
  • [Refactor] Move thread_pool into LlvmProgramImpl. (by Ailing Zhang)
  • [Refactor] Move runtime_mem_info into LlvmProgramImpl. (by Ailing Zhang)
  • [Refactor] Move llvm_runtime to LlvmProgramImpl. (by Ailing Zhang)
  • [Refactor] Move llvm_context_device to LlvmProgramImpl. (by Ailing Zhang)
  • [Refactor] Move llvm_context_host to LlvmProgramImpl. (by Ailing Zhang)
  • [Refactor] Move snode_tree_buffer_manager into LlvmProgramImpl. (by Ailing Zhang)
  • [Doc] Several dev install doc improvements. (#2741) (by Ailing)
  • [ci] Fix clang-format version to 10 (#2739) (by Ailing)
  • [Test] Unify tests decorators with @ti.test() (#2674) (by squarefk)
  • [Doc] Fix --user in dev install instruction. (#2732) (by Ailing)
  • [test] Fix potential memory error when DecoratorRecorder hasn't been reset correctly (#2735) (by squarefk)
  • [ci] Fix GPU buildbot paths and configs (#2728) (by Yi Xu)
  • [ci] Reduce the number of python wheels built nightly (#2726) (by Jiasheng Zhang)
  • [ir] Internal function call now supports arguments and i32 return value (#2722) (by Yuanming Hu)
  • [vulkan] Fix dumb memory error (#2721) (by Bob Cao)
  • [refactor] Remove unneccessary constructor argument (#2720) (by saltyFamiliar)
  • [Misc] Add submodule Eigen (#2707) (by FantasyVR)
  • Pin yapf version to 0.31.0. (#2710) (by Ailing)
  • [vulkan] [test] Support full atomic operations on Vulkan backend (#2709) (by Yu Chang)
  • [Vulkan] Move vulkan to device API (#2695) (by Bob Cao)
  • [Doc] Update developer install doc to use setup.py. (#2706) (by Ailing)
  • [ci] Fixed pypi version (#2708) (by Jiasheng Zhang)
  • [Lang] Redesign Ndarray class and add ti.any_arr() annotation (#2703) (by Yi Xu)
  • [Bug] Close the kernel context when failing to compile AST (#2704) (by Calvin Gu)
  • [Doc] Add gdb debug instructions to dev utilities. (#2702) (by Ailing)
  • [vulkan] Better detect Vulkan availability (#2699) (by Yu Chang)
  • [benchmark] [refactor] Move fill() and reduction() into Membound suite, calculate the geometric mean of the time results (#2697) (by rocket)
  • [ci] Added taichi nightly auto release to github action (#2670) (by Jiasheng Zhang)
  • [Misc] Keep debug symbols/line numbers in taichi_core.so by setting DEBUG=1. (#2694) (by Ailing)
  • [vulkan] [test] Enable Vulkan backend on OS X (#2692) (by Yu Chang)
  • [Refactor] Remove is_release() in the codebase. (#2691) (by Ailing)
  • [doc] fix outdated links of examples in examples.md (#2693) (by Yu Chang)
  • [Refactor] Make is_release always True and delete runtime dep on TAICHI_REPO_DIR. (#2689) (by Ailing)
  • [CUDA] Save an extra host to device copy if arg_buffer is already on device. (#2688) (by Ailing)
  • [Refactor] Allow taichi_cpp_tests run in release mode as well. (#2686) (by Ailing)
  • [Refactor] Re-enable gdb attach on crash. (#2687) (by Ailing)
  • [Lang] Add a Ndarray class to serve as an alternative to dense scalar fields (#2676) (by Yi Xu)
  • [gui] GGUI 4/n: Vulkan GUI backend utils (#2672) (by Dunfan Lu)
  • [Test] Smarter enumerating features and raise exception when not supported (#2679) (by squarefk)
  • [vulkan] Querying features like a mad man (#2671) (by Bob Cao)
  • [IR] Support local tensor (#2637) (by squarefk)
  • [vulkan] Check that additional extensions are supported before adding them (#2667) (by Dunfan Lu)
  • [vulkan] [test] Fix bugs detected by tests & Skip unnecessary tests for Vulkan backend (#2664) (by Yu Chang)

v0.7.29

12 Aug 03:52
7b40a96
Compare
Choose a tag to compare

Full changelog:

  • [ir] Improve ExternalTensorShapeAlongAxisStmt IR print result (#2665) (by Yu Chang)
  • [ci] Refined release procedures (#2663) (by Jiasheng Zhang)
  • [vulkan] More capabilities detection and enabling (#2660) (by Bob Cao)
  • [ci] Change build method of ci tests (#2661) (by Jiasheng Zhang)
  • [gui] GGUI 3/n: Add dependencies, interfaces, and backend-independent code (#2650) (by Dunfan Lu)
  • [lang] [refactor] Add a ExtArray class for external arrays (#2651) (by Yi Xu)
  • [ci] Enable torch tests during CI (#2656) (by Yi Xu)
  • [ci] Add cuda bin folder to PATH (#2655) (by Dunfan Lu)
  • [gui] GGUI 2/n: Add optional graphics queue, compute queue, and surface to EmbeddedVulkanDevice (#2648) (by Dunfan Lu)
  • [vulkan] Build and test Vulkan backend in CI (#2647) (by Ye Kuang)
  • [ci] Added changelog.py that does not depend on taichi (#2649) (by Jiasheng Zhang)
  • [gui] GGUI 1/n: Add necessary cuda structs/enums/functions (#2645) (by Dunfan Lu)
  • [vulkan] Use VulkanMemoryAllocator for memory allocation (#2644) (by Bob Cao)
  • Improved SPIRV-Tools library search on Linux (#2643) (by masahi)
  • [Lang] [refactor] Add Field classes for ti.field/ti.Vector.field/ti.Matrix.field (#2638) (by Yi Xu)
  • [ci] Fix mac release and integrate windows release into github (#2641) (by Jiasheng Zhang)
  • [misc] [doc] Rename some profiler APIs and add docstring, mark old names as deprecated (#2640) (by rocket)
  • [doc] Better CUDA out of memory messages (#2172) (by 彭于斌)
  • [Refactor] Split transformer.py into StmtBuilder and ExprBuilder (Stage 2) (#2635) (by xumingkuan)
  • [bug] Fix missing ti.template() in rand_vector(n) in examples (#2636) (by xumingkuan)
  • [doc] meta: s/alone/along/ (#2616) (by Eric Cousineau)
  • [Bug] Fix osx release workflow. (#2633) (by Ailing)
  • [vulkan] Rename ManagedVulkanDevice to EmbeddedVulkanDevice (#2578) (by Ye Kuang)
  • [ci] Add slash benchmark command for performance monitoring (#2632) (by rocket)

v0.7.28

03 Aug 06:02
9e04b1b
Compare
Choose a tag to compare

Full changelog:

  • [Doc] Add docstring for AutoDiff part (#2630) (by ljcc0930)
  • [vulkan] Move SPIR-V type capabilities into VulkanCapabilities & fix compilation errors (#2628) (by Yu Chang)
  • [vulkan] Use native struct types when supported & fix performance (#2621) (by Bob Cao)
  • [vulkan] Dynamically load Vulkan (#2623) (by Dunfan Lu)
  • [vulkan] Fix vulkan rand (#2622) (by Dunfan Lu)
  • [benchmark] Add query_kernel_profiler_() and benchmark/misc for performance monitoring (#2601) (by rocket)
  • [vulkan] Detect Vulkan / SPIR-V version & enabling required features (#2615) (by Bob Cao)
  • [vulkan] Add SPIRV-Headers as a submodule (#2608) (by Ye Kuang)
  • [ci] Prevent clang OOM (#2620) (by Ye Kuang)
  • [IR] Init GlobalTensorElementExpression and PtrOffsetStmt (#2543) (by squarefk)
  • [Lang] [refactor] Move SNode property calculation from materialization time to construction time (#2600) (by Yi Xu)
  • [Doc] Add python docstring in misc/util.py (#2599) (by rocket)
  • [Doc] Fix typo of PR #2586 (#2613) (by ljcc0930)
  • [vulkan] Draft: Remove shaderc on Windows & Add spirv-tools's optimization (#2605) (by Bob Cao)
  • [Lang] Support to destroy a SnodeTree and manage the memory (#2583) (by ljss)
  • [Refactor] Split transformer.py into StmtBuilder and ExprBuilder (Stage 1) (#2495) (by xumingkuan)
  • [Doc] Add Python docstring for some operators (#2586) (by ljss)
  • [Doc] Doc string for common_ops.py (#2611) (by ljcc0930)
  • [Doc] Fix return type of Python Docstring in ops.py (#2609) (by Rachel Gu)
  • [Doc] Add Python docstrings for several APIs (#2606) (by Ye Kuang)
  • [doc] Add python docstring for gui.py (#2604) (by Jiasheng Zhang)
  • [Doc] Add Python docstring for functions in matrix.py, impl.py, util.py and ops.py (#2602) (by Mingrui Zhang)
  • [opengl] Work group reduction (#2595) (by Bob Cao)
  • [bug] [vulkan] Fix bugs in SPIR-V codegen exposed under Linux (#2603) (by Yu Chang)
  • [Docs] Add docs for Expr class and functions in linalg.py (#2597) (by squarefk)
  • [Refactor] Added axes() function in impl.py (#2594) (by cruedo)
  • [ci] Fix one tiny bug (#2598) (by Jiasheng Zhang)
  • [ci] Fix appveyor with new building procedure (#2596) (by Jiasheng Zhang)
  • [Doc] Add Python docstring in several places (#2592) (by Yi Xu)
  • [Doc] Add Python Docstring in ops.py (#2593) (by Rachel Gu)
  • [Doc] Add Python docstring for Matrix class (#2587) (by FantasyVR)
  • [bug] recursively include examples in distribution script (#2591) (by Andrew Sun)
  • [Vulkan] Add SPIR-V codegen on Vulkan backend (#2582) (by Yu Chang)
  • [Doc] Add python docstring for misc.image class (#2589) (by Yidong Ma)
  • [Misc] Ignore the warning when first time finalizing ti.root(). (#2584) (by ljcc0930)
  • [ci] Correct windows build and test in CI (#2576) (by Jiasheng Zhang)
  • [refactor] Correct a few indices->axes renamings (#2577) (by Ye Kuang)
  • [Doc] Add Python docstring for SNode (#2580) (by Ye Kuang)
  • [opengl] Use OpenGL window visible hint instead of hiding after creation (#2581) (by Bob Cao)
  • [Refactor] Renamed ti.Index to ti.Axis (#2560) (by cruedo)
  • [Perf] Reduce GL backend's overhead (driver overhead & copy overhead) (#2532) (by Bob Cao)
  • [IR] Update CHI example to match SNode API (#2574) (by bx2k)
  • [Lang] Change the data layout for vector fields with that needs grad (#2575) (by Dunfan Lu)
  • [Vulkan] Add Vulkan to Taichi (#2573) (by Ye Kuang)
  • [IR] Support "packed" mode where shape will not be padded to a power of two (#2541) (by Yi Xu)
  • [vulkan] Split into managed and reference devices (#2570) (by Ye Kuang)
  • [Metal] Change Aot module for handling template arguments (#2529) (by Rachel Gu)
  • [refactor] Cleaned taichi/core/settings related import (#2567) (by Jiasheng Zhang)
  • [vulkan] Add Vulkan launcher (#2562) (by Ye Kuang)
  • [Bug] Fix racing in llvm bc generation. (#2569) (by Ailing)
  • [ci] Quick fix: bugs in upload.py (#2568) (by Jiasheng Zhang)
  • [ci] Allow build specific commit when uploading, used new building procedure. (#2563) (by Jiasheng Zhang)
  • [vulkan] Add GLSL-based codegen for Vulkan (#2557) (by Ye Kuang)

v0.7.26

12 Jul 07:54
e37bdb5
Compare
Choose a tag to compare

Highlights

Starting from this release, you can create new ti.field instances after invoking a kernel! 🎉 Note that this feature is currently supported on the CPU and the CUDA backend.

Full changelog:

  • [refactor] remove global_program in kernel.cpp (#2508) (by ljcc0930)
  • [misc] Added palette in taichi GUI for circles (#2504) (by Jiasheng Zhang)
  • [lang] Support ti.fields with shape after materialized (#2503) (by ljcc0930)
  • [doc] Add a basic doc explaining how to run Taichi CPP tests (#2502) (by Ye Kuang)
  • [lang] Support ti.FieldsBuilder() (#2501) (by ljcc0930)
  • [misc] Add needs_grad property for SNode (#2500) (by ljcc0930)
  • [lang] Support fake FieldsBuilder() with same memory location (#2493) (by ljcc0930)
  • [ci] Fix appveyor (#2496) (by Ye Kuang)
  • [ir] Add some comments to implementation of CFG optimizations and analyses (#2474) (by xumingkuan)
  • [Doc] Add .md documentation (#2494) (by Taichi Gardener)
  • [Example] Refactor example library (#2475) (by Andrew Sun)
  • [Doc] Remove all .rst docs (#2492) (by Taichi Gardener)
  • [Refactor] [cuda] Cleanup CUDA AtomicOpStmt codegen (#2490) (by Dunfan Lu)
  • [Perf] [cuda] Use warp reduction to improve reduction performance (#2487) (by Dunfan Lu)
  • [vulkan] Add kernel metadata and utils (#2481) (by Ye Kuang)
  • [opengl] [refactor] Use macro to generate atomic float functions (#2486) (by xndcn)