首页
/ FreeTensor项目构建与运行指南

FreeTensor项目构建与运行指南

2025-06-10 07:31:22作者:明树来

项目概述

FreeTensor是一个高性能张量计算框架,它提供了Python前端接口和高效的C++后端实现。本文将详细介绍如何在Linux系统上构建和运行FreeTensor项目,包括环境准备、依赖管理、构建选项配置以及测试方法。

环境准备

系统要求

FreeTensor目前仅支持Linux操作系统,建议使用较新的发行版以获得更好的兼容性。

核心依赖

  1. Python环境:需要Python 3.8或更高版本。由于FreeTensor会分析Python AST,不同Python版本间可能存在兼容性问题。

  2. C++编译器

    • GCC 11或更高版本
    • 或Clang 16或更高版本 这些版本提供了完整的C++20支持和"unroll"编译指示功能。
  3. 可选依赖

    • CUDA 11.4.1或更高版本(仅支持GCC)
    • Intel MKL数学库
    • PyTorch(用于集成)
  4. 构建时依赖

    • Java 11(仅在构建阶段需要)

构建过程详解

基础构建步骤

  1. 获取项目代码(包含子模块):

    git clone --recursive <项目路径>
    
  2. 最小化安装:

    pip3 install .
    

高级构建选项

FreeTensor支持通过.toml配置文件启用额外功能:

  1. CUDA支持

    pip3 install . -C--local=with-cuda.toml
    
  2. MKL支持

    pip3 install . -C--local=with-mkl.toml
    
  3. PyTorch集成

    pip3 install . -C--local=with-pytorch.toml
    

注意:PyTorch集成需要特别注意版本兼容性问题,建议在相同环境中构建FreeTensor和PyTorch。

CMake配置选项

FreeTensor提供了多个CMake选项用于定制构建:

选项 描述 默认值
FT_WITH_CUDA 启用CUDA支持 OFF
FT_WITH_MKL 启用MKL支持 OFF
FT_WITH_PYTORCH 启用PyTorch集成 OFF
FT_COMPILER_PORTABLE 禁用非便携指令 OFF
FT_WITH_CCACHE 使用ccache加速编译 AUTO

Docker构建方式

FreeTensor提供了三种预配置的Docker构建方案:

  1. 最小化开发环境

    make -f docker.Makefile minimal-dev
    
  2. CUDA+MKL环境

    make -f docker.Makefile cuda-mkl-dev
    
  3. 完整开发环境

    make -f docker.Makefile cuda-mkl-pytorch-dev
    

运行时配置

FreeTensor支持通过环境变量进行全局配置:

  1. 输出控制

    • FT_PRETTY_PRINT:启用彩色输出
    • FT_PRINT_ALL_ID:打印AST节点ID
    • FT_PRINT_SOURCE_LOCATION:打印Python源码位置
  2. 性能优化

    • FT_FAST_MATH:启用快速数学优化(默认ON)
  3. 编译器配置

    • FT_BACKEND_COMPILER_CXX:指定C++编译器路径
    • FT_BACKEND_COMPILER_NVCC:指定CUDA编译器路径
  4. 调试选项

    • FT_DEBUG_RUNTIME_CHECK:运行时安全检查
    • FT_DEBUG_BINARY:保留调试信息

测试方法

运行全部测试

cd test/
pytest

运行单个测试

pytest -s 00.hello_world/test_basic.py::test_hello_world

高级调试技巧

  1. 使用GDB调试

    gdb --args python3 -m pytest
    
  2. 内存检查

    PYTHONMALLOC=malloc valgrind python3 -m pytest
    
  3. 使用GCC sanitizer

    LD_PRELOAD=`gcc -print-file-name=libasan.so` pytest -s
    

文档构建

安装文档工具

pip3 install --user mkdocs mkdocstrings==0.18.1 "pytkdocs[numpy-style]"

构建文档

  1. 开发服务器

    mkdocs serve
    
  2. 完整构建

    doxygen Doxyfile && mkdocs build
    

常见问题解决

  1. Python版本兼容性问题:如果遇到AST解析错误,请检查Python版本是否为3.8或更高。

  2. PyTorch冲突:建议在相同环境中构建FreeTensor和PyTorch,避免依赖版本冲突。

  3. CUDA编译问题:确保使用兼容的GCC版本和CUDA版本组合。

通过本文的详细指南,开发者可以顺利完成FreeTensor的构建、配置和测试工作,为后续的高性能张量计算开发奠定基础。

登录后查看全文
热门项目推荐

项目优选

收起
atomcodeatomcode
Claude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get Started
Rust
458
84
docsdocs
暂无描述
Dockerfile
691
4.48 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
409
329
pytorchpytorch
Ascend Extension for PyTorch
Python
552
675
kernelkernel
deepin linux kernel
C
28
16
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.59 K
930
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
955
933
communitycommunity
本项目是CANN开源社区的核心管理仓库,包含社区的治理章程、治理组织、通用操作指引及流程规范等基础信息
653
232
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
1.08 K
564
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
C
438
4.44 K