Files
mscclpp/test/python/ep/CMakeLists.txt
Binyang Li ad0b63d21b Update EP benchmarks for current low-latency API
Refresh the Python and C++ benchmark paths for BF16 and FP8 dispatch, current MoERuntime signatures, active kernel sources, portable CUPTI discovery, realistic routing, and safe unified reporting. Remove the merged change to the inactive legacy implementation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: efbacae6-f679-430b-bc16-b45ae162fc76
2026-07-13 21:45:58 +00:00

105 lines
3.4 KiB
CMake

# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
#
# Standalone build for:
# - mscclpp_ep_bench: pure-C++/MPI low-latency EP benchmark.
# - cupti_kernel_timer: optional in-process timer used by ep_bench_ll.py.
#
# Example:
# cmake -S test/python/ep -B test/python/ep/build \
# -DMSCCLPP_EP_NUM_MAX_NVL_PEERS=8 \
# -DCMAKE_CUDA_ARCHITECTURES=90
# cmake --build test/python/ep/build -j 64
cmake_minimum_required(VERSION 3.25)
project(mscclpp_ep_bench LANGUAGES CXX CUDA)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CUDA_STANDARD 17)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
set(CMAKE_CUDA_ARCHITECTURES native)
endif()
get_filename_component(_default_mscclpp_src "${CMAKE_CURRENT_SOURCE_DIR}/../../.." ABSOLUTE)
set(MSCCLPP_SRC "${_default_mscclpp_src}" CACHE PATH "mscclpp source tree")
set(MSCCLPP_EP_NUM_MAX_NVL_PEERS "8" CACHE STRING
"Compile-time NUM_MAX_NVL_PEERS for the EP kernels (8 for HGX, 4 for GB200)")
find_package(MPI REQUIRED)
find_package(CUDAToolkit REQUIRED)
find_package(Python 3.10 COMPONENTS Interpreter REQUIRED)
find_package(Threads REQUIRED)
if(NOT DEFINED MSCCLPP_INSTALL_DIR)
execute_process(
COMMAND "${Python_EXECUTABLE}" -c
"import os, mscclpp._mscclpp as m; print(os.path.dirname(m.__file__))"
OUTPUT_VARIABLE MSCCLPP_INSTALL_DIR
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE _mscclpp_python_result)
if(NOT _mscclpp_python_result EQUAL 0)
unset(MSCCLPP_INSTALL_DIR)
endif()
endif()
if(NOT MSCCLPP_INSTALL_DIR)
message(FATAL_ERROR
"MSCCLPP_INSTALL_DIR not found; install mscclpp or pass the package directory containing lib/ and include/")
endif()
set(EP "${MSCCLPP_SRC}/src/ext/ep")
find_library(MSCCLPP_LIBRARY NAMES mscclpp HINTS "${MSCCLPP_INSTALL_DIR}/lib" REQUIRED)
find_path(CUPTI_INCLUDE_DIR cupti.h
HINTS "${CUDAToolkit_TARGET_DIR}/include" "${CUDAToolkit_INCLUDE_DIRS}"
"${CUDAToolkit_ROOT}/extras/CUPTI/include"
REQUIRED)
find_library(CUPTI_LIBRARY cupti
HINTS "${CUDAToolkit_TARGET_DIR}/lib" "${CUDAToolkit_LIBRARY_DIR}"
"${CUDAToolkit_ROOT}/extras/CUPTI/lib64"
REQUIRED)
add_executable(mscclpp_ep_bench
mscclpp_ep_bench.cu
"${EP}/moe_runtime.cc"
"${EP}/low_latency/dispatch.cu"
"${EP}/low_latency/combine.cu")
target_include_directories(mscclpp_ep_bench PRIVATE
"${EP}"
"${EP}/include"
"${MSCCLPP_SRC}/include"
"${MSCCLPP_SRC}/src/core/include"
"${MSCCLPP_SRC}/src/ext/include"
"${MSCCLPP_INSTALL_DIR}/include"
"${CUPTI_INCLUDE_DIR}")
target_compile_definitions(mscclpp_ep_bench PRIVATE
MSCCLPP_USE_CUDA
EP_DISPATCH_NCCLEP
NUM_MAX_NVL_PEERS=${MSCCLPP_EP_NUM_MAX_NVL_PEERS})
target_compile_options(mscclpp_ep_bench PRIVATE
$<$<COMPILE_LANGUAGE:CUDA>:--expt-relaxed-constexpr>
$<$<COMPILE_LANGUAGE:CUDA>:--expt-extended-lambda>)
set_target_properties(mscclpp_ep_bench PROPERTIES
CUDA_SEPARABLE_COMPILATION OFF
POSITION_INDEPENDENT_CODE ON
BUILD_RPATH "${MSCCLPP_INSTALL_DIR}/lib"
INSTALL_RPATH "${MSCCLPP_INSTALL_DIR}/lib")
target_link_libraries(mscclpp_ep_bench PRIVATE
"${MSCCLPP_LIBRARY}"
"${CUPTI_LIBRARY}"
MPI::MPI_CXX
CUDA::cudart
CUDA::cuda_driver
Threads::Threads)
add_library(cupti_kernel_timer SHARED cupti_kernel_timer.cpp)
target_include_directories(cupti_kernel_timer PRIVATE "${CUPTI_INCLUDE_DIR}")
target_link_libraries(cupti_kernel_timer PRIVATE "${CUPTI_LIBRARY}" Threads::Threads)