[XPU] Enable QK Norm + RoPE fusion pass on XPU (#49394)

Signed-off-by: Chaojun Zhang <chaojun.zhang@intel.com> Co-authored-by: Kunshang Ji <kunshang.ji@intel.com>

Chaojun Zhang committed Jul 27, 2026 at 11:22 UTC bf4f633b4cb80e04ba28d2179efe1662d97a6fe0
3 files changed +24 -3
.buildkite/intel_jobs/misc_intel.yaml
+22
@@ -262,3 +262,25 @@ steps:
262 pytest -v -s detokenizer &&
263 pytest -v -s -m "not cpu_test" ./multimodal &&
264 pytest -v -s utils_ --ignore=utils_/test_mem_utils.py'
265 +
266 +- label: Fusion Unit Tests
267 + timeout_in_minutes: 30
268 + device: intel_gpu
269 + agent_tags:
270 + label: production
271 + gpu: 1+
272 + mem: 16+
273 + no_plugin: true
274 + working_dir: "."
275 + env:
276 + REGISTRY: "public.ecr.aws/q9t5s3a7"
277 + REPO: "vllm-ci-test-repo"
278 + VLLM_TEST_DEVICE: "xpu"
279 + source_file_dependencies:
280 + - vllm/compilation/
281 + - tests/compile/passes/test_qk_norm_rope_fusion.py
282 + commands:
283 + - >-
284 + bash .buildkite/scripts/hardware_ci/run-intel-test.sh
285 + 'cd tests &&
286 + pytest -v -s compile/passes/test_qk_norm_rope_fusion.py'
\ No newline at end of file
vllm/compilation/passes/pass_manager.py
+2 -2
@@ -30,19 +30,19 @@ if rocm_aiter_ops.is_enabled():
30 )
31
32 if current_platform.is_cuda_alike() or current_platform.is_xpu():
33 + from .fusion.qk_norm_rope_fusion import QKNormRoPEFusionPass
34 from .fusion.sequence_parallelism import SequenceParallelismPass
35 + from .utility.split_coalescing import SplitCoalescingPass
36
37 if current_platform.is_cuda_alike():
38 from .fusion.act_quant_fusion import ActivationQuantFusionPass
39 from .fusion.attn_quant_fusion import AttnQuantFusionPass
40 from .fusion.mla_attn_quant_fusion import MLAAttnQuantFusionPass
41 from .fusion.mla_rope_kvcache_cat_fusion import MLARoPEKVCacheCatFusionPass
40 - from .fusion.qk_norm_rope_fusion import QKNormRoPEFusionPass
42 from .fusion.qk_norm_rope_kvcache_fusion import QkNormRopeKvCacheFusionPass
43 from .fusion.rms_quant_fusion import RMSNormQuantFusionPass
44 from .fusion.rope_kvcache_fusion import RopeKVCacheFusionPass
45 from .utility.scatter_split_replace import ScatterSplitReplacementPass
45 - from .utility.split_coalescing import SplitCoalescingPass
46
47 if current_platform.is_cuda():
48 from .fusion.allreduce_rms_fusion import AllReduceFusionPass
vllm/platforms/xpu.py
-1
@@ -304,7 +304,6 @@ class XPUPlatform(Platform):
304 "fuse_act_padding": "Activation + padding fusion",
305 "fuse_rope_kvcache": "RoPE + KV cache fusion",
306 "fuse_rope_kvcache_cat_mla": "RoPE + KV cache + MLA fusion",
307 - "enable_qk_norm_rope_fusion": "QK Norm + RoPE fusion",
307 }
308 if compilation_config.mode != CompilationMode.NONE:
309 for flag, feature_name in fusion_passes_to_disable.items():