taichi - Python での生産的で移植性の高い高性能プログラミング。

(Productive & portable high-performance programming in Python.)

Created at: 2016-11-24 18:00:05
Language: C++
License: Apache-2.0

最新のリリース ダウンロード CI 夜間リリース

pip install taichi  # Install Taichi Lang
ti gallery          # Launch demo gallery

太一郎とは?

Taichi Lang は、高性能数値計算用のオープンソースの命令型並列プログラミング言語です。これは Python に組み込まれており、LLVM などの Just-In-Time (JIT) コンパイラ フレームワークを使用して、計算集約型の Python コードをネイティブの GPU または CPU 命令にオフロードします。

この言語には、リアルタイムの物理シミュレーション、数値計算、拡張現実、人工知能、ビジョンとロボット工学、映画やゲームの視覚効果、汎用コンピューティングなど、幅広い用途があります。

...もっと

なぜタイチ・ラング?

  • Python を中心に構築: Taichi Lang は Python とほぼ同じ構文を共有しているため、言語の壁を最小限に抑えてアルゴリズムを作成できます。また、NumPy や PyTorch などの Python エコシステムにもうまく統合されています。
  • 柔軟性: Taichi Lang は、 SNode (/ˈsnoʊd/)として知られる汎用データ コンテナーのセットを提供します。これは、階層的で多次元のフィールドを構成するための効果的なメカニズムです。これは、数値シミュレーションにおける多くの使用パターンをカバーできます (例:空間スパース コンピューティング)。
  • パフォーマンス:
    @ti.kernel
    デコレータを使用すると、Taichi Lang の JIT コンパイラが Python 関数を並列実行用の効率的な GPU または CPU マシン コードに自動的にコンパイルします。
  • 移植性: 一度コードを記述すれば、どこでも実行できます。現在、Taichi Lang は、CUDA や Vulkan など、ほとんどの主流の GPU API をサポートしています。
  • ...その他にもたくさんの機能があります! クロスプラットフォーム、Vulkan ベースの 3D ビジュアライザー、微分可能プログラミング量子化計算(実験的) など。

入門

インストール

前提条件
  • オペレーティングシステム
    • ウィンドウズ
    • Linux
    • マックOS
  • Python: 3.6 ~ 3.10 (64 ビットのみ)
  • バックエンドを計算する
    • x64/ARM CPU
    • クーダ
    • バルカン
    • OpenGL (4.3+)
    • アップルメタル
    • WebAssembly (実験的)

Python のパッケージ インストーラーpipを使用して、Taichi Lang をインストールします。

pip install --upgrade taichi

お泊りパックもご用意しております。完全にテストされていないため、nighly パッケージがクラッシュする可能性があることに注意してください。それらの有効性を保証することはできません。テストされていない最新の機能を試す場合は、自己責任で行ってください。ナイトリー パッケージは、セルフホステッド PyPI からインストールできます (セルフホステッド PyPI を使用すると、長期間にわたってより頻繁にリリースを提供できます)。

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

「Hello, world!」を実行します。

Taichi で 2D フラクタルをプログラムする方法は次のとおりです。

# 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()

Taichi Lang が適切にインストールされている場合、以下のアニメーションが表示されます。🎉:

詳細については、はじめにを参照してください。

ソースからビルド

実験的な機能を試したり、独自の環境で Taichi Lang をビルドしたりしたい場合は、開発者のインストールを参照してください。

ドキュメンテーション

貢献する

素晴らしい貢献者の皆様に敬意を表します! Taichi Lang はオープンソースを通じて成長しています。その精神で、コミュニティからのあらゆる種類の貢献を歓迎します。参加したい場合は、まず投稿ガイドラインを確認してください。

寄稿者のアバターはランダムにシャッフルされます。

ライセンス

Taichi Lang は、Apache License (バージョン 2.0) の条件の下で配布されます。

詳細については、 Apache ライセンスを参照してください。

コミュニティ

イベント

ボクセル チャレンジ 2022 は、5 月 18 日まで提出可能です。詳細はこちらをご覧ください

ディスカッションに参加する

問題を報告する

お問い合わせ

参照

デモ

レクチャー&トーク

引用

研究で Taichi Lang を使用する場合は、対応する論文を引用してください。