一键构建 pytorch cpp lib 前端和 wheel
系统环境ubuntu 22.04V100 GPUcuda 12.8.2cudnn 9.10.2.21TensorRT 10.9.0.341. 使用构建脚本构建 develop或者 wheel。第一次构建BUILD_MODEwheel ./meme_build.sh如果构建过一次之后依赖包可以跳过使用 SKIP_APT1BUILD_MODEwheelSKIP_APT1./meme_build.sh验证 tritoncd~ python3-cimport triton; print(triton.__version__)# 期望输出: 3.4.0python3-cimport torch; f torch.compile(lambda x: x * 2); print(f(torch.randn(8, devicecuda)))cd~ python3-cimport torch; print(torch.__file__)# 期望: /home/ruler/.local/lib/python3.10/site-packages/torch/__init__.py# 或者 /usr/lib/python3/dist-packages/... 之类, 总之不能是 pytorch 源码目录其中BUILD_TRITON1 忽略triton 已经从 torch 2.4.0时移出了 torch 源码库。v2.8.0 的 make triton 实际执行的是 scripts/install_triton_wheel.sh它做的事就是pipinstallpytorch-triton3.4.0git11ec6354\--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_MODEdevelop ./build_pytorch_2.8.0_v100.sh # README 原版 develop 模式# SKIP_APT1 ./build_pytorch_2.8.0_v100.sh # 跳过系统依赖安装# set-euopipefail# ----------------------------- 可配置参数 ------------------------------------PYTORCH_VERSIONv2.8.0BUILD_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[0m2;exit1;}# 1/7 系统依赖 if[[${SKIP_APT}!1]];thenlog1/7 安装系统依赖 (内部使用 sudo)sudoaptupdatesudoaptinstall-ybuild-essential cmake ninja-buildgitpython3-dev\python3-pip libopenblas-dev libnuma-develselog1/7 跳过系统依赖安装 (SKIP_APT1)fi# gcc 版本检查: README 要求 Linux 上 gcc 9.4.0GCC_VER$(gcc-dumpversion)loggcc 版本:${GCC_VER}(README 要求 9.4.0)# 2/7 CUDA 环境 log2/7 配置 CUDA 环境[[-x${CUDA_HOME}/bin/nvcc]]||die未找到 nvcc:${CUDA_HOME}/bin/nvcc请检查 CUDA_HOMEexportPATH${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_LIST7.0nvcc--version|greprelease||trueechoTORCH_CUDA_ARCH_LIST${TORCH_CUDA_ARCH_LIST}# 3/7 获取源码 log3/7 获取 PyTorch 源码 (${PYTORCH_VERSION})mkdir-p${WORK_DIR}cd${WORK_DIR}if[[-dpytorch/.git]];thenecho复用已有源码目录:${WORK_DIR}/pytorchcdpytorchgitfetch--tagsorigin||trueelsegitclone https://github.com/pytorch/pytorchcdpytorchfi# 关键: 必须先 checkout tag, 再更新 submodule, 保证子模块版本与 tag 匹配gitcheckout${PYTORCH_VERSION}gitsubmodulesyncgitsubmodule update--init--recursive# 4/7 Python 构建依赖 log4/7 安装 Python 构建依赖python3-mpipinstall--upgradepip python3-mpipinstall-rrequirements.txt python3-mpipinstallmkl-static mkl-include# 5/7 Triton (可选) if[[${BUILD_TRITON}1]];thenlog5/7 构建 Triton (torch.compile/inductor 用)maketritonelselog5/7 跳过 Triton (BUILD_TRITON${BUILD_TRITON})fi# 6/7 构建并安装 log6/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_DIRsite-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*.whlpython3-mpipinstall--force-reinstall${WHEEL};;*)die未知 BUILD_MODE${BUILD_MODE}(可选: wheel | develop);;esac# 7/7 验证 log7/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, devicecuda) print(matmul check :, (x x).sum().item() ! 0) EOFlog构建完成 ✅echo源码目录 :${WORK_DIR}/pytorch[[${BUILD_MODE}wheel]]echowheel 产物:${WORK_DIR}/pytorch/dist/echo提示: TensorRT (/usr/local/TensorRT-10.9.0.34/) 不参与 PyTorch 本体构建, 留给 holoscan 使用即可

相关新闻

SpringBoot图书推荐系统开发与算法优化实践

SpringBoot图书推荐系统开发与算法优化实践

1. 项目背景与核心价值图书推荐系统作为个性化服务的重要载体,正在重塑现代阅读体验。这个基于SpringBoot和推荐算法的毕业设计项目,完美融合了企业级开发框架与智能算法,解决了传统图书馆管理系统"千人一面"的推荐痛点。我在实际开…

2026/10/17 18:21:19 阅读更多 →
工业AI项目敏捷开发实践与优化策略

工业AI项目敏捷开发实践与优化策略

1. 工业AI项目为什么需要敏捷开发?工业AI项目与传统软件开发最大的区别在于,它需要同时应对算法不确定性和工程落地复杂性。三年前我们团队接手某汽车零部件质检项目时,曾按传统瀑布流模式制定了6个月开发周期。结果在第4个月算法验证时发现&…

2026/10/18 2:48:19 阅读更多 →
SpringBoot+Vue车辆管理系统开发实践与优化

SpringBoot+Vue车辆管理系统开发实践与优化

1. 项目背景与核心价值这个车辆管理系统是我去年为一个中型物流公司做的内部管理平台。当时他们还在用Excel表格记录200多辆货车的调度、维修和年检信息,经常出现数据丢失和版本混乱的问题。最夸张的一次,因为司机看不到最新的年检到期提醒,导…

2026/10/14 18:47:05 阅读更多 →

最新新闻

PLSQL基础复习:用TaoToken统一API通道跑通存储过程调试环境

PLSQL基础复习:用TaoToken统一API通道跑通存储过程调试环境

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 3:34:17 阅读更多 →
jQuery事件绑定核心:bind与on的本质区别及事件委托原理

jQuery事件绑定核心:bind与on的本质区别及事件委托原理

简介:本资源是一份面向前端开发初学者与 jQuery 进阶学习者的事件绑定核心知识解析资料,聚焦 bind 与 on 方法的用法差异、适用场景及性能影响。内容深入剖析事件委托机制、事件冒泡原理、动态元素绑定能力等关键概念,并通过 ul/li 示例对比两…

2026/10/18 3:34:17 阅读更多 →
数组原地移动0的三种本质解法与工程实践

数组原地移动0的三种本质解法与工程实践

1. 这道题到底在考什么:从“移动0”看数组操作的本质逻辑“数组类题目:移动0,将数组中所有0移动到数组末尾”——这行标题看起来平平无奇,甚至有点像某次笔试第一道热身题。但我在带教新人、参与代码评审、以及自己刷题复盘的十多…

2026/10/18 3:34:17 阅读更多 →
Go服务如何守护化与优雅退出:从nohup到systemd的实践

Go服务如何守护化与优雅退出:从nohup到systemd的实践

写Go服务最尴尬的事,不是bug查不出来,而是部署的时候翻车。前阵子帮一个朋友收拾他的内部服务,程序本身跑得挺欢,一问怎么后台运行,他回我一句“开个终端挂着呗”。终端一关,服务就跟着陪葬了。后来让他写个…

2026/10/18 3:34:17 阅读更多 →
免费开源 IP 追踪工具 GhostTrack:3 步部署,查 IP 位置、号码归属地与用户名分布

免费开源 IP 追踪工具 GhostTrack:3 步部署,查 IP 位置、号码归属地与用户名分布

免费开源 IP 追踪工具 GhostTrack:3 步部署,查 IP 位置、号码归属地与用户名分布 【免费下载链接】GhostTrack Useful tool to track location or mobile number 项目地址: https://gitcode.com/GitHub_Trending/gh/GhostTrack 你拿到一个陌生 IP,想知道它落在哪个城市。…

2026/10/18 3:34:17 阅读更多 →
AI编程搭档实战:从需求到部署用Claude Code全流程开发

AI编程搭档实战:从需求到部署用Claude Code全流程开发

1. 为什么我最终锁定了这台“AI搭档”——项目背景与选型拆解1.1 先看清需求全貌:这个项目到底要解决什么问题先说背景。我接手的是一个偏内部使用的报表分析工具,需求方是几个业务线的负责人。他们要的不只是“能用的页面”,而是一个能自动拉…

2026/10/18 3:33:17 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →