Giter Site home page Giter Site logo

drlukeparry / taichi Goto Github PK

View Code? Open in Web Editor NEW

This project forked from taichi-dev/taichi

0.0 1.0 0.0 41.55 MB

Productive & portable high-performance programming in Python.

Home Page: https://taichi.graphics

License: MIT License

CMake 0.73% Python 32.63% C++ 64.59% C 0.85% Cuda 0.45% Makefile 0.02% Shell 0.20% GLSL 0.46% PowerShell 0.08%

taichi's Introduction


Latest Release downloads CI Docker Cloud Build Status Python Codecov Status

import taichi as ti

Taichi (太极) is an open-source, imperative, parallel programming language for high-performance numerical computation. It is embedded in Python and uses just-in-time (JIT) compiler frameworks (e.g. LLVM) to offload compute-intensive Python code to the native GPU or CPU instructions.

Advantages of Taichi:

  • Built around Python: Taichi shares almost the same syntax with Python, allowing you to write algorithms with minimal language barrier. It is also well integrated into the Python ecosystem, such as NumPy and PyTorch.
  • Flexibility: Taichi provides a set of generic data containers known as SNode (/ˈsnoʊd/), an effective mechanism for composing hierarchical, multi-dimensional fields. This can cover many use patterns in numerical simulation (e.g. spatially sparse computing).
  • Performance: Through the @ti.kernel decorator, Taichi's JIT compiler automatically compiles your Python functions into efficient GPU or CPU machine code for parallel execution.
  • Portability: Write your code once and run it everywhere. Currently, Taichi supports most mainstream GPU APIs, such as CUDA and Vulkan.
  • ... and many more features! A cross-platform, Vulkan-based 3D visualizer, differentiable programming, quantized computation (experimental), etc.

Getting Started

Installation

You can easily install Taichi with Python's package installer pip:

pip install taichi

If you want to try out the latest features, we also provide a nightly package:

pip install -i https://test.pypi.org/simple/ taichi-nightly

The nightly package can and will break from time to time!

Supported environments

  • Operating systems
    • Windows1
    • Linux
    • macOS
  • Python: 3.6 ~ 3.9 (64-bit only)
  • Compute backends
    • x64/ARM CPUs
    • CUDA
    • Vulkan
    • OpenGL (4.3+)
    • Apple Metal
    • WebAssembly (experiemental)

1. On Windows, please install Microsoft Visual C++ Redistributable first.

Your first Taichi program

Here's how you can program a 2D fractal in Taichi:

# python/taichi/examples/simulation/fractal.py

import taichi as ti

ti.init(arch=ti.gpu)

n = 320
pixels = ti.field(dtype=float, shape=(n * 2, n))


@ti.func
def complex_sqr(z):
    return ti.Vector([z[0]**2 - z[1]**2, z[1] * z[0] * 2])


@ti.kernel
def paint(t: float):
    for i, j in pixels:  # Parallelized over all pixels
        c = ti.Vector([-0.8, ti.cos(t) * 0.2])
        z = ti.Vector([i / n - 1, j / n - 0.5]) * 2
        iterations = 0
        while z.norm() < 20 and iterations < 50:
            z = complex_sqr(z) + c
            iterations += 1
        pixels[i, j] = 1 - iterations * 0.02


gui = ti.GUI("Julia Set", res=(n * 2, n))

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

If Taichi is properly installed, you should get the animation below 🎉:

Documentation

Taichi's documentation is available at https://docs.taichi.graphics.

Contacts

We use these channels to report bugs, discuss design, show off demos and send announcements on a daily basis:

Should you spot any security issue, do not hesitate to report it by mailing to [email protected].

Contributing

If you would like to contribute to Taichi, please check out the Contribution Guidelines.

A huge thanks to all of our amazing contributors!

Contributor avatars are randomly shuffled.

Resources

Demos

Lectures & talks


If you use Taichi in your research, please cite related papers:

taichi's People

Contributors

aekul avatar ailzhang avatar amesingflank avatar archibate avatar bachili avatar billxu2000 avatar bobcao3 avatar erizmr avatar fantasyvr avatar frostming avatar g1n0st avatar hanke98 avatar k-ye avatar klozes avatar leonz5288 avatar lin-hitonami avatar ljcc0930 avatar mzmzm avatar pgzxb avatar qiao-bo avatar rexwangcc avatar rullec avatar sjwsl avatar squarefk avatar strongoier avatar taichi-gardener avatar th3charlie avatar xumingkuan avatar yolo2themoon avatar yuanming-hu avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.