mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-07-29 20:14:01 +00:00
Better detection of MPI using FindMPI (#7653)
* Better detection of MPI using FindMPI. * Remove REQUIRED from find_package(MPI)
This commit is contained in:
parent
a47a234b7e
commit
c808621e9d
3 changed files with 21 additions and 42 deletions
|
|
@ -1495,48 +1495,27 @@ if (onnxruntime_ENABLE_TRAINING)
|
|||
add_compile_definitions(ENABLE_TRAINING_OPS)
|
||||
|
||||
if (UNIX)
|
||||
# Find MPI
|
||||
find_path(MPI_INCLUDE_DIR
|
||||
NAMES mpi.h
|
||||
HINTS
|
||||
${onnxruntime_MPI_HOME}/include
|
||||
/bert_ort/openmpi/include)
|
||||
if (EXISTS "${onnxruntime_MPI_HOME}")
|
||||
set(MPI_HOME "${onnxruntime_MPI_HOME}")
|
||||
elseif (EXISTS "/bert_ort/openmpi")
|
||||
set(MPI_HOME "/bert_ort/openmpi")
|
||||
endif()
|
||||
|
||||
set(MPI_LIBNAME "mpi")
|
||||
|
||||
find_library(MPI_LIBRARY
|
||||
NAMES ${MPI_LIBNAME}
|
||||
HINTS
|
||||
${onnxruntime_MPI_HOME}/lib
|
||||
/bert_ort/openmpi/lib)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(MPI DEFAULT_MSG MPI_INCLUDE_DIR MPI_LIBRARY)
|
||||
|
||||
if (MPI_FOUND)
|
||||
if(NOT DEFINED onnxruntime_MPI_HOME)
|
||||
execute_process(COMMAND mpirun --version OUTPUT_VARIABLE MPIRUN_OUTPUT)
|
||||
else()
|
||||
execute_process(COMMAND ${onnxruntime_MPI_HOME}/bin/mpirun --version OUTPUT_VARIABLE MPIRUN_OUTPUT)
|
||||
endif(NOT DEFINED onnxruntime_MPI_HOME)
|
||||
string( REGEX MATCH "[0-9]+.[0-9]+.[0-9]" MPI_VERSION ${MPIRUN_OUTPUT})
|
||||
message( STATUS "MPI Version: ${MPI_VERSION}")
|
||||
|
||||
set(MPI_INCLUDE_DIRS ${MPI_INCLUDE_DIR})
|
||||
set(MPI_LIBRARIES ${MPI_LIBRARY})
|
||||
message( STATUS "MPI (include: ${MPI_INCLUDE_DIRS}, library: ${MPI_LIBRARIES})" )
|
||||
mark_as_advanced(MPI_INCLUDE_DIRS MPI_LIBRARIES)
|
||||
|
||||
list(APPEND onnxruntime_EXTERNAL_LIBRARIES ${MPI_LIBRARIES} ${MPI_CXX_LINK_FLAGS})
|
||||
find_package(MPI)
|
||||
|
||||
if (MPI_CXX_FOUND)
|
||||
message( STATUS "MPI Version: ${MPI_CXX_VERSION}")
|
||||
message( STATUS "MPI (include: ${MPI_CXX_INCLUDE_DIRS}, library: ${MPI_CXX_LIBRARIES})" )
|
||||
mark_as_advanced(MPI_CXX_INCLUDE_DIRS MPI_CXX_LIBRARIES)
|
||||
list(APPEND onnxruntime_EXTERNAL_LIBRARIES ${MPI_CXX_LIBRARIES} ${MPI_CXX_LINK_FLAGS})
|
||||
else ()
|
||||
set(onnxruntime_USE_NCCL OFF)
|
||||
set(onnxruntime_USE_MPI OFF)
|
||||
message( WARNING "MPI is not found. Please use --mpi_home to specify the path of MPI. Otherwise, NCCL will be disabled." )
|
||||
message( WARNING "MPI is not found. Please define onnxruntime_MPI_HOME to specify the path of MPI. Otherwise, NCCL will be disabled." )
|
||||
endif()
|
||||
|
||||
# Find NCCL and MPI
|
||||
if (onnxruntime_USE_NCCL AND MPI_FOUND)
|
||||
if (onnxruntime_USE_NCCL AND MPI_CXX_FOUND)
|
||||
if (onnxruntime_USE_CUDA)
|
||||
set(NCCL_LIBNAME "nccl")
|
||||
elseif (onnxruntime_USE_ROCM)
|
||||
|
|
@ -1600,7 +1579,7 @@ if (onnxruntime_ENABLE_TRAINING)
|
|||
endif()
|
||||
endif()
|
||||
|
||||
if (onnxruntime_USE_MPI AND MPI_FOUND)
|
||||
if (onnxruntime_USE_MPI AND MPI_CXX_FOUND)
|
||||
add_definitions(-DUSE_MPI=1)
|
||||
endif()
|
||||
|
||||
|
|
|
|||
|
|
@ -196,7 +196,7 @@ if (onnxruntime_ENABLE_TRAINING)
|
|||
onnxruntime_add_include_to_target(onnxruntime_providers tensorboard)
|
||||
|
||||
if (onnxruntime_USE_NCCL OR onnxruntime_USE_MPI)
|
||||
target_include_directories(onnxruntime_providers PUBLIC ${MPI_INCLUDE_DIRS})
|
||||
target_include_directories(onnxruntime_providers PUBLIC ${MPI_CXX_INCLUDE_DIRS})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
|
@ -296,7 +296,7 @@ if (onnxruntime_USE_CUDA)
|
|||
endif()
|
||||
|
||||
if (onnxruntime_ENABLE_TRAINING OR onnxruntime_ENABLE_TRAINING_OPS)
|
||||
target_include_directories(onnxruntime_providers_cuda PRIVATE ${ORTTRAINING_ROOT} ${MPI_INCLUDE_DIRS})
|
||||
target_include_directories(onnxruntime_providers_cuda PRIVATE ${ORTTRAINING_ROOT} ${MPI_CXX_INCLUDE_DIRS})
|
||||
|
||||
if (onnxruntime_USE_NCCL)
|
||||
target_include_directories(onnxruntime_providers_cuda PRIVATE ${NCCL_INCLUDE_DIRS})
|
||||
|
|
@ -1024,7 +1024,7 @@ if (onnxruntime_USE_ROCM)
|
|||
endif()
|
||||
# During transition to separate hipFFT repo, put hipfft/include early
|
||||
target_include_directories(onnxruntime_providers_rocm PRIVATE ${onnxruntime_ROCM_HOME}/hipfft/include ${onnxruntime_ROCM_HOME}/include ${onnxruntime_ROCM_HOME}/hipcub/include ${onnxruntime_ROCM_HOME}/hiprand/include ${onnxruntime_ROCM_HOME}/rocrand/include)
|
||||
target_include_directories(onnxruntime_providers_rocm PRIVATE ${ONNXRUNTIME_ROOT} ${CMAKE_CURRENT_BINARY_DIR}/amdgpu/onnxruntime ${MPI_INCLUDE_DIRS} ${ONNXRUNTIME_ROOT}/../cmake/external/eigen)
|
||||
target_include_directories(onnxruntime_providers_rocm PRIVATE ${ONNXRUNTIME_ROOT} ${CMAKE_CURRENT_BINARY_DIR}/amdgpu/onnxruntime ${MPI_CXX_INCLUDE_DIRS} ${ONNXRUNTIME_ROOT}/../cmake/external/eigen)
|
||||
|
||||
if (onnxruntime_ENABLE_TRAINING)
|
||||
target_include_directories(onnxruntime_providers_rocm PRIVATE ${ORTTRAINING_ROOT} ${CMAKE_CURRENT_BINARY_DIR}/amdgpu/orttraining)
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ if(WIN32)
|
|||
target_compile_options(onnxruntime_training PRIVATE /wd4100)
|
||||
endif()
|
||||
|
||||
target_include_directories(onnxruntime_training PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${ONNXRUNTIME_ROOT} ${ORTTRAINING_ROOT} ${eigen_INCLUDE_DIRS} ${RE2_INCLUDE_DIR} PUBLIC ${onnxruntime_graph_header} ${MPI_INCLUDE_DIRS})
|
||||
target_include_directories(onnxruntime_training PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${ONNXRUNTIME_ROOT} ${ORTTRAINING_ROOT} ${eigen_INCLUDE_DIRS} ${RE2_INCLUDE_DIR} PUBLIC ${onnxruntime_graph_header} ${MPI_CXX_INCLUDE_DIRS})
|
||||
|
||||
if (onnxruntime_USE_CUDA)
|
||||
target_include_directories(onnxruntime_training PRIVATE ${onnxruntime_CUDNN_HOME}/include ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES})
|
||||
|
|
@ -163,7 +163,7 @@ if(UNIX AND NOT APPLE)
|
|||
endif()
|
||||
|
||||
onnxruntime_add_include_to_target(onnxruntime_training_bert onnxruntime_common onnx onnx_proto protobuf::libprotobuf onnxruntime_training flatbuffers)
|
||||
target_include_directories(onnxruntime_training_bert PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${ONNXRUNTIME_ROOT} ${ORTTRAINING_ROOT} ${MPI_INCLUDE_DIRS} ${eigen_INCLUDE_DIRS} ${CXXOPTS} ${extra_includes} ${onnxruntime_graph_header} ${onnxruntime_exec_src_dir} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/onnx onnxruntime_training_runner)
|
||||
target_include_directories(onnxruntime_training_bert PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${ONNXRUNTIME_ROOT} ${ORTTRAINING_ROOT} ${MPI_CXX_INCLUDE_DIRS} ${eigen_INCLUDE_DIRS} ${CXXOPTS} ${extra_includes} ${onnxruntime_graph_header} ${onnxruntime_exec_src_dir} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/onnx onnxruntime_training_runner)
|
||||
|
||||
target_link_libraries(onnxruntime_training_bert PRIVATE onnxruntime_training_runner onnxruntime_training ${ONNXRUNTIME_LIBS} ${onnxruntime_EXTERNAL_LIBRARIES})
|
||||
set_target_properties(onnxruntime_training_bert PROPERTIES FOLDER "ONNXRuntimeTest")
|
||||
|
|
@ -182,7 +182,7 @@ if(UNIX AND NOT APPLE)
|
|||
endif()
|
||||
|
||||
onnxruntime_add_include_to_target(onnxruntime_training_pipeline_poc onnxruntime_common onnx onnx_proto protobuf::libprotobuf onnxruntime_training flatbuffers)
|
||||
target_include_directories(onnxruntime_training_pipeline_poc PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${ONNXRUNTIME_ROOT} ${ORTTRAINING_ROOT} ${MPI_INCLUDE_DIRS} ${eigen_INCLUDE_DIRS} ${CXXOPTS} ${extra_includes} ${onnxruntime_graph_header} ${onnxruntime_exec_src_dir} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/onnx onnxruntime_training_runner)
|
||||
target_include_directories(onnxruntime_training_pipeline_poc PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${ONNXRUNTIME_ROOT} ${ORTTRAINING_ROOT} ${MPI_CXX_INCLUDE_DIRS} ${eigen_INCLUDE_DIRS} ${CXXOPTS} ${extra_includes} ${onnxruntime_graph_header} ${onnxruntime_exec_src_dir} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/onnx onnxruntime_training_runner)
|
||||
if (onnxruntime_USE_NCCL)
|
||||
target_include_directories(onnxruntime_training_pipeline_poc PRIVATE ${NCCL_INCLUDE_DIRS})
|
||||
endif()
|
||||
|
|
@ -202,7 +202,7 @@ if(UNIX AND NOT APPLE)
|
|||
endif()
|
||||
endif()
|
||||
onnxruntime_add_include_to_target(onnxruntime_training_gpt2 onnxruntime_common onnx onnx_proto protobuf::libprotobuf onnxruntime_training flatbuffers)
|
||||
target_include_directories(onnxruntime_training_gpt2 PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${ONNXRUNTIME_ROOT} ${ORTTRAINING_ROOT} ${MPI_INCLUDE_DIRS} ${eigen_INCLUDE_DIRS} ${CXXOPTS} ${extra_includes} ${onnxruntime_graph_header} ${onnxruntime_exec_src_dir} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/onnx onnxruntime_training_runner)
|
||||
target_include_directories(onnxruntime_training_gpt2 PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${ONNXRUNTIME_ROOT} ${ORTTRAINING_ROOT} ${MPI_CXX_INCLUDE_DIRS} ${eigen_INCLUDE_DIRS} ${CXXOPTS} ${extra_includes} ${onnxruntime_graph_header} ${onnxruntime_exec_src_dir} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/onnx onnxruntime_training_runner)
|
||||
|
||||
target_link_libraries(onnxruntime_training_gpt2 PRIVATE onnxruntime_training_runner onnxruntime_training ${ONNXRUNTIME_LIBS} ${onnxruntime_EXTERNAL_LIBRARIES})
|
||||
set_target_properties(onnxruntime_training_gpt2 PROPERTIES FOLDER "ONNXRuntimeTest")
|
||||
|
|
|
|||
Loading…
Reference in a new issue