Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
OpenDAS
vllm_cscc
Commits
f2b8e1c5
Unverified
Commit
f2b8e1c5
authored
Nov 13, 2025
by
Alexei-V-Ivanov-AMD
Committed by
GitHub
Nov 14, 2025
Browse files
Mirrored test group definitions for AMD (2025-11-11) (#28573)
Signed-off-by:
Alexei V. Ivanov
<
alexei.ivanov@amd.com
>
parent
6e25b1cd
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
153 additions
and
10 deletions
+153
-10
.buildkite/test-amd.yaml
.buildkite/test-amd.yaml
+153
-10
No files found.
.buildkite/test-amd.yaml
View file @
f2b8e1c5
...
@@ -226,6 +226,27 @@ steps:
...
@@ -226,6 +226,27 @@ steps:
-
VLLM_ALLOW_INSECURE_SERIALIZATION=1 RAY_DEDUP_LOGS=0 python3 rlhf_colocate.py
-
VLLM_ALLOW_INSECURE_SERIALIZATION=1 RAY_DEDUP_LOGS=0 python3 rlhf_colocate.py
-
popd
-
popd
-
label
:
Distributed Tests (8 GPUs)
# 4min
timeout_in_minutes
:
10
mirror_hardwares
:
[
amdexperimental
]
agent_pool
:
mi325_8
# grade: Blocking
gpu
:
h100
num_gpus
:
8
working_dir
:
"
/vllm-workspace/tests"
source_file_dependencies
:
-
examples/offline_inference/torchrun_dp_example.py
-
vllm/config/parallel.py
-
vllm/distributed/
-
vllm/v1/engine/llm_engine.py
-
vllm/v1/executor/uniproc_executor.py
-
vllm/v1/worker/gpu_worker.py
commands
:
# https://github.com/NVIDIA/nccl/issues/1838
#- export NCCL_CUMEM_HOST_ENABLE=0
# test with torchrun tp=2 and dp=4 with ep
-
torchrun --nproc-per-node=8 ../examples/offline_inference/torchrun_dp_example.py --tp-size=2 --pp-size=1 --dp-size=4 --enable-ep
-
label
:
EPLB Algorithm Test
# 5min
-
label
:
EPLB Algorithm Test
# 5min
mirror_hardwares
:
[
amdexperimental
,
amdproduction
]
mirror_hardwares
:
[
amdexperimental
,
amdproduction
]
agent_pool
:
mi325_1
agent_pool
:
mi325_1
...
@@ -238,11 +259,11 @@ steps:
...
@@ -238,11 +259,11 @@ steps:
commands
:
commands
:
-
pytest -v -s distributed/test_eplb_algo.py
-
pytest -v -s distributed/test_eplb_algo.py
-
label
:
EPLB Execution Test
#
5
min
-
label
:
EPLB Execution Test
#
10
min
mirror_hardwares
:
[
amdexperimental
,
amdproduction
]
mirror_hardwares
:
[
amdexperimental
,
amdproduction
]
agent_pool
:
mi325_4
agent_pool
:
mi325_4
# grade: Blocking
# grade: Blocking
timeout_in_minutes
:
15
timeout_in_minutes
:
20
working_dir
:
"
/vllm-workspace/tests"
working_dir
:
"
/vllm-workspace/tests"
num_gpus
:
4
num_gpus
:
4
source_file_dependencies
:
source_file_dependencies
:
...
@@ -250,6 +271,7 @@ steps:
...
@@ -250,6 +271,7 @@ steps:
-
tests/distributed/test_eplb_execute.py
-
tests/distributed/test_eplb_execute.py
commands
:
commands
:
-
pytest -v -s distributed/test_eplb_execute.py
-
pytest -v -s distributed/test_eplb_execute.py
-
pytest -v -s distributed/test_eplb_spec_decode.py
-
label
:
Metrics, Tracing Test
# 12min
-
label
:
Metrics, Tracing Test
# 12min
timeout_in_minutes
:
20
timeout_in_minutes
:
20
...
@@ -273,7 +295,7 @@ steps:
...
@@ -273,7 +295,7 @@ steps:
-
label
:
Regression Test
# 7min
-
label
:
Regression Test
# 7min
timeout_in_minutes
:
20
timeout_in_minutes
:
20
mirror_hardwares
:
[
amdexperimental
,
amdproduction
]
mirror_hardwares
:
[
amdexperimental
,
amdproduction
,
amdtentative
]
agent_pool
:
mi325_1
agent_pool
:
mi325_1
grade
:
Blocking
grade
:
Blocking
source_file_dependencies
:
source_file_dependencies
:
...
@@ -288,7 +310,7 @@ steps:
...
@@ -288,7 +310,7 @@ steps:
timeout_in_minutes
:
40
timeout_in_minutes
:
40
mirror_hardwares
:
[
amdexperimental
,
amdproduction
]
mirror_hardwares
:
[
amdexperimental
,
amdproduction
]
agent_pool
:
mi325_1
agent_pool
:
mi325_1
#grade: Blocking
#
grade: Blocking
source_file_dependencies
:
source_file_dependencies
:
-
vllm/
-
vllm/
-
tests/engine
-
tests/engine
...
@@ -337,6 +359,7 @@ steps:
...
@@ -337,6 +359,7 @@ steps:
-
tests/v1
-
tests/v1
commands
:
commands
:
# split the test to avoid interference
# split the test to avoid interference
-
uv pip install --system -r /vllm-workspace/requirements/kv_connectors.txt
-
pytest -v -s -m 'not cpu_test' v1/core
-
pytest -v -s -m 'not cpu_test' v1/core
-
pytest -v -s v1/executor
-
pytest -v -s v1/executor
-
pytest -v -s v1/kv_offload
-
pytest -v -s v1/kv_offload
...
@@ -344,7 +367,7 @@ steps:
...
@@ -344,7 +367,7 @@ steps:
-
pytest -v -s v1/logits_processors
-
pytest -v -s v1/logits_processors
-
pytest -v -s v1/worker
-
pytest -v -s v1/worker
-
pytest -v -s v1/spec_decode
-
pytest -v -s v1/spec_decode
-
pytest -v -s -m 'not cpu_test' v1/kv_connector/unit
--ignore=v1/kv_connector/unit/test_lmcache_integration.py
-
pytest -v -s -m 'not cpu_test' v1/kv_connector/unit
-
pytest -v -s -m 'not cpu_test' v1/metrics
-
pytest -v -s -m 'not cpu_test' v1/metrics
-
pytest -v -s v1/test_oracle.py
-
pytest -v -s v1/test_oracle.py
-
pytest -v -s v1/test_request.py
-
pytest -v -s v1/test_request.py
...
@@ -353,6 +376,20 @@ steps:
...
@@ -353,6 +376,20 @@ steps:
-
pip install -U git+https://github.com/robertgshaw2-redhat/lm-evaluation-harness.git@streaming-api
-
pip install -U git+https://github.com/robertgshaw2-redhat/lm-evaluation-harness.git@streaming-api
-
pytest -v -s entrypoints/openai/correctness/test_lmeval.py::test_lm_eval_accuracy_v1_engine
-
pytest -v -s entrypoints/openai/correctness/test_lmeval.py::test_lm_eval_accuracy_v1_engine
# TODO: Add the "V1 Test attetion (MI300)" test group
-
label
:
V1 Test attention (H100)
# 10min
mirror_hardwares
:
[
amdexperimental
]
agent_pool
:
mi325_1
# grade: Blocking
timeout_in_minutes
:
30
gpu
:
h100
source_file_dependencies
:
-
vllm/v1/attention
-
tests/v1/attention
commands
:
-
pytest -v -s v1/attention
-
label
:
V1 Test others (CPU)
# 5 mins
-
label
:
V1 Test others (CPU)
# 5 mins
mirror_hardwares
:
[
amdexperimental
,
amdproduction
]
mirror_hardwares
:
[
amdexperimental
,
amdproduction
]
agent_pool
:
mi325_1
agent_pool
:
mi325_1
...
@@ -479,10 +516,11 @@ steps:
...
@@ -479,10 +516,11 @@ steps:
-
tests/compile
-
tests/compile
commands
:
commands
:
-
pytest -v -s compile/test_basic_correctness.py
-
pytest -v -s compile/test_basic_correctness.py
-
pytest -v -s compile/test_multimodal_compile.py
-
pytest -v -s compile/piecewise/
-
pytest -v -s compile/piecewise/
-
label
:
PyTorch Fullgraph Test
# 2
2
min
-
label
:
PyTorch Fullgraph Test
# 2
7
min
timeout_in_minutes
:
35
timeout_in_minutes
:
40
mirror_hardwares
:
[
amdexperimental
,
amdproduction
]
mirror_hardwares
:
[
amdexperimental
,
amdproduction
]
agent_pool
:
mi325_1
agent_pool
:
mi325_1
# grade: Blocking
# grade: Blocking
...
@@ -491,8 +529,23 @@ steps:
...
@@ -491,8 +529,23 @@ steps:
-
vllm/
-
vllm/
-
tests/compile
-
tests/compile
commands
:
commands
:
-
pytest -v -s compile/test_full_graph.py
-
pytest -v -s compile/test_full_graph.py -k 'not test_fp8_kv_scale_compile'
-
pytest -v -s compile/test_fusions_e2e.py
# Limit to no custom ops to reduce running time
# Wrap with quotes to escape yaml and avoid starting -k string with a -
-
"
pytest
-v
-s
compile/test_fusions_e2e.py
-k
'TRITON
and
-quant_fp8'"
-
label
:
Cudagraph test
timeout_in_minutes
:
20
mirror_hardwares
:
[
amdexperimental
,
amdproduction
]
agent_pool
:
mi325_1
source_file_dependencies
:
-
tests/v1/cudagraph
-
vllm/v1/cudagraph_dispatcher.py
-
vllm/config/compilation.py
-
vllm/compilation
commands
:
-
pytest -v -s v1/cudagraph/test_cudagraph_dispatch.py
-
pytest -v -s v1/cudagraph/test_cudagraph_mode.py
-
label
:
Kernels Core Operation Test
# 48min
-
label
:
Kernels Core Operation Test
# 48min
timeout_in_minutes
:
75
timeout_in_minutes
:
75
...
@@ -544,6 +597,8 @@ steps:
...
@@ -544,6 +597,8 @@ steps:
-
tests/kernels/moe
-
tests/kernels/moe
-
vllm/model_executor/layers/fused_moe/
-
vllm/model_executor/layers/fused_moe/
-
vllm/distributed/device_communicators/
-
vllm/distributed/device_communicators/
-
vllm/envs.py
-
vllm/config
commands
:
commands
:
-
pytest -v -s kernels/moe --shard-id=$$BUILDKITE_PARALLEL_JOB --num-shards=$$BUILDKITE_PARALLEL_JOB_COUNT
-
pytest -v -s kernels/moe --shard-id=$$BUILDKITE_PARALLEL_JOB --num-shards=$$BUILDKITE_PARALLEL_JOB_COUNT
parallelism
:
2
parallelism
:
2
...
@@ -562,10 +617,13 @@ steps:
...
@@ -562,10 +617,13 @@ steps:
-
label
:
Model Executor Test
# 23min
-
label
:
Model Executor Test
# 23min
timeout_in_minutes
:
35
timeout_in_minutes
:
35
torch_nightly
:
true
mirror_hardwares
:
[
amdexperimental
,
amdproduction
]
mirror_hardwares
:
[
amdexperimental
,
amdproduction
]
agent_pool
:
mi325_1
agent_pool
:
mi325_1
# grade: Blocking
# grade: Blocking
source_file_dependencies
:
source_file_dependencies
:
-
vllm/engine/arg_utils.py
-
vllm/config/model.py
-
vllm/model_executor
-
vllm/model_executor
-
tests/model_executor
-
tests/model_executor
-
tests/entrypoints/openai/test_tensorizer_entrypoint.py
-
tests/entrypoints/openai/test_tensorizer_entrypoint.py
...
@@ -861,9 +919,10 @@ steps:
...
@@ -861,9 +919,10 @@ steps:
-
cd .. && VLLM_WORKER_MULTIPROC_METHOD=spawn pytest -v -s tests/models/multimodal/generation/test_whisper.py -m core_model
# Otherwise, mp_method="spawn" doesn't work
-
cd .. && VLLM_WORKER_MULTIPROC_METHOD=spawn pytest -v -s tests/models/multimodal/generation/test_whisper.py -m core_model
# Otherwise, mp_method="spawn" doesn't work
-
label
:
Multi-Modal Accuracy Eval (Small Models)
# 10min
-
label
:
Multi-Modal Accuracy Eval (Small Models)
# 10min
timeout_in_minutes
:
70
mirror_hardwares
:
[
amdexperimental
,
amdproduction
]
mirror_hardwares
:
[
amdexperimental
,
amdproduction
]
agent_pool
:
mi325_1
agent_pool
:
mi325_1
timeout_in_minutes
:
15
# grade: Blocking
working_dir
:
"
/vllm-workspace/.buildkite/lm-eval-harness"
working_dir
:
"
/vllm-workspace/.buildkite/lm-eval-harness"
source_file_dependencies
:
source_file_dependencies
:
-
vllm/multimodal/
-
vllm/multimodal/
...
@@ -934,6 +993,7 @@ steps:
...
@@ -934,6 +993,7 @@ steps:
-
label
:
Transformers Nightly Models Test
-
label
:
Transformers Nightly Models Test
mirror_hardwares
:
[
amdexperimental
]
mirror_hardwares
:
[
amdexperimental
]
agent_pool
:
mi325_1
agent_pool
:
mi325_1
# grade: Blocking
working_dir
:
"
/vllm-workspace/"
working_dir
:
"
/vllm-workspace/"
optional
:
true
optional
:
true
commands
:
commands
:
...
@@ -961,11 +1021,16 @@ steps:
...
@@ -961,11 +1021,16 @@ steps:
-
vllm/model_executor/layers/fused_moe/flashinfer_cutlass_prepare_finalize.py
-
vllm/model_executor/layers/fused_moe/flashinfer_cutlass_prepare_finalize.py
-
vllm/model_executor/layers/quantization/utils/flashinfer_utils.py
-
vllm/model_executor/layers/quantization/utils/flashinfer_utils.py
-
vllm/v1/attention/backends/flashinfer.py
-
vllm/v1/attention/backends/flashinfer.py
-
vllm/v1/attention/backends/mla/cutlass_mla.py
-
vllm/v1/attention/backends/mla/flashinfer_mla.py
-
vllm/platforms/cuda.py
-
vllm/attention/selector.py
commands
:
commands
:
-
nvidia-smi
-
nvidia-smi
-
python3 examples/offline_inference/basic/chat.py
-
python3 examples/offline_inference/basic/chat.py
# Attention
# Attention
# num_heads2 broken by https://github.com/flashinfer-ai/flashinfer/issues/1353
# num_heads2 broken by https://github.com/flashinfer-ai/flashinfer/issues/1353
-
pytest -v -s tests/kernels/attention/test_attention_selector.py
-
pytest -v -s tests/kernels/attention/test_flashinfer.py -k 'not num_heads2'
-
pytest -v -s tests/kernels/attention/test_flashinfer.py -k 'not num_heads2'
-
pytest -v -s tests/kernels/attention/test_flashinfer_trtllm_attention.py
-
pytest -v -s tests/kernels/attention/test_flashinfer_trtllm_attention.py
-
pytest -v -s tests/kernels/attention/test_cutlass_mla_decode.py
-
pytest -v -s tests/kernels/attention/test_cutlass_mla_decode.py
...
@@ -1002,7 +1067,33 @@ steps:
...
@@ -1002,7 +1067,33 @@ steps:
-
pytest -v -s tests/compile/test_silu_mul_quant_fusion.py
-
pytest -v -s tests/compile/test_silu_mul_quant_fusion.py
# this runner has 2 GPUs available even though num_gpus=2 is not set
# this runner has 2 GPUs available even though num_gpus=2 is not set
-
pytest -v -s tests/compile/test_fusion_all_reduce.py
-
pytest -v -s tests/compile/test_fusion_all_reduce.py
# Limit to Inductor partition, no custom ops, and allreduce & attn fusion to reduce running time
# Wrap with quotes to escape yaml
-
"
pytest
-v
-s
tests/compile/test_fusions_e2e.py::test_tp2_attn_quant_allreduce_rmsnorm
-k
'True
and
Llama-3.1
and
-quant_fp8
and
-rms_norm'"
-
label
:
Blackwell Fusion E2E Tests
# 30 min
timeout_in_minutes
:
40
working_dir
:
"
/vllm-workspace/"
gpu
:
b200
optional
:
true
num_gpus
:
2
source_file_dependencies
:
-
csrc/quantization/fp4/
-
vllm/model_executor/layers/quantization/utils/flashinfer_utils.py
-
vllm/v1/attention/backends/flashinfer.py
-
vllm/compilation/
# can affect pattern matching
-
vllm/model_executor/layers/layernorm.py
-
vllm/model_executor/layers/activation.py
-
vllm/model_executor/layers/quantization/input_quant_fp8.py
-
tests/compile/test_fusions_e2e.py
-
tests/compile/test_full_graph.py
commands
:
-
nvidia-smi
# Run all e2e fusion tests
-
pytest -v -s tests/compile/test_fusions_e2e.py
-
pytest -v -s tests/compile/test_fusions_e2e.py
# test_fp8_kv_scale_compile requires FlashAttention (not supported on default L4/L40)
-
pytest -v -s tests/compile/test_full_graph.py::test_fp8_kv_scale_compile
-
label
:
Blackwell GPT-OSS Eval
-
label
:
Blackwell GPT-OSS Eval
timeout_in_minutes
:
60
timeout_in_minutes
:
60
...
@@ -1253,6 +1344,7 @@ steps:
...
@@ -1253,6 +1344,7 @@ steps:
-
label
:
NixlConnector PD accuracy tests (Distributed)
# 30min
-
label
:
NixlConnector PD accuracy tests (Distributed)
# 30min
mirror_hardwares
:
[
amdexperimental
]
mirror_hardwares
:
[
amdexperimental
]
agent_pool
:
mi325_4
agent_pool
:
mi325_4
# grade: Blocking
timeout_in_minutes
:
30
timeout_in_minutes
:
30
working_dir
:
"
/vllm-workspace/tests"
working_dir
:
"
/vllm-workspace/tests"
num_gpus
:
4
num_gpus
:
4
...
@@ -1267,6 +1359,9 @@ steps:
...
@@ -1267,6 +1359,9 @@ steps:
##### A100 test #####
##### A100 test #####
-
label
:
Distributed Tests (A100)
# optional
-
label
:
Distributed Tests (A100)
# optional
mirror_hardwares
:
[
amdexperimental
]
agent_pool
:
mi325_4
# grade: Blocking
gpu
:
a100
gpu
:
a100
optional
:
true
optional
:
true
num_gpus
:
4
num_gpus
:
4
...
@@ -1281,6 +1376,9 @@ steps:
...
@@ -1281,6 +1376,9 @@ steps:
-
pytest -v -s -x lora/test_mixtral.py
-
pytest -v -s -x lora/test_mixtral.py
-
label
:
LM Eval Large Models
# optional
-
label
:
LM Eval Large Models
# optional
mirror_hardwares
:
[
amdexperimental
,
amdproduction
]
agent_pool
:
mi325_4
# grade: Blocking
gpu
:
a100
gpu
:
a100
optional
:
true
optional
:
true
num_gpus
:
4
num_gpus
:
4
...
@@ -1292,8 +1390,27 @@ steps:
...
@@ -1292,8 +1390,27 @@ steps:
-
export VLLM_WORKER_MULTIPROC_METHOD=spawn
-
export VLLM_WORKER_MULTIPROC_METHOD=spawn
-
pytest -s -v test_lm_eval_correctness.py --config-list-file=configs/models-large.txt --tp-size=4
-
pytest -s -v test_lm_eval_correctness.py --config-list-file=configs/models-large.txt --tp-size=4
##### H100 test #####
-
label
:
LM Eval Large Models (H100)
# optional
mirror_hardwares
:
[
amdexperimental
,
amdproduction
]
agent_pool
:
mi325_4
# grade: Blocking
gpu
:
h100
optional
:
true
num_gpus
:
4
working_dir
:
"
/vllm-workspace/.buildkite/lm-eval-harness"
source_file_dependencies
:
-
csrc/
-
vllm/model_executor/layers/quantization
commands
:
-
export VLLM_USE_DEEP_GEMM=0
# We found Triton is faster than DeepGEMM for H100
-
pytest -s -v test_lm_eval_correctness.py --config-list-file=configs/models-large-hopper.txt --tp-size=4
##### H200 test #####
##### H200 test #####
-
label
:
Distributed Tests (H200)
# optional
-
label
:
Distributed Tests (H200)
# optional
mirror_hardwares
:
[
amdexperimental
]
agent_pool
:
mi325_2
# grade: Blocking
gpu
:
h200
gpu
:
h200
optional
:
true
optional
:
true
working_dir
:
"
/vllm-workspace/"
working_dir
:
"
/vllm-workspace/"
...
@@ -1305,6 +1422,7 @@ steps:
...
@@ -1305,6 +1422,7 @@ steps:
-
pytest -v -s tests/compile/test_fusions_e2e.py::test_tp2_attn_quant_allreduce_rmsnorm
-
pytest -v -s tests/compile/test_fusions_e2e.py::test_tp2_attn_quant_allreduce_rmsnorm
-
pytest -v -s tests/distributed/test_context_parallel.py
-
pytest -v -s tests/distributed/test_context_parallel.py
-
CUDA_VISIBLE_DEVICES=1,2 VLLM_ALL2ALL_BACKEND=deepep_high_throughput VLLM_USE_DEEP_GEMM=1 VLLM_LOGGING_LEVEL=DEBUG python3 examples/offline_inference/data_parallel.py --model Qwen/Qwen1.5-MoE-A2.7B --tp-size=1 --dp-size=2 --max-model-len
2048
-
CUDA_VISIBLE_DEVICES=1,2 VLLM_ALL2ALL_BACKEND=deepep_high_throughput VLLM_USE_DEEP_GEMM=1 VLLM_LOGGING_LEVEL=DEBUG python3 examples/offline_inference/data_parallel.py --model Qwen/Qwen1.5-MoE-A2.7B --tp-size=1 --dp-size=2 --max-model-len
2048
-
pytest -v -s tests/v1/distributed/test_dbo.py
##### B200 test #####
##### B200 test #####
-
label
:
Distributed Tests (B200)
# optional
-
label
:
Distributed Tests (B200)
# optional
...
@@ -1315,6 +1433,7 @@ steps:
...
@@ -1315,6 +1433,7 @@ steps:
commands
:
commands
:
-
pytest -v -s tests/distributed/test_context_parallel.py
-
pytest -v -s tests/distributed/test_context_parallel.py
-
pytest -v -s tests/distributed/test_nccl_symm_mem_allreduce.py
-
pytest -v -s tests/distributed/test_nccl_symm_mem_allreduce.py
-
pytest -v -s tests/v1/distributed/test_dbo.py
##### RL Integration Tests #####
##### RL Integration Tests #####
-
label
:
Prime-RL Integration Test
# 15min
-
label
:
Prime-RL Integration Test
# 15min
...
@@ -1330,3 +1449,27 @@ steps:
...
@@ -1330,3 +1449,27 @@ steps:
-
.buildkite/scripts/run-prime-rl-test.sh
-
.buildkite/scripts/run-prime-rl-test.sh
commands
:
commands
:
-
bash .buildkite/scripts/run-prime-rl-test.sh
-
bash .buildkite/scripts/run-prime-rl-test.sh
-
label
:
DeepSeek V2-Lite Accuracy
mirror_hardwares
:
[
amdexperimental
]
agent_pool
:
mi325_4
# grade: Blocking
timeout_in_minutes
:
60
gpu
:
h100
optional
:
true
num_gpus
:
4
working_dir
:
"
/vllm-workspace"
commands
:
-
bash .buildkite/scripts/scheduled_integration_test/deepseek_v2_lite_ep_eplb.sh 0.25 200
8010
-
label
:
Qwen3-30B-A3B-FP8-block Accuracy
mirror_hardwares
:
[
amdexperimental
]
agent_pool
:
mi325_4
# grade: Blocking
timeout_in_minutes
:
60
gpu
:
h100
optional
:
true
num_gpus
:
4
working_dir
:
"
/vllm-workspace"
commands
:
-
bash .buildkite/scripts/scheduled_integration_test/qwen30b_a3b_fp8_block_ep.sh 0.8 200
8020
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment