From 04e9d04b98edd5ae617f42b2013294dce08ba0ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20de=20Kok?= Date: Mon, 15 Dec 2025 14:33:08 +0000 Subject: [PATCH] build2cmake: fix C++ dependency lookup warnings The C++ dependency lookup in build2cmake would iterate over all kernels, looking up their dependencies. However, this lead to spurious warnings such as: Warning: CUDA backend doesn't need/support dependency: CutlassSycl Fix this by only collecting and then looking up the dependencies of the currently-active backend. --- build2cmake/src/torch/cuda.rs | 15 ++++++++++++--- build2cmake/src/torch/xpu.rs | 17 +++++++++++++---- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/build2cmake/src/torch/cuda.rs b/build2cmake/src/torch/cuda.rs index e96432fe..5b821b9b 100644 --- a/build2cmake/src/torch/cuda.rs +++ b/build2cmake/src/torch/cuda.rs @@ -173,7 +173,7 @@ fn write_cmake( cmake_writer, )?; - render_deps(env, build, cmake_writer)?; + render_deps(env, backend, build, cmake_writer)?; render_binding(env, torch, name, cmake_writer)?; @@ -213,10 +213,19 @@ pub fn render_binding( Ok(()) } -fn render_deps(env: &Environment, build: &Build, write: &mut impl Write) -> Result<()> { +fn render_deps( + env: &Environment, + backend: Backend, + build: &Build, + write: &mut impl Write, +) -> Result<()> { let mut deps = HashSet::new(); - for kernel in build.kernels.values() { + for kernel in build + .kernels + .values() + .filter(|kernel| kernel.backend() == backend) + { deps.extend(kernel.depends()); } diff --git a/build2cmake/src/torch/xpu.rs b/build2cmake/src/torch/xpu.rs index 3ef285b1..9790e4d1 100644 --- a/build2cmake/src/torch/xpu.rs +++ b/build2cmake/src/torch/xpu.rs @@ -8,7 +8,7 @@ use minijinja::{context, Environment}; use super::common::write_pyproject_toml; use super::kernel_ops_identifier; -use crate::config::{Build, Dependency, Kernel, Torch}; +use crate::config::{Backend, Build, Dependency, Kernel, Torch}; use crate::version::Version; use crate::FileSet; @@ -144,7 +144,7 @@ fn write_cmake( cmake_writer, )?; - render_deps(env, build, cmake_writer)?; + render_deps(env, Backend::Xpu, build, cmake_writer)?; render_binding(env, torch, name, cmake_writer)?; @@ -184,10 +184,19 @@ fn render_binding( Ok(()) } -fn render_deps(env: &Environment, build: &Build, write: &mut impl Write) -> Result<()> { +fn render_deps( + env: &Environment, + backend: Backend, + build: &Build, + write: &mut impl Write, +) -> Result<()> { let mut deps = HashSet::new(); - for kernel in build.kernels.values() { + for kernel in build + .kernels + .values() + .filter(|kernel| kernel.backend() == backend) + { deps.extend(kernel.depends()); }