Skip to main content

A high-performance programming framework for tile-centric computing

Project description

PyPTO

🔥Latest News

  • [2025/12] PyPTO 项目首次上线.

🚀概述

PyPTO(发音: pai p-t-o)是一款面向 AI 加速器的高性能编程框架, 旨在简化复杂融合算子乃至整个模型网络的开发流程, 同时保持高性能计算能力. 该框架采用创新的 PTO(Parallel Tensor/Tile Operation)编程范式, 以 基于 Tile 的编程模型 为核心设计理念, 通过多层次的中间表示(IR)系统, 将用户通过 API 构建的 AI 模型应用从高层次的 Tensor 图逐步编译成硬件指令, 最终生成可在目标平台上高效执行的可执行代码.

核心特性

  • 基于 Tile 的编程模型: 所有计算都基于 Tile(硬件感知的数据块)进行, 充分利用硬件并行计算能力和内存层次结构
  • 多层级计算图转换: 通过编译 Pass 将 Tensor Graph 转换为 Tile Graph、Block Graph 和 Execution Graph, 每一步包括一系列 Pass 优化流程
  • 自动化代码生成: 编译结果通过 CodeGen 生成底层 PTO 虚拟指令代码, 再通过编译器将虚拟指令代码编译成目标平台的可执行代码
  • MPMD 执行调度: 可执行代码被加载到设备侧, 通过 MPMD(Multiple Program Multiple Data)的方式调度到设备上的处理器核
  • 完整的工具链支持: 全流程的编译中间产物和运行时性能数据可通过 IDE 集成的工具链可视化识别性能瓶颈, 开发者也可以通过工具链控制编译和调度行为
  • Python 友好 API: 提供直观的 Tensor 级别抽象, 贴近算法开发者的思维模式, 支持动态 Shape 和符号化编程
  • 分层抽象设计: 对不同开发者暴露不同抽象层次, 算法开发者使用 Tensor 层次, 性能专家使用 Tile 层次, 系统开发者使用 Block 层次

目标用户

  • 算法开发者: 主要使用 Tensor 层次编程, 快速实现和验证算法, 专注于算法逻辑
  • 性能优化专家: 可使用 Tile 或 Block 层次, 进行深度性能调优, 以实现极致性能
  • 系统开发者: 可在 Tensor/Tile/Block 和 PTO 虚拟指令集层次上进行三方框架对接或集成, 以及工具链开发

⚡️最佳实践样例

PyPTO 提供了丰富的示例代码, 涵盖从基础操作到复杂模型实现的多个层级. 一些最佳实践样例参考:

大模型实现样例

学习路径

examples 目录下, 我们规划了多个层级的样例:

  • beginner/: 基础操作示例, 帮助初学者快速上手 PyPTO 编程
  • intermediate/: 中级示例, 包括自定义操作、神经网络模块等
  • advanced/: 高级示例, 包括复杂模式和多函数组合
  • models/: 完整的大模型实现样例, 供快速移植和部署

这些示例可以帮助开发者学习如何编写 PyPTO 算子, 从简单的 Tensor 操作到复杂的模型网络实现.

🔥性能表现

PyPTO 在多个 AI 工作负载上展现出优异的性能表现. 框架通过多层级优化和硬件感知的代码生成, 能够充分利用 AI 加速器的计算资源.

(性能对比数据待补充)

⚡️快速入门

若您希望快速体验 PyPTO 的使用和开发过程, 请访问如下文档获取简易教程.

  • 环境部署: 介绍项目基础环境的搭建, 包括软件包和第三方依赖的获取和安装.
  • 编译安装: 环境部署后, 介绍如何快速获取或编译 PyPTO 软件包并安装.
  • 样例运行: 安装 PyPTO 软件包后, 介绍如何快速实现样例运行.

📖文档资源

若您希望深入体验项目功能并修改源码, 请访问如下文档获取详细教程.

  • docs: 当前发布版本的详细文档, 包括编程指南、API 参考等
  • 示例代码: 丰富的示例代码, 从基础到高级应用

🔍目录结构

关键目录如下:

├── examples/                   # 示例代码
│   ├── 01_beginner/            # 初级示例
│   ├── 02_intermediate/        # 中级示例
│   ├── 03_advanced/            # 高级示例
│   └── models/                 # 模型实现示例
│
├── python/                     # Python 源码
│   ├── pypto/                  # Python 包源码根目录
│   ├── src/                    # pybind11 源码根目录
│   └── tests/                  # Python 测试用例源码(UTest, STest)
│
├── framework/                  # C++ 源码根目录
│   ├── include/                # C++ 对外头文件
│   ├── src/                    # C++ 源码
│   │   ├── codegen/            # 代码生成模块
│   │   ├── passes/             # 编译 Pass 模块
│   │   └── ...
│   └── tests/                  # C++ 测试用例源码
│
├── tools/                      # 工具脚本
│
├── cmake/                      # 构建所需的 CMake 公共配置及脚本
├── build_ci.py                 # CI执行构建、执行 UTest、执行 STest 辅助脚本
├── CMakeLists.txt              # 顶层 CMakeLists.txt, 定义所有对外公开编译开关
├── pyproject.toml              # Python 编译工具配置文件
├── LICENSE                     # 许可证文件
└── setup.py                    # Python 编译工具脚本文件(setuptools)

📝相关信息

  • 贡献指南

  • 安全声明

    PyPTO 项目致力于保障用户数据和应用的安全. 在使用本框架时, 请注意:

    • 请从官方渠道获取 PyPTO 软件包
    • 定期更新到最新版本以获取安全补丁
    • 在生产环境中使用前, 请进行充分的安全测试
    • 如发现安全问题, 请通过安全渠道报告
  • 许可证

联系我们

  • 问题反馈: 通过 GitHub Issues 提交问题
  • 功能建议: 通过 GitHub Discussions 参与讨论
  • 技术支持: 参考文档或提交 Issue

注意: 本文档会持续更新, 请关注最新版本.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pypto-0.1.0-cp312-cp312-manylinux2014_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.12

pypto-0.1.0-cp312-cp312-manylinux2014_aarch64.whl (7.0 MB view details)

Uploaded CPython 3.12

pypto-0.1.0-cp311-cp311-manylinux2014_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.11

pypto-0.1.0-cp311-cp311-manylinux2014_aarch64.whl (7.0 MB view details)

Uploaded CPython 3.11

pypto-0.1.0-cp310-cp310-manylinux2014_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.10

pypto-0.1.0-cp310-cp310-manylinux2014_aarch64.whl (7.0 MB view details)

Uploaded CPython 3.10

pypto-0.1.0-cp39-cp39-manylinux2014_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.9

pypto-0.1.0-cp39-cp39-manylinux2014_aarch64.whl (7.0 MB view details)

Uploaded CPython 3.9

File details

Details for the file pypto-0.1.0-cp312-cp312-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypto-0.1.0-cp312-cp312-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2ab083295effdc10927e390faf21875a0eb3b3f585a04706fa9fb30bff51f231
MD5 5ce5600621ce758d6a6ba0ad9969a495
BLAKE2b-256 7190f85b68a412ad4b2983b77aae05b31fbe2187b61fb72f548e83885922c67a

See more details on using hashes here.

File details

Details for the file pypto-0.1.0-cp312-cp312-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pypto-0.1.0-cp312-cp312-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 764c140952d4c96a3a800d7f9a5afec336741f57828d78db9ab8bcdb199e9ba2
MD5 3f34438e45da7692a75122c945755d64
BLAKE2b-256 de90c425411975abf462cfd2232c2be7ea8044872840ad9629c027428ad484a3

See more details on using hashes here.

File details

Details for the file pypto-0.1.0-cp311-cp311-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypto-0.1.0-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c999b5114c8be4e5ef1a0dee7a7580208db4ed3a58996110d8363d874a6919c5
MD5 d58f60a45a5fae68f69bb7bb17b1f339
BLAKE2b-256 ee3afc1f04d3dab5722987d151b721e3bb0f58328d4091414f31c76b3d6aa49b

See more details on using hashes here.

File details

Details for the file pypto-0.1.0-cp311-cp311-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pypto-0.1.0-cp311-cp311-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6f466e7cbf0335d875001e9233a04b8e8fd7301846d1f1562d3f0d2195231637
MD5 6b6528b39ac3c687477333d60481e557
BLAKE2b-256 091bde72e400e83efefbc4fba02c8c14ad5e8aafb712afd43337fd3b09fd6b29

See more details on using hashes here.

File details

Details for the file pypto-0.1.0-cp310-cp310-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypto-0.1.0-cp310-cp310-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 69ff188af699210108d9a4b0e5ffdaabbe04b333104851d9415120d786da6aca
MD5 a3c41627e34ea15679c27143df52c3b4
BLAKE2b-256 bcf51f12ceb27b8b31b52c64beb7a1410803e0e84cf5055e9f94ad44f9abd3ff

See more details on using hashes here.

File details

Details for the file pypto-0.1.0-cp310-cp310-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pypto-0.1.0-cp310-cp310-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 52a3bb432e1fcc675d5d115fcf01c7c7479f2e7bab65187ecab3d712d5917c58
MD5 79d04b35255958a2115c58eb6c001ae5
BLAKE2b-256 bcae8f28e77855592a27c1b3b0a803594f63e84f45ce3dbe5446888f22de51b7

See more details on using hashes here.

File details

Details for the file pypto-0.1.0-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypto-0.1.0-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 01729ce4e9f2c87ec2d9b7e2c5d0903c26908ac1211db3d26bb2d180b4084457
MD5 2b90a3edd017913cc4af0ed16422d852
BLAKE2b-256 dba5e69f79f61b282015da287e666b410b961f1b675b373f3a1bed8e37da845b

See more details on using hashes here.

File details

Details for the file pypto-0.1.0-cp39-cp39-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pypto-0.1.0-cp39-cp39-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 02a3ce6c1a73e7eeb3ab747304c543b24f6b45f6d2da01214029cf8a5658fc51
MD5 ea59b1481cf93610c058a1c90ddcbf48
BLAKE2b-256 e95852e24654cc6413cfee5106c25a83984feeb01f9098cc5cccc5858e02e0da

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page