group: CPU
depends_on: []
steps:
- label: CPU-Kernel Tests Shard %N
  key: cpu-kernel-tests
  depends_on: []
  device: intel_cpu
  no_plugin: true
  source_file_dependencies:
  - csrc/cpu/
  - cmake/cpu_extension.cmake
  - CMakeLists.txt
  - vllm/_custom_ops.py
  - tests/kernels/attention/test_cpu_attn.py
  - tests/v1/attention/test_group_head_counts.py
  - tests/kernels/attention/test_amx_mla.py
  - vllm/v1/attention/backends/mla/amx_mla.py
  - vllm/model_executor/layers/attention/mla_attention.py
  - tests/kernels/test_deepseek_v4_cpu_kernels.py
  - tests/kernels/moe/test_cpu_fused_moe.py
  - tests/kernels/moe/test_cpu_quant_fused_moe.py
  - tests/kernels/moe/test_zen_cpu_int8_moe.py
  - vllm/model_executor/layers/fused_moe/experts/cpu_moe.py
  - tests/kernels/test_onednn.py
  - tests/kernels/test_awq_int4_to_int8.py
  - tests/kernels/quantization/test_cpu_fp8_scaled_mm.py
  - tests/kernels/quantization/test_zen_da8w4.py
  - vllm/model_executor/kernels/linear/mixed_precision/zentorch.py
  - vllm/model_executor/layers/fused_moe/experts/zentorch_moe.py
  - tests/kernels/mamba/cpu/test_cpu_gdn_ops.py
  - tests/kernels/mamba/test_cpu_short_conv.py
  - tests/kernels/mamba/test_causal_conv1d.py
  - tests/kernels/mamba/test_mamba_ssm.py
  - vllm/v1/sample/ops/topk_topp_triton.py
  - vllm/v1/sample/ops/topk_topp_sampler.py
  - tests/v1/sample/test_topk_topp_sampler.py
  commands:
    - |
      bash .buildkite/scripts/hardware_ci/run-cpu-test.sh 30m "
      pytest -x -v -s --num-shards=$$BUILDKITE_PARALLEL_JOB_COUNT --shard-id=$$BUILDKITE_PARALLEL_JOB \
      tests/kernels/attention/test_cpu_attn.py \
      tests/v1/attention/test_group_head_counts.py \
      tests/kernels/attention/test_amx_mla.py \
      tests/kernels/test_deepseek_v4_cpu_kernels.py \
      tests/kernels/moe/test_cpu_fused_moe.py \
      tests/kernels/moe/test_cpu_quant_fused_moe.py \
      tests/kernels/moe/test_zen_cpu_int8_moe.py \
      tests/kernels/mamba/test_cpu_short_conv.py \
      tests/kernels/test_onednn.py \
      tests/kernels/test_awq_int4_to_int8.py \
      tests/kernels/quantization/test_cpu_fp8_scaled_mm.py \
      tests/kernels/quantization/test_zen_da8w4.py \
      tests/kernels/mamba/cpu/test_cpu_gdn_ops.py \
      tests/kernels/mamba/test_causal_conv1d.py \
      tests/kernels/mamba/test_mamba_ssm.py \
      tests/v1/sample/test_topk_topp_sampler.py::TestTritonTopkTopp"
  parallelism: 2

# Speculative decoding under a CPU platform. The unit tests already pass on
# CPU but no CPU job runs them; the e2e tests gate the engine path itself,
# which unit tests cannot reach.
- label: CPU-Spec Decode Tests
  key: cpu-spec-decode-tests
  depends_on: []
  soft_fail: true
  device: intel_cpu
  no_plugin: true
  source_file_dependencies:
  - vllm/v1/spec_decode/
  - vllm/v1/worker/cpu/
  - vllm/v1/worker/cpu_model_runner.py
  - vllm/v1/worker/gpu/spec_decode/
  - vllm/v1/attention/backends/cpu_attn.py
  - vllm/config/speculative.py
  - vllm/model_executor/models/qwen3_5.py
  - vllm/model_executor/models/qwen3_5_mtp.py
  - vllm/model_executor/models/llama_eagle3.py
  - vllm/model_executor/layers/mamba/gdn/qwen_gdn_linear_attn.py
  - vllm/model_executor/layers/mamba/mamba_mixer2.py
  - vllm/model_executor/layers/mamba/ops/cpu/
  - tests/v1/e2e/test_cpu_spec_decode.py
  - tests/v1/spec_decode/
  - tests/v1/worker/
  commands:
    - |
      bash .buildkite/scripts/hardware_ci/run-cpu-test.sh 30m "
      pytest -x -v -s \
      tests/v1/worker/test_gpu_autoregressive_speculator.py \
      tests/v1/worker/test_gpu_extract_hidden_states_speculator.py \
      tests/v1/worker/test_gpu_batch_ordering.py \
      tests/v1/worker/test_gpu_rejection_sampler_chunking.py \
      tests/v1/worker/test_eagle3_aux_hidden_states_pp.py \
      tests/v1/worker/test_spec_decode_embed_sharing_pp.py \
      tests/v1/spec_decode/test_adaptive_verification.py \
      tests/v1/spec_decode/test_dflash2.py \
      tests/v1/spec_decode/test_dflash_causality.py \
      tests/v1/spec_decode/test_eagle_draft_attn_metadata.py \
      tests/v1/spec_decode/test_draft_attention_backend_override.py \
      tests/v1/spec_decode/test_draft_moe_backend_override.py \
      tests/v1/spec_decode/test_ngram.py \
      tests/v1/spec_decode/test_llm_base_proposer_sampling.py
      unset VLLM_CPU_CI_ENV
      pytest -x -v -s tests/v1/e2e/test_cpu_spec_decode.py"

# Note: SDE can't be downloaded from CI host because of AWS WAF
# - label: CPU-Compatibility Tests
#   depends_on: []
#   device: intel_cpu
#   no_plugin: true
#   source_file_dependencies:
#   - cmake/cpu_extension.cmake
#   - setup.py
#   - vllm/platforms/cpu.py
#   commands:
#     - |
#       bash .buildkite/scripts/hardware_ci/run-cpu-test.sh 20m "
#       bash .buildkite/scripts/hardware_ci/run-cpu-compatibility-test.sh"

- label: CPU-Language Generation and Pooling Model Tests Shard %N
  key: cpu-language-generation-and-pooling-model-tests
  depends_on: []
  device: intel_cpu
  no_plugin: true
  source_file_dependencies:
  - csrc/cpu/
  - vllm/
  - tests/models/language/generation/
  - tests/models/language/pooling/
  - tests/v1/e2e/test_cpu_linear_attn_chunked_prefix.py
  commands:
    - |
      bash .buildkite/scripts/hardware_ci/run-cpu-test.sh 25m "
      pytest -x -v -s tests/models/language/generation tests/models/language/pooling tests/v1/e2e/test_cpu_linear_attn_chunked_prefix.py -m cpu_model --num-shards=$$BUILDKITE_PARALLEL_JOB_COUNT --shard-id=$$BUILDKITE_PARALLEL_JOB"
  parallelism: 3

- label: CPU-Quantization Model Tests
  key: cpu-quantization-model-tests
  depends_on: []
  device: intel_cpu
  no_plugin: true
  source_file_dependencies:
  - csrc/cpu/
  - vllm/model_executor/layers/quantization/auto_gptq.py
  - vllm/model_executor/layers/quantization/compressed_tensors/schemes/compressed_tensors_w8a8_int8.py
  - vllm/model_executor/kernels/linear/mixed_precision/cpu.py
  - vllm/model_executor/kernels/linear/scaled_mm/cpu.py
  - vllm/model_executor/layers/fused_moe/experts/cpu_moe.py
  - tests/quantization/test_compressed_tensors.py
  - tests/quantization/test_cpu_wna16.py
  - tests/quantization/test_cpu_w8a8.py
  commands:
    - |
      bash .buildkite/scripts/hardware_ci/run-cpu-test.sh 45m "
      pytest -x -v -s tests/quantization/test_compressed_tensors.py::test_compressed_tensors_w8a8_logprobs
      pytest -x -v -s tests/quantization/test_cpu_wna16.py
      pytest -x -v -s tests/quantization/test_cpu_w8a8.py"
      
- label: CPU-Distributed Tests (PP+TP)
  key: cpu-distributed-tests-pp-tp
  depends_on: []
  device: intel_cpu
  no_plugin: true
  source_file_dependencies: &cpu_distributed_deps
  - csrc/cpu/shm.cpp
  - vllm/v1/worker/cpu_worker.py
  - vllm/v1/worker/gpu_worker.py
  - vllm/v1/worker/cpu_model_runner.py
  - vllm/v1/worker/gpu_model_runner.py
  - vllm/platforms/cpu.py
  - vllm/distributed/parallel_state.py
  - vllm/distributed/device_communicators/cpu_communicator.py
  - .buildkite/scripts/hardware_ci/run-cpu-distributed-smoke-test.sh
  commands:
    - |
      bash .buildkite/scripts/hardware_ci/run-cpu-test.sh 10m "
      bash .buildkite/scripts/hardware_ci/run-cpu-distributed-smoke-test.sh tp_pp"

- label: CPU-Distributed Tests (DP+TP)
  key: cpu-distributed-tests-dp-tp
  depends_on: []
  device: intel_cpu
  no_plugin: true
  source_file_dependencies: *cpu_distributed_deps
  commands:
    - |
      bash .buildkite/scripts/hardware_ci/run-cpu-test.sh 10m "
      bash .buildkite/scripts/hardware_ci/run-cpu-distributed-smoke-test.sh dp_tp"

- label: CPU-Multi-Modal Model Tests %N
  key: cpu-multi-modal-model-tests-n
  depends_on: []
  device: intel_cpu
  no_plugin: true
  source_file_dependencies:
  # - vllm/
  - vllm/model_executor/layers/rotary_embedding
  - tests/models/multimodal/generation/
  commands:
    - |
      bash .buildkite/scripts/hardware_ci/run-cpu-test.sh 45m "
      pytest -x -v -s tests/models/multimodal/generation --ignore=tests/models/multimodal/generation/test_pixtral.py --ignore=tests/models/multimodal/generation/test_qwen2_5_vl.py -m cpu_model --num-shards=$$BUILDKITE_PARALLEL_JOB_COUNT --shard-id=$$BUILDKITE_PARALLEL_JOB"
  parallelism: 4

- label: CPU-Qwen2.5-VL Multimodal Tests
  key: cpu-qwen2-5-vl-multimodal-tests
  depends_on: []
  device: intel_cpu
  no_plugin: true
  source_file_dependencies:
  # - vllm/
  - vllm/model_executor/layers/rotary_embedding
  - tests/models/multimodal/generation/
  commands:
    - |
      bash .buildkite/scripts/hardware_ci/run-cpu-test.sh 40m "
      VLLM_CI_ENV=0 pytest -x -v -s tests/models/multimodal/generation/test_qwen2_5_vl.py"

- label: "Arm CPU Test Shard %N"
  key: arm-cpu-test
  depends_on:
  - cpu-arm64-image-build
  soft_fail: false
  device: arm_cpu
  no_plugin: true
  commands:
  - >-
    bash .buildkite/scripts/hardware_ci/run-cpu-test-arm.sh
    "$$BUILDKITE_PARALLEL_JOB"
    "$REGISTRY/$REPO:$BUILDKITE_COMMIT-arm64-cpu"
  parallelism: 3
