当前位置: 首页 > news >正文

一键构建 pytorch cpp lib 前端和 wheel

系统环境:ubuntu 22.04
V100 GPU
cuda 12.8.2
cudnn 9.10.2.21
TensorRT 10.9.0.34

1. 使用构建脚本

构建 develop,或者 wheel。
第一次构建:

BUILD_MODE=wheel ./meme_build.sh

如果构建过一次之后,依赖包可以跳过,使用 SKIP_APT=1

BUILD_MODE=wheelSKIP_APT=1./meme_build.sh

验证 triton:

cd~ python3-c"import triton; print(triton.__version__)"# 期望输出: 3.4.0python3-c"import torch; f = torch.compile(lambda x: x * 2); print(f(torch.randn(8, device='cuda')))"
cd~ python3-c"import torch; print(torch.__file__)"# 期望: /home/ruler/.local/lib/python3.10/site-packages/torch/__init__.py# 或者 /usr/lib/python3/dist-packages/... 之类, 总之不能是 pytorch 源码目录

其中,BUILD_TRITON=1 忽略,triton 已经从 torch 2.4.0时,移出了 torch 源码库。

v2.8.0 的 make triton 实际执行的是 scripts/install_triton_wheel.sh,它做的事就是:

pipinstallpytorch-triton==3.4.0+git11ec6354\--index-url https://download.pytorch.org/whl/nightly/

也就是下载 PyTorch 官方 CI 预先构建好的 wheel,本地一行 Triton 代码都没有编译。这背后的原因前面说过:Triton 早已不是 PyTorch 的子模块,PyTorch 把它改成了外部版本化依赖——由 PyTorch 的 CI 从 triton-lang/triton 的某个钉死 commit(这里就是 git11ec6354)构建 wheel,发布到自己的 nightly 源,make triton 只是帮你把钉死的那个版本装上。

2. 构建脚本

#!/usr/bin/env bash# =============================================================================# PyTorch v2.8.0 源码构建脚本# 目标环境: V100 (sm_70) / CUDA 12.8.2 / cuDNN 9.10.2.21 (与CUDA同目录)# Ubuntu 22.04 / Python 3.10 (系统Python, 无需conda)# 依据: pytorch/pytorch v2.8.0 tag README.md "From Source" 流程## 用法:# chmod +x build_pytorch_2.8.0_v100.sh# ./build_pytorch_2.8.0_v100.sh # 默认构建 wheel 并 pip 安装# BUILD_MODE=develop ./build_pytorch_2.8.0_v100.sh # README 原版 develop 模式# SKIP_APT=1 ./build_pytorch_2.8.0_v100.sh # 跳过系统依赖安装# =============================================================================set-euopipefail# ----------------------------- 可配置参数 ------------------------------------PYTORCH_VERSION="v2.8.0"BUILD_MODE="${BUILD_MODE:-wheel}"# wheel | developSKIP_APT="${SKIP_APT:-0}"# 1 = 跳过 apt 安装BUILD_TRITON="${BUILD_TRITON:-0}"# 1 = 构建 triton (torch.compile 用)MAX_JOBS="${MAX_JOBS:-$(nproc)}"CUDA_HOME="${CUDA_HOME:-/usr/local/cuda}"WORK_DIR="${WORK_DIR:-$HOME/ex_holoscan/pytorch_src}"# -----------------------------------------------------------------------------log(){echo-e"\n\033[1;32m===$*===\033[0m";}die(){echo-e"\033[1;31m[ERROR]$*\033[0m">&2;exit1;}# ============================ 1/7 系统依赖 ====================================if[["${SKIP_APT}"!="1"]];thenlog"1/7 安装系统依赖 (内部使用 sudo)"sudoaptupdatesudoaptinstall-ybuild-essential cmake ninja-buildgitpython3-dev\python3-pip libopenblas-dev libnuma-develselog"1/7 跳过系统依赖安装 (SKIP_APT=1)"fi# gcc 版本检查: README 要求 Linux 上 gcc >= 9.4.0GCC_VER="$(gcc-dumpversion)"log"gcc 版本:${GCC_VER}(README 要求 >= 9.4.0)"# ============================ 2/7 CUDA 环境 ===================================log"2/7 配置 CUDA 环境"[[-x"${CUDA_HOME}/bin/nvcc"]]||die"未找到 nvcc:${CUDA_HOME}/bin/nvcc,请检查 CUDA_HOME"exportPATH="${CUDA_HOME}/bin:${PATH}"# 用 :- 兜底, 避免 set -u 下 LD_LIBRARY_PATH 未定义时报 unbound variableexportLD_LIBRARY_PATH="${CUDA_HOME}/lib64:${LD_LIBRARY_PATH:-}"# V100 = Volta = sm_70; 只编译目标架构, 大幅缩短构建时间exportTORCH_CUDA_ARCH_LIST="7.0"nvcc--version|grep"release"||trueecho"TORCH_CUDA_ARCH_LIST=${TORCH_CUDA_ARCH_LIST}"# ============================ 3/7 获取源码 ====================================log"3/7 获取 PyTorch 源码 (${PYTORCH_VERSION})"mkdir-p"${WORK_DIR}"cd"${WORK_DIR}"if[[-dpytorch/.git]];thenecho"复用已有源码目录:${WORK_DIR}/pytorch"cdpytorchgitfetch--tagsorigin||trueelsegitclone https://github.com/pytorch/pytorchcdpytorchfi# 关键: 必须先 checkout tag, 再更新 submodule, 保证子模块版本与 tag 匹配gitcheckout"${PYTORCH_VERSION}"gitsubmodulesyncgitsubmodule update--init--recursive# ============================ 4/7 Python 构建依赖 =============================log"4/7 安装 Python 构建依赖"python3-mpipinstall--upgradepip python3-mpipinstall-rrequirements.txt python3-mpipinstallmkl-static mkl-include# ============================ 5/7 Triton (可选) ===============================if[["${BUILD_TRITON}"=="1"]];thenlog"5/7 构建 Triton (torch.compile/inductor 用)"maketritonelselog"5/7 跳过 Triton (BUILD_TRITON=${BUILD_TRITON})"fi# ============================ 6/7 构建并安装 ==================================log"6/7 构建 PyTorch (BUILD_MODE=${BUILD_MODE}, MAX_JOBS=${MAX_JOBS})"exportMAX_JOBScase"${BUILD_MODE}"indevelop)# README 官方命令: 开发模式原地安装python3 setup.py develop;;wheel)# 构建 wheel: wheel 内 torch/lib + torch/include 即为 libtorch,# 可供 holoscan-sdk 链接 (Torch_DIR=<site-packages>/torch/share/cmake/Torch)python3 setup.py bdist_wheelWHEEL="$(ls-tdist/torch-2.8.0*.whl|head-n1)"[[-n"${WHEEL}"]]||die"未找到构建产物 dist/torch-2.8.0*.whl"python3-mpipinstall--force-reinstall"${WHEEL}";;*)die"未知 BUILD_MODE=${BUILD_MODE}(可选: wheel | develop)";;esac# ============================ 7/7 验证 ========================================log"7/7 验证安装"# 切出源码目录再 import, 避免从源码目录误导入cd/ python3 -<<'EOF' import torch print("torch version :", torch.__version__) print("built with CUDA:", torch.version.cuda) print("cuDNN version :", torch.backends.cudnn.version()) print("cuda available:", torch.cuda.is_available()) if torch.cuda.is_available(): print("device 0 :", torch.cuda.get_device_name(0)) print("capability :", torch.cuda.get_device_capability(0)) # 期望 (7, 0) x = torch.randn(1024, 1024, device="cuda") print("matmul check :", (x @ x).sum().item() != 0) EOFlog"构建完成 ✅"echo"源码目录 :${WORK_DIR}/pytorch"[["${BUILD_MODE}"=="wheel"]]&&echo"wheel 产物:${WORK_DIR}/pytorch/dist/"echo"提示: TensorRT (/usr/local/TensorRT-10.9.0.34/) 不参与 PyTorch 本体构建, 留给 holoscan 使用即可"
http://www.jsqmd.com/news/1369512/

相关文章:

  • USB3.0双机直连实战:CH9339芯片驱动安装、静态IP配置与故障排查指南
  • 终极免费方案:如何通过Wand-Enhancer解锁完整的游戏修改体验
  • 2026年广州/惠州/东莞专业GEO服务指南:含GEO优化/推广/优化运营/推广运营,哪家更靠谱? - 硬核推荐
  • 终极指南:如何用Wand-Enhancer免费解锁WeMod完整专业功能
  • Unity Animator 组件解析:状态机驱动的骨骼动画控制原理
  • Python基于Spark的共享单车数据存储系统的设计与实现+报告+ppt3(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • AI如何理解设计美学:用HTML+CSS构建智能幻灯片生成系统
  • 基于Replit云IDE的实时协作开发与设计马拉松实战指南
  • 2026年昆山CDU管路自动焊厂商联系方式查询,选线能量焊接(昆山服务中心) - 热点品牌推荐
  • 肇庆重型地弹簧供应厂家推荐几家?2026年优选德高门控(肇庆销售中心) - 热点品牌推荐
  • Lasso回归在时间序列预测中的应用与MATLAB实现
  • 5分钟掌握音乐文件解锁:打破平台壁垒的终极解决方案
  • 硕博论文被误判AI率高怎么办?2026年比话降AI功能与完整使用攻略详解
  • 光热电站储热系统经济性优化与工程实践
  • 2026 年新发布:江苏靠谱的豆包推广公司哪家可靠,这款被低估的智能工具,帮我省下了半个季度的营销成本! - 领域鉴赏官
  • 打造极致流畅的Android电视直播应用:MyTV-Android完全指南
  • 2026年无锡宣传片制作公司哪家好 锡奇文化传媒优势介绍 - 起跑123
  • AE新手入门:33个核心知识点掌握动态图形与视觉特效
  • WebShell检测实战:从日志行为分析到应急响应全流程
  • 2026 年至今,屯昌优秀的方管,供货商怎么联系,装修师傅偷偷用它装阳台,比传统材料省一半钱还更结实,你家装修能用上 - 实业推荐官
  • MyTV-Android:打造极致流畅电视直播应用的完整指南
  • 2026盘点天津河西区口碑良好的双休白班保姆服务机构推荐 - 装修教育财税推荐2026
  • Agent 摘要不丢元数据:一次关于压缩与记忆的工程权衡
  • 2026天津注册公司代理记账一站式哪家靠谱?
  • 沧州动力控制柜公司怎么选?2026年看泊头市傲臻环保设备有限公司(沧州运营中心) - 热点品牌推荐
  • AMD Ryzen处理器终极掌控指南:免费开源SDT工具实现硬件完全自定义
  • Unity安卓开发必备:ADB安装APK全流程与效率提升指南
  • 2026年无锡宣传片制作公司哪家好 推荐锡奇文化传媒 - 起跑123
  • OpenSpec:用结构化规范解决AI代码生成在团队协作中的一致性难题
  • 降AI工具处理后不达标怎么办?2026年比话退款与检测费保障完整规则解析