45be03906a
* Initial support for RCCL * OMNITRACE_USE_RCCLP + sampling tweaks - also OMNITRACE_SAMPLING_KEEP_INTERNAL option - minor modifications to sampling to use keep internal option + discard funlockfile * Update docker and workflows to download RCCL * Update CPack DEB with rocprofiler dependency * Rework rccl into library and library/components folder - add tpls/rccl/rccl/rccl.h * Fix timemory includes * rcclp inline definitions when disabled * Tweaks to ubuntu-focal-external-rocm - disable ompt - enable building testing * Tweaks to ubuntu-focal-external-rocm - ctest exclude * Tweak ubuntu-focal.yml - remove source /.../setup-env.sh, replace with $GITHUB_ENV * Fix ubuntu-focal-rocm + OMPI + root * Improved rocm-smi error handling - Recover from rocm-smi errors - Disabling rocm-smi after recovering from errors - Werror in developer mode - Remove State::DelayedInit - Add State::Disabled * formatting * Fix merge of OMNITRACE_SAMPLING_KEEP_INTERNAL * Update RCCL include directory - based on ROCm version we need with <rccl/rccl.h> or <rccl.h> * RCCL Testing - updated tests to use configuration files - many tests generate a configuration file - tests how have GPU option - enable ncclCommCount, disable ncclGetVersion - add testing for RCCLP via rccl-tests - working directory of tests is PROJECT_BINARY_DIR - add nccl/rccl functions to get_whole_function_names - some clang compiler fixes * Handle RCCL include w/o HIP * RCCL requires HIP * Update OMNITRACE_SAMPLING_CPUS for testing * Update tests/CMakeLists.txt * Debug settings * Install MPI even when USE_MPI=OFF * exclude printf * skip mpi tests w/o USE_MPI or USE_MPI_HEADERS * update ubuntu rocm workflow * Fix configure env step for ubuntu rocm
95 خطوط
3.0 KiB
CMake
95 خطوط
3.0 KiB
CMake
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying file
|
|
# Copyright.txt or https://cmake.org/licensing for details.
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
|
|
# ----------------------------------------------------------------------------------------#
|
|
|
|
set(RCCL-Headers_INCLUDE_DIR_INTERNAL
|
|
"${PROJECT_SOURCE_DIR}/source/lib/omnitrace/library/tpls/rccl"
|
|
CACHE PATH "Path to internal rccl.h")
|
|
|
|
# ----------------------------------------------------------------------------------------#
|
|
|
|
if(NOT ROCM_PATH AND NOT "$ENV{ROCM_PATH}" STREQUAL "")
|
|
set(ROCM_PATH "$ENV{ROCM_PATH}")
|
|
endif()
|
|
|
|
foreach(_DIR ${ROCmVersion_DIR} ${ROCM_PATH} /opt/rocm /opt/rocm/rccl)
|
|
if(EXISTS ${_DIR})
|
|
get_filename_component(_ABS_DIR "${_DIR}" REALPATH)
|
|
list(APPEND _RCCL_PATHS ${_ABS_DIR})
|
|
endif()
|
|
endforeach()
|
|
|
|
# ----------------------------------------------------------------------------------------#
|
|
|
|
find_package(
|
|
rccl
|
|
QUIET
|
|
CONFIG
|
|
HINTS
|
|
${_RCCL_PATHS}
|
|
PATHS
|
|
${_RCCL_PATHS}
|
|
PATH_SUFFIXES
|
|
rccl/lib/cmake)
|
|
|
|
if(NOT rccl_FOUND)
|
|
set(RCCL-Headers_INCLUDE_DIR
|
|
"${RCCL-Headers_INCLUDE_DIR_INTERNAL}"
|
|
CACHE PATH "Path to RCCL headers")
|
|
else()
|
|
set(RCCL-Headers_INCLUDE_DIR
|
|
"${rccl_INCLUDE_DIR}"
|
|
CACHE PATH "Path to RCCL headers")
|
|
endif()
|
|
|
|
# because of the annoying warning starting with v5.2.0, we've got to do this crap
|
|
if(ROCmVersion_NUMERIC_VERSION)
|
|
if(ROCmVersion_NUMERIC_VERSION LESS 50200)
|
|
set(_RCCL-Headers_FILE "rccl.h")
|
|
set(_RCCL-Headers_DIR "/rccl")
|
|
else()
|
|
set(_RCCL-Headers_FILE "rccl/rccl.h")
|
|
set(_RCCL-Headers_DIR "")
|
|
endif()
|
|
else()
|
|
set(_RCCL-Headers_FILE "rccl/rccl.h")
|
|
set(_RCCL-Headers_DIR "")
|
|
endif()
|
|
|
|
if(NOT EXISTS "${RCCL-Headers_INCLUDE_DIR}/${_RCCL-Headers_FILE}")
|
|
omnitrace_message(
|
|
AUTHOR_WARNING
|
|
"RCCL header (${RCCL-Headers_INCLUDE_DIR}/${_RCCL-Headers_FILE}) does not exist! Setting RCCL-Headers_INCLUDE_DIR to internal RCCL include directory: ${RCCL-Headers_INCLUDE_DIR_INTERNAL}"
|
|
)
|
|
set(RCCL-Headers_INCLUDE_DIR
|
|
"${RCCL-Headers_INCLUDE_DIR_INTERNAL}${_RCCL-Headers_DIR}"
|
|
CACHE PATH "Path to RCCL headers" FORCE)
|
|
endif()
|
|
|
|
unset(_RCCL-Headers_FILE)
|
|
unset(_RCCL-Headers_DIR)
|
|
|
|
mark_as_advanced(RCCL-Headers_INCLUDE_DIR)
|
|
|
|
# ----------------------------------------------------------------------------------------#
|
|
|
|
find_package_handle_standard_args(RCCL-Headers DEFAULT_MSG RCCL-Headers_INCLUDE_DIR)
|
|
|
|
# ------------------------------------------------------------------------------#
|
|
|
|
if(RCCL-Headers_FOUND)
|
|
add_library(roc::rccl-headers INTERFACE IMPORTED)
|
|
set(RCCL-Headers_INCLUDE_DIRS ${RCCL-Headers_INCLUDE_DIR})
|
|
|
|
target_include_directories(roc::rccl-headers SYSTEM
|
|
INTERFACE ${RCCL-Headers_INCLUDE_DIR})
|
|
|
|
add_library(RCCL-Headers::RCCL-Headers INTERFACE IMPORTED)
|
|
target_link_libraries(RCCL-Headers::RCCL-Headers INTERFACE roc::rccl-headers)
|
|
endif()
|
|
|
|
# ------------------------------------------------------------------------------#
|