尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
XLA 如何用 Bazel 从源码构建并配置 CUDA 后端?
XLA 如何用 Bazel 从源码构建并配置 CUDA 后端【免费下载链接】tensorflowAn Open Source Machine Learning Framework for Everyone项目地址: https://gitcode.com/GitHub_Trending/te/tensorflowXLAAccelerated Linear Algebra是 TensorFlow 仓库中以独立仓库形式内置的机器学习编译器源码位于third_party/xla/目录下。如果你的任务是修改编译器本身、调试 XLA 集成或者需要一个带 CUDA 后端可执行文件例如hlo_runner_main的开发环境就需要从源码构建 XLA 的 GPU 目标。本文基于仓库内的 build_from_source.md 与 developer_guide.md给出在 Linux 上用 Bazel 构建 XLA 并配置 CUDA 后端--backendCUDA的完整操作路径包括无 GPU 机器上交叉构建的方法。开始前先明确适用前提文档中所有命令都假定你在 XLA 仓库根目录独立 checkout 的xla/目录即本仓库中的third_party/xla/执行./configure.py、bazel build均以该目录为起点构建依赖 Bazel。推荐的安装方式是通过 Bazelisk 自动下载 XLA 要求的 Bazel 版本Bazelisk 不可用时再手动安装 Bazel。Bazel 版本由仓库根目录的.bazelversion文件声明third_party/xla/.bazelversion仓库已启用 bzlmod见 third_party/xla/.bazelrc 中的common --enable_bzlmod --noenable_workspaceGPU 构建依赖 Docker推荐路径且镜像us-docker.pkg.dev/ml-oss-artifacts-published/ml-public-container/ml-build:latest已预装 Clang 18——这正是 XLA 在 CI 中使用的编译器版本。启动 ml-build 容器并让容器访问 GPU文档推荐直接用 XLA CI 使用的 ml-build 镜像。启动容器并授予全部 GPU 访问权限docker run -itd --rm \ --gpus all \ --name xla_gpu \ -w /xla \ -v $PWD:/xla \ us-docker.pkg.dev/ml-oss-artifacts-published/ml-public-container/ml-build:latest \ bash这条命令的副作用说明它创建一个名为xla_gpu的容器并把当前目录挂载为/xla-v $PWD:/xla请在本机 XLA 仓库根目录执行--gpus all让容器内可自动探测 CUDA compute capabilities因此需要宿主机装有 NVIDIA 驱动且 GPU 可用。如果你后续要改用 CPU 配置构建用的是不带--gpus all的普通容器文档中容器名为xla。配置 CUDA 后端在容器内运行配置脚本指定 CUDA 后端docker exec xla_gpu ./configure.py --backendCUDA./configure.py实际脚本为 build_tools/configure/configure.py仓库根目录的入口是它的符号链接负责把编译器路径、CUDA 版本、compute capabilities 等信息写入仓库中的xla_configure.bazelrc再由 Bazel 加载third_party/xla/.bazelrc 最后一行try-import %workspace%/xla_configure.bazelrc。配置时的关键行为带 GPU 的机器上compute capabilities 通过nvidia-smi --query-gpucompute_cap自动探测不带 GPU 的机器上探测必然失败此时必须手动传参文档给出的示例docker exec xla_gpu ./configure.py --backendCUDA \ --cuda_compute_capabilities9.0同时不要在启动容器时使用--gpus all。文档中的9.0只是示例值应按你目标 GPU 的实际 compute capability 替换不能照抄。脚本还支持若干可选参数详见 configure.py 的参数定义--cuda_version/--cudnn_version设置后由 Bazel 下载对应版本--local_cuda_path/--local_cudnn_path/--local_nccl_path指向本机目录--cuda_compiler可选nvcc默认或clang--nccl开启后不加nonccl配置否则生成的 bazelrc 默认包含build --config nonccl即不含 NCCL。执行 Bazel 构建配置完成后构建全部 XLA 目标docker exec xla_gpu bazel build \ --spawn_strategysandboxed \ --test_outputall \ //xla/...--spawn_strategysandboxed指定 Bazel 的动作执行沙箱策略--test_outputall使测试输出完整打印。文档明确提示首次构建耗时很长因为要构建整条技术栈包括 XLA、MLIR 和 StableHLO——构建期间没有输出不代表卡死耐心等待即可。构建以 Bazel 的成功结论收尾即为完成所有//xla/...目标编译、链接通过输出 Bazel 的 Build completed successfully。注意这条命令构建的是全部目标不是某个单独的二进制如果你的最终目的是某个具体产物如hlo_runner_main可直接只构建该目标见下文 JAX 容器路径中的示例。可选路径不用 Docker 直接构建 CUDA文档说明得益于 hermetic CUDA rules可以在不装 Docker 的情况下直接在本机构建 XLA 的 GPU 目标——即使这台机器没有 GPU、没有 NVIDIA 驱动./configure.py --backendCUDA bazel build \ --spawn_strategysandboxed \ --test_outputall \ //xla/...无 GPU 时同样要手动指定 compute capabilities./configure.py --backendCUDA --cuda_compute_capabilities9.0文档同时说明不走 Docker 构建 XLA 目标需要本机安装 ClangCI 使用 Clang 18更早版本should also work原文未承诺全部旧版本兼容。另外在 Linux 上 CUDA 后端属于 hermetic 构建编译器默认走rules_ml_toolchain提供的 hermetic Clang 18./configure.py会在找不到本地 Clang 时按 hermetic 工具链处理见 configure.py 中is_hermetic_build与 hermetic 版本逻辑。可选路径在 JAX CI 容器内构建 XLA 的 CUDA 目标如果你的目标是让 XLA 目标的构建配置与 JAX/XLA 发行版保持一致例如用 XLA 工具复现 JAX 中产生的 workloadbuild_from_source.md 给出了基于 JAX CI/Release 容器的完整流程克隆 JAX 仓库并进入jax目录运行./ci/utilities/run_docker_container.sh启动名为jax的容器该脚本属于 JAX 仓库不在本仓库内容器内构建jax-cuda-plugin目标docker exec jax ./ci/build_artifacts.sh jax-cuda-plugin此步骤会生成带 CUDA/cuDNN 支持所需的构建配置.jax_configure.bazelrc进入容器交互 shelldocker exec -ti jax /bin/bash此时位于容器内/jax目录构建 XLA 目标文档给出的示例目标/usr/local/bin/bazel build \ --configcuda_libraries_from_stubs \ --verbose_failurestrue \ xla//xla/tools/multihost_hlo_runner:hlo_runner_main需要覆盖 hermetic 环境变量时追加例如--repo_envHERMETIC_CUDA_COMPUTE_CAPABILITIESsm_90产物拷回宿主机cp bazel-bin/external/xla/xla/tools/multihost_hlo_runner/hlo_runner_main ./dist/然后exit退出容器。这条路径的产物是hlo_runner_main可执行文件可用于运行 HLO workload。验证与已知限制文档没有给出独立的构建后检查命令验证方式就是 Bazel 构建本身//xla/...或你指定的目标全部编译链接成功且带--test_outputall时相关测试输出打印完整。构建失败时优先看 Bazel 报告的最后一条 action 错误--verbose_failurestrueJAX 容器路径中已带上会给出更详细的失败信息。已知限制均来自源文档无 GPU 机器可以构建 CUDA 目标但启动容器时不能带--gpus all且./configure.py阶段必须手动传--cuda_compute_capabilitiesWindows 不支持直接构建 CUDA文档明确 XLA 在 Windows 上原生构建是 CPU-only 的需要 CUDA 支持必须使用 WSL2首次构建耗时整栈XLA、MLIR、StableHLO从零构建时间显著这是预期行为而非故障仓库内的 third_party/xla/README.md 提醒如果你只是用 XLA 编译 PyTorch / TensorFlow / JAX 项目不需要克隆并构建此仓库构建文档面向 XLA 贡献者和集成调试者。需要继续深入了解构建产物用途如 multihost hlo runner时可参考 tools_multihost_hlo_runner.md构建环境的完整准备克隆代码、Bazelisk 安装、Docker 配置见 developer_guide.md。【免费下载链接】tensorflowAn Open Source Machine Learning Framework for Everyone项目地址: https://gitcode.com/GitHub_Trending/te/tensorflow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

STM32软件资源全解析:从开发环境搭建到调试烧录避坑指南

STM32软件资源全解析:从开发环境搭建到调试烧录避坑指南

简介:面向STM32嵌入式开发者的综合资料包,聚焦STM32与FreeRTOS实时操作系统、LCD屏幕驱动的工程实践,适合学习多任务编程与人机交互显示的开发者,也可作为课程设计或毕业设计的参考资料。包内共324个文件,以C源码和头文…

📅 2026/9/9 16:02:26
2025前端技术排行:从夯实地基到前沿技术的进阶路线

2025前端技术排行:从夯实地基到前沿技术的进阶路线

1. 为什么我敢在2025年做一张“夯到拉”的前端排行榜 2025年还在纠结“前端到底学什么”的人,我劝你先别急着买课,先把这张图看明白。最近很多读者私信我,问的都是同一个问题:“前端还值不值得入?面试题怎么越来越偏&a…

📅 2026/9/9 16:02:26
FFmpeg与ANativeWindow:Android自研播放器渲染实践

FFmpeg与ANativeWindow:Android自研播放器渲染实践

简介:一套面向安卓开发者的视频播放器项目源码,演示如何通过开源多媒体框架完成视频解码,并将解码后的画面帧渲染到安卓原生窗口,实现流畅的原生播放。项目采用C/C混合编写,属于安卓原生开发的高级主题,适合…

📅 2026/9/9 16:02:26
MORE NEWS

更多资讯

📰

ML-For-Beginners Notebook 用 pd.read_csv 加载课程数据集报 FileNotFoundError 怎么解决?

ML-For-Beginners Notebook 用 pd.read_csv 加载课程数据集报 FileNotFoundError 怎么解决? 【免费下载链接】ML-For-Beginners 12 weeks, 26 lessons, 52 quizzes, classic Machine Learning for all 项目地址: https://gitcode.com/GitHub_Trending/ml/ML-For-B…

📰

Czkawka 免费清理重复文件与相似图片:Krokiet 完整使用指南,一次扫描找回几十 GB 空间

Czkawka 免费清理重复文件与相似图片:Krokiet 完整使用指南,一次扫描找回几十 GB 空间 【免费下载链接】czkawka Multi functional app to find duplicates, empty folders, similar images etc. 项目地址: https://gitcode.com/GitHub_Trending/cz/cz…

📰

昇腾CANN数据排布与类型全解:从NCHW到NC1HWC0

写这篇博文之前,我先交代一下背景。我最近在调一个昇腾推理项目,模型是PyTorch训练完导出的ONNX,再用ATC工具转成om离线模型。整个过程里,最折磨人的不是模型结构改不好,而是数据和格式对不上:一会儿报shap…

📰

国内 AI 生图工具哪些品牌的功能更全面,设计师商家参考

国内 AI 生图工具哪些品牌的功能更全面,设计师商家参考在国内 AI 创作工具快速发展的当下,设计师与商家在选择平台时,不仅关注图像生成质量,更看重工作流的完整性、内容合规性及多模态协同能力。卓特视觉无限画布作为节点式 AI 创…

📰

Git入门指南:从init到远程协作的核心操作与实战技巧

直接开始。这篇是《Git入门指南》系列的第二篇,上一篇咱们把安装、配置、SSH 这些地基打好了,这一篇就进入正题:日常用 Git 干活最频繁的那批基本操作。从 git init 到 commit,从 diff 到 log,从分支到标签&#xff0c…

📰

KernelSU ksud 实战指南:部署位置、常用命令与排障清单

KernelSU ksud 实战指南:部署位置、常用命令与排障清单 【免费下载链接】KernelSU A Kernel based root solution for Android 项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU KernelSU 是 Android 平台的内核级 root 方案,其用户空…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬