taichi

Productive, portable, and performant GPU programming in Python.

APACHE-2.0 License

Downloads
32.8K
Stars
24.7K
Committers
222

Bot releases are visible (Hide)

taichi - v0.9.0

Published by ailzhang over 2 years ago

Highlights

New features

1. Dynamic indexing of matrices (experimental)

In previous versions of Taichi, a matrix can be accessed only with a constant index. As a result, you cannot perform operations such as clamp the minimum element in a vector to 0:

@ti.kernel
def clamp():
    ...  # assume we have a n-d vector A
    min_index = 0
    for i in range(n):
        if A[i] < A[min_index]:
            min_index = i
    A[min_index] = 0

Of course, you may use the following workaround leveraging loop unrolling. It is, however, neither intuitive nor efficient:

@ti.kernel
def clamp():
    ...  # assume we have a n-d vector A
    min_index = 0
    for i in ti.static(range(n)):
        if A[i] < A[min_index]:
            min_index = i
    for i in ti.static(range(n)):
        if i == min_index:
            A[i] = 0

With this new experimental feature of dynamic indexing of matrices, you can now run the former code snippet smoothly. The feature can be enabled by setting ti.init(dynamic_index=True).

In v0.9.0, a new implicit FEM (Finite Element Method) example (https://github.com/taichi-dev/taichi/blob/master/python/taichi/examples/simulation/implicit_fem.py) is added, which also illustrates the benefit of having this feature. In this example, a huge (12 × 12) Hessian matrix is constructed for implicit time integration. Without dynamic indexing, the whole matrix construction loop needs to be unrolled, which takes 70 seconds to compile; with dynamic indexing, a traditional loop version can be applied, and the compilation time is shortened to 2.5 seconds.

2. Vulkan backend on macOS

Adds support for the ti.vulkan backend on macOS 10.15+ and now you can run GGUI on your macBook. Run the following GGUI examples to try for yourself.

# prerequisites: taichi >= v0.9.0 and macOS >= 10.15
# run GGUI examples
ti example fractal3d_ggui 
ti example fem128_ggui

3. Compatibility with Google Colab

The system would crash if you run Taichi of an earlier version in the Google Colab notebook environment (see #235 for more information). In this release, we refactored our compiler implementation so that Taichi is compatible with Google Colab.

Feel free to run !pip install taichi to install Taichi and start your Colab journey with it.

Improvements

1. More stabilized, better-organized APIs

Ensuring the developers use the right set of APIs is critical to the long-term stability of Taichi's APIs. In this release, we started to reorganize its package structure and deprecate some obsolete or internal APIs. The following table lists some critical APIs that may concern you.

Category Deprecated API Replaced with
Builtin max() ti.max()
Builtin min() ti.min()
Atomic operation obj.atomic_add() ti.atomic_add()
Image-specific ti.imread() ti.tools.imread()
Image-specific ti.imwrite() ti.tools.imwrite()
Image-specific ti.imshow() ti.tools.imshow()
Profiler-specific ti.print_profile_info() ti.profiler.print_scoped_profiler_info()
Profiler-specific ti.print_kernel_profile_info() ti.profiler.print_kernel_profiler_info()

For a representative list of APIs deprecated in this release, see this Google doc.

2. Better error reporting

Lengthy traceback in an error report, for most of the time, can be distracting, making it hard to locate the code causing the error. In this release, we've removed the trivial traceback that does not concern developers in our error reporting to improve the debugging experience.

Taking the following code snippet as an example:

import taichi as ti

ti.init()

@ti.func
def bar(a):
    a = a + 2j

@ti.kernel
def foo():
    bar(1)

foo()

Before v0.9.0, the error message looks like this:

[Taichi] Starting on arch=x64
Traceback (most recent call last):
  File "error.py", line 13, in <module>
    foo()
  File "/path_to_taichi/lang/kernel_impl.py", line 709, in wrapped
    return primal(*args, **kwargs)
  File "/path_to_taichi/lang/kernel_impl.py", line 636, in __call__
    key = self.ensure_compiled(*args)
  File "/path_to_taichi/lang/kernel_impl.py", line 627, in ensure_compiled
    self.materialize(key=key, args=args, arg_features=arg_features)
  File "/path_to_taichi/lang/kernel_impl.py", line 493, in materialize
    taichi_kernel = _ti_core.create_kernel(taichi_ast_generator,
  File "/path_to_taichi/lang/kernel_impl.py", line 488, in taichi_ast_generator
    compiled()
  File "error.py", line 11, in foo
    bar(1)
  File "/path_to_taichi/lang/kernel_impl.py", line 76, in decorated
    return fun.__call__(*args)
  File "/path_to_taichi/lang/kernel_impl.py", line 156, in __call__
    ret = self.compiled(*args)
  File "error.py", line 7, in bar
    a = a + 2j
  File "/path_to_taichi/lang/common_ops.py", line 16, in __add__
    return ti.add(self, other)
  File "/path_to_taichi/lang/ops.py", line 78, in wrapped
    return imp_foo(a, b)
  File "/path_to_taichi/lang/ops.py", line 63, in imp_foo
    return foo(x, y)
  File "/path_to_taichi/lang/ops.py", line 427, in add
    return _binary_operation(_ti_core.expr_add, _bt_ops_mod.add, a, b)
  File "/path_to_taichi/lang/ops.py", line 173, in _binary_operation
    a, b = wrap_if_not_expr(a), wrap_if_not_expr(b)
  File "/path_to_taichi/lang/ops.py", line 36, in wrap_if_not_expr
    return Expr(a) if not is_taichi_expr(a) else a
  File "/path_to_taichi/lang/expr.py", line 33, in __init__
    self.ptr = impl.make_constant_expr(arg).ptr
  File "/path_to_taichi/lang/util.py", line 196, in wrapped
    return func(*args, **kwargs)
  File "/path_to_taichi/lang/impl.py", line 414, in make_constant_expr
    raise ValueError(f'Invalid constant scalar expression: {type(val)}')
ValueError: Invalid constant scalar expression: <class 'complex'>

In v0.9.0, the error message looks like this:

Traceback (most recent call last):
  File "/path_to_test/error.py", line 13, in <module>
    foo()
  File "/path_to_taichi/lang/kernel_impl.py", line 732, in wrapped
    raise type(e)('\n' + str(e)) from None
taichi.lang.exception.TaichiTypeError: 
On line 11 of file "/path_to_test/error.py", in foo:
    bar(1)
    ^^^^^^
On line 7 of file "/path_to_test/error.py", in bar:
    a = a + 2j
        ^^^^^^
Invalid constant scalar data type: <class 'complex'>

3. Revamped Taichi's documentation site

To improve the readability and user-friendliness of our documentation, we restructured Taichi's documentation site and incorporated API reference into it.

Join our discussions to build the next Taichi release for you!

We believe that our community plays a pivotal role in the development of the Taichi programming language. In that spirit, we encourage you to take an active part in our GitHub Discussions, propose potential changes, and contribute your ideas. Together, we improve the Taichi language release by release, for you and for every developer.

The following is a selected list of hot topics for you to start with:

  • #4086
  • #4183

Specifically, because beginners to Taichi sometimes get lost in different APIs such as ti.Vector, ti.types.vector, ti.Vector.field, we plan to make them clearer and would like to have your opinions on these proposed practices:

  • Always keep type identifiers in lowercase.
  • Always use ti.types.vector to define a vector type.
  • After having type definitions like my_vec2i = ti.types.vector(2, ti.i32), use my_vec2i([5, 10]) for a vector object.
  • For simplicity, we preserve ti.vector([1, 2]) as a shortcut for ti.types.vector()([1, 2]) , which automatically infers missing type information of the object.
  • Use ti.field(dtype=my_vec2i, shape=100) for a field object.

API changes

See this Google doc for a representative list of APIs deprecated in this release.

Deprecation notice

Python 3.6 has reached EOL as of December 2021. The next major Taichi release (e.g. v1.0) will be the last official release for Python3.6 and we're actively working on adding support for Python3.10.

Full changelog:

  • [test] Add a test for simple_derivative example (#4323) (by TinyBox)
  • [example] Add implicit fem example (#4352) (by bx2k)
  • [opengl] Use element shape as compile information for OpenGL backend (#4284) (by Haidong Lan)
  • [ci] Exit on error windows test script (#4354) (by Bo Qiao)
  • [bug] Update children_offsets & stride info to align as elem_stride (#4345) (by Ailing)
  • [gui] Update GGUI examples to use vulkan backend if available (#4353) (by Ailing)
  • [ci] Use conda python for m1 jobs (#4351) (by Ailing)
  • [lang] Add support for operators "is" and "is not" in static scope and deprecate them (#4349) (by Lin Jiang)
  • [ci] Increase ci test parallelism (#4348) (by Bo Qiao)
  • [opengl] Remove support for dynamic snode (by Ailing Zhang)
  • [error] Let deprecation warnings display only once (#4346) (by Lin Jiang)
  • [ci] Fix generate_example_videos.py (#4347) (by Ailing)
  • [test] Add a test for autodiff/regression (#4322) (by TinyBox)
  • [ci] Install requirements and matplotlib for GPU tests (#4336) (by Bo Qiao)
  • [gui] [refactor] Avoid exposing different APIs with different GGUI_AVAILABLE values (#4329) (by Yi Xu)
  • [lang] Remove logical_and and logical_or from TaichiOperation (#4326) (by Lin Jiang)
  • [lang] Add deprecation warnings to atomic ops (#4325) (by Lin Jiang)
  • [refactor] Allow more build types from setup.py (#4313) (by Bo Qiao)
  • [refactor] make class Expr constructor explicit (#4272) (by Retrospection)
  • [doc] More revision on a new language (#4321) (by Ye Kuang)
  • [lang] Hide internal apis about Fields (#4302) (by Xiangyun Yang)
  • [Doc] Avoid log(0) problem in _funcs._randn() and update primitive_types.py (#4317) (by Zhao Liang)
  • [refactor] Remove Ndarray torch implementation and tests (#4307) (by Bo Qiao)
  • [Doc] Revise "Why a new programming language" (#4306) (by Ye Kuang)
  • [lang] Move sparse_matrix_builder from taichi.linalg to taichi.types (#4301) (by Ailing)
  • [lang] Make ti.cfg an alias of runtime cfg (#4264) (by Ailing)
  • [refactor] Refactor ForLoopDecoratorRecorder (#4309) (by PGZXB)
  • [lang] Hide dtype and needs_grad from SNode (#4308) (by Yi Xu)
  • [vulkan] Reduce runtime host overhead (#4282) (by Bob Cao)
  • [lang] Remove Matrix.value (#4300) (by Lin Jiang)
  • [lang] Hide internal APIs of FieldsBuilder (#4305) (by Yi Xu)
  • [lang] Hide pad_key and ndarray*_to_numpy in Ndarray (#4298) (by Bo Qiao)
  • [lang] Hide internal functions in SNode and _Root (#4303) (by Yi Xu)
  • [lang] Hide ndarray*_from_numpy (#4297) (by Bo Qiao)
  • [lang] Hide internal functions in Matrix and Struct (#4295) (by Lin Jiang)
  • [lang] Hide subscript in Matrix (#4299) (by Lin Jiang)
  • [lang] Hide initialize_host_accessor in Ndarray (#4296) (by Bo Qiao)
  • [lang] Hide internal functions in TaichiOperation (#4288) (by Lin Jiang)
  • [lang] Hide get_element_size and get_nelement in Ndarray (#4294) (by Bo Qiao)
  • [lang] Hide fill_by_kernel in Ndarray (#4293) (by Bo Qiao)
  • Hide data handle (#4292) (by Bo Qiao)
  • [lang] Remove CompoundType from taichi.types (#4291) (by Ailing)
  • [lang] Hide get_addr and type_assert in api docs (#4290) (by Ailing)
  • [lang] Only expose start_recording/stop_recording for now (#4289) (by Ailing)
  • [docs] Hide unnessary methods in annotation classes (#4287) (by Ailing)
  • [llvm] Use GEP for array access instead of ptrtoint/inttoptr (#4276) (by Yi Xu)
  • [lang] Fix bls_buffer allocation of x64 crashed in py3.10 (#4275) (by Chang Yu)
  • [misc] Code cleanup in benchmarks (#4280) (by rocket)
  • [doc] Improve operators page (#4073) (by Lin Jiang)
  • [spirv] Fix buffer info compare to fix external array bind point (#4277) (by Bob Cao)
  • [bug] Disallow function definition inside ti.func/kernel (#4274) (by Lin Jiang)
  • [refactor] Remove global instance of DecoratorRecorder (#4254) (by PGZXB)
  • [misc] Add stencil_2d to micro-benchmarks (#4176) (by rocket)
  • [refactor] Remove support for raise statement (#4262) (by Lin Jiang)
  • [refactor] Re-expose important implementation classes (#4268) (by Yi Xu)
  • [llvm] Add missing pre-processor macro in cpp-tests when LLVM is disabled (#4269) (by PGZXB)
  • Add more camera controls (#4212) (by Yu Zhang)
  • [vulkan] Test & build macOS 10.15 MoltenVK (#4259) (by Bob Cao)
  • [vulkan] Use TI_VISIBLE_DEVICE to select vulkan device (#4255) (by Bo Qiao)
  • [misc] Remove some unnecessary #include lines (#4265) (by PGZXB)
  • [lang] Expose mesh_patch_idx at top level (#4260) (by Ailing)
  • [Bug] Only ban passing non contiguous torch tensors to taichi kernels. (#4258) (by Ailing)
  • [ci] Run on pull_request_target to access the secrets (#4253) (by Frost Ming)
  • [misc] Update master version to 0.9.0 (#4248) (by Ailing)
  • [misc] Use test_utils.approx directly (#4252) (by Ailing)
  • [ci] Move _testing.py into tests folder (#4247) (by Ailing)
  • [refactor] Remove get_current_program() and global variable current_program (#4246) (by PGZXB)
  • [Doc] Update sparse compuation doc (#4060) (by Peng Yu)
  • [Error] Raise an error when breaking the outermost loop (#4235) (by Lin Jiang)
  • [ci] Disable Vulkan backend for mac1015 release. (#4245) (by Ailing)
  • [Refactor] Move ti.quant & ti.type_factory under ti.types.quantized_types (#4233) (by Yi Xu)
  • [doc] Major revision to the field (advanced) document (#4156) (by Haidong Lan)
  • [vulkan] Disable buffer device address if int64 is not supported (#4244) (by Bob Cao)
  • [CUDA] Fix random generator routines for f32 and f64 to make sure the returned value is in [0, 1) (#4243) (by Zhao Liang)
  • [ci] Create PR card in projects automatically (#4229) (by Frost Ming)
  • [refactor] Remove dependency on get_current_program() in lang::BinaryOpExpression (#4242) (by PGZXB)
  • [Refactor] Add require_version configuration in ti.init() (#4151) (by ZHANG Zhi)
  • [ci] Disable Vulkan backend for mac1014 release. (#4241) (by Ailing)
  • [refactor] Remove global scope_stack and dependencies on it (#4237) (by PGZXB)
  • [refactor] Remove lang::current_ast_builder() and dependencies on it (#4239) (by PGZXB)
  • [vulkan] Add buffer device address (physical pointers) support & other improvements (#4221) (by Bob Cao)
  • [Refactor] Avoid exposing ti.tape (#4234) (by Bo Qiao)
  • [lang] Annotate constants with dtype without casting. (#4224) (by Ailing)
  • [refactor] Remove legacy ti.benchmark() and ti.benchmark_plot() (#4222) (by Xiangyun Yang)
  • [misc] Add memcpy to micro-benchmarks (#4220) (by Bo Qiao)
  • [Refactor] Merge ti.tools.image.imdisplay() into ti.tools.image.imshow() (#4144) (by Zhao Liang)
  • [Refactor] Rename and move memory profiler info under ti.profiler (#4227) (by Xiangyun Yang)
  • [Bug] Ban passing torch view tensors into taichi kernel (#4225) (by Ailing)
  • [refactor] Remove dependency on get_current_program() in lang::FrontendForStmt (#4228) (by PGZXB)
  • [metal] Give random seeds a unique value (#4206) (by Ye Kuang)
  • [autodiff] Refactor the IB identification and optimize the checker for global atomics and purely nested loops (#4154) (by Mingrui Zhang)
  • [doc] Add the step of setting "TI_WITH_VULKAN" for linux (#4209) (by Neko Null)
  • [doc] Add instruction to install clang-format-10 on M1 Mac (#4219) (by Lin Jiang)
  • [Refactor] Move public APIs of ti.tools outside top level (#4218) (by Yi Xu)
  • [Refactor] Move ti.parallel_sort under _kernels (#4217) (by Yi Xu)
  • [refactor] Remove top level all (#4214) (by Yi Xu)
  • [vulkan] Support Vulkan 1.3 (#4211) (by Bob Cao)
  • [CI] Update release workflow (#4215) (by Jian Zeng)
  • [Refactor] Move ti.taichi_logo to examples (#4216) (by Yi Xu)
  • [vulkan] Fix MoltenVK support (#4205) (by Bob Cao)
  • [Refactor] Rename tools.util to tools.async_utils and hide functions inside (#4201) (by Yi Xu)
  • [spirv] SPIR-V / Vulkan NDArray (#4202) (by Bob Cao)
  • [misc] Export visibility of symbols required for Vulkan AOT execution (#4203) (by Gabriel H)
  • [misc] Test unified doc & api preview. (#4186) (by Ailing)
  • [refactor] Remove dependency on get_current_program() in exported functions of SNode (#4192) (by PGZXB)
  • [refactor] Export some functions which depend on current_ast_builder() as members of ASTBuilder (#4131) (by PGZXB)
  • [Refactor] Do not expose StructField and SourceBuilder to users (#4200) (by Yi Xu)
  • [Error] Add function name to traceback (#4195) (by Lin Jiang)
  • [Refactor] Remove redundant set_gdb_trigger (#4198) (by Yi Xu)
  • [javascript] Avoid using C++ inline asm when TI_EMSCRIPTENED (JS 6/n) (#4109) (by Dunfan Lu)
  • [javascript] Disable stack trace logging when TI_EMSCRIPTENED (JS 9/n) (#4117) (by Dunfan Lu)
  • [javascript] Support TI_EMSCRIPTENED option as an env var (JS 3/n) (#4106) (by Dunfan Lu)
  • [Refactor] Rename and move kernel profiler APIs (#4194) (by Yi Xu)
  • [doc] Update the doc for differentiable programming (#4057) (by Mingrui Zhang)
  • [misc] Add math operators to micro-benchmarks (#4122) (by rocket)
  • [misc] Add atomic operators to micro-benchmarks (#4169) (by rocket)
  • [dx11] Fix parse_reference_count signature (#4189) (by quadpixels)
  • [Doc] update demo code in readme doc (#4193) (by 箱子)
  • [bug] [opengl] Process child nodes to compute alignment (#4191) (by Ailing)
  • [refactor] Remove dependency on current_ast_builder() in lang::For and cpp_tests (#4185) (by PGZXB)
  • [refactor] Add TI_DLL_EXPORT to control symbol visibility (#4177) (by Ye Kuang)
  • [refactor] Remove is_signed/is_integral from top level. (#4182) (by Ailing)
  • [refactor] Move version_check out of taichi.lang. (#4178) (by Ailing)
  • [refactor] Remove locale_encode from top level. (#4179) (by Ailing)
  • [refactor] Remove dependency on get_current_program() in lang::Ndarray (#4162) (by PGZXB)
  • [Refactor] Clean up helper functions in tools.util (#4174) (by Yi Xu)
  • [refactor] Remove bit_vectorize from top level. (#4158) (by Ailing)
  • [test] [example] Add a test for taichi_logo example (#4170) (by Isaac)
  • [Refactor] Remove inspect for modules in lang init (#4173) (by Bo Qiao)
  • remove KernelDefError KernelArgError InvalidOperationError (#4166) (by Lin Jiang)
  • [Refactor] Expose runtime/snode ops properly (#4167) (by Yi Xu)
  • [opengl] Use && instead of and in C++ code (#4171) (by Dunfan Lu)
  • [Refactor] Move core_vec(i) to gui and hide (#4172) (by Yi Xu)
  • [ci] Fix concurrent run issue (#4168) (by Frost Ming)
  • [Refactor] Rename and move scoped profiler info under ti.profiler (#4165) (by Yi Xu)
  • [spirv] Move external arrays into seperate buffers (#4121) (by Bob Cao)
  • [doc] Improve Fields documentation (#4063) (by rocket)
  • [refactor] Move functions in init to misc (#4150) (by Xiangyun Yang)
  • [refactor] Remove dependency on get_current_program() and lang::current_ast_builder() in lang::Expr (#4103) (by PGZXB)
  • [refactor] Expose ti.abs and ti.pow (#4157) (by Lin Jiang)
  • [Doc] Update README.md (#4139) (by Ye Kuang)
  • [Refactor] Do not expose TapeImpl to users (#4148) (by Yi Xu)
  • [Refactor] Remove unnecessary exposure related to matrix and mesh (#4152) (by Lin Jiang)
  • [Refactor] Do not expose internal function in field, exception, expr, any_array , _ndrange, _ndarray (#4137) (by Xiangyun Yang)
  • [Refactor] Do not expose taichi.snode (#4149) (by Bo Qiao)
  • [refactor] [ir] Remove load_if_ptr and move pointer dereferencing to frontend-to-IR passes (#4104) (by daylily)
  • [Refactor] Do not expose internal function in ti.lang.impl (#4134) (by Xiangyun Yang)
  • [Refactor] Prevent modules in lang being wild imported and exposed (#4140) (by Bo Qiao)
  • Move getattr back to init.py (#4142) (by Lin Jiang)
  • [Refactor] Avoid exposing real and integer types API (#4129) (by Bo Qiao)
  • [Refactor] Do not expose functions in taichi.lang.util to users (#4128) (by Yi Xu)
  • [Refactor] Do not expose main to users (#4136) (by Yi Xu)
  • [doc] Revise doc for GUI system. (#4006) (by Jiasheng Zhang)
  • [refactor] Remove critical/debug/error/trace/warn/info/is_logging_effective from top level (#4133) (by Ailing)
  • [Refactor] Remove supported_log_levels (#4120) (by Bo Qiao)
  • [ci] Fix approx in autodiff example test (#4132) (by Ailing)
  • [bug] Fix starred expression when the value is not a list (#4130) (by Lin Jiang)
  • Support compiling taichi in x86 (#4107) (by Dunfan Lu)
  • [javascript] Avoid all usages of glfw/vulkan/volk when TI_EMSCRIPTENED (JS 5/n) (#4108) (by Dunfan Lu)
  • [javascript] [misc] Remove redundant pybind include in Taichi Core Library (#4110) (by Dunfan Lu)
  • [test] Remove allclose at top level. (by Ailing Zhang)
  • [test] Remove approx at top level. (by Ailing Zhang)
  • [test] Remove get_rel_eps() at top level. (by Ailing Zhang)
  • [test] Replace make_temp_file with tempfile (by Ailing Zhang)
  • [Refactor] Remove exposure of internal functions in taichi.lang.ops (#4101) (by Lin Jiang)
  • [misc] Fix the changelog generator to only count current branch commits (#4126) (by Frost Ming)
  • [build] Handle empty TAICHI_EMBIND_SOURCE (#4127) (by Ailing)
  • [ci] Use GHA workflow to control the concurrency (#4116) (by Frost Ming)
  • [misc] Version bump: v0.8.11 -> v0.8.12 (#4125) (by Ailing)
  • [refactor] Remove dependency on lang::current_ast_builder() in lang::ConstantFold (#4123) (by PGZXB)
  • [doc] Add doc about difference between taichi and python programs (#3996) (by Lin Jiang)
  • [doc] Update docs about kernels and functions (#4044) (by Lin Jiang)
  • [misc] Add containers and end-to-end result to micro-benchmarks (#4081) (by rocket)
  • [opengl] Use element_size as alignment in root buffer. (#4095) (by Ailing)
  • [javascript] Add TI_EMSCRIPTENED to cmake options (JS 1/n) (#4093) (by Dunfan Lu)
  • [javascript] Add Javascript PR tag (JS 0/n) (#4094) (by Dunfan Lu)
  • [opt] Remove legacy vectorization pass (#4096) (#4099) (by daylily)
  • [refactor] [ir] Refactor ExternalFuncCallExpression into a frontend statement (#4098) (by daylily)
  • [spirv] Add names to buffer struct types and pointers (#4092) (by Bob Cao)
  • [test] Add a test for the minimization example (#4091) (by Zydiii)
  • [refactor] Remove dependency on get_current_program() in ui/backends/vulkan (#4076) (by PGZXB)
  • [refactor] [ir] Use InternalFuncCall for retrieving thread index (#4090) (by daylily)
  • Add images to GL device API (#4084) (by Bob Cao)
  • [dx11] Add underlying DX11 device, memory allocation, and some tests (#3971) (by quadpixels)
  • [Bug] [lang] Ban redefinition of template and matrix arguments in Taichi kernel (#4080) (by Lin Jiang)
  • [bug] Fix warnings on external functions on windows (#4079) (by Lin Jiang)
  • [aot] [vulkan] Provide range_hint for range_for offloaded tasks in vulkan backend. (by Ailing Zhang)
  • [refactor] Reuse SNode tree id (#4056) (by Lin Jiang)
  • [bug] Fix ndrange with star arguments (#4077) (by Lin Jiang)
  • [aot] [opengl] Provide range_hint for range_for offloaded tasks in (by Ailing Zhang)
  • [misc] Add a minimal example for micro-benchmarks (#4031) (by rocket)
  • [doc] Refactor type system doc: primitive types (#4055) (by Yi Xu)
  • [misc] Migrate benchmarks to a new version (#4059) (by rocket)
  • [refactor] Re-export some functions called directly by ASTTransfomer.* as member of ASTBuilder (#4034) (by PGZXB)
  • [autodiff] Fix the local allocas defining in inner loop raising runtime error (#4041) (by Mingrui Zhang)
  • [opengl] Make sure ndarray arg bind indices are sorted. (#4069) (by Ailing)
  • [doc] Improve operator page (#4067) (by Bo Qiao)
  • [ir] [refactor] Make ReturnStmt support a vector of stmts (#4028) (by Xiangyun Yang)
  • [Lang] [bug] Stop misusing non-template argument types to determine template reinstantiation (#4049) (by Xiangyun Yang)
  • [misc] Version bump: v0.8.10 -> v0.8.11 (#4053) (by rocket)
taichi - v0.8.11

Published by ailzhang over 2 years ago

This is a bug fix release for v0.8.10.

If you have seen excessive warnings like below on windows, please upgrade to this release.

  • Bug fixes
    • [bug] Fix warnings on external functions on windows (#4079) (by Lin Jiang)
a.py:11: UserWarning: Calling non-taichi function "ti.random". Scope inside the function is not processed by the Taichi AST transformer. The function may not work as expected. Proceed with caution! Maybe you can consider turning it into a @ti.func?
  a[i] = ti.pow(ti.random(), 2)
a.py:11: UserWarning: Calling non-taichi function "ti.pow". Scope inside the function is not processed by the Taichi AST transformer. The function may not work as expected. Proceed with caution! Maybe you can consider turning it into a @ti.func?
  a[i] = ti.pow(ti.random(), 2)

Full changelog:

  • [bug] Fix warnings on external functions on windows (#4079) (by Lin Jiang)
  • [misc] Version bump: v0.8.10 -> v0.8.11 (#4053) (by rocket)
  • [test] [example] Add test and video generator for cornell box. (#4045) (by Ailing)
taichi - v0.8.10

Published by yolo2themoon almost 3 years ago

Highlights:

  • AOT
    • Add a generic set of AOT structs (#3973) (by Ye Kuang)
    • Switch vulkan aot to use taichi::aot::ModuleData. (by Ailing Zhang)
    • Convert opengl aot to dump ModuleData. (#3991) (by Ailing)
  • Language and syntax
    • Use FrontendExprStmt in place of FrontendEvalStmt (#3978) (by daylily)
    • Get global vars by using globals (#3949) (by Lin Jiang)
    • Support static short circuit bool operations (#3958) (by Lin Jiang)
    • Experimental automatic mesh_local (#3989) (by Chang Yu)
    • Support nested mesh-for (#3990) (by Chang Yu)
  • Performance
    • Accelerate whole_kernel_cse pass (#3957) (by Xiangyun Yang)
    • Get rid of some no-ops in linear seek (by Ailing Zhang)
    • Reduce kernel launch context construction overhead (#3947) (by Haidong Lan)
    • Refactor func body to reduce python overhead and improve readability (#3984) (by Haidong Lan)
    • Get store_to_load_forwarding work with local tensors across basic blocks (#3942) (by Yi Xu)
  • Documentations
    • Update Docs preview settings. (#4021) (by Chengchen(Rex) Wang)
    • Add doc for compile-time recursion (#3994) (by Lin Jiang)
    • Add an operation page (#4004) (by Bo Qiao)
    • Improve type system documentation (#4002) (by Bo Qiao)
  • Error messages
    • Add TaichiTypeError (#3964) (by Lin Jiang)
    • Produce a warning when users call external functions (#4007) (by Lin Jiang)
    • Shorten the length of traceback of TaichiCompilationError (#3965) (by Lin Jiang)
    • Raise exception when encountering undefined name (#3951) (by Lin Jiang)
  • Bug fixes
    • Fix bug that building with TI_WITH_LLVM=OFF will fail (#4043) (by PGZXB)
    • Treat PtrOffsetStmt as random-initialized (#3998) (by Yi Xu)
    • GGUI imwrite BGRA to RGBA conversion (#4018) (by Bob Cao)

Full changelog:

  • [bug] Fix bug that building with TI_WITH_LLVM=OFF will fail (#4043) (by PGZXB)
  • [doc] Improve type system documentation (#4002) (by Bo Qiao)
  • [Error] Add error message when non-0d numpy ndarray is given to initialize expression (#4030) (by Lin Jiang)
  • [Error] Produce a warning when users call external functions (#4007) (by Lin Jiang)
  • [aot] Use element_shape instead of row_num & column_num for CompiledFieldData. (by Ailing Zhang)
  • [vulkan] [aot] Switch vulkan aot to use taichi::aot::ModuleData. (by Ailing Zhang)
  • [vulkan] Fix gtmp type (#4042) (by Bob Cao)
  • [doc] Add an operation page (#4004) (by Bo Qiao)
  • [ir] [refactor] Split stmt typechecking to the frontend (#3875) (by daylily)
  • [build] Disable LTO for mac. (#4027) (by Ailing)
  • [autodiff] Restrict Independent Block scope for cases with atomic operations on global variables (#3897) (by Mingrui Zhang)
  • [gui] GGUI imwrite BGRA to RGBA conversion (#4018) (by Bob Cao)
  • [test] [example] Add a test and a video generator for mpm99 (#3995) (by Yi Xu)
  • [doc] [ci] Update Docs preview settings. (#4021) (by Chengchen(Rex) Wang)
  • [vulkan] [aot] Throw error for templated kernels in vulkan aot. (by Ailing Zhang)
  • [bug] [opt] Treat PtrOffsetStmt as random-initialized (#3998) (by Yi Xu)
  • [ci] Keep macOS actions run on macOS-10.15 (#4014) (by rocket)
  • [vulkan] [aot] Enable aot tests for vulkan backend. (#4000) (by Ailing)
  • [mesh] [opt] Experimental automatic mesh_local (#3989) (by Chang Yu)
  • [doc] Add doc for compile-time recursion (#3994) (by Lin Jiang)
  • [refactor] [opengl] Get rid of some no-ops in linear seek (by Ailing Zhang)
  • [opengl] Do not promote simple ExternalTensorShapeAlongAxisStmt into globals. (by Ailing Zhang)
  • [build] Upgrade SPIRV-Headers and SPIRV-Tools to their latest commits (#3967) (by PGZXB)
  • [opengl] [aot] Convert opengl aot to dump ModuleData. (#3991) (by Ailing)
  • [mesh] Support multiple major relations in one mesh-for loop (#3987) (by Chang Yu)
  • [refactor] Refactor func body to reduce python overhead and improve readability (#3984) (by Haidong Lan)
  • [opt] Add more strict alias analysis for ExternalPtrStmt (#3992) (by Ailing)
  • [opt] Accelerate whole_kernel_cse pass (#3957) (by Xiangyun Yang)
  • [mesh] [opt] Support nested mesh-for (#3990) (by Chang Yu)
  • [Lang] Provide sparse matrix shape (#3959) (by Peng Yu)
  • [refactor] Remove dependency on get_current_program() in backends/cpu and backends/cuda (#3956) (by PGZXB)
  • [mesh] Demote from-end element attribute atomic op (#3923) (by Chang Yu)
  • [ci] Support rebase and rerun command in comment for CI bot (#3952) (by Frost Ming)
  • [refactor] [ci] Enable identifier naming in clang-tidy (#3960) (by Bo Qiao)
  • [refactor] [ir] Use FrontendExprStmt in place of FrontendEvalStmt (#3978) (by daylily)
  • [example] [test] Fix misuse of logical operators in examples and tests (#3976) (by Yi Xu)
  • [Error] Shorten the length of traceback of TaichiCompilationError (#3965) (by Lin Jiang)
  • [aot] Add a generic set of AOT structs (#3973) (by Ye Kuang)
  • [Error] Add TaichiTypeError (#3964) (by Lin Jiang)
  • [aot] Add task_type for OpenGL (#3962) (by Ye Kuang)
  • [Error] Raise exception when encountering undefined name (#3951) (by Lin Jiang)
  • [misc] [cuda] Set the toolkit used by KernelProfiler at runtime (#3945) (by rocket)
  • [refactor] Get global vars by using globals (#3949) (by Lin Jiang)
  • [refactor] Support static short circuit bool operations (#3958) (by Lin Jiang)
  • [perf] [refactor] Reduce kernel launch context construction overhead (#3947) (by Haidong Lan)
  • [refactor] Move python/taichi/lang/meta.py to python/taichi/_kernels.py (by Ailing Zhang)
  • [refactor] Remove import taichi in taichi/lang/impl.py (by Ailing Zhang)
  • [refactor] Remove ndarray_use_torch from pybind (#3946) (by Bo Qiao)
  • [ci] Test opengl backend on windows (#3924) (by Frost Ming)
  • [Error] Do not show body in exceptions in nodes with body (#3940) (by Lin Jiang)
  • [opt] Get store_to_load_forwarding work with local tensors across basic blocks (#3942) (by Yi Xu)
  • [refactor] [ir] Remove legacy stmts from CHI IR (#3943) (by Yi Xu)
  • [Error] Shorten the length of traceback of exceptions thrown by ASTTransformer (#3873) (by lin-hitonami)
  • [misc] Version bump: v0.8.9 -> v0.8.10 (#3935) (by Bo Qiao)
taichi - v0.8.9

Published by qiao-bo almost 3 years ago

Highlights:

  • Android
    • Add initial support of Android in GGUI (#3845) (by Gabriel H)
  • Bug fixes
    • Query device attribute when using cuda 11 and above (#3930) (by Bo Qiao)
    • Fix the ttf path (#3931) (by Xiangyun Yang)
  • Language and syntax
    • Initial matrix argument support for ti.kernel (#3905) (by Xiangyun Yang)
    • Enable dynamic indexing of matrix field elements when possible (#3865) (by Yi Xu)
  • Miscellaneous
    • Support logging on Android platforms (#3849) (by Gabriel H)
  • Refactor
    • Remove all occurrences of print_preprocessed and print_ast (#3911) (by Xiangyun Yang)
    • Deprecate excepthook and completely remove _taichi_skip_traceback (#3902) (by Haidong Lan)
  • Tests
    • Add initial AOT CPP test (#3850) (#3899) (by Gabriel H)
    • Add initial AOT CPP test (#3850) (by Gabriel H)

Full changelog:

  • [ci] Install torch for windows release (#3932) (by Bo Qiao)
  • [Bug] fix the ttf path (#3931) (by Xiangyun Yang)
  • [Bug] [cuda] Query device attribute when using cuda 11 and above (#3930) (by Bo Qiao)
  • [refactor] Optimize vector and matrix ndarray fill (#3921) (by Bo Qiao)
  • [opt] [ir] [refactor] Remove exceptions from offload pass (#3925) (by Xiangyun Yang)
  • [opt] [refactor] Remove the variable_optimization pass (#3927) (by Mingkuan Xu)
  • [doc] Add a tutorial: Run Ndarray Taichi program (#3908) (by Vissidarte-Herman)
  • [opt] [ir] [refactor] Remove exceptions from lower_ast pass (#3916) (by Xiangyun Yang)
  • [cuda] Use cuMemsetD32 to fill scalar ndarray (#3907) (by Bo Qiao)
  • [ci] Add self-hosted Windows buildbot for GPU testing (#3852) (by Frost Ming)
  • [Lang] Initial matrix argument support for ti.kernel (#3905) (by Xiangyun Yang)
  • [doc] Add example of color_edit_3 (#3919) (by Vineyo)
  • [perf] Clear global_vars/matrix_fields after materialize() (#3914) (by Yi Xu)
  • [gui] Update camera.py (#3898) (by stamnug)
  • [bug] Enable field-related checks in materialize() not only in first call (#3906) (by Yi Xu)
  • [Refactor] Remove all occurrences of print_preprocessed and print_ast (#3911) (by Xiangyun Yang)
  • [perf] Avoid using property for simple attributes to reduce python overhead. (by Ailing Zhang)
  • [opengl] Respect max_block_dim in ti.init (by Ailing Zhang)
  • [dx11] Add DX11 device interface definition (#3880) (by quadpixels)
  • [Refactor] Deprecate excepthook and completely remove _taichi_skip_traceback (#3902) (by Haidong Lan)
  • [opengl] Optimize range_for for ndarrays (by Ailing Zhang)
  • [Test] [aot] Add initial AOT CPP test (#3850) (#3899) (by Gabriel H)
  • [refactor] Merge taichi/lang/linalg_impl.py into _funcs.py (by Ailing Zhang)
  • [refactor] Remove import taichi in taichi/lang/quant_impl.py (by Ailing Zhang)
  • [refactor] Remove import taichi in taichi/lang/util.py (by Ailing Zhang)
  • [cuda] Increase saturating grid dim to reduce tail effect (#3855) (by Bo Qiao)
  • [opengl] Reduce repeated read to args buffer. (by Ailing Zhang)
  • [refactor] Remove import taichi from lang/init.py (#3889) (by Yi Xu)
  • Revert "[Test][aot] Add initial AOT CPP test (#3850)" (#3890) (by Ye Kuang)
  • [Android] [gui] Add initial support of Android in GGUI (#3845) (by Gabriel H)
  • [Test][aot] Add initial AOT CPP test (#3850) (by Gabriel H)
  • [Lang] Enable dynamic indexing of matrix field elements when possible (#3865) (by Yi Xu)
  • [cuda] Hide debug info (#3878) (by Ye Kuang)
  • [refactor] Remove legacy helper functions for testing (#3874) (by Yi Xu)
  • [refactor] Remove import taichi from expr.py (#3871) (by Yi Xu)
  • [refactor] Remove import taichi from field.py (#3870) (by Yi Xu)
  • [refactor] Remove import taichi from mesh.py (#3869) (by Yi Xu)
  • [refactor] Remove import taichi in ast_transformer (#3827) (by lin-hitonami)
  • [refactor] Remove import taichi from struct.py (#3866) (by lin-hitonami)
  • [autodiff] Provide stmt name for auto-diff related assert info (#3864) (by Mingrui Zhang)
  • [lang] Cleanup parallel sort utility (#3858) (by Dunfan Lu)
  • [refactor] Enforce destruction order of OpenGlRuntime. (#3861) (by Ailing)
  • [refactor] Add _MatrixFieldElement class (#3862) (by Yi Xu)
  • [opt] Add more accurate alias analysis for ExternalPtrStmt (#3859) (by Yi Xu)
  • [mesh] A small fix for mesh loop syntax in python frontend (#3836) (by bx2k)
  • [test] Add more complicated tests for building and destroying SNodeTrees (#3415) (by ysh329)
  • [lang] Calculate dynamic indexing strides of matrix field elements (#3854) (by Yi Xu)
  • [bug] Fix autodiff for ceil. (#3844) (by Ailing)
  • [refactor] Remove import taichi in matrix.py (#3842) (by lin-hitonami)
  • [Misc] [android] Support logging on Android platforms (#3849) (by Gabriel H)
  • [opengl] Allocate new arg bufs per kernel launch (#3848) (by Ailing)
  • [opengl] Only sync per ti.kernel when there's external array arg. (by Ailing Zhang)
  • [refactor] Rename is_external_array -> is_array and arr_bufs_ -> ext_arr_bufs_ (by Ailing Zhang)
  • [opengl] Only bind buffers per ti.kernel. (by Ailing Zhang)
  • [misc] Version bump: v0.8.8 -> v0.8.9 (#3846) (by Yi Xu)
taichi - v0.8.8

Published by strongoier almost 3 years ago

Highlights:

  • Android
    • Add initial support of the platform (#3755) (by Gabriel H)
  • Bug fixes
    • Fix copying a Matrix/Struct in Taichi scope (#3838) (by Yi Xu)
    • Modify the implementation of norm_sqr() (#3803) (by Yi Xu)
  • Documentation
    • Tweak API docstrings (#3820) (by Ye Kuang)
    • Refactored contribution guidelines (#3789) (by Vissidarte-Herman)
    • Fix a misspelling (#3773) (by 张皓)
  • Examples
    • Fix constraint correction (#3740) (by Peng Yu)
  • GUI
    • Fix gui.text crash bug (#3770) (by Peng Yu)
  • Language and syntax
    • Use ndarray own memory allocator by default (#3843) (by Bo Qiao)
    • User-friendly exception when copying between ti.field (#3442) (by J. Li)
    • Enforce single deterministic return in taichi kernels and functions (#3795) (by lin-hitonami)
    • Add "In" support in static scope (#3792) (by lin-hitonami)
    • Support sparse solver datatype configuration (#3733) (by Peng Yu)
    • Fix pylint rule C0321 (multiple-statements) and C0325 (superfluous-parens). (#3762) (by kxxt)
    • Enforce members of a matrix field to have same shape (#3761) (by Yi Xu)
    • Fix pylint rule W1309 (f-string-without-interpolation) (#3757) (by kxxt)
  • LLVM backend (CPU and CUDA)
    • Remove the dependency of llvm-as (#3562) (by Tianshu Xu)
  • Metal backend
    • Pass random seed to metal backend (#3724) (by Jian Zeng)
  • Performance improvements
    • Unnecessary assignment as it is redefined (#3753) (by skywf)
  • Vulkan backend
    • Update AOT Loader support to new API (#3766) (by Gabriel H)
    • Add support of loading AOT modules and fields (#3703) (by Gabriel H)

Full changelog:

  • [misc] Fix postsubmit status in README.md by replacing it with publishing checks (#3840) (by Velaciela)
  • [Lang] Use ndarray own memory allocator by default (#3843) (by Bo Qiao)
  • memset before reusing memory (#3841) (by Bo Qiao)
  • [refactor] Recover 'in' operator in vector_to_fast_image() (#3839) (by Yi Xu)
  • [Bug] [lang] Fix copying a Matrix/Struct in Taichi scope (#3838) (by Yi Xu)
  • [refactor] Remove import taichi in common_ops.py (#3824) (by lin-hitonami)
  • [vulkan] Fix command serial ordering & uses less queue submits (#3818) (by Bob Cao)
  • [ci] Enforce using ninja on Windows in both release and normal testing (#3837) (by Yi Xu)
  • [lang] Fix ndarray cuda dealloc when using preallocated memory (#3829) (by Bo Qiao)
  • [Lang] User-friendly exception when copying between ti.field (#3442) (by J. Li)
  • [refactor] Remove import taichi in kernel_impl.py (#3825) (by lin-hitonami)
  • Update TaichiCXXFlags.cmake (#3823) (by Bob Cao)
  • [bug] Fix static grouped for (#3822) (by lin-hitonami)
  • [misc] Slient & non-blocking version check (#3816) (by Jiasheng Zhang)
  • [doc] Editorial updates to contributor_guide.md (#3806) (by Vissidarte-Herman)
  • [Vulkan] Update AOT Loader support to new API (#3766) (by Gabriel H)
  • [Doc] Tweak API docstrings (#3820) (by Ye Kuang)
  • [ci] Use clang+Ninja to build Taichi on windows (#3735) (by Bob Cao)
  • [LLVM] Remove the dependency of llvm-as (#3562) (by Tianshu Xu)
  • [build] No need to build main executable (#3804) (by Frost Ming)
  • [lang] Add parallel sort utility (#3790) (by Dunfan Lu)
  • [misc] [bug] Fix legacy benchmarks/run.py (#3812) (by rocket)
  • [refactor] Move CompiledFieldData to aot namespace. (#3797) (by Ailing)
  • [docs] Update README.md to include command to install nightly. (#3809) (by Ailing)
  • [Lang] Enforce single deterministic return in taichi kernels and functions (#3795) (by lin-hitonami)
  • [bug] Fix typo in opengl codegen. (#3801) (by Ailing)
  • [bug] Use NdarrayRwKeys for ndarray host reader & writer caching. (#3805) (by Ailing)
  • [Bug] [opengl] Modify the implementation of norm_sqr() (#3803) (by Yi Xu)
  • [bug] Create core folder if it doesn't exist. (#3799) (by Ailing)
  • [doc] Update CONTRIBUTING.md to include contribution opportunities (#3794) (by Ye Kuang)
  • [Doc] Refactored contribution guidelines (#3789) (by Vissidarte-Herman)
  • [refactor] Move ti.lib to ti._lib and move ti.core to ti._lib.core (#3731) (by lin-hitonami)
  • [Lang] Add "In" support in static scope (#3792) (by lin-hitonami)
  • [ir] [llvm] Add offset_bytes_in_parent_cell to SNode (#3793) (by Yi Xu)
  • [bug] [opengl] Avoid using new as variable name in generated glsl. (#3786) (by Ailing)
  • [refactor] Move diagnose.py and cc_compose.py to tools/ (#3788) (by lin-hitonami)
  • [misc] Increase the kernel number recorded by CUPTI (#3780) (by rocket)
  • [vulkan] Try to enable Vulkan test in macOS presubmit (#3456) (by Bob Cao)
  • [llvm] [bug] Support atomic min/max for unsigned int type (#3779) (by Chang Yu)
  • [Lang] Support sparse solver datatype configuration (#3733) (by Peng Yu)
  • [gui] Fix vector to fast image (#3778) (by Bob Cao)
  • [Example] [bug] Fix constraint correction (#3740) (by Peng Yu)
  • [refactor] Remove get_type_size() from JITSession (#3777) (by Yi Xu)
  • [Lang] Fix pylint rule C0321 (multiple-statements) and C0325 (superfluous-parens). (#3762) (by kxxt)
  • [misc] Remove more deprecated APIs (#3774) (by Zack Wu)
  • [GUI] Fix gui.text crash bug (#3770) (by Peng Yu)
  • Fix spirv types (#3772) (by Dunfan Lu)
  • [Doc] Fix a misspelling (#3773) (by 张皓)
  • [Lang] Enforce members of a matrix field to have same shape (#3761) (by Yi Xu)
  • [bug] Enable int32 atomic ops for opengl backend. (#3760) (by Ailing)
  • [gui] Fix ggui canvas.set_image (#3767) (by Dunfan Lu)
  • [test] Enable ndarray tests (#3759) (by Bo Qiao)
  • [Lang] Fix pylint rule W1309 (f-string-without-interpolation) (#3757) (by kxxt)
  • [Android] Add initial support of the platform (#3755) (by Gabriel H)
  • Update dev_install.md (#3758) (by Vissidarte-Herman)
  • [misc] Speed-up builds by removing LLVM includes from llvm_program.h (#3756) (by Bob Cao)
  • [Perf] Unnecessary assignment as it is redefined (#3753) (by skywf)
  • [ci] Update performance monitoring (#3741) (by rocket)
  • [opengl] Don't serialize ext_arr_access in aot. (#3749) (by Ailing)
  • [refactor] Move ti.randn out of taichi.lang. (#3742) (by Ailing)
  • [bug] Temporarily remove runtime_ usage in aot_module_builder. (#3746) (by Ailing)
  • [misc] Update title check to be more robust. (#3747) (by Ailing)
  • [Metal] Pass random seed to metal backend (#3724) (by Jian Zeng)
  • [Vulkan] Add support of loading AOT modules and fields (#3703) (by Gabriel H)
  • [refactor] Let build_xxx in ASTTransformer return node.ptr instead of node (#3695) (by lin-hitonami)
  • [doc] Fix a heading level in syntax (#3738) (by Ran)
  • [misc] Remove deprecated Python APIs (#3725) (by Zack Wu)
  • [ci] Auto generate manylinux dockerfile (#3699) (by Bo Qiao)
  • version bump (#3736) (by lin-hitonami)
  • [misc] Support Clang build on windows (#3732) (by Bob Cao)
  • [test] Refine the way to test the laplace example (#3721) (by Yi Xu)
taichi - v0.8.7

Published by lin-hitonami almost 3 years ago

Full changelog:

  • [refactor] Merge taichi.misc into taichi.tools. (by Ailing Zhang)
  • [refactor] Merge taichi.lang.types into taichi.types. (by Ailing Zhang)
  • Add /bigobj flag to allow Debug builds on windows (#3730) (by Bob Cao)
  • [misc] Add an option to skip version check (#3729) (by Jiasheng Zhang)
  • [refactor] Separate Cpp examples into different files (#3728) (by Dunfan Lu)
  • [ci] [bug] Fix release in CI (#3719) (by lin-hitonami)
  • [Lang] Support annotated assignment (#3709) (by Ziwen Ye)
  • [vulkan] Further decouple SPIRV codegen from Vulkan runtime (#3711) (by Dunfan Lu)
  • [refactor] First clang-tidy pass (#3407) (by Taichi Gardener)
  • [misc] Remove legacy Windows-related scripts (#3722) (by Yi Xu)
  • [misc] Error handle and TLS (#3718) (by Jiasheng Zhang)
  • fix tab and long line (#3669) (by lin-hitonami)
  • [bug] Fix template arguments of ti.func with default values (#3716) (by lin-hitonami)
  • [refactor] Rename CompiledProgram to CompiledTaichiKernel. (by Ailing Zhang)
  • [refactor] Add doc string for ndarray element_shapes & field_dim. (by Ailing Zhang)
  • Update euler.py (#3715) (by skywf)
  • [misc] Use ccache & prefer Ninja over Make as cmake (#3712) (by Ailing)
  • fix the script path in release workflow (#3713) (by Frost Ming)
  • [ci] Use the same script for docker and system build & test (#3698) (by Frost Ming)
  • [example] SPIR-V AOT example in C++ (#3707) (by Dunfan Lu)
  • [LLVM] Add missing pre-processor macro when LLVM is disabled (#3702) (by Gabriel H)
  • [example] Build cpp examples (#3705) (by Dunfan Lu)
  • [doc] Improve the dev install doc (#3685) (by Ye Kuang)
  • [cuda] Enable block splitting for cuda caching memory allocator (#3677) (by Bo Qiao)
  • [ci] Run cpp tests in unix_docker_test.sh (#3693) (by Jian Zeng)
  • [refactor] [opengl] Properly save both scalar args and array args. (by Ailing Zhang)
  • [refactor] [opengl] For each taichi kernel, save a {kernel_name, CompiledProgram} pair instead of a vector. (by Ailing Zhang)
  • [refactor] [opengl] Use CompiledOffloadedTask instead of CompiledKernel. (by Ailing Zhang)
  • [refactor] [opengl] Remove dtype & total_size_hint in serialized aot file. (by Ailing Zhang)
  • [Lang] Make example_any_arrays optional. (by Ailing Zhang)
  • [Lang] Add optional element_shapes & field_dim annotation to ndarray. (by Ailing Zhang)
  • [vulkan] Isolate SPIR-V codegen, cleanup Vulkan backend (#3676) (by Bob Cao)
  • [refactor] Turn off empty root buffer warning for finalize_for_aot. (#3681) (by Ailing)
  • [misc] Handle outermost error and change metadata server address to latest (#3686) (by Jiasheng Zhang)
  • [refactor] Remove ext_arr_map in favor of CompiledArrayData. (by Ailing Zhang)
  • [refactor] Remove unused functions in misc. (#3671) (by Ailing)
  • [ci] Fix cancel workflow to only cancel the same branch (#3678) (by Frost Ming)
  • [refactor] Rename testing.py to _testing.py (#3668) (by Yi Xu)
  • [Vulkan] add initial support of AOT (#3647) (by Gabriel H)
  • [refactor] Move image.py from misc/ to tools/ and remove it from top level package (#3672) (by Yi Xu)
  • [opengl] [refactor] Expose use_gles in CompileConfig. (#3662) (by Ailing)
  • checkout the repo for cancel (#3670) (by Frost Ming)
  • [refactor] [opengl] Move ndarray aot information inside kernels. (#3658) (by Ailing)
  • [ci] Add sccache to ci building process on Linux and Mac jobs (#3559) (by lin-hitonami)
  • [refactor] Remove np2ply, patterns, video from top level package (#3660) (by Yi Xu)
  • [ci] Set token in cancel workfow (#3664) (by Frost Ming)
  • [ci] Run code format check for doc-only changes as well. (#3665) (by Ailing)
  • [bug] Fix postsubmit (#3661) (by lin-hitonami)
  • [cuda] Query the max block count from the hardware (#3657) (by Bob Cao)
  • Restructured dev_install.md (#3616) (by Vissidarte-Herman)
  • [error] Let type_check throw TypeError (#3650) (by lin-hitonami)
  • Attempt to unite postsubmit and presubmit (#3654) (by Frost Ming)
  • [Refactor] Deprecate Expr::operator= (#3596) (by Jun)
  • Use helper fill function (#3655) (by Bo Qiao)
  • [perf] Accelerate _inside_class() (#3653) (by Yi Xu)
  • [Bug] [lang] Fix copying Matrix/StructField elements in Taichi scope (#3649) (by Yi Xu)
  • [refactor] Ignore filename prefix in opengl aot files. (#3648) (by Ailing)
  • [error] Add line number and source code to exception (#3637) (by lin-hitonami)
  • [Lang] Cuda caching allocator for ndarray 1/n (#3581) (by Bo Qiao)
  • [refactor] Move GUI from misc to ui. (by Ailing Zhang)
  • [refactor] Get rid of tools/file.py (#3645) (by Yi Xu)
  • [refactor] Get rid of tools/messenger.py. (by Ailing Zhang)
  • [refactor] Get rid of ti.task. (by Ailing Zhang)
  • [refactor] Remove primitive_types module in top level package. (by Ailing Zhang)
  • [Bug] [lang] Fix copying a Matrix/Struct from Python scope to Taichi scope (#3638) (by Yi Xu)
  • [Lang] Add option short_circuit_operators for short-circuiting boolean ops (#3632) (by daylily)
  • Fix build script for docker build (#3629) (by Frost Ming)
  • [gui] Fix incorrect shading when first calling mesh/particles (#3628) (by Chang Yu)
  • [misc] Temporarily disable performance monitoring for testing offline (#3626) (by rocket)
  • [refactor] Get rid of ASTTransformerTotal and rename IRBuilder to ASTTransformer (#3610) (by lin-hitonami)
  • [bug] Correctly support serializing maps & vectors to json. (by Ailing Zhang)
  • [bug][opengl] Only add atomicAdd functions in generated code for arrs when they're used. (by Ailing Zhang)
  • [refactor] Do not expand to absolute path for saved shaders. (by Ailing Zhang)
  • Respect drawing order specified by user (#3614) (by Dunfan Lu)
  • [bug] Revert part of #3569 so that tests are not skipped. (#3620) (by Ailing)
  • [lang] Disable signal handlers when TI_DISABLE_SIGNAL_HANDLERS=1 (#3613) (by Ye Kuang)
  • [misc] Do not let check_version block users (#3619) (by Jiasheng Zhang)
  • fix unix build script for nightly build (#3618) (by Frost Ming)
  • [Lang] Implement opt_level for accelerating compiling (#3434) (by squarefk)
  • [gui] Fix vulkan glfw image count (#3604) (by Bob Cao)
  • [misc] Remove legacy torch_io.py (#3609) (by Yi Xu)
  • [bug] Enable reassignment of scalar arguments (#3607) (by lin-hitonami)
  • [misc] Fix upload release error handling (#3606) (by Jiasheng Zhang)
  • [opengl] Serialize ndarrays and ndarray-based kernels in AOT. (by Ailing Zhang)
  • [opengl] Support taichi ndarray on opengl backend and enable tests. (by Ailing Zhang)
  • [llvm] Make taichi's Ndarray carry a ptr to its DeviceAllocation. (by Ailing Zhang)
  • Temporarily disable flaky test (#3603) (by Bo Qiao)
  • [Opt] [ir] [refactor] Remove exception from simpify pass (#3317) (by lin-hitonami)
  • [misc] Version bump: v0.8.6 -> v0.8.7 (#3602) (by Jiasheng Zhang)
  • [mesh] Make ti.Mesh compatible with dynamic index (#3599) (by Yi Xu)
taichi - [DO NOT USE] v0.8.6

Published by Leonz5288 almost 3 years ago

Notes:

We added a function to periodically check version information on ti.init to remind users if a new version has been released. However, this function is not fully tested when 0.8.6 is released, and the error handling is not well-implemented. Taichi crashes when it fails to check the version (maybe due to network issues). For this reason, 0.8.6 is removed from the official releases in PyPI. Please upgrade to a newer version if you are on this version. We are sorry for the inconvenience.

Full changelog:

  • [Lang] Check version when importing taichi instead of when using ti (#3598) (by Jiasheng Zhang)
  • [Lang] Add ti.round op (#3541) (by gaoxinge)
  • [Bug] [ir] Fix the IdentifyValuesUsedInOtherOffloads pass (#3597) (by Yi Xu)
  • [ci] Fix release (#3594) (by Jiasheng Zhang)
  • [perf] Add async_mode restriction to ti.sync() of external_arrays in class Kernel (#3535) (by rocket)
  • [Lang] Add time check before performing version check (#3589) (by Jiasheng Zhang)
  • [Doc] Fix example link in README. (#3584) (by egolearner)
  • [gui] GGUI initial alpha transparency support (#3592) (by Bob Cao)
  • [ci] Turn off vulkan build on macos (#3591) (by Jiasheng Zhang)
  • [ci] Fix release bug (#3585) (by Jiasheng Zhang)
  • [misc] Update documentations after the examples directory changed (#3587) (by Velaciela)
  • [bug] Fix missing tests/ folder in postsubmit & release workflows. (#3583) (by Ailing)
  • [refactor] Avoid copying examples/ folder when building taichi. (by Ailing Zhang)
  • [Test] Remove ti test from taichi package. (by Ailing Zhang)
  • [ci] Fix postsubmit mac build failure (#3579) (by Jiasheng Zhang)
  • [misc] MoltenVK dynamic library & allow overriding CLANG_EXECUTABLE (#3565) (by Bob Cao)
  • [Lang] Add get_element_size for ndarray (#3576) (by Bo Qiao)
  • [ci] Remove usage of build.py in favor of setup.py (#3537) (by Frost Ming)
  • [Bug] [llvm] Fix FP<->UInt castings (#3560) (by Yi Xu)
  • [Bug] [vulkan] Fix data type alignment for arguments and return values (#3571) (by Yi Xu)
  • ci (#3569) (by Tianshu Xu)
  • [Bug] [metal] Fix data type alignment for arguments and return values (#3564) (by Yi Xu)
  • [Mesh] [opt] Support mesh-for for multi-CPUs & demote atomic stmts in BLS for x64 (by Chang Yu)
  • [Mesh] Remove Matrix.with_entries() & support ti.mesh_patch_idx() (by Chang Yu)
  • [Mesh] Support mesh-for for CPU backend (by Chang Yu)
  • [Mesh] [refactor] Migrate ti.Mesh to refactored frontend (by Chang Yu)
  • [Mesh] Add type_check for ti.Mesh frontend (by g1n0st)
  • [Mesh] Add CI tests for ti.Mesh (by Chang Yu)
  • [Mesh] Decouple metadata (by Chang Yu)
  • [Mesh] Fix misc & restore code formatter (by g1n0st)
  • [Mesh] Reduce SNode trees allocation for ti.Mesh (by Chang Yu)
  • [Mesh] Refactor serialize() for frontend IR (by Chang Yu)
  • [Mesh] Fix bugs to enable reordered mesh attribute (by Chang Yu)
  • [Mesh] Fix bugs to enable nested relation access (by Chang Yu)
  • [Mesh] [refactor] Refactor frontend (by Chang Yu)
  • [Mesh] [opt] Demote no relation access mesh-for to range-for (by Chang Yu)
  • [Mesh] Quick fix bugs after rebase (by g1n0st)
  • [Mesh] Fix Layout.AOS (by Chang Yu)
  • [Mesh] Quick fix bugs after rebase (by g1n0st)
  • [Mesh] [fix] Fix failed caching mapping only (by Chang Yu)
  • [Mesh] Add experimental compile configs (by Chang Yu)
  • [Mesh] [refactor] Remove MeshAttribute in mesh class (by Chang Yu)
  • [Mesh] [opt] Make mesh attribute local (by Chang Yu)
  • [Mesh] [Lang] Quick fix rebase conflicts (by g1n0st)
  • [Mesh] Add analyzer to determine which mapping should be cache (by g1n0st)
  • [Mesh] Clean MeshAttributeSet in DecoratorRecorder (by Chang Yu)
  • [Mesh] [refactor] Add global to reordered index mapping type (by Chang Yu)
  • [Mesh] [refactor] Unified MeshRelationAccessStmt and MeshRelationSizeStmt (by g1n0st)
  • [Mesh] [refactor] Rename to_string functions (by g1n0st)
  • [Mesh] Use ti.axes instead of ti.indices (by g1n0st)
  • [Mesh] Add ti.mesh_local() (by g1n0st)
  • [Mesh] [refactor] Divide make_mesh_index_mapping_local pass into multiple functions (by g1n0st)
  • [Mesh] [test] Delete outdated mesh-for test (by g1n0st)
  • [Mesh] [opt] Optimize reordered index mapping case (by g1n0st)
  • [Mesh] [refactor] from_type() as statement attribute (by g1n0st)
  • [Mesh] Add optimization pass to make index mapping local (by g1n0st)
  • [Mesh] Set MeshTaichi as extension (by g1n0st)
  • [Mesh] [refactor] Rename make_mesh_attribute_local to demote_mesh_statements (by g1n0st)
  • [Mesh] Support low-to-high and same-order relation access (by g1n0st)
  • [Mesh] Add analysis pass to gather mesh thread local variables (by g1n0st)
  • [Mesh] Add analysis pass to gather mesh_for relation types (by g1n0st)
  • [Mesh] Clean up field template based residual & fix bugs (by g1n0st)
  • [Mesh] Id property to interact with non-mesh field (by g1n0st)
  • [Mesh] MeshRelationAccessStmt & MeshIndexConversionStmt backend implementation (by g1n0st)
  • [Mesh] Frontend Impl (by g1n0st)
  • [Mesh] Fix code format (by g1n0st)
  • [Mesh] [IR] Add MeshRelationAccessStmt & MeshIndexConversionStmt (by g1n0st)
  • [IR] Quick fix rebase conflict (by g1n0st)
  • [Mesh] [Lang] New ti.Mesh frontend class prototype & MeshRelationSize statement and expression (by g1n0st)
  • [Mesh] Fix mesh-for in multiple passes (by g1n0st)
  • [Mesh] Fix type_check pass for body_prologue in OffloadedStmt (by g1n0st)
  • [Mesh] Add make_mesh_thread_local pass (by g1n0st)
  • [Mesh] Make the type of loop in MeshPatchIndexStmt explicit (by g1n0st)
  • [Mesh] Make get num_patches behavior correctly (by g1n0st)
  • [Mesh] Removed wildcard import in python (by g1n0st)
  • [Mesh] Add MeshPatchIndexStmt statement (by g1n0st)
  • [Mesh] Add a backend Mesh class prototype & relation based mesh_for (by g1n0st)
  • [Mesh] [refactor] Create a new pass called make_mesh_attribute_local (by g1n0st)
  • [Mesh] A simple BLS pass to do the local to global mapping (by bx2k)
  • [Mesh] A Frontend ti.Mesh class prototype (by g1n0st)
  • [Mesh] Fix meshfor at simplify pass (by bx2k)
  • [Mesh] A simple meshfor frontend enable to print index (by bx2k)
  • [Mesh] Add Meshfor prototype with dirty hacks (by bx2k)
  • [LLVM] Fix casting f64 to f16 (#3561) (by Tianshu Xu)
  • [misc] Improve the mechanism to find clang (#3379) (by Tianshu Xu)
  • [CI] Add version database update in CD (#3540) (by Jiasheng Zhang)
  • [Doc] Move build Taichi from source one level up (#3551) (by tison)
  • [Misc] [refactor] Move symbol versioning to a new file (#3426) (by Bo Qiao)
  • [misc] Fix redefined reset function (#3227) (#3521) (by u2386)
  • [ci] Dockerfile for CPU manylinux2014 compliant (#3542) (by Bo Qiao)
  • [Lang] [bug] Fix numpy from and to ndarray matrix (#3549) (by Bo Qiao)
  • [Lang] Remove disable_local_tensor and empty() from Matrix (#3546) (by Yi Xu)
  • [refactor] Remove with_entries() and keep_raw from Matrix (#3539) (by Yi Xu)
  • [lang] Limit torch based ndarray to cpu/cuda backend. (#3545) (by Ailing)
  • [Refactor] Fix typo and type in docstring, and format too long string (#3530) (by gaoxinge)
  • [Lang] Add check version function to taichi main (#3526) (by Jiasheng Zhang)
  • [bug] Remove fallback in C++ code (#3538) (by lin-hitonami)
  • [refactor] Remove empty_copy() and copy() from Matrix/Struct (#3536) (by Yi Xu)
  • [misc] Reorg CI stages (#3525) (by Tianshu Xu)
  • [ci] Remove build_and_test_cpu_required from CI to save time (#3534) (by lin-hitonami)
  • [refactor] Remove variable() of Matrix/Struct and empty() of Matrix/StructType (#3531) (by Yi Xu)
  • [ci] Disable arch fallback on CI (#3474) (by lin-hitonami)
  • [refactor] Decouple KernelProfilerBase::sync() from Program::synchronize() (#3504) (by rocket)
  • [Lang] Add deepcopy for ndarray (#3473) (by Bo Qiao)
  • [Lang] Fix pylint rule E1101 (#3500) (by DeepDuke)
  • [Lang] Implement ti.global_thread_idx (#3319) (by Shay P.C)
  • [refactor] Remove the old AST builder from python frontend (#3527) (by lin-hitonami)
  • [Lang] Remove disable_local_tensor in most cases (#3524) (by Yi Xu)
  • [opengl] Use separate ssbo for external arrays. (by Ailing Zhang)
  • [refactor] Rename Context to RuntimeContext. (by Ailing Zhang)
  • [Lang] Enable local tensors as writeback binary operation results (#3517) (by Yi Xu)
  • fix (#3523) (by Dunfan Lu)
  • [metal] Add a TI_WITH_METAL option (#3510) (by Dunfan Lu)
  • [Lang] Fix pylint rule W0621 (#3498) (by ZONEPG)
  • [refactor] Enable the new ast builder by default (#3516) (by lin-hitonami)
  • [ci] Add a helper script for Dockerfile generation. (#3509) (by Chengchen(Rex) Wang)
  • [ci] Fix release action now being able to be triggered manually (#3520) (by Jiasheng Zhang)
  • Create CONTRIBUTING.md (#3518) (by Tianshu Xu)
  • Update unix_build.sh (#3511) (by Bob Cao)
  • [ci] Minor fix for windows release upload. (#3513) (by Ailing)
  • [llvm] Add a TI_WITH_LLVM option (#3507) (by Dunfan Lu)
  • [CUDA] Fix a misuse of std::move: address of stack memory associated with temporary object of type std::lock_guardstd::mutex returned to caller (#3502) (by Twice)
  • [Lang] Add W0101 rule for pylint (#3497) (by Ligeng Zhu)
  • Add PEP 517 build specification (#3495) (by Frost Ming)
  • [Lang] Fix pylint rule W0622 (#3501) (by Mark Huang)
  • [Lang] Fix pylint rule R1710 (#3496) (by licktion)
  • [Lang] Fix pylint rule W0612 (#3151) (#3488) (by klein)
  • [ci] Fix pylint conflicts (#3503) (by Ye Kuang)
  • [Lang] Fix pylint rule C0209 (#3489) (by zstone12)
  • [Lang] Fix pylint rule W0404 (#3477) (by Dustyposa)
  • fix pylint W0235 (#3486) (by ImPerat0R_)
  • [IR] Enforce type check for all expressions (#3461) (by Yi Xu)
  • [Lang] Fix pylint rule W0101 (#3493) (by darkSheep)
  • [Lang] Fix pylint rule W0108 (#3482) (by Isaac)
  • [Lang] Fix pylint rule R0201 (#3494) (by Alex Chi)
  • [Lang] Fix pylint rule C0200 (#3480) (by Keming)
  • [Lang] Fix pylint rule R1705 (#3491) (by IceCodeNew)
  • [Lang] Fix pylint rule R1732 (#3490) (by IceCodeNew)
  • [Lang] Fix pylint rule R1703 (#3472) (by HHHJH)
  • [Lang] Fix pylint rule R0205 (#3487) (by Isaac)
  • [Lang] Fix pylint rule R0402 (#3483) (by Yu Dou)
  • [misc] Enable clang-tidy check in CI (#3475) (by Tianshu Xu)
  • [Doc] Fix wrong example about TAICHI_CMAKE_ARGS (#3485) (by Jun)
  • [Lang] Fix pylint rule W0201 (#3476) (by Dustyposa)
  • [Lang] Fix pylint rule W0611 (#3478) (by ZHANG Zhi)
  • [docs] Remove ti format in doc. (#3479) (by Ailing)
  • [Lang] Enable local tensors as arithmetic operation results (#3468) (by Yi Xu)
  • [Lang] Fix pylint rule W0401 (#3471) (by Alkaid)
  • [Lang] Change the type error to a real exception (#3439) (by Frost Ming)
  • Report error if upload fails (#3462) (by Frost Ming)
  • [opengl] Unify windows path to posix format in python. (#3470) (by Ailing)
  • [Bug] [opt] Visit RangeForStmt in IdentifyValuesUsedInOtherOffloads (#3466) (by Yi Xu)
  • [vulkan] Link to MoltenVK on macOS (#3445) (by Bob Cao)
  • [vulkan] Basic Bitmasked support (#3412) (by Bob Cao)
  • [opengl] Make windows path in saved aot json human readable. (#3460) (by Ailing)
  • [refactor] [bug] Eliminate failing tests on the new AST builder (#3441) (by lin-hitonami)
  • [misc] Add default values of TI_VERSION (#3459) (by Tianshu Xu)
  • [misc] Temporarily disable clang-tidy check. (#3458) (by Ailing)
  • [misc] Remove regex in TextSerializer. (#3454) (by Ailing)
  • [IR] Add type_check for Atomic/SNodeOpExpression (#3444) (by Yi Xu)
  • [IR] Remove EvalExpression (#3448) (by Yi Xu)
  • [misc] Version bump: v0.8.5->v0.8.6. (#3457) (by Ailing)
taichi - v0.8.5

Published by ailzhang almost 3 years ago

Full changelog:

  • [misc] Fix python wheel versioning. (#3450) (by Ailing)
  • [misc] Version bump: v0.8.4->v0.8.5. (#3447) (by Ailing)
  • [IR] Add type inference for loop variables (#3437) (by Yi Xu)
  • [LLVM] Fix link (#3443) (by Tianshu Xu)
  • [IR] Add type_check for RangeAssumption/LoopUnique/ExternalTensorShapeAlongAxisExpression (#3436) (by Yi Xu)
  • [llvm] Support atomic operations of f16 (#3428) (by Tianshu Xu)
  • [Doc] Put back content from old docs/lang/api/atomic.md (#3440) (by Yi Xu)
  • [refactor] Add Assert, BoolOp, NamedExpr and dict to the new AST builder (#3398) (by lin-hitonami)
  • [Bug] Revert #3428 (#3438) (by Tianshu Xu)
  • [gui] GGUI Tests (#3430) (by Dunfan Lu)
  • [gui] Fix canvas.lines on macOS (#3432) (by Dunfan Lu)
  • [ci] Fix aws machine not removing container (#3435) (by Jiasheng Zhang)
  • [gui] Show f16 image as f32. (#3433) (by Ailing)
  • [ci] Move required cpu check to AWS machine (#3427) (by Jiasheng Zhang)
  • [Refactor] Simplify runtime function definition (#3429) (by Tianshu Xu)
  • [lang] [refactor] Use preallocated memory via device allocation for Ndarray (#3395) (by Bo Qiao)
  • [refactor] Add ListComp and DictComp to the new AST builder (#3400) (by lin-hitonami)
  • [ci] Add build script for win (#3410) (by Frost Ming)
  • [OpenGL] Add mem_offset_in_parent to serialized file in AOT. (#3418) (by Ailing)
  • Update gui.md: comprehend widgets example (#3424) (by FantasyVR)
  • [refactor] Add for and while to the new frontend AST builder (#3353) (by lin-hitonami)
  • [CI] Recheck the title format when user updates the title (#3403) (by Manjusaka)
  • [Refactor] Use wrapped create_call (#3421) (by Tianshu Xu)
  • [Doc] Update dev install about m1 prebuilt llvm. (#3419) (by Ailing)
  • [opengl] Save opengl aot data in json format. (#3417) (by Ailing)
  • [IR] Add type_check for expressions related to fields and matrices (#3377) (by Yi Xu)
  • [misc] Update "get_largest_pot" in scalar.h + Bug Fix (#3405) (by Niclas Schwalbe)
  • [refactor] Remove Matrix.new (#3408) (by Yi Xu)
  • [refactor] Remove handling for real types in set_arg_int. (#3388) (by Ailing)
  • [CI] skip the full test when the PR just get Docs change (#3399) (by Manjusaka)
  • [LLVM] Fix logging formats (#3404) (by Tianshu Xu)
  • Update GLFW (#3406) (by Bob Cao)
  • [IR] Fix continue statement in struct for and add a related test (#3282) (by bx2k)
  • Fix non 4 byte element external array in SPIR-V codegen & enable f16 test for Vulkan (#3396) (by Bob Cao)
  • [misc] Add new issues templates (#3390) (by Tianshu Xu)
  • [refactor] Add SparseMatrixBuilder and any_array support in kernel argument in the new AST builder (#3352) (by lin-hitonami)
  • [Doc] Put back content from old docs/lang/api/arithmetics.md (#3394) (by Yi Xu)
  • [Refactor] Move the cuda codegen part of atan2/pow to codegen_cuda.cpp (#3392) (by Jian Zeng)
  • [Doc] Fix an API typo in GGUI doc (#3397) (by Chang Yu)
  • [example] Create inital_value_problem.py (#3383) (by Niclas Schwalbe)
  • [gui] Allowing recreating GGUI windows after ti.reset() (#3389) (by Dunfan Lu)
  • [ci] Add clang-tidy in CI (#3354) (by Tianshu Xu)
  • [metal] Add mem_offset_in_parent to AOT module (#3245) (by Ye Kuang)
  • [vulkan] FP16 support, fix a few bugs & warnings (#3387) (by Bob Cao)
  • [Lang] fp16 interacts with pytorch. (by Ailing Zhang)
  • [llvm] Basic f16 support (by Ailing Zhang)
  • [cuda] Perf: Use the min between saturation grid dim and const range-for dim (#3314) (by Bob Cao)
  • [IR] Add type_check for TernaryOpExpression (#3381) (by Yuheng Zou)
  • [lang] [refactor] Use DeviceAllocation for Ndarray (#3366) (by Bo Qiao)
  • [Test] Fix uninitialized tests for ndarray (#3365) (by Bo Qiao)
  • repush (#3376) (by Ye Kuang)
  • feat: define str method for DataType (#3370) (by Jian Zeng)
  • [opengl] Do not use macros in GLSL codegen (#3369) (by Ye Kuang)
  • [Lang] Call external function with llvm bitcode (#2873) (by squarefk)
  • [opengl] Off-screen context using EGL & Support GLES (#3358) (by Bob Cao)
  • [misc] Move configured headers out of the binary directory (#3363) (by Tianshu Xu)
  • [misc] Use configured headers to track version and commit hash (#3349) (by Tianshu Xu)
  • [IR] Add type_check for UnaryOpExpression (#3355) (by Yi Xu)
  • [gui] Fix IMGUI when GGUI is running in headless mode (#3357) (by Dunfan Lu)
  • [doc] Ggui image IO and headless docs (#3359) (by Dunfan Lu)
  • [ir] Add missing constructors for TypedConstant (#3351) (by Yi Xu)
  • [Lang] Better type error messages (#3345) (by Yi Xu)
  • [gui] Headless GGUI (#3348) (by Dunfan Lu)
  • [refactor] Add IfExp, static assign and AugAssign to the new frontend AST builder (#3299) (by lin-hitonami)
  • [Refactor] Python frontend refactor: build_call part, support format print and fstring (#3342) (by Jiasheng Zhang)
  • [refactor] Add compare to the new python frontend ast builder (#3344) (by lin-hitonami)
  • [gui] Fix bug where VBO/IBO cannot exceed 128 MB(#3347) (by Dunfan Lu)
  • [ci] Set GITHUB_CONTEXT for performance monitoring (#3343) (by rocket)
  • [opengl] Only run preprocess_kernels when glslc is available. (#3341) (by Ailing)
  • [CI] Linux CD containerization (#3339) (by Jiasheng Zhang)
  • [opengl] Expose allow_nv_shader_extension in compileconfig. (#3340) (by Ailing)
  • [ci] Update windows postsubmit job timeout to 90mins. (#3336) (by Ailing)
  • [ci] Update postsubmit job performance_monitoring (#3296) (by rocket)
  • [benchmark] Store the benchmark results as json files (#3294) (by rocket)
  • [docs] Only preview english doc. (#3338) (by Ailing)
  • [IR] Support frontend type inference in simple cases (#3302) (by Yi Xu)
  • [gui] GGUI Image IO (well, it's actually just O...) (#3333) (by Dunfan Lu)
  • [opengl] Provide an option to disable NV extensions during codegen (#3331) (by Ye Kuang)
  • [OpenGl] Support preprocessing glsl code in aot. (by Ailing Zhang)
  • [OpenGl] Set result_buffer for opengl aot. (by Ailing Zhang)
  • [vulkan] Fix GGUI (#3330) (by Dunfan Lu)
  • [misc] Port taichi to FreeBSD (#3325) (by Inoki)
  • [Refactor] Fix compiler warnings (#3322) (by Tianshu Xu)
  • Fix GL Device (#3315) (by Bob Cao)
  • [Doc] Update dev install about m1. (#3321) (by Ailing)
  • [Lang] Support f-string (by Jian Zeng)
  • [OpenGl] Merge Retr SSBO into Args. (#3313) (by Ailing)
  • [CI] Containerize CI (#3291) (by Jiasheng Zhang)
  • [vulkan] Release vulkan on macOS (#3305) (by Dunfan Lu)
  • [GUI] Fix re-use buffer bug in ggui (#3311) (by YuZhang)
  • [ci] Add Dockerfile to support minimum CPU (#3277) (by Bo Qiao)
  • [Lang] Add suppress_warning argument to ti.matrix initialization (#3310) (by Zhehao Li)
  • Remove Vulkan SDK dependency (#3307) (by Bob Cao)
  • [Bug] Add missing integral datatype support for ti.min/ti.max (#3248) (by FantasyVR)
  • [opengl] Remove extra semicolon in glsl generated code. (#3309) (by Ailing)
  • Merge GLBufId::Extr into Args. (#3306) (by Ailing)
  • [opengl] Fix typo in printing glsl kernel. (#3308) (by Ailing)
  • [Doc] update the security email address (#3297) (by Manjusaka)
  • [opengl] Recover GLSL printing (#3300) (by Ye Kuang)
taichi - v0.8.4

Published by yolo2themoon almost 3 years ago

Full changelog:

  • [misc] Version bump: v0.8.3->v0.8.4 (#3295) (by rocket)
  • [refactor] Finalize root FieldsBuilder only when it is not finalized (#3288) (by Ye Kuang)
  • [bug] Add default value to print_preprocessed_ir (#3292) (by lin-hitonami)
  • [Doc] Correct the note about dev installation (#3289) (by Tianshu Xu)
  • [refactor] [misc] Refactoring benchmark code for performance monitoring (#3269) (by rocket)
  • [Lang] Support more SNode trees for LLVM backends (#3279) (by Chang Yu)
  • [Refactor] Taichi frontend AST builder without generating code (#3037) (by lin-hitonami)
  • [ci] Reduce the artifacts retention duration to 20 days (#3286) (by Ye Kuang)
  • [ir] [refactor] Remove ptr_if_global in C++ Expr class (#3285) (by Yi Xu)
  • [doc] Add using clang++ for submodules in dev install instructions (#3273) (by Mingrui Zhang)
  • Update sparse.md (#3266) (by rockeyshao)
  • [vulkan] Indexed load codegen (#3259) (by Bob Cao)
  • [opengl] Remove listgen support (#3257) (by Ye Kuang)
  • [llvm] Separate compile_snode_tree_types from materialize_snode_tree in LLVM backends (#3267) (by Yi Xu)
  • [Lang] Add element shape to Ndarray (#3264) (by Bo Qiao)
  • Update write_test.md (#3263) (by FantasyVR)
  • [ci] Add benchmark to postsubmit workflow (#3220) (by rocket)
  • [ci] Move extract zip into ci_download.py (#3251) (by Frost Ming)
  • [Lang] Fix string format not support keywords format (#3256) (by yihong)
  • [vulkan] Force u8 capability on Apple (#3252) (by Dunfan Lu)
  • [vulkan] Catch std::runtime_error from button_id_to_name/buttom_name_to_id. (#3260) (by 0xzhang)
  • [cuda] Add CUDA version check (#3249) (by 0xzhang)
  • Fix Vulkan GGUI on CPU rendering (swiftshaders) (#3253) (by Bob Cao)
  • fix int / uint types & fix atomic op type mismatches (#3179) (by Bob Cao)
  • [test] Fix unrecognized test names in test_bls_assume_in_range.py (#3250) (by Yi Xu)
  • [ci] Add non-root user and conda environment (#3226) (by Bo Qiao)
  • [vulkan] Support for ti.u8 in vulkan (#3247) (by Dunfan Lu)
  • [lang] Make dynamic indexing compatible with BLS (#3244) (by Yi Xu)
  • [Bug] Fix indentation error when using tab indents (#3203) (by YuZhang)
  • [Bug] Remove the dataclass decorator from CuptiMetric, as it is not supported in Python 3.6 (#3246) (by rocket)
  • [opt] Enable CFG optimization for local tensors (#3237) (by Yi Xu)
  • [bug] Fix silent int overflow in indice calculation. (#3177) (by Ailing)
  • [doc] Update build badges on readme file. (#3235) (by Chengchen(Rex) Wang)
  • [Bug] Fix the always-in-cpu from_numpy in ti.ndarray (#3239) (by Yi Xu)
  • [ci] Fix ti testing with no supported arch. (#3236) (by Ailing)
  • [refactor] Get rid of unnecessary snodes map. (#3234) (by Ailing)
  • [lang] Make dynamic indexing compatible with grouped loop indices of struct fors (#3218) (by Yi Xu)
  • [Lang] Add a new transformation pass to rename module alias (#3180) (by Ce Gao)
  • [doc] Add doc string for _logging.py (#3209) (by 0xzhang)
  • [Refactor] Improve the core module code and remove unused imports (#3225) (by Frost Ming)
  • [doc] Update docsite link (#3232) (by Yuanming Hu)
  • [vulkan] Enable GGUI for Vulkan Backend (#3176) (by Dunfan Lu)
  • [opengl] Decouple AOT builder from the runtime (#3207) (by Ye Kuang)
  • [vulkan] Fix fence timeout (#3229) (by Dunfan Lu)
  • [lang] Make dynamic indexing compatible with grouped loop indices of ndrange fors (#3228) (by Yi Xu)
  • [lang] [opt] Memory allocator for ti.ndarray (#3020) (by Bo Qiao)
  • [refactor] Optimize Expression::serialize (#3221) (by 庄天翼)
  • [vulkan] Trying to fix external memory allocation (#3222) (by Bob Cao)
  • [doc] Remove the reference to libtinfo5 (#3219) (by Ye Kuang)
  • Constrain the python version in package metadata (#3217) (by Frost Ming)
  • [Example] Fix the ti example problems of sparse matrix demos (#3215) (by Jiafeng Liu)
  • Revert "[misc] Revert #3175 #3164 (#3185)" (#3212) (by Bob Cao)
  • [Lang] [bug] Fix support staticmethod decorator for data_oriented class (#3186) (by yihong)
  • [Doc] Update sparse_matrix.md (#3200) (by FantasyVR)
  • [Lang] Use ti.linalg.sparse_matrix_builder as kernel parameters (#3210) (by Jiafeng Liu)
  • [vulkan] Clear unnecessary GLSL shader files on Vulkan backend. (#3211) (by 0xzhang)
  • [refactor] [CUDA] Add kernel attributes for KernelProfiler (#3196) (by rocket)
  • [refactor] [misc] Add device name for KernelProfiler (#3194) (by rocket)
  • [opengl] Make AOT builder independent of the runtime (#3204) (by Ye Kuang)
  • [llvm] Fix llvm sparse when there are more than 1 snode trees (#3205) (by Dunfan Lu)
  • [opengl] OpenGL AOT Module Builder & Making GL CompiledProgram serializable (#3202) (by Bob Cao)
  • [Lang] Reuse sparse matrix builder (#3199) (by FantasyVR)
  • [ci] Fix ci shell scripts do not return error code (#3189) (by Jiasheng Zhang)
  • [Lang] Fixed pylint error C0121 (#3135) (by deepakdinesh1123)
  • [gui] Accept array of vectors as indices for lines and triangles (#3181) (by Jiasheng Zhang)
  • [vulkan] Fix some vulkan stuff (#3198) (by Dunfan Lu)
  • [refactor] Remove redundant code in snode_rw_accessors_bank (#3192) (by Yi Xu)
taichi - v0.8.3

Published by qiao-bo about 3 years ago

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)
taichi - v0.8.2

Published by k-ye about 3 years ago

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)
taichi - v0.8.1

Published by strongoier about 3 years ago

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)
taichi - v0.8.0

Published by qiao-bo about 3 years ago

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)
taichi - v0.7.32

Published by strongoier about 3 years ago

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)
taichi -

Published by Leonz5288 about 3 years ago

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)
taichi - v0.7.30

Published by strongoier about 3 years ago

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)
taichi - v0.7.29

Published by ailzhang about 3 years ago

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)
taichi - v0.7.28

Published by k-ye about 3 years ago

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)
taichi - v0.7.26

Published by k-ye over 3 years ago

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)
taichi - v0.7.25

Published by k-ye over 3 years ago

Full changelog:

  • [ci] Fix docker prebuilt binary link (#2483) (by Ye Kuang)
  • [wasm] Implement materialize() for wasm backend and clean up unused functions (#2480) (by squarefk)
  • [misc] Unify std::filesystem header (#2478) (by Ye Kuang)
  • [opengl] Dump compute shader source code when print_kernel_llvm_ir is true (#2479) (by xndcn)
  • [metal] Fix randseedoffset_in_runtime_buffer (#2477) (by Ye Kuang)
  • [Metal] Support pointer SNode on Metal (#2441) (by Ye Kuang)
  • [wasm] Recover code (#2476) (by ljcc0930)
  • [AutoDiff] Automatically determine AdStack's size (#2438) (by xumingkuan)
  • [misc] Add checking of gitpython in cmake (#2473) (by xndcn)
  • [ci] Restrict slash-command-dispatch to PR only (#2472) (by Ye Kuang)
  • [ir] Use SNodeTree to implement root (#2449) (by Ye Kuang)
  • [Lang] Fix parameter conflict between ti.maybe_transform_ti_func_call_to_stmt() and ti.external_func_call() (#2470) (by squarefk)