tenstorrent/tt-lang
GitHub: tenstorrent/tt-lang
TT-Lang 是一种基于 Python 的领域特定语言,用于在 Tenstorrent 硬件上高效编写自定义操作,解决高级与底层 API 之间的开发差距。
Stars: 43 | Forks: 10
[硬件](https://tenstorrent.com/cards/) | [文档](https://docs.tenstorrent.com/tt-lang/) | [Discord](https://discord.gg/tenstorrent) | [加入我们](https://job-boards.greenhouse.io/tenstorrent?gh_src=22e462047us) | [问题](https://github.com/tenstorrent/tt-lang/issues)
   一种基于Python的特定领域语言,用于在Tenstorrent硬件上编写高性能自定义内核。此项目正在积极开发中——请参阅[功能矩阵](docs/sphinx/specs/TTLangSpecification.md#appendix-d-functionality-matrix)了解当前的模拟器和编译器支持情况。 **目录:** [愿景](#1-vision) · [快速开始](#2-quick-start) · [文档](#3-documentation) · [贡献](#4-contributing) · [支持](#5-support) · [许可](#6-license) ## 1. 愿景 TT-Lang加入Tenstorrent软件生态系统,作为[TT-NN](https://docs.tenstorrent.com/tt-metal/latest/ttnn/index.html)和[TT-Metalium](https://docs.tenstorrent.com/tt-metal/latest/tt-metalium/index.html)之间一个既具表现力又符合人体工程学的中间地带,旨在提供一个集成模拟、性能分析和AI辅助开发工具的统一入口。
(包括ttlang-sim) | 可以克隆/构建tt-lang吗? | | ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | :-----------------------------------: | :----------------------: | | 
"dist" | 使用
ttlang-sim或Tenstorrent硬件运行tt-lang程序 | 是 | 否 | | 
"ird" | 从源代码开发和构建tt-lang | 否 | 是 | 两个镜像都可以与`ird reserve`一起使用(详见[容器构建文档](.github/containers/README.md))。 ### 2.3  预构建的tt-lang(面向用户) 镜像: ghcr.io/tenstorrent/tt-lang/tt-lang-dist-ubuntu-22-04:latest ([所有版本](https://github.com/tenstorrent/tt-lang/pkgs/container/tt-lang-dist-ubuntu-22-04)) **dist**镜像包含一个完整的、已构建的tt-lang安装在`/opt/ttlang-toolchain`。使用它来编译和运行任何tt-lang程序,无需构建任何先决条件。 创建容器(一次性): ``` docker run -d --name $USER-dist \ --device=/dev/tenstorrent/0:/dev/tenstorrent/0 \ -v /dev/hugepages:/dev/hugepages \ -v /dev/hugepages-1G:/dev/hugepages-1G \ -v $HOME:$HOME \ ghcr.io/tenstorrent/tt-lang/tt-lang-dist-ubuntu-22-04:latest \ sleep infinity ``` 打开shell: ``` docker exec -it $USER-dist /bin/bash ``` 登录时环境会自动激活。可以立即运行一个示例: ``` python /opt/ttlang-toolchain/examples/elementwise-tutorial/step_4_multinode_grid_auto.py ``` 要了解更多,请参加[导览](docs/sphinx/tour/index.md),探索[编程指南](docs/sphinx/programming-guide.md)了解编译器选项、调试和性能工具,或使用[Claude Code](https://claude.com/claude-code)配合内置的[斜杠命令](docs/sphinx/claude-skills.md)来翻译内核、进行性能分析和优化。 ### 2.4  开发镜像(用于构建tt-lang) 镜像: ghcr.io/tenstorrent/tt-lang/tt-lang-ird-ubuntu-22-04:latest ([所有版本](https://github.com/tenstorrent/tt-lang/pkgs/container/tt-lang-ird-ubuntu-22-04)) **ird**镜像包含预构建的工具链(LLVM, tt-metal, Python venv),但不包含tt-lang本身。克隆仓库并基于该工具链进行构建。您可以并行维护多个克隆或分支,每个都有自己的构建目录。 要在本地Linux机器上直接使用Docker,首先创建一个容器(一次性): ``` docker run -d --name $USER-ird \ --device=/dev/tenstorrent/0:/dev/tenstorrent/0 \ -v /dev/hugepages:/dev/hugepages \ -v /dev/hugepages-1G:/dev/hugepages-1G \ -v $HOME:$HOME \ -v $SSH_AUTH_SOCK:/ssh-agent -e SSH_AUTH_SOCK=/ssh-agent \ ghcr.io/tenstorrent/tt-lang/tt-lang-ird-ubuntu-22-04:latest \ sleep infinity ``` 打开shell: ``` docker exec -it $USER-ird /bin/bash ``` 在容器内部,克隆并构建: ``` git clone https://github.com/tenstorrent/tt-lang.git cd tt-lang cmake -G Ninja -B build -DTTLANG_USE_TOOLCHAIN=ON source build/env/activate cmake --build build ``` 验证构建: ``` ninja -C build check-ttlang-all ``` 运行一个示例: ``` python examples/elementwise-tutorial/step_4_multinode_grid_auto.py ``` `-DTTLANG_USE_TOOLCHAIN=ON`标志告诉CMake使用`/opt/ttlang-toolchain`中预构建的LLVM和tt-metal,而不是从源代码构建它们,这可以节省大量构建时间。 性能追踪(Tracy)默认启用。要禁用它,请在cmake配置命令中添加`-DTTLANG_ENABLE_PERF_TRACE=OFF`。有关分析工具的使用,请参阅[编程指南](docs/sphinx/programming-guide.md)。 ### 2.5 不使用Docker构建 要在没有Docker的情况下直接在主机上构建tt-lang,请参阅[构建系统文档](docs/sphinx/build.md)。它涵盖了先决条件、所有支持的构建模式(从子模块、可重用工具链、预构建工具链)以及版本兼容性。 ### 2.6 容器提示 要映射不同的TT设备,请更改`--device`参数(例如,`--device=/dev/tenstorrent/1:/dev/tenstorrent/0`)。 ### 2.7 功能模拟器 tt-lang包含一个功能模拟器,可以作为纯Python运行内核,无需Tenstorrent硬件或完整的编译器栈。使用它来验证内核逻辑并使用任何Python调试器进行调试: ``` ttlang-sim examples/eltwise_add.py ``` 模拟器通常在任何给定时间点支持比编译器更多的语言特性——请参阅[功能矩阵](docs/sphinx/specs/TTLangSpecification.md#appendix-d-functionality-matrix)了解当前覆盖范围。有关调试器设置和详细信息,请参阅[编程指南](docs/sphinx/simulator.md)。 ## 3. 文档 完整文档使用Sphinx构建。源代码位于[docs/sphinx/](docs/sphinx/),涵盖: - [TT-Lang导览](docs/sphinx/tour/index.md) — TT-Lang功能介绍 - [编程指南](docs/sphinx/programming-guide.md) — 编译器选项、打印调试、性能工具 - [功能模拟器](docs/sphinx/simulator.md) — 无需硬件运行内核、调试设置 - [Claude技能](docs/sphinx/claude-skills.md) — 通过[Claude Code](https://claude.com/claude-code)进行AI辅助的内核翻译、性能分析和优化 - [构建系统](docs/sphinx/build.md) — 构建配置、工具链模式和版本兼容性 - [测试](docs/sphinx/testing.md) — 如何编写和运行测试 - [贡献者指南](docs/sphinx/contributor-guide.md) — 工作流程、验证、添加新操作 要在本地构建和查看Sphinx文档: ``` cmake -G Ninja -B build -DTTLANG_ENABLE_DOCS=ON cmake --build build --target ttlang-docs python -m http.server 8000 -d build/docs/sphinx/_build/html ``` ## 4. 贡献 我们欢迎贡献。请参阅[CONTRIBUTING.md](CONTRIBUTING.md)了解准则。 ### 4.1 开发者准则 请参阅Sphinx[贡献者指南](docs/sphinx/contributor-guide.md)和[代码风格准则](docs/sphinx/guidelines.md)了解编码标准、方言设计模式和测试实践。 ### 4.2 更新子模块版本 tt-mlir定义了兼容的LLVM和tt-metal版本。更新tt-mlir时,应更新其他子模块以匹配。 更新tt-mlir(并读取它期望的版本): ``` cd third-party/tt-mlir && git fetch && git checkout
标签:AI工具链, AI辅助开发, Bash脚本, GPU替代硬件, Python编程, SOC Prime, Tenstorrent硬件, 内核编程, 凭据扫描, 开发工具, 异构计算, 性能分析, 深度学习, 生成式AI, 硬件加速, 索引, 编译优化, 自定义内核开发, 计算图优化, 请求拦截, 软件生态系统, 逆向工具, 领域特定语言, 高性能计算