如何30分钟搭建HEIR开发环境:Bazel源码构建与BuildBuddy加速实战 📅 2026/8/24 12:12:23 如何30分钟搭建HEIR开发环境Bazel源码构建与BuildBuddy加速实战【免费下载链接】heirA compiler for homomorphic encryption项目地址: https://gitcode.com/gh_mirrors/he/heirHEIR 是一个基于 MLIR 的同态加密编译器Homomorphic Encryption Intermediate Representation由 Google 开源。本文带你用 Bazel 在 30 分钟内从零完成 HEIR 同态加密编译器的源码构建并配置 BuildBuddy 远程缓存把构建时间压缩到 5 分钟左右附完整验证与避坑指南。HEIR 是什么一张图看懂同态加密编译器架构在动手之前先花 1 分钟理解 HEIR 的编译流水线Python / Torch 等前端输入先落到标准 MLIR 方言再经过secret、tensor_ext等密文算术方言降低到 BGV / CKKS / CGGI 等加密方案 API最终生成 OpenFHE、Lattigo 等后端库代码并在 CPU 上执行。构建完成后你会得到两个核心二进制heir-opt运行编译器 Pass优化与方言转换定义在tools/heir-opt.cppheir-translate后端代码生成定义在tools/heir-translate.cpp以 Lattigo 后端为例CKKS 方案的下降路径如下图所示高亮的就是实际经过的层一键环境准备安装 Bazelisk 与 GitHEIR 使用 Bazel 作为构建系统但它不要求你手动装编译器、Go、Rust、Python——Bazel 会全部托管。你只需要两样东西依赖说明Git拉取源码BazeliskBazel 版本管理器自动下载正确版本的 BazelHEIR 在仓库根目录的.bazelversion文件中固定了 Bazel 版本为8.4.0安装 Bazelisk 后它会自动读取并下载对应版本无需手动匹配。# Linux 示例下载 bazelisk 并放入 PATH wget -c https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-amd64 mkdir -p ~/bin mv bazelisk-linux-amd64 ~/bin/bazel chmod x ~/bin/bazel echo export PATH$PATH:~/bin ~/.bashrc⚠️ 两个高频踩坑点Linux 下root 用户会导致 Bazel 拒绝工作请用普通用户登录。macOS 用户可直接用 Homebrew 安装bazelisk。克隆 HEIR 源码仓库git clone https://gitcode.com/gh_mirrors/he/heir cd heir进入仓库后先认识几个关键文件后文会反复用到.bazelversion固定的 Bazel 版本8.4.0.bazelrc项目默认构建配置已内置 BuildBuddy 公共远程缓存MODULE.bazelBazel 模块依赖声明LLVM 工具链、OpenFHE、Lattigo 等README.md官方快速上手指南Bazel 源码构建30分钟拿到 heir-opt执行下面的命令构建核心工具bazel build //tools:heir-optHEIR 依赖从源码编译的 LLVM因此干净构建大约需要 30 分钟取决于机器性能仅 LLVM 就要 15 分钟以上。首次构建时 Bazel 会在后台下载并编译 LLVM、OpenFHE 等全部依赖期间耐心等待即可。构建成功后可以立即验证bazel run //tools:heir-opt -- --helpBuildBuddy 加速实战构建时间 30 分钟 → 5 分钟本地构建最大的痛点是重复编译 LLVM。HEIR 的.bazelrc中已经默认配置了 BuildBuddy 公共远程缓存remote_cachegrpcs://heir.buildbuddy.io只读 API key 直接可用能省掉一部分重复劳动。想进一步开启远程构建执行把任务直接丢到云端 500 个 worker 上编译只需 3 步第 1 步注册一个免费的 buildbuddy.io 账号创建一个 API Key。第 2 步在 HEIR 仓库根目录创建.bazelrc.user文件该文件不会被提交仅本地生效common --remote_headerx-buildbuddy-api-keyYOUR_API_KEY common --configremote第 3 步重新构建bazel build -c opt //tools:heir-opt配置生效的标志是 Bazel 输出中出现远程执行任务[500 / N Remote ...干净构建时间会降到5 分钟上下。 原理.bazelrc末尾通过try-import %workspace%/.bazelrc.user加载用户配置.bazelrc中的:remote配置会附加--jobs500和--remote_executor这正是加速的关键。运行端到端测试验证你的 HEIR 环境构建成功后跑一个真实的端到端测试验证编译器 加密后端整条链路以 OpenFHE 后端的 CKKS 矩阵向量乘为例bazel test //tests/Examples/openfhe/ckks/halevi_shoup_matvec:all看到PASSED说明环境完全就绪 。也可以挑其他测试玩玩# 跑某个目录下的全部方言测试 bazel test //tests/Dialect/... # 跑全部端到端示例较慢 bazel test //tests/Examples/...:all还可以用仓库自带的点积示例手动体验编译流程输入 IR 位于tests/Examples/common/dot_product_8.mlirbazel run //tools:heir-opt -- \ --mlir-to-bgvmin-slot-count8 \ --scheme-to-openfheentry-functiondot_product \ $PWD/tests/Examples/common/dot_product_8.mlir output.mlir输出的output.mlir就是下降到 OpenFHE 方言的密文程序可交给heir-translate生成 C 代码。常见构建问题与避坑清单症状原因与解决办法改了代码后触发 LLVM 全量重编译15 分钟LLVM 的 commit 由自动化任务每天更新一次git pull后若 pin 的 commit 变了就会全量重编译配置 BuildBuddy 远程缓存后可完全规避切换到-c opt后全量重建优化级别变化会改变编译标志OpenFHE 后端生成代码在-c opt下快很多建议日常开发统一用-c opt并保持不变激活 Python 虚拟环境后触发重建虚拟环境改变了PATH.bazelrc已启用--incompatible_strict_action_env缓解尽量避免在构建过程中随意切换 shell 环境构建卡死或想彻底重来bazel clean清构建缓存bazel clean --expunge连系统分析编译器探测等一起清除另外如果想查看某次构建具体调用了哪些底层命令原始 clang / heir-opt 命令可以加--subcommands标志bazel build --subcommands //tools:heir-opt总结你的 30 分钟搭建清单装 Bazelisk自动管理 Bazel 8.4.0确保非 root 用户克隆仓库git clone https://gitcode.com/gh_mirrors/he/heir本地构建bazel build //tools:heir-opt约 30 分钟配置 BuildBuddy.bazelrc.user中写入你的 API Key --configremote后续干净构建约 5 分钟验证环境bazel test //tests/Examples/openfhe/ckks/halevi_shoup_matvec:all显示 PASSED至此你已拥有完整的 HEIR 同态加密编译器开发环境可以开始阅读 README.md 中的完整使用流程或深入lib/Dialect/下的各个方言实现探索编译器原理。【免费下载链接】heirA compiler for homomorphic encryption项目地址: https://gitcode.com/gh_mirrors/he/heir创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考