mirror of
https://github.com/microsoft/mscclpp.git
synced 2026-05-11 17:00:22 +00:00
CMake improvements
This commit is contained in:
@@ -1,41 +1,41 @@
|
||||
cmake_minimum_required(VERSION 3.26)
|
||||
|
||||
project(mscclpp LANGUAGES CUDA CXX)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CUDA_STANDARD 17)
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/modules)
|
||||
option(ENABLE_TRACE "Enable tracing" OFF)
|
||||
option(USE_MPI_FOR_TESTS "Use MPI for tests" ON)
|
||||
option(USE_NPKIT "Use NPKIT" ON)
|
||||
option(ALLOW_GDRCOPY "Use GDRCopy, if available" OFF)
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
|
||||
|
||||
find_package(CUDAToolkit REQUIRED)
|
||||
find_package(IBVerbs REQUIRED)
|
||||
find_package(NUMA REQUIRED)
|
||||
find_package(GDRCopy)
|
||||
|
||||
option(USE_MPI_FOR_TESTS "Use MPI for tests" ON)
|
||||
if(USE_MPI_FOR_TESTS)
|
||||
find_package(MPI REQUIRED)
|
||||
add_definitions(-DMSCCLPP_USE_MPI_FOR_TESTS)
|
||||
endif()
|
||||
if(ALLOW_GDRCOPY)
|
||||
find_package(GDRCopy)
|
||||
endif()
|
||||
|
||||
include_directories(${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES})
|
||||
set(CLANG_FORMAT_SOURCE_DIRS src tests)
|
||||
include(${PROJECT_SOURCE_DIR}/cmake/AddClangFormatTargets.cmake)
|
||||
|
||||
add_library(mscclpp SHARED)
|
||||
target_include_directories(mscclpp PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src/include)
|
||||
set_target_properties(mscclpp PROPERTIES LINKER_LANGUAGE CXX)
|
||||
target_link_libraries(mscclpp PRIVATE MSCCLPP::ibverbs MSCCLPP::numa CUDA::cudart CUDA::cuda_driver)
|
||||
if(GDRCOPY_FOUND)
|
||||
target_link_libraries(mscclpp PRIVATE MSCCLPP::gdrcopy)
|
||||
if(ENABLE_TRACE)
|
||||
target_compile_definitions(mscclpp PRIVATE ENABLE_TRACE)
|
||||
endif()
|
||||
|
||||
find_program(CLANG_FORMAT clang-format)
|
||||
if(CLANG_FORMAT)
|
||||
message(STATUS "Found clang-format: ${CLANG_FORMAT}")
|
||||
file(GLOB_RECURSE ALL_SOURCES *.h *.hpp *.cc *.cpp *.cu)
|
||||
add_custom_target(check-format ALL COMMAND ${CLANG_FORMAT} --dry-run ${ALL_SOURCES})
|
||||
add_custom_target(format COMMAND ${CLANG_FORMAT} -i ${ALL_SOURCES})
|
||||
else()
|
||||
message(STATUS "clang-format not found.")
|
||||
if(USE_NPKIT)
|
||||
target_compile_definitions(mscclpp PRIVATE ENABLE_NPKIT)
|
||||
endif()
|
||||
if(ALLOW_GDRCOPY AND GDRCOPY_FOUND)
|
||||
target_compile_definitions(mscclpp PRIVATE MSCCLPP_USE_GDRCOPY)
|
||||
target_link_libraries(mscclpp PRIVATE MSCCLPP::gdrcopy)
|
||||
endif()
|
||||
|
||||
add_subdirectory(src) # This adds the sources to the mscclpp target
|
||||
|
||||
18
cmake/AddClangFormatTargets.cmake
Normal file
18
cmake/AddClangFormatTargets.cmake
Normal file
@@ -0,0 +1,18 @@
|
||||
# Add targets to run clang-format
|
||||
|
||||
find_program(CLANG_FORMAT clang-format)
|
||||
if(CLANG_FORMAT)
|
||||
message(STATUS "Found clang-format: ${CLANG_FORMAT}")
|
||||
set(CLANG_FORMAT_FILE_TYPES *.h *.hpp *.c *.cc *.cpp *.cu)
|
||||
# Produce combinations of source directories and file types
|
||||
foreach(SOURCE_DIR ${CLANG_FORMAT_SOURCE_DIRS})
|
||||
foreach(FILE_TYPE ${CLANG_FORMAT_FILE_TYPES})
|
||||
list(APPEND CLANG_FORMAT_SOURCE_PATTERNS ${SOURCE_DIR}/${FILE_TYPE})
|
||||
endforeach()
|
||||
endforeach()
|
||||
file(GLOB_RECURSE CLANG_FORMAT_SOURCES ${CLANG_FORMAT_SOURCE_PATTERNS})
|
||||
add_custom_target(check-format ALL COMMAND ${CLANG_FORMAT} --dry-run ${CLANG_FORMAT_SOURCES})
|
||||
add_custom_target(format COMMAND ${CLANG_FORMAT} -i ${CLANG_FORMAT_SOURCES})
|
||||
else()
|
||||
message(STATUS "clang-format not found.")
|
||||
endif()
|
||||
@@ -1,10 +1,14 @@
|
||||
add_executable(bootstrap_test_cpp bootstrap_test_cpp.cc)
|
||||
target_link_libraries(bootstrap_test_cpp mscclpp MPI::MPI_CXX)
|
||||
function(add_test_executable name sources)
|
||||
add_executable(${name} ${sources})
|
||||
target_link_libraries(${name} mscclpp)
|
||||
if(USE_MPI_FOR_TESTS)
|
||||
target_link_libraries(${name} MPI::MPI_CXX)
|
||||
target_compile_definitions(${name} PRIVATE MSCCLPP_USE_MPI_FOR_TESTS)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
add_executable(communicator_test_cpp communicator_test_cpp.cu)
|
||||
target_link_libraries(communicator_test_cpp mscclpp MPI::MPI_CXX)
|
||||
|
||||
add_executable(allgather_test_cpp allgather_test_cpp.cu)
|
||||
target_link_libraries(allgather_test_cpp mscclpp MPI::MPI_CXX)
|
||||
add_test_executable(bootstrap_test_cpp bootstrap_test_cpp.cc)
|
||||
add_test_executable(communicator_test_cpp communicator_test_cpp.cu)
|
||||
add_test_executable(allgather_test_cpp allgather_test_cpp.cu)
|
||||
|
||||
add_subdirectory(unittests)
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
add_executable(ib_test ib_test.cc)
|
||||
target_link_libraries(ib_test mscclpp MPI::MPI_CXX CUDA::cudart)
|
||||
add_test_executable(ib_test ib_test.cc)
|
||||
target_link_libraries(ib_test CUDA::cudart)
|
||||
Reference in New Issue
Block a user