Taichi

Latest version: v1.7.2

Safety actively analyzes 685670 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 5 of 23

1.2

Support for Multiple Return Values in Taichi Kernel:
In this update, we've introduced the capability to return multiple values from a Taichi kernel. This can be achieved by specifying a tuple as the return type. You can directly use `(ti.f32, s0)` as the type hint or write the type hint in Python manner like `typing.Tuple[ti.f32, s0]` or for Python 3.9 and above, `tuple[ti.f32, s0]` . The following example illustrates this new feature:


s0 = ti.types.struct(a=ti.math.vec3, b=ti.i16)

ti.real_func
def foo() -> (ti.f32, s0):
return 1, s0(a=ti.math.vec3([100, 0.5, 3]), b=1)

ti.kernel
def bar() -> (ti.f32, s0):
return foo()

ret1, ret2 = bar()

1.2.0

Starting from the v1.2.0 release, Taichi follows [semantic versioning](https://semver.org/) where regular releases cutting from master branch bumps MINOR version and PATCH version is only bumped when cherry-picking critial bug fixes.

Deprecation Notice

Indexing multi-dimensional `ti.ndrange()` with a single loop index will be disallowed in future releases.

Highlights

New features

Offline Cache
We introduced the offline cache on CPU and CUDA backends in [v1.1.0](https://github.com/taichi-dev/taichi/releases/tag/v1.1.0). In this release, we support this feature on other backends, including Vulkan, OpenGL, and Metal.
- If your code behaves abnormally, disable offline cache by setting the environment variable `TI_OFFLINE_CACHE=0` or `offline_cache=False` in the `ti.init()` method call and file an issue with us on [Taichi's GitHub repo](https://github.com/taichi-dev/taichi/issues/new/choose).
- See [Offline cache](https://docs.taichi-lang.org/docs/performance#offline-cache) for more information.

GDAR (Global Data Access Rule)
A checker is provided for detecting potential violations of global data access rules.
1. The checker only works in debug mode. To enable it, set `debug=True` when calling `ti.init()`.
2. Set `validation=True` when using `ti.ad.Tape()` to validate the kernels captured by `ti.ad.Tape()`.
If a violation occurs, the checker pinpoints the line of code breaking the rules.

For example:

import taichi as ti
ti.init(debug=True)

N = 5
x = ti.field(dtype=ti.f32, shape=N, needs_grad=True)
loss = ti.field(dtype=ti.f32, shape=(), needs_grad=True)
b = ti.field(dtype=ti.f32, shape=(), needs_grad=True)

ti.kernel
def func_1():
for i in range(N):
loss[None] += x[i] * b[None]

ti.kernel
def func_2():
b[None] += 100

b[None] = 10
with ti.ad.Tape(loss, validation=True):
func_1()
func_2()

"""
taichi.lang.exception.TaichiAssertionError:
(kernel=func_2_c78_0) Breaks the global data access rule. Snode S10 is overwritten unexpectedly.
File "across_kernel.py", line 16, in func_2:
b[None] += 100
^^^^^^^^^^^^^^
"""


Improvements

Performance
Improved Vulkan performance with loops (6072) (by **Lin Jiang**)

Python Frontend

- PrefixSumExecutor is added to improve the performance of prefix-sum operations. The legacy prefix-sum function allocates auxiliary gpu buffers at every function call, which causes an obvious performance problem. The new PrefixSumExecutor is able to avoid allocating buffers again and again. For arrays with the same length, the PrefixSumExecutor only needs to be initialized once, then it is able to perform any number of times prefix-sum operations without redundant field allocations. The prefix-sum operation is only supported on CUDA backend currently. (6132) (by **Yu Zhang**)

Usage:

N = 100
arr0 = ti.field(dtype, N)
arr1 = ti.field(dtype, N)
arr2 = ti.field(dtype, N)
arr3 = ti.field(dtype, N)
arr4 = ti.field(dtype, N)

initialize arr0, arr1, arr2, arr3, arr4, ...
...

Performing an inclusive in-place's parallel prefix sum,
only one executor is needed for a specified sorting length.
executor = ti.algorithms.PrefixSumExecutor(N)
executor.run(arr0)
executor.run(arr1)
executor.run(arr2)
executor.run(arr3)
executor.run(arr4)


- Runtime integer overflow detection on addition, subtraction, multiplication and shift left operators on Vulkan, CPU and CUDA backends is now available when debug mode is on. To use overflow detection on Vulkan backend, you need to enable printing, and the overflow detection of 64-bit multiplication on Vulkan backend requires NVIDIA driver 510 or higher. (6178) (6279) (by **Lin Jiang**)

For the following program:

import taichi as ti

ti.init(debug=True)

ti.kernel
def add(a: ti.u64, b: ti.u64)->ti.u64:
return a + b

add(2 ** 63, 2 ** 63)
The following warning is printed at runtime:
Addition overflow detected in File "/home/lin/test/overflow.py", line 7, in add:
return a + b
^^^^^


- Printing is now supported on Vulkan backend on Unix/Windows platforms. To enable printing on vulkan backend, follow instructions at https://docs.taichi-lang.org/docs/master/debugging#applicable-backends (6075) (by **Ailing**)

GGUI
- Setting the initial position of GGUI window is now supported. Please refer to this link https://docs.taichi-lang.org/docs/master/ggui#create-a-window to checkout details and usage. (6156) (by **Mocki**)

Taichi Examples
Three new examples from community contributors are also merged in this release. They include:
- Animating the fundamental solution of a Laplacian equation, (6249) (by **bismarckkk**)
- Animating the Kerman vortex street using LBM, (6249) (by **hietwl**)
- Animating the two streams of instability (6249) (by **JiaoLuhuai**)

You can view these examples by running ti example in terminal and select the corresponding index.

Important bug fixes
- "ti.data_oriented" class instance now correctly releases its allocated memory upon garbage collection. (6256) (by **Zhanlue Yang**)
- "ti.fields" can now be correctly indexed using non-i32 typed indices. (6276) (by **Zhanlue Yang**)
- "ti.select" and "ti.ifte" can now be printed correctly in Taichi Kernels. (6297) (by **Zhanlue Yang**)
- Before this release, setting u64 arguments with numbers greater than 2^63 raises error, and u64 return values are treated as i64 in Python (integers greater than 2^63 are returned as negative numbers). This release fixed those two bugs. (6267) (6364) (by **Lin Jiang**)
- Taichi now raises an error when the number of the loop variables does not match the dimension of the ndrange for loop instead of malfunctioning. (6360) (by **Lin Jiang**)
- calling ti.append with vector/matrix now throws more proper error message. (6322) (by **Ailing**)
- Division on unsigned integers now works properly on LLVM backends. (6128) (by **Yi Xu**)
- Operator ">>=" now works properly. (6153) (by **Yi Xu**)
- Numpy int is now allowed for SNode shape setting. (6211) (by **Yi Xu**)
- Dimension check for GlobalPtrStmt is now aware of whether it is a cell access. (6275) (by **Yi Xu**)
- Before this release, Taichi autodiff may fail in cases where the condition of an if statement depends on the index of a outer for-loop. The bug has been fixed in this release. (6207) (by **Mingrui Zhang**)

Full changelog:
- [Error] Deprecate ndrange with number of the loop variables != the dimension of the ndrange (6422) (by **Lin Jiang**)
- Adjust aot_demo.sh (by **jim19930609**)
- [error] Warn Linux users about manylinux2014 build on startup i(6416) (by **Proton**)
- [misc] Bug fix (by **jim19930609**)
- [misc] Bump version (by **jim19930609**)
- [vulkan] [bug] Stop using the buffer device address feature on macOS (6415) (by **Yi Xu**)
- [Lang] [bug] Allow filling a field with Expr (6391) (by **Yi Xu**)
- [misc] Rc v1.2.0 cherry-pick PR number 2 (6384) (by **Zhanlue Yang**)
- [misc] Revert PR 6360 (6386) (by **Zhanlue Yang**)
- [misc] Rc v1.2.0 c1 (6380) (by **Zhanlue Yang**)
- [bug] Fix potential bug in 6362 (6363) (6371) (by **Zhanlue Yang**)
- [example] Add example "laplace equation" (6302) (by **猫猫子Official**)
- [ci] Android Demo: leave Docker containers intact for debugging (6357) (by **Proton**)
- [autodiff] Skip gradient kernel compilation for validation kernel (6356) (by **Mingrui Zhang**)
- [autodiff] Move autodiff gdar checker to release (6355) (by **Mingrui Zhang**)
- [aot] Removed constraint on same-allocation copy (6354) (by **PENGUINLIONG**)
- [ci] Add new performance monitoring (6349) (by **Proton**)
- [dx12] Only use llvm to compile dx12. (6339) (by **Xiang Li**)
- [opengl] Fix with_opengl when TI_WITH_OPENGL is off (6353) (by **Ailing**)
- [Doc] Add instructions about running clang-tidy checks locally (by **Ailing Zhang**)
- [build] Enable readability-redundant-member-init in clang-tidy check (by **Ailing Zhang**)
- [build] Enable TI_WITH_VULKAN and TI_WITH_OPENGL for clang-tidy checks (by **Ailing Zhang**)
- [build] Enable a few modernize checks in clang-tidy (by **Ailing Zhang**)
- [autodiff] Recover kernel autodiff mode after validation (6265) (by **Mingrui Zhang**)
- [test] Adjust rtol for sparse_linear_solver tests (6352) (by **Ailing**)
- [lang] MatrixType bug fix: Fix array indexing with MatrixType-index (6323) (by **Zhanlue Yang**)
- [Lang] MatrixNdarray refactor part13: Add scalarization for TernaryOpStmt (6314) (by **Zhanlue Yang**)
- [Lang] MatrixNdarray refactor part12: Add scalarization for AtomicOpStmt (6312) (by **Zhanlue Yang**)
- [build] Enable a few modernize checks in clang-tidy (by **Ailing Zhang**)
- [build] Enable google-explicit-constructor check in clang-tidy (by **Ailing Zhang**)
- [build] Enable google-build-explicit-make-pair check in clang-tidy (by **Ailing Zhang**)
- [build] Enable a few bugprone related rules in clang-tidy (by **Ailing Zhang**)
- [build] Enable modernize-use-override in clang-tidy (by **Ailing Zhang**)
- [ci] Use .clang-tidy for check_static_analyzer job (by **Ailing Zhang**)
- [mesh] Support arm64 backend for MeshTaichi (6329) (by **Chang Yu**)
- [lang] Throw proper error message if calling ti.append with vector/matrix (6322) (by **Ailing**)
- [aot] Fixed buffer device address import (6326) (by **PENGUINLIONG**)
- [aot] Fixed export of get_instance_proc_addr (6324) (by **PENGUINLIONG**)
- [build] Allow building test when LLVM is off (6327) (by **Ailing**)
- [bug] Fix generating LLVM AOT module for the second time failed (6311) (by **PGZXB**)
- [aot] Per-parameter documentation in C-API header (6317) (by **PENGUINLIONG**)
- [ci] Revert "Add end-to-end CI tests for meshtaichi (6321)" (6325) (by **Proton**)
- [ci] Add end-to-end CI tests for meshtaichi (6321) (by **yixu**)
- [doc] Update the document about offline cache (6313) (by **PGZXB**)
- [aot] Include taichi_cpu.h in taich.h (6315) (by **Zhanlue Yang**)
- [Vulkan] [bug] Change the format string of 64bit unsigned integer type from %llu to %lu (6308) (by **Lin Jiang**)
- [mesh] Refactor MeshTaichi API (6306) (by **Chang Yu**)
- [lang] MatrixType bug fix: Allow dynamic_index=True when real_matrix_scalarize=True (6304) (by **Yi Xu**)
- [lang] MatrixType bug fix: Enable irpass::cfg_optimization if real_matrix_scalarize is on (6300) (by **Zhanlue Yang**)
- [metal] Enable offline cache by default on Metal (6307) (by **PGZXB**)
- [Vulkan] Add overflow detection on vulkan when debug=True (6279) (by **Lin Jiang**)
- [aot] Inline documentations (6301) (by **PENGUINLIONG**)
- [aot] Support exporting interop info for TiMemory on Cpu/Cuda backends (6242) (by **Zhanlue Yang**)
- [lang] MatrixType bug fix: Avoid checks for legacy Matrix-class when real_matrix is on (6292) (by **Zhanlue Yang**)
- [aot] Support setting vector/matrix argument in C++ wrapper of C-API (6298) (by **Ailing**)
- [lang] MatrixType bug fix: Fix MatrixType validations in build_call_if_is_type() (6294) (by **Zhanlue Yang**)
- [bug] Fix asserting failed when registering kernels with same name on Metal (6271) (by **PGZXB**)
- [ci] Add more release tests (5839) (by **Proton**)
- [lang] MatrixType bug fix: Allow indexing a matrix r-value (6291) (by **Yi Xu**)
- [bug] Fix duplicate runs with 'run_tests.py --cpp -k' when selecting AOT tests (6296) (by **Zhanlue Yang**)
- [bug] Fix segmentation fault with TextureOpStmt ir_printer (6297) (by **Zhanlue Yang**)
- [ci] Add taichi-aot-demo headless demos (6280) (by **Proton**)
- [bug] Serialize missing fields of metal::TaichiKernelAttributes and metal::KernelAttributes (6270) (by **PGZXB**)
- [metal] Implement offline cache cleaning on metal (6272) (by **PGZXB**)
- [aot] Reorganized C-API headers (6199) (by **PENGUINLIONG**)
- [lang] [bug] Fix setting integer arguments within u64 range but greater than i64 range (6267) (by **Lin Jiang**)
- [autodiff] Skip gdar checking for user defined grad kernel (6273) (by **Mingrui Zhang**)
- [bug] Fix AotModuleBuilder::add_compiled_kernel (6287) (by **PGZXB**)
- [Bug] [lang] Make dimension check for GlobalPtrStmt aware of whether it is a cell access (6275) (by **Yi Xu**)
- [refactor] Move setting visible device to vulkan instance initialization (by **Ailing Zhang**)
- [bug] Add unit test to detect memory leak from data_oriented classes (6278) (by **Zhanlue Yang**)
- [aot] Ship runtime *.bc files with C-API for LLVM AOT (6285) (by **Zhanlue Yang**)
- [bug] Convert non-i32 type indices to i32 for GlobalPtrStmt (6276) (by **Zhanlue Yang**)
- [Doc] Renamed syntax.md to kernel_function.md, plus miscellaneous edits (6277) (by **Vissidarte-Herman**)
- [lang] Fixed validation scope (6262) (by **PENGUINLIONG**)
- [bug] Prevent ti.kernel from directly caching the passed-in arguments to avoid memory leak (6256) (by **Zhanlue Yang**)
- [autodiff] Add demote atomics before gdar checker (6266) (by **Mingrui Zhang**)
- [autodiff] Add grad check feature and related test (6245) (by **PhrygianGates**)
- [lang] Fixed contraction cast (6255) (by **PENGUINLIONG**)
- [Example] Add karman vortex street example (6249) (by **Zhao Liang**)
- [ci] Lift GitHub CI timeout (6260) (by **Proton**)
- [metal] Support offline cache on metal (6227) (by **PGZXB**)
- [dx12] Add DirectX-Headers as a submodule (6259) (by **Xiang Li**)
- [bug] Fix link error with TI_WITH_OPENGL:BOOL=ON but TI_WITH_VULKAN:BOOL=OFF (6257) (by **PGZXB**)
- [dx12] Disable DX12 for cpu only test. (6253) (by **Xiang Li**)
- [Lang] MatrixNdarray refactor part11: Fuse ExternalPtrStmt and PtrOffsetStmt (6189) (by **Zhanlue Yang**)
- [Doc] Rename index.md to hello_world.md (6244) (by **Vissidarte-Herman**)
- [Doc] Update syntax.md (6236) (by **Zhao Liang**)
- [spirv] Generate OpBitFieldUExtract for BitExtractStmt (6208) (by **Yi Xu**)
- [Bug] [lang] Allow numpy int as snode dimension (6211) (by **Yi Xu**)
- [doc] Update document about building and running Taichi C++ tests (6228) (by **PGZXB**)
- [misc] Disable the offline cache if printing ir is enabled (6234) (by **PGZXB**)
- [vulkan] [opengl] Enable offline cache by default on Vulkan and OpenGL (6233) (by **PGZXB**)
- [Doc] Update math_module.md (6235) (by **Zhao Liang**)
- [Doc] Update debugging.md (6238) (by **Zhao Liang**)
- [dx12] Add ti.dx12. (6174) (by **Xiang Li**)
- [lang] Set ret_type for AtomicOpStmt (6213) (by **Ailing**)
- [Doc] Update global settings (6201) (by **Olinaaaloompa**)
- [doc] Editorial updates (6216) (by **Vissidarte-Herman**)
- [Doc] Update hello world (6191) (by **Olinaaaloompa**)
- [Doc] Update math module (6203) (by **Olinaaaloompa**)
- [Doc] Update profiler (6214) (by **Olinaaaloompa**)
- [autodiff] Store if condition in adstack (6207) (by **Mingrui Zhang**)
- [Doc] Update debugging.md (6212) (by **Zhao Liang**)
- [Doc] Update debugging.md (6200) (by **Zhao Liang**)
- [bug] Fixed type inference error with ExternalPtrStmt (6210) (by **Zhanlue Yang**)
- [example] Request to add my code into examples (6185) (by **JiaoLuhuai**)
- [Lang] MatrixNdarray refactor part10: Remove redundant MatrixInitStmt generated from scalarization (6171) (by **Zhanlue Yang**)
- [aot] Apply ti_get_last_error_message() for all C-API test cases (6195) (by **Zhanlue Yang**)
- [llvm] [refactor] Merge create_call and call (6192) (by **Lin Jiang**)
- [build] Support executing manually-specified cpp tests for run_tests.py (6206) (by **Zhanlue Yang**)
- [doc] Editorial updates to field.md (6202) (by **Vissidarte-Herman**)
- [Lang] MatrixNdarray refactor part9: Add scalarization for AllocaStmt (6168) (by **Zhanlue Yang**)
- [Lang] Support GPU solve with analyzePattern and factorize (6158) (by **pengyu**)
- [Lang] MatrixField refactor 9/n: Allow dynamic index of matrix field when real_matrix=True (6194) (by **Yi Xu**)
- [Doc] Fixed broken links (6193) (by **Olinaaaloompa**)
- [ir] MatrixField refactor 8/n: Rename PtrOffsetStmt to MatrixPtrStmt (6187) (by **Yi Xu**)
- [Doc] Update field.md (6182) (by **Zhao Liang**)
- [bug] Relax dependent Pillow version (6170) (by **Ailing**)
- [Doc] Update data_oriented_class.md (6181) (by **Zhao Liang**)
- [Doc] Update kernels and functions (6176) (by **Zhao Liang**)
- [Doc] Update type.md (6180) (by **Zhao Liang**)
- [Doc] Update getting started (6175) (by **Zhao Liang**)
- [llvm] MatrixField refactor 7/n: Simplify codegen for TensorType allocation and access (6169) (by **Yi Xu**)
- [LLVM] Add runtime overflow detection on LLVM-based backends (6178) (by **Lin Jiang**)
- Revert "[LLVM] Add runtime overflow detection on LLVM-based backends" (6177) (by **Ailing**)
- [dx12] Add aot for dx12. (6099) (by **Xiang Li**)
- [LLVM] Add runtime overflow detection on LLVM-based backends (6166) (by **Lin Jiang**)
- [doc] C-API documentation & generator (5736) (by **PENGUINLIONG**)
- [gui] Support for setting the initial position of GGUI window (6156) (by **Mocki**)
- [metal] Maintain a print string table per kernel (6160) (by **PGZXB**)
- [Lang] MatrixNdarray refactor part8: Add scalarization for BinaryOpStmt with TensorType-operands (6086) (by **Zhanlue Yang**)
- [Doc] Refactor debugging (6102) (by **Olinaaaloompa**)
- [doc] Updated the position of Sparse Matrix (6167) (by **Vissidarte-Herman**)
- [Doc] Refactor global settings (6071) (by **Zhao Liang**)
- [Doc] Refactor external arrays (6065) (by **Zhao Liang**)
- [Doc] Refactor simt (6151) (by **Zhao Liang**)
- [Doc] Refactor Profiler (6142) (by **Olinaaaloompa**)
- [Doc] Add doc for math module (6145) (by **Zhao Liang**)
- [aot] Fixed texture interop (6164) (by **PENGUINLIONG**)
- [misc] Remove TI_UI namespace macros (6163) (by **Lin Jiang**)
- [llvm] Add comment about the structure of the CodeGen (6150) (by **Lin Jiang**)
- [Bug] [lang] Fix augmented assign for sar (6153) (by **Yi Xu**)
- [Test] Add scipy to test GPU sparse solver (6162) (by **pengyu**)
- [bug] Fix crashing when loading old offline cache files (for gfx backends) (6157) (by **PGZXB**)
- [lang] Remove print at the end of parallel sort (6161) (by **Haidong Lan**)
- [misc] Move some offline cache utils from analysis/ to util/ (6155) (by **PGZXB**)
- [Lang] Matrix/Vector refactor: support basic matrix ops (6077) (by **Mike He**)
- [misc] Remove namespace macros (6154) (by **Lin Jiang**)
- [Doc] Update gui_system (6152) (by **Zhao Liang**)
- [aot] Track layouts for imported image & tests (6138) (by **PENGUINLIONG**)
- [ci] Fix build cache problems (6149) (by **Proton**)
- [Misc] Add prefix sum executor to avoid multiple field allocations (6132) (by **YuZhang**)
- [opt] Cache loop-invariant global vars to local vars (6072) (by **Lin Jiang**)
- [aot] Improve C++ wrapper implementation (6146) (by **PENGUINLIONG**)
- [doc] Refactored ODOP (6143) (by **Vissidarte-Herman**)
- [Lang] Support basic sparse matrix operations on GPU. (6082) (by **Jiafeng Liu**)
- [Lang] MatrixField refactor 6/n: Add tests for MatrixField scalarization (6137) (by **Yi Xu**)
- [vulkan] Fix SPV physical ptr load alignment (6139) (by **Bob Cao**)
- [bug] Let every thread has its own CompileConfig (6124) (by **Lin Jiang**)
- [refactor] Remove redundant codegen of floordiv (6135) (by **Yi Xu**)
- [doc] Miscellaneous editorial updates (6131) (by **Vissidarte-Herman**)
- Revert "[spirv] Fixed OpLoad with physical address" (6136) (by **Lin Jiang**)
- [bug] [llvm] Fix is_same_type when the suffix of a type is the prefix of the suffix of the other type (6126) (by **Lin Jiang**)
- [bug] [vulkan] Only enable non_semantic_info cap when validation layer is on (6129) (by **Ailing**)
- [Llvm] Fix codegen for div (unsigned) (6128) (by **Yi Xu**)
- [Lang] MatrixField refactor 5/n: Lower access of matrix field element into CHI IR (6119) (by **Yi Xu**)
- [Lang] Fix invalid assertion for matrix values (6125) (by **Zhanlue Yang**)
- [opengl] Fix GLES support (6121) (by **Ailing**)
- [Lang] MatrixNdarray refactor part7: Add scalarization for UnaryOpStmt with TensorType-operand (6080) (by **Zhanlue Yang**)
- [doc] Editorial updates (6116) (by **Vissidarte-Herman**)
- [misc] Allow more commits in changelog generation (6115) (by **Yi Xu**)
- [aot] Import MoltenVK (6090) (by **PENGUINLIONG**)
- [vulkan] Instruct users to install vulkan sdk if they want to use validation layer (6098) (by **Ailing**)
- [ci] Use local caches on self-hosted runners, and code refactoring. (5846) (by **Proton**)
- [misc] Bump version to v1.1.4 (6112) (by **Taichi Gardener**)
- [doc] Fixed a broken link (6111) (by **Vissidarte-Herman**)
- [doc] Update explanation on data-layout (6110) (by **Qian Bao**)
- [Doc] Move developer utilities to contribution (6109) (by **Olinaaaloompa**)
- [Doc] Added Accelerate PyTorch (6106) (by **Vissidarte-Herman**)
- [Doc] Refactor ODOP (6013) (by **Zhao Liang**)
- [opengl] Support offline cache on opengl (6104) (by **PGZXB**)
- [build] Fix building with TI_WITH_OPENGL:BOOL=OFF and TI_WITH_DX11:BOOL=ON failed (6108) (by **PGZXB**)

1.1.3

Highlights:
- **Aot module**
- Added texture interfaces to C-API (5520) (by **PENGUINLIONG**)
- **Bug fixes**
- Disable vkCmdWriteTimestamp with MacOS to enable tests on Vulkan (6020) (by **Zhanlue Yang**)
- Fix printing i8/u8 (5893) (by **Yi Xu**)
- Fix wrong type cast in codegen of storing quant floats (5818) (by **Yi Xu**)
- Remove wrong optimization: Float x // 1 -> x (5672) (by **Yi Xu**)
- **Build system**
- Clean up Taichi core cmake (5595) (by **Bo Qiao**)
- **CI/CD workflow**
- Update torch and cuda version (6054) (by **pengyu**)
- **Documentation**
- Refactor field (6006) (by **Zhao Liang**)
- Update docstring of pow() (6046) (by **Yi Xu**)
- Fix spelling of numerical and nightly in README.md (6025) (by **Lauchlin**)
- Added Accelerate Python (5940) (by **Vissidarte-Herman**)
- New FAQs added (5784) (by **Olinaaaloompa**)
- Update type cast (5831) (by **Zhao Liang**)
- Update global_settings.md (5764) (by **Zhao Liang**)
- Update init docstring (5759) (by **Zhao Liang**)
- Add introduction to quantized types (5705) (by **Yi Xu**)
- Add docs for GGUI's new features (5647) (by **Mocki**)
- Add introduction to forward mode autodiff (5680) (by **Mingrui Zhang**)
- Add doc about offline cache (5646) (by **Mingming Zhang**)
- Typo in the doc. (5652) (by **dongqi shen**)
- **Error messages**
- Add error when breaking/continuing a static for inside non-static if (5755) (by **Lin Jiang**)
- Do not show warning when the offline cache path does not exist (5747) (by **Lin Jiang**)
- **Language and syntax**
- Sort coo to build correct csr format sparse matrix on GPU (6050) (by **pengyu**)
- MatrixNdarray refactor part6: Add scalarization for LocalLoadStmt & GlobalLoadStmt with TensorType (6024) (by **Zhanlue Yang**)
- MatrixField refactor 4/n: Disallow invalid matrix field definition (6074) (by **Yi Xu**)
- Fixes matrix-vector multiplication (6014) (by **Mike He**)
- MatrixNdarray refactor part5: Add scalarization for LocalStoreStmt & GlobalStoreStmt with TensorType (5946) (by **Zhanlue Yang**)
- Deprecate SOA-layout for NdarrayMatrix/NdarrayVector (6030) (by **Zhanlue Yang**)
- Indexing for new local matrix implementation (5783) (by **Mike He**)
- Make scalar kernel arguments immutable (5990) (by **Lin Jiang**)
- Demote pow() with integer exponent (6044) (by **Yi Xu**)
- Support abs(i64) (6018) (by **Yi Xu**)
- MatrixNdarray refactor part4: Lowered TensorType to CHI IR level for elementwise-indexed MatrixNdarray (5936) (by **Zhanlue Yang**)
- MatrixNdarray refactor part3: Enable TensorType for MatrixNdarray at Frontend IR level (5900) (by **Zhanlue Yang**)
- Support linear system solving on GPU with cuSolver (5860) (by **pengyu**)
- MatrixNdarray refactor part2: Remove redundant members in python-scope AnyArray (5885) (by **Zhanlue Yang**)
- MatrixNdarray refactor part1: Refactor Taichi kernel argument to use TensorType (5881) (by **Zhanlue Yang**)
- MatrixNdarray refactor part0: Support direct TensorType construction in Ndarray and refactor use of element_shape (5875) (by **Zhanlue Yang**)
- Enable definition of local matrices/vectors (5782) (by **Mike He**)
- Build csr sparse matrix on GPU using coo format ndarray (5838) (by **pengyu**)
- Add python_scope decorator for selected MatrixNdarray/VectorNdarray methods (5844) (by **Zhanlue Yang**)
- Make python scope comparison return 1 instead of -1 (5840) (by **daylily**)
- Allow implicit conversion of integer types in if conditions (5763) (by **daylily**)
- Support sparse matrix on GPU (5185) (by **pengyu**)
- Improve loop error message and remove the check for real type id (5792) (by **Zhao Liang**)
- Implement index validation for matrices/vectors (5605) (by **Mike He**)
- **MeshTaichi**
- Fix nested mesh for (6062) (by **Chang Yu**)
- **Vulkan backend**
- Track image layout internally (5597) (by **PENGUINLIONG**)

Full changelog:
- [bug] [gui] Fix a bug of drawing mesh instacing that cpu/cuda objects have an offset when copying to vulkan object (6028) (by **Mocki**)
- [bug] Fix cleaning cache failed (6100) (by **PGZXB**)
- [aot] Support multi-target builds for Apple M1 (6083) (by **PENGUINLIONG**)
- [spirv] [refactor] Rename debug_ segment to names_ (6094) (by **Ailing**)
- [dx12] Update codegen for range_for and mesh_for (6092) (by **Xiang Li**)
- [gui] Direct image presentation & faster direct copy routine (6085) (by **Bob Cao**)
- [vulkan] Support printing in debug mode on vulkan backend (6075) (by **Ailing**)
- [bug] Fix crashing when loading old offline cache files (6089) (by **PGZXB**)
- [ci] Update prebuild binary for llvm 15. (6091) (by **Xiang Li**)
- [example] Add RHI examples (5969) (by **Bob Cao**)
- [aot] Pragma once in taichi.cpp (6088) (by **PENGUINLIONG**)
- [Lang] Sort coo to build correct csr format sparse matrix on GPU (6050) (by **pengyu**)
- [build] Refactor test infrastructure for AOT tests (6064) (by **Zhanlue Yang**)
- [Lang] MatrixNdarray refactor part6: Add scalarization for LocalLoadStmt & GlobalLoadStmt with TensorType (6024) (by **Zhanlue Yang**)
- [Lang] MatrixField refactor 4/n: Disallow invalid matrix field definition (6074) (by **Yi Xu**)
- [bug] Remove unnecessary lower() in AotModuleBuilder::add (6068) (by **PGZXB**)
- [lang] Preserve shape info for Vectors (6076) (by **Mike He**)
- [misc] Simplify PR template (6063) (by **Ailing**)
- [Bug] Disable vkCmdWriteTimestamp with MacOS to enable tests on Vulkan (6020) (by **Zhanlue Yang**)
- [bug] Set cfg.offline_cache after reset() (6073) (by **PGZXB**)
- [ci] [dx12] Enable dx12 build for windows cpu ci. (6069) (by **Xiang Li**)
- [ci] Upgrade conda cudatoolkit version to 11.3 (6070) (by **Proton**)
- [Mesh] [bug] Fix nested mesh for (6062) (by **Chang Yu**)
- [Lang] Fixes matrix-vector multiplication (6014) (by **Mike He**)
- [ir] MatrixField refactor 3/n: Add MatrixFieldExpression (6010) (by **Yi Xu**)
- [dx12] Drop code for llvm passes which prepare for DXIL generation. (5998) (by **Xiang Li**)
- [aot] Guard C-API interfaces with try-catch (6060) (by **PENGUINLIONG**)
- [CI] Update torch and cuda version (6054) (by **pengyu**)
- [Lang] MatrixNdarray refactor part5: Add scalarization for LocalStoreStmt & GlobalStoreStmt with TensorType (5946) (by **Zhanlue Yang**)
- [Lang] Deprecate SOA-layout for NdarrayMatrix/NdarrayVector (6030) (by **Zhanlue Yang**)
- [aot] Dump required device capability in AOT module meta (6056) (by **PENGUINLIONG**)
- [Doc] Refactor field (6006) (by **Zhao Liang**)
- [Lang] Indexing for new local matrix implementation (5783) (by **Mike He**)
- [lang] Reformat source indicator in Python convention (6053) (by **PENGUINLIONG**)
- [misc] Enable offline cache in frontend instead of C++ Side (6051) (by **PGZXB**)
- [lang] Remove redundant codegen of integer pow (6048) (by **Yi Xu**)
- [Doc] Update docstring of pow() (6046) (by **Yi Xu**)
- [Lang] Make scalar kernel arguments immutable (5990) (by **Lin Jiang**)
- [build] Fix compile error on gcc (6047) (by **PGZXB**)
- [llvm] [refactor] Split LLVMCompiledData of kernels and tasks (6019) (by **Lin Jiang**)
- [Lang] Demote pow() with integer exponent (6044) (by **Yi Xu**)
- [doc] Refactor type system (5984) (by **Zhao Liang**)
- [test] Change deprecated make_camera() to Camera() (6009) (by **Zihua Wu**)
- [doc] Fix a typo in README.md (6033) (by **OccupyMars2025**)
- [misc] Lazy load spirv code from disk during offline cache (6000) (by **PGZXB**)
- [aot] Fixed compilation on Linux distros (6043) (by **PENGUINLIONG**)
- [bug] [test] Run C-API tests correctly on Windows (6038) (by **PGZXB**)
- [aot] C-API texture support and tests (5994) (by **PENGUINLIONG**)
- [Doc] Fix spelling of numerical and nightly in README.md (6025) (by **Lauchlin**)
- [doc] Fixed a format issue (6023) (by **Vissidarte-Herman**)
- [doc] Indenting (6022) (by **Vissidarte-Herman**)
- [Lang] Support abs(i64) (6018) (by **Yi Xu**)
- [lang] Merge ti_core.make_index_expr and ti_core.subscript (5993) (by **Zhanlue Yang**)
- [llvm] [refactor] Remove the use of vector with size=1 (6002) (by **Lin Jiang**)
- [bug] [test] Fix patch_os_environ_helper (6017) (by **Lin Jiang**)
- [ci] Remove legacy perf monitoring (to be reworked) (6015) (by **Proton**)
- Fix (5999) (by **PGZXB**)
- [doc] Format updates (6016) (by **Olinaaaloompa**)
- [refactor] Turn on torch_io tests for opengl, vulkan and dx11 backend (5997) (by **Ailing**)
- [ci] Adjust Windows GPU task buildbot tag (6008) (by **Proton**)
- Fixed compilation (6005) (by **PENGUINLIONG**)
- [autodiff] Avoid initializing Field with None (6007) (by **Yi Xu**)
- [doc] Cloth simulation tutorial (6004) (by **Olinaaaloompa**)
- [Lang] MatrixNdarray refactor part4: Lowered TensorType to CHI IR level for elementwise-indexed MatrixNdarray (5936) (by **Zhanlue Yang**)
- [llvm] [refactor] Link modules instead of cloning modules (5962) (by **Lin Jiang**)
- [dx12] Drop code for dxil generation. (5958) (by **Xiang Li**)
- [ci] Windows Build: Use PowerShell 7 (pwsh) (5996) (by **Proton**)
- Use CUDA primary context to work with PyTorch and Numba. (5992) (by **Haidong Lan**)
- [vulkan] Implement offline cache cleaning on vulkan (5968) (by **PGZXB**)
- [ir] MatrixField refactor 2/n: Rename GlobalVariableExpression to FieldExpression (5989) (by **Yi Xu**)
- [build] Add option to generate dependency graph of cmake targets (5966) (by **Ailing**)
- [autodiff] Fix matrix dual (5985) (by **Mingrui Zhang**)
- [doc] Add a note about the offline cache in the print_ir part (5986) (by **Zihua Wu**)
- [ir] MatrixField refactor 1/n: Make a GlobalVariableExpression solely represent a field (5980) (by **Yi Xu**)
- [aot] [opengl] Add GL interop so that we can export GL memory (5956) (by **Ailing**)
- [ci] Temporarily lower CUDA tests parallelism by 1 (4->3) (5981) (by **Proton**)
- [aot] Temporarily allow Vulkan extensions to be automatically enabled in C-API runtimes (5976) (by **PENGUINLIONG**)
- [cuda] Clear cuda context after init (5891) (by **Haidong Lan**)
- [ir] MatrixField refactor 0/n: Remove redundant code for SNode expressions (5964) (by **Yi Xu**)
- [test] [gui] Skip test of drawing mesh instances on Windows platform (5971) (by **Mocki**)
- [test] [gui] Add a test of fetching depth attachment (5947) (by **Mocki**)
- [test] [gui] Add a test of the display of wireframe mode (5967) (by **Mocki**)
- [aot] Support i8/u8 args in cgraph (5961) (by **Ailing**)
- RHI fixes & improvements (5950) (by **Bob Cao**)
- [test] [gui] Add a test of drawing part of mesh instances (5965) (by **Mocki**)
- [bug] Force CMAKE_OSX_ARCHITECTURES in sync with host processor's architecture to avoid ABI issues on Mac m1 (5952) (by **Zhanlue Yang**)
- [doc] Add explanatation of usage of TI_VISIBLE_DEVICE and CUDA_VISIBLE_DEVICES (5910) (by **Mocki**)
- [test] [gui] Add a test of drawing mesh instances (5963) (by **Mocki**)
- [test] [gui] Add a test of drawing part of lines (5957) (by **Mocki**)
- [doc] Refactor kernels and functions (5943) (by **Zhao Liang**)
- [dx12] Drop code for dx12 codegen. (5953) (by **Xiang Li**)
- [test] [gui] Add a test of drawing part of mesh (5955) (by **Mocki**)
- [test] [gui] Add a test of drawing part of particles (5951) (by **Mocki**)
- [test] [gui] Add a test of drawing lines (5948) (by **Mocki**)
- [llvm] [refactor] Refactor and add code about llvm modules (5941) (by **Lin Jiang**)
- [llvm] [refactor] Move the generation of struct for function to the context (5937) (by **Lin Jiang**)
- [Doc] Added Accelerate Python (5940) (by **Vissidarte-Herman**)
- [test] [gui] Add a test of fetching color attachment (5920) (by **Mocki**)
- [refactor] Refactor the implementation of cleaning offline cache files (5934) (by **PGZXB**)
- Revert "[vulkan] Less sync overhead for GGUI & Device API Examples (5880)" (5945) (by **PENGUINLIONG**)
- [vulkan] Less sync overhead for GGUI & Device API Examples (5880) (by **Bob Cao**)
- [autodiff] Fix adjoint checkbit type in gdar checker (5938) (by **Mingrui Zhang**)
- [bug] Fix undefined symbol error by isolating CacheManager as a separate target (5931) (by **PGZXB**)
- [aot] Fix LLVM submit (5930) (by **PENGUINLIONG**)
- [refactor] [llvm] Unify llvm_type() and get_data_type() (5927) (by **Yi Xu**)
- [llvm] Add attributes to LLVMCompiledData (5929) (by **Lin Jiang**)
- [llvm] [refactor] Move the common parts of compilation to the base class (5926) (by **Lin Jiang**)
- Update index.md (5928) (by **Zhao Liang**)
- [doc] Refactor "Getting Started" (5902) (by **Zhao Liang**)
- [autodiff] Support clear gradients by type (5911) (by **Mingrui Zhang**)
- [Lang] MatrixNdarray refactor part3: Enable TensorType for MatrixNdarray at Frontend IR level (5900) (by **Zhanlue Yang**)
- [aot] Taichi C-API C++ wrapper (5899) (by **PENGUINLIONG**)
- [llvm] Enhance function is_same_type (5922) (by **Lin Jiang**)
- [Lang] Support linear system solving on GPU with cuSolver (5860) (by **pengyu**)
- Bugfix: Minor issue for CUPTI kernel profiler (5879) (by **Jack He**)
- [Error] [lang] Add error when breaking/continuing a static for inside non-static if (5755) (by **Lin Jiang**)
- [llvm] [refactor] Rename methods in KernelCodeGen (5919) (by **Lin Jiang**)
- [refactor] [ir] Remove legacy LocalAddress / VectorElement / create_vector_or_scalar_type() (5918) (by **Yi Xu**)
- [autodiff] Fix validate autodiff kernel name lost (5912) (by **Mingrui Zhang**)
- [misc] Disable parallel compilation (5916) (by **Lin Jiang**)
- [refactor] [ir] Remove legacy LaneAttribute (5901) (by **Yi Xu**)
- [aot] [test] Fix c api aot tests for vulkan and opengl backend (by **Ailing Zhang**)
- [aot] Add C API for opengl backend (by **Ailing Zhang**)
- [doc] Updated forward-mode autodiff (5894) (by **Vissidarte-Herman**)
- [Lang] MatrixNdarray refactor part2: Remove redundant members in python-scope AnyArray (5885) (by **Zhanlue Yang**)
- [refactor] [ir] Remove legacy LaneAttribute usage from ExternalPtrStmt/GlobalPtrStmt (5898) (by **Yi Xu**)
- [ci] Switch windows cpu build to llvm 15. (5832) (by **Xiang Li**)
- [Lang] MatrixNdarray refactor part1: Refactor Taichi kernel argument to use TensorType (5881) (by **Zhanlue Yang**)
- [Bug] [lang] Fix printing i8/u8 (5893) (by **Yi Xu**)
- [misc] Remove FrontendEvalStmt (5897) (by **PGZXB**)
- [refactor] [ir] Remove legacy ElementShuffleStmt (5892) (by **Yi Xu**)
- [bug] Remove mistakenly-added C-API compilation from release pipeline (5890) (by **Zhanlue Yang**)
- [llvm] Fix PtrOffset address for shared array in llvm 15. (5867) (by **Xiang Li**)
- [vulkan] [refactor] [bug] Redesign gfx::OfflineCacheManager to unify compilation of kernels on vulkan  (5889) (by **PGZXB**)
- [doc] Updated Quantized data types (5886) (by **Vissidarte-Herman**)
- [Lang] MatrixNdarray refactor part0: Support direct TensorType construction in Ndarray and refactor use of element_shape (5875) (by **Zhanlue Yang**)
- [refactor] [ir] Remove legacy stmt width (5882) (by **Yi Xu**)
- [bug] [ggui] Fix cpu vulkan interop build (5865) (by **Ailing**)
- [refactor] Separate texture args from scalar arg declaration (5878) (by **Ailing**)
- [Lang] Enable definition of local matrices/vectors (5782) (by **Mike He**)
- [gfx] Unify the implementation of offline cache for gfx backends (5868) (by **PGZXB**)
- [bug] Improve error message with GlobalPtrStmt indexing (5841) (by **Zhanlue Yang**)
- [aot] Workaround build structure to export GGUI symbols in libtaichi_export_core.so (5870) (by **Ailing**)
- [doc] Updated supported backend DX 11 (5845) (by **Vissidarte-Herman**)
- [bug] Enabled NdarrayType & MatrixType annotation parsing for ti.func (5814) (by **Zhanlue Yang**)
- Removed Unexpected debug code in repo (5866) (by **PENGUINLIONG**)
- [aot] C-API error handling mechanism (5847) (by **PENGUINLIONG**)
- [vulkan] Detect and set device-capabilities for aot::TargetDevice used in offline cache (5843) (by **PGZXB**)
- [Lang] Build csr sparse matrix on GPU using coo format ndarray (5838) (by **pengyu**)
- [gui] Add some built-int math APIs for building translation, scale and rotation matrix (5827) (by **Mocki**)
- [Lang] Add python_scope decorator for selected MatrixNdarray/VectorNdarray methods (5844) (by **Zhanlue Yang**)
- [Lang] Make python scope comparison return 1 instead of -1 (5840) (by **daylily**)
- [vulkan] Support offline cache on Vulkan (5825) (by **PGZXB**)
- [Lang] Allow implicit conversion of integer types in if conditions (5763) (by **daylily**)
- making gravity option used (5836) (by **Michael Xu**)
- [autodiff] Add grad type for SNode (5805) (by **Mingrui Zhang**)
- [Doc] New FAQs added (5784) (by **Olinaaaloompa**)
- [dx12] Drop code for dx12. (5816) (by **Xiang Li**)
- [Doc] Update type cast (5831) (by **Zhao Liang**)
- [autodiff] Fix global data access rule checker memory allocation (5801) (by **Mingrui Zhang**)
- [misc] Bump version to v1.1.3 (5823) (by **Ailing**)
- [doc] Updated compilation warnings (5808) (by **Vissidarte-Herman**)
- Fixed crash in SPIR-V CodeGen when a const is declared twice (5813) (by **PENGUINLIONG**)
- [test] Refactor opengl and vulkan cpp aot tests (5812) (by **Ailing**)
- [Bug] [type] Fix wrong type cast in codegen of storing quant floats (5818) (by **Yi Xu**)
- [autodiff] Support shift ptr in dynamic index (5770) (by **Mingrui Zhang**)
- [ci] Regenerate AOT binaries for every Android smoke test (5815) (by **Proton**)
- [ci] Disable show_env job on fork repo (5811) (by **Bo Qiao**)
- [bug] Fix: GraphBuilder::Sequential unable to handle Matrix-type argument (5806) (by **Zhanlue Yang**)
- [build] [bug] Fix Taichi build with vulkan on and opengl off (5807) (by **Bo Qiao**)
- [test] Add a cgraph test with template args in ti.func (5803) (by **Ailing**)
- [Lang] Support sparse matrix on GPU (5185) (by **pengyu**)
- [test] Enable llvm aot tests for vulkan and opengl backend (5795) (by **Ailing**)
- Fixed a display issue (5796) (by **Vissidarte-Herman**)
- [Lang] Improve loop error message and remove the check for real type id (5792) (by **Zhao Liang**)
- [Doc] Update global_settings.md (5764) (by **Zhao Liang**)
- [ci] Workaround nightly C++ test crash (5789) (by **Proton**)
- [llvm] Disable f16 atomic hack for llvm 15. (5756) (by **Xiang Li**)
- [aot] Workaround C-API build structure to include GGUI symbols (5787) (by **Zhanlue Yang**)
- [ci] Skip C++ tests on macOS + CPU (5778) (by **Proton**)
- [Doc] Update init docstring (5759) (by **Zhao Liang**)
- [doc] Fix struct to numpy example typo (5781) (by **Garry Ling**)
- [test] Get rid of utils.py in aot python scripts (5785) (by **Ailing**)
- [refactor] Refactor C++ aot test to accommodate multiple backends (by **Ailing Zhang**)
- [test] Expand python aot test coverage for opengl backend (by **Ailing Zhang**)
- [opengl] Fix target device for opengl aot (by **Ailing Zhang**)
- Fixed GGUI scene mesh memory leak (5779) (by **PENGUINLIONG**)
- [autodiff] [test] Recover the forward mode test cases (5696) (by **Mingrui Zhang**)
- [ci] Test the offline cache every day (5768) (by **PGZXB**)
- [lang] Update scan impl with shared memory usage (5762) (by **Bo Qiao**)
- Revert "[aot] Added basic infrastructure for gui_utils interfaces - unimplemented (5688)" (5760) (by **Zhanlue Yang**)
- Fixed window size crash (5765) (by **PENGUINLIONG**)
- [llvm] Support SharedArray global when lower PtrOffsetStmt. (5758) (by **Xiang Li**)
- [ci] Prevent using the offline cache of previous jobs (5734) (by **Lin Jiang**)
- [gui] Add GGUI set_image support for non-Vector fields and numpy ndarrays. (5654) (by **Carbene**)
- [Lang] Implement index validation for matrices/vectors (5605) (by **Mike He**)
- [aot] Added basic infrastructure for gui_utils interfaces - unimplemented (5688) (by **Zhanlue Yang**)
- [Error] Do not show warning when the offline cache path does not exist (5747) (by **Lin Jiang**)
- [vulkan] Fixed query pool invalid usage (5717) (by **PENGUINLIONG**)
- [llvm] Fix crash caused on ByVal Attribute when switch to llvm 15. (5745) (by **Xiang Li**)
- [bug] Fix incorrect autodiff_mode information in offline cache key (5737) (by **Mingming Zhang**)
- [lang] Add parallel scan prefix sum utility (5697) (by **Bo Qiao**)
- [AOT] Added texture interfaces to C-API (5520) (by **PENGUINLIONG**)
- [autodiff] Move the global data access rule checker to experimental (5719) (by **Mingrui Zhang**)
- [ci] Rename lite test CI label, force full test on rc branch (5732) (by **Proton**)
- [ci] Fix TI_SKIP_CPP_TESTS (5720) (by **Proton**)
- [misc] Bump version to v1.1.1 (5726) (by **Taichi Gardener**)
- Improve Windows build script (5611) (by **PENGUINLIONG**)
- Remove miscommited file (5727) (by **Bo Qiao**)
- [test] Fix autodiff test for unsupported shift ptr (5723) (by **Mingrui Zhang**)
- [Doc] [type] Add introduction to quantized types (5705) (by **Yi Xu**)
- Fix shared array for all Vulkan versions. (5722) (by **Haidong Lan**)
- [autodiff] Clear all dual fields when exiting context manager (5716) (by **Mingrui Zhang**)
- [bug] Support indexing via np.integer for field (5712) (by **Ailing**)
- [vulkan] Relax number of array args for each kernel (5689) (by **Ailing**)
- [bug] Properly delete functions of a SNode Tree (5710) (by **Lin Jiang**)
- [Doc] Add docs for GGUI's new features (5647) (by **Mocki**)
- [gui] Support set_image with texture (5655) (by **PENGUINLIONG**)
- [Doc] Add introduction to forward mode autodiff (5680) (by **Mingrui Zhang**)
- [autodiff] Fix AdStackAllocaStmt not correctly backup (5692) (by **Mingrui Zhang**)
- [doc] Rename ti.struct_class to ti.dataclass (5706) (by **Yi Xu**)
- [gui] GGUI renames (5704) (by **PENGUINLIONG**)
- [Vulkan] Track image layout internally (5597) (by **PENGUINLIONG**)
- [ci] Confine show_environ task to Linux bots (5677) (by **Proton**)
- [build] [refactor] Decouple GUI source files from taichi_core target (5676) (by **Bo Qiao**)
- [ci] Rename libcommon.sh -> common-utils.sh, remove expore core build task (5673) (by **Proton**)
- [ci] Temporarily disable a M1 vulkan test (5701) (by **Proton**)
- [doc] Add comments to explain the commit Id for Build Andriod Demos CI pipeline (5700) (by **Zhanlue Yang**)
- [bug] Fix ndarray arg with shape=(1,) in cgraph (5666) (by **Ailing**)
- [doc] Fix typo (5695) (by **Proton**)
- [ci] Temporarily disable M1 vulkan tests (bot3 is ill) (5698) (by **Proton**)
- [build] Add commit id to taichi-aot-demo for Build-Andriod-Demos CI pipeline (5693) (by **Zhanlue Yang**)
- [bug] Fix potential bug of loading of offline cache (5682) (by **Mingming Zhang**)
- [aot] Add Comet Demo to AOT test cases (5671) (by **Zhanlue Yang**)
- [Doc] Add doc about offline cache (5646) (by **Mingming Zhang**)
- [lang] Make vector a real class (5653) (by **PENGUINLIONG**)
- [spirv] [bug] Fix invalid CFG error when simulated atomic is present (5678) (by **Ailing**)
- [ci] Fix python/examples crashes in non-lite test mode (5670) (by **Proton**)
- [Bug] [opt] Remove wrong optimization: Float x // 1 -> x (5672) (by **Yi Xu**)
- [bug] [ir] Change the way to convert for-loop with break to while-loop (5674) (by **Lin Jiang**)
- [aot] Add SPH to AOT test cases (5642) (by **Zhanlue Yang**)
- [ci] Only run portion of tests on PR draft (5626) (by **Proton**)
- [autodiff] Use external array fill to initialize and clear seed (5656) (by **Mingrui Zhang**)
- [bug] Fix bug that kernel names are not correctly captured by the profiler (5651) (by **Mingming Zhang**)
- [lang] Give warning about printing in Vulkan (5661) (by **PENGUINLIONG**)
- Support exporting vertex velocity (5644) (by **YuZhang**)
- [aot] Add helper function to construct Ndarray in C-API (5641) (by **Zhanlue Yang**)
- [gui] GGUI scene APIs are broken (5658) (by **PENGUINLIONG**)
- [Doc] Typo in the doc. (5652) (by **dongqi shen**)
- [autodiff] Add the global data access rule checker (by **mingrui**)
- [autodiff] Add gradient visited for global data access rule checker (by **mingrui**)
- [autodiff] Print more specific error message that autodiff does not support to_numpy (5630) (by **PhrygianGates**)
- [ci] Drop py36 in nightly and release (5640) (by **Ailing**)
- [misc] Explicitly specify base tag commit when running make_changelog.py (5632) (by **Ailing**)
- [aot] Rewrite mpm88 aot test with C-API (5615) (by **Zhanlue Yang**)
- [Build] Clean up Taichi core cmake (5595) (by **Bo Qiao**)

1.1.2

This is a bug fix release for v1.1.0.
Full changelog:
- [misc] Bump version to v1.1.2
- [Bug] [type] Fix wrong type cast in codegen of storing quant floats (https://github.com/taichi-dev/taichi/pull/5818)
- [bug] Fix incorrect autodiff_mode information in offline cache key (https://github.com/taichi-dev/taichi/pull/5737)
- [Error] Do not show warning when the offline cache path does not exist (https://github.com/taichi-dev/taichi/pull/5747)
- [autodiff] Support shift ptr in dynamic index (https://github.com/taichi-dev/taichi/pull/5770)

1.1

We are excited to announce the stabilization of the Real Function feature in Taichi Lang v1.7.0. Initially introduced as an experimental feature in v1.0.0, it has now matured with enhanced capabilities and usability.

Key Updates
- Decorator Change: The Real Function now uses `ti.real_func`. The previous decorator, `ti.experimental.real_func`, is deprecated.
- Performance Improvements: Real Functions, unlike Taichi inline functions (`ti.func`), are compiled as separate entities, akin to CUDA's device functions. This separation allows for recursive runtime calls and significantly faster compilation. For instance, the Cornell box example's compilation time is reduced from `2.34s` to `1.01s` on an i9-11900K when switching from inline to real functions.
- Enhanced Functionality: Real Functions support multiple return statements, offering greater flexibility in coding.

Limitations
- Backend Support: Real Functions are currently only compatible with LLVM-based backends, including CPU and CUDA.
- Parallel Loops: Writing parallel loops within Real Functions is not supported. However, if called within a parallel loop in a kernel, the Real Function will be parallelized accordingly.

Important Note on Usage: Ensure all arguments and return values in Real Functions are explicitly type-hinted.

Usage Example
The following example demonstrates the recursive capability of Real Functions. The `sum_func` Real Function is used to calculate the sum of numbers from 1 to n, showcasing its ability to handle multiple return statements and variable recursion depths.


ti.real_func
def sum_func(n: ti.i32) -> ti.i32:
if n == 0:
return 0
return sum_func(n - 1) + n

ti.kernel
def sum(n: ti.i32) -> ti.i32:
return sum_func(n)

print(sum(100)) 5050


You can find more examples of the real function in [the repository](https://github.com/taichi-dev/taichi/tree/master/python/taichi/examples/real_func).

1.1.0

- [llvm] Compile serially when num_thread=0 (5631) (by **Lin Jiang**)
- [cuda] Reduce kernel profiler memory usage (5623) (by **Bo Qiao**)
- [doc] Add docstrings for texture related apis (by **Ailing Zhang**)
- [Lang] Support from/to_image for textures and add tests (by **Ailing Zhang**)
- [gui] Add wareframe mode for mesh & mesh_instance, add slider_int for Window.GUI. (5576) (by **Mocki**)
- avoid redundant compilation (5607) (by **yixu**)
- [misc] Enable offline cache by default (5613) (by **Mingming Zhang**)
- [Lang] Add parameter 'order' to specify layout for scalar, vector, matrix fields (5617) (by **Yi Xu**)
- [autodiff] [example] Add an example for computing Jacobian matrix (5609) (by **Mingrui Zhang**)
- [ci] Add PR tag for dx12. (5614) (by **Xiang Li**)
- fix ti.ui.Space (5606) (by **yixu**)
- [ci] Build Android export core (5409) (by **Proton**)
- [type] Rename module quantized_types to quant (5608) (by **Yi Xu**)
- [llvm] [aot] Add unit tests for Dynamic SNodes with LLVM AOT (5594) (by **Zhanlue Yang**)
- [build] Forcing write file encoding in misc/make_changelog.py (5604) (by **Proton**)
- [llvm] [aot] Add unit tests for Bitmasked SNodes with LLVM AOT (5593) (by **Zhanlue Yang**)
- [GUI] Shifted to a more commonly supported type for set_image (5514) (by **PENGUINLIONG**)
- [gui] Fix snode offset (mesh disappearing bug) (5579) (by **Bob Cao**)
- [refactor] Redesign loading, dumping and cleaning of offline cache (5578) (by **Mingming Zhang**)
- [autodiff] [test] Add more complex for loop test cases for forward mode (5592) (by **Mingrui Zhang**)
- fix num_triangles (5602) (by **yixu**)
- [cuda] Decouple update from sync in kernel profiler (5589) (by **Bo Qiao**)
- Removed unnecessary tags to work around a crowdIn issue. (5590) (by **Vissidarte-Herman**)
- [Lang] Change vec2/3/4 from function calls to types (5556) (by **Zhao Liang**)
- [vulkan] Enable shared array support for vulkan backend (5583) (by **Haidong Lan**)
- [aot] Avoid reserved words when generate C AOT bindings (5586) (by **Proton**)
- [ci] Update llvm15 prebuild binary. (5581) (by **Xiang Li**)
- [doc] Removed a redundant line break to see if it will fix a CrowdIn issue (5584) (by **Vissidarte-Herman**)
- [type] Refine SNode with quant 10/n: Add validity checks and simplify BitStructType (5573) (by **Yi Xu**)
- [autodiff] [refactor] Rename the parameters to param for forward mode (5582) (by **Mingrui Zhang**)
- [doc] Format fix to work around a crowdIn issue (5580) (by **Vissidarte-Herman**)
- Update syntax.md (5575) (by **Zhao Liang**)
- [doc] Added an mdx-code-block escape hatch syntaxt to workaround a CrowdIn … (5574) (by **Vissidarte-Herman**)
- [Doc] Update external.md (5547) (by **Zhao Liang**)
- [doc] Add introductions to ambient_elements in llvm_sparse_runtime.md (5567) (by **Zhanlue Yang**)
- [refactor] Unify ways to set external array args (5565) (by **Ailing**)
- [Lang] [type] Refine SNode with quant 9/n: Rename some parameters in quant APIs (5566) (by **Yi Xu**)
- [opt] Improved warning messages for statements (5564) (by **Zhanlue Yang**)
- [bug] Fix android build for taichi-aot-demo (5560) (by **Ailing**)
- [opt] Added llvm::SeparateConstOffsetFromGEPPass() for shared_memory optimizations (5494) (by **Zhanlue Yang**)
- [Lang] [type] Refine SNode with quant 8/n: Replace bit_struct with ti.BitpackedFields (5532) (by **Yi Xu**)
- [build] Enforce local-scoped symbols in static llvm libs (5553) (by **Bo Qiao**)
- [refactor] Unify ways to set ndarray args (5559) (by **Ailing**)
- [gui] [vulkan] Support for drawing mesh instances (5546) (by **Mocki**)
- [llvm] [aot] Added taichi_sparse unit test to C-API for CUDA backend (5531) (by **Zhanlue Yang**)
- Add glFinish to wait_idle (5538) (by **Bo Qiao**)
- [autodiff] Skip ConstStmt when generating alloca for dual (5554) (by **Mingrui Zhang**)
- [ci] Fix macOS nightly build (5552) (by **Proton**)
- Fix potential bug of lang::Program that could be double finalized (5550) (by **Mingming Zhang**)
- [Error] Raise error when using the struct for in python scope (5536) (by **Lin Jiang**)
- [bug] Fix calling make_aot_kernel failed when offline_cache=True (5537) (by **Mingming Zhang**)
- [ci] Move macOS 10.15 workloads to self-hosted runners (5539) (by **Proton**)
- [build] [refactor] Utilize find_cuda_toolkit and clean some target dependencies (5526) (by **Bo Qiao**)
- [autodiff] [test] Add more for-loop tests for forward mode (5525) (by **Mingrui Zhang**)
- [Lang] [bug] Ensure non-i32 compatibility in while statement conditions (5521) (by **daylily**)
- [Lang] Improve error message for ggui on opengl backend (5509) (by **Zhao Liang**)
- [aot] Support texture and rwtexture in cgraph (5528) (by **Ailing**)
- [llvm] Add parallel compilation to CUDA backend (5519) (by **Lin Jiang**)
- [type] [refactor] Decouple quant from SNode 9/n: Remove exponent handling from SNode (5510) (by **Yi Xu**)
- [Lang] Fix numpy and taichi operations problem (5506) (by **Zhao Liang**)
- [Vulkan] Added an interface to get accumulated on-device execution time (5488) (by **PENGUINLIONG**)
- [Async] [refactor] Remove AsyncTaichi (5523) (by **Lin Jiang**)
- [misc] Fix warning at GGUI canvas.circles (5424) (5518) (by **Proton**)
- [gui] Support rendering lines from a part of VBO (5495) (by **Mocki**)
- [ir] Cast indices of ExternalPtrStmt to ti.i32 (5516) (by **Yi Xu**)
- [Lang] Support syntax sugar for ti.cast (5515) (by **Yi Xu**)
- [Lang] Better struct initialization (5481) (by **Zhao Liang**)
- [example] Make implicit_fem fallback to CPU when CUDA is not available (5512) (by **Yi Xu**)
- [Lang] Make MatrixType support more ways of initialization (5479) (by **Zhao Liang**)
- [Vulkan] Fixed depth texture validation error (5507) (by **PENGUINLIONG**)
- [bug] Fix vulkan source when build for android (5508) (by **Bo Qiao**)
- [refactor] [llvm] Rename CodeGenCPU/CUDA/WASM and CodeGenLLVMCPU/CUDA/WASM (5500) (by **Lin Jiang**)
- [bug] Let the arguments in ti.init override the environment variables (5497) (by **Lin Jiang**)
- [misc] Add debug logging and TI_AUTO_PROF for offline cache (5503) (by **Mingming Zhang**)
- [misc] ti.Tape -> ti.ad.Tape (5501) (by **Zihua Wu**)
- [misc] Support jit offline cache for kernels that call real functions (5477) (by **Mingming Zhang**)
- [doc] Update cpp tests build doc (5493) (by **Bo Qiao**)
- [Lang] Support call field.fill in kernel functions (5486) (by **Zhao Liang**)
- [Lang] [bug] Make comparisons always return i32 (5487) (by **Yi Xu**)
- [gui] [vulkan] Support 3d-lines rendering (5492) (by **Mocki**)
- [autodiff] Switch off parts of store forwarding optimization for autodiff (5464) (by **Mingrui Zhang**)
- [llvm] [aot] Add LLVM to CAPI part 9: Added AOT field tests for LLVM backend in C-API (5461) (by **Zhanlue Yang**)
- [bug] [llvm] Fix GEP when allocating TLS buffer in struct for (5473) (by **Lin Jiang**)
- [gui] [vulkan] Modify some internal APIs (5484) (by **Mocki**)
- [Build] Remove TI_EMSCRIPTENED related code (5483) (by **Bo Qiao**)
- [type] [refactor] Decouple quant from SNode 8/n: Remove redundant handling of llvm15 in codegen_llvm_quant (5480) (by **Yi Xu**)
- [CUDA] Enable shared memory for CUDA (5429) (by **Haidong Lan**)
- [gui] [vulkan] A faster version of depth copy through ti.field/ti.ndarray (copy directly from vulkan to cuda/gpu/cpu) (5455) (by **Mocki**)
- [misc] Add missing members of XXXExpression and FrontendXXXStmt to result of ASTSerializer (5471) (by **Mingming Zhang**)
- [llvm] [aot] Added field tests for LLVM backend in CGraph (5458) (by **Zhanlue Yang**)
- [type] [refactor] Decouple quant from SNode 7/n: Rewrite BitStructStoreStmt codegen without SNode (5475) (by **Yi Xu**)
- [llvm] [aot] Add LLVM to CAPI part 8: Added CGraph tests for LLVM backend in C-API (5456) (by **Zhanlue Yang**)
- [build] [refactor] Rename taichi core and taichi python targets (5451) (by **Bo Qiao**)
- [llvm] [aot] Add LLVM to CAPI part 6: Handle Field initialization in C-API (5444) (by **Zhanlue Yang**)
- [llvm] [aot] Add LLVM to CAPI part 7: Added AOT kernel tests for LLVM backend in C-API (5447) (by **Zhanlue Yang**)
- [error] Throw proper error message when an Ndarray is passed in via ti.template (5457) (by **Ailing**)
- [type] [refactor] Decouple quant from SNode 6/n: Rewrite extract_quant_float() without SNode (5448) (by **Yi Xu**)
- [bug] Set SNode tree id to all SNodes (5454) (by **Lin Jiang**)
- [AOT] Support on-device event (5433) (by **PENGUINLIONG**)
- [llvm] [aot] Add LLVM to CAPI part 5: Added C-API tests for Vulkan and Cuda backend (5440) (by **Zhanlue Yang**)
- [llvm] [bug] Fixing the crash in release tests introduced by a typo in 5381 where we need a deep copy of arglist. (5441) (by **Proton**)
- [llvm] [aot] Add LLVM to CAPI part 4: Enabled C-API tests on CI & Added C-API tests for CPU backend (5435) (by **Zhanlue Yang**)
- [misc] Bump version to v1.0.5 (5437) (by **Proton**)
- [aot] Support specifying vk_api_version in CompileConfig (5419) (by **Ailing**)
- [Lang] Add append attribute to dynamic fields (5413) (by **Zhao Liang**)
- [Lang] Add inf and nan (5270) (by **Zhao Liang**)
- [Doc] Updated docsite structure (5416) (by **Vissidarte-Herman**)
- [ci] Run release tests (5327) (by **Proton**)
- [type] [refactor] Decouple quant from SNode 5/n: Rewrite load_quant_float() without SNode (5422) (by **Yi Xu**)
- [llvm] Allow using clang 15 for COMPILE_LLVM_RUNTIME (5381) (by **Xiang Li**)
- [opengl] Speedup compilation for Nvidia cards (5430) (by **Bob Cao**)
- [Bug] Fix infinite loop when exponent of integer pow is negative (5275) (by **Mike He**)
- [build] [refactor] Move spirv codegen and common targets (5415) (by **Bo Qiao**)
- [autodiff] Check not placed field.dual and add needs_dual (5412) (by **Mingrui Zhang**)
- [bug] Simplify scalar handling in cgraph and relax field_dim check (5411) (by **Ailing**)
- [gui] [vulkan] Surpport for getting depth information for python users. (5410) (by **Mocki**)
- [AOT] Adjusted C-API for nd-array type conformance (5417) (by **PENGUINLIONG**)
- [type] Decouple quant from SNode 4/n: Add exponent info to BitStructType (5407) (by **Yi Xu**)
- [llvm] Avoid creating new LLVM contexts when updating struct module (5397) (by **Lin Jiang**)
- [build] Enable C-API compilation on CI (5403) (by **Zhanlue Yang**)
- [Lang] Implement assignment by slicing (5369) (by **Mike He**)
- [llvm] [aot] Add LLVM to CAPI part 3: Adapted AOT interfaces for LLVM backend (5402) (by **Zhanlue Yang**)
- [AOT] Fixed Vulkan device import capability settings (5400) (by **PENGUINLIONG**)
- [llvm] [aot] Add LLVM to CAPI part 2: Adapted memory allocation interfaces for LLVM backend (5396) (by **Zhanlue Yang**)
- [autodiff] Add ternary operators for forward mode (5405) (by **Mingrui Zhang**)
- [llvm] [aot] Add LLVM to CAPI part 1: Implemented capi::LlvmRuntime class (5393) (by **Zhanlue Yang**)
- [ci] Add per test hard timeout limit (5384) (by **Proton**)
- [ci] Properly detect $DISPLAY (5398) (by **Proton**)
- [ci] Llvm15 clang10 ci (5368) (by **Xiang Li**)
- [llvm] [bug] Add stop grad to ASTSerializer (5401) (by **Lin Jiang**)
- [autodiff] Add test for ternary operators in reverse mode autodiff (5395) (by **Mingrui Zhang**)
- [llvm] [aot] Add numerical unit tests for LLVM-CGraph (5319) (by **Zhanlue Yang**)

Page 5 of 23

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.