518c83e0f9
* Tests for exceeding OMNITRACE_MAX_THREADS
- tests which exceeds OMNITRACE_MAX_THREADS value for thread creation
* CMake Formatting.cmake update
- include source files in /tests/source directory
* Add unknown-hash= to OMNITRACE_ABORT_FAIL_REGEX
- fail if a timemory hash is not resolved to a name
* Tests for exceeding OMNITRACE_MAX_THREADS
- update
* omnitrace-sample update
- remove env disabling of critical-trace and process-sampling
* core library update
- make_unique in concepts.hpp
- add OMNITRACE_USE_ROCM_SMI to "process_sampling" category
- remove forced disabling of critical-trace in sampling mode
- parentheses for OMNITRACE_PREFER
- use tim::get_hash_id instead of tim::get_combined_hash_id
* core library update (containers)
- added aligned_static_vector.hpp
- similar to static_vector.hpp but attempts to align to cache line size
- alignment template parameter for stable_vector
- added missing aliases in static_vector
- consistent with aligned_static_vector aliases
* thread_info update
- track the peak number of threads created
- thread_info::get_peak_num_threads() returns the peak number of threads
* thread_data update
- generic thread_data inherits from base_thread_data
- thread_data reworked to support dynamic expansion
- base_thread_data updated to invoke private_instance() function
- thread_data<optional<T>> uses stable_vector aligned to cache line width
- thread_data<identity<T>> uses stable_vector aligned to cache line width
- thread_data for optional and identity provide private private_instance function + friend to base_thread_data
- component_bundle_cache<T> is now thread_data<component_bundle_cache_impl<T>>
* causal update
- thread_data<T>::instances -> thread_data<T>::instance(construct_on_thread{ ... })
- loop over max_supported_threads (constexpr) -> loop over thread_info::get_peak_num_threads()
- tim::get_combined_hash_id -> tim::get_hash_id
- update progress_bundle usage to new thread_data API
* backtrace/backtrace_metrics component update
- backtrace_metrics update
- update to new thead_data API
- add thread CPU time row in perfetto
- fix potential bug when rusage categories are disabled
- fix bug in operator-= not subtracting cpu time of rhs
- backtrace update
- skip all child call-stack below 'tim::openmp::' if sampling_keep_internal = false
* pthread_gotcha component update
- pthread_gotcha::shutdown() invokes pthread_create_gotcha::shutdown()
* pthread_create_gotcha component update
- minor tweak to {start,stop}_bundle functions: pass in thread id
- update to new thread_data API
- track native handles of internal threads
- implement system with pthread_kill to stop dangling bundles
* rocprofiler/roctracer component update
- update to new thread_data API
- loop over max_supported_threads (constexpr) -> loop over thread_info::get_peak_num_threads()
* critical trace (library) update
- update to new thread_data API
- tim::get_combined_hash_id -> tim::get_hash_id
* coverage update
- update to new thread_data API
* tasking update
- update to new thread_data API
- loop over max_supported_threads (constexpr) -> loop over thread_info::get_peak_num_threads()
* roctracer update
- update to new thread_data API
- loop over max_supported_threads (constexpr) -> loop over thread_info::get_peak_num_threads()
* rocm_smi update
- update to new thread_data API
* runtime.cpp update
- update to new thread_data API
* sampling.cpp update
- update to new thread_data API
- loop over max_supported_threads (constexpr) -> loop over thread_info::get_peak_num_threads()
* ompt.cpp update
- invoke pthread_gotcha::shutdown before invoking OMPT finalize function
- this prevents signals from being delivered to OpenMP threads
* tracing.hpp and tracing.cpp update
- replace get_timemory_hash_{ids,aliases} functions with copy_timemory_hash_ids function
- update to new thread_data API
- loop over max_supported_threads (constexpr) -> loop over thread_info::get_peak_num_threads()
- tim::get_combined_hash_id -> tim::get_hash_id
- improvements to + error checking in thread_init function
* library.cpp update
- move copying timemory hash id/aliases to tracing.cpp
- update to new thread_data API
- loop over max_supported_threads (constexpr) -> loop over thread_info::get_peak_num_threads()
* Update BuildSettings.cmake
- add -Wno-interference-size to suppress warning about use of std::hardware_destructive_interference
* Update fork example
- improve scheme for waiting on child processes via waitpid instead of wait
- support running main routine multiple times
- push/pop regions in child process
* Update lib/common/defines.h.in
- allow use to specify misc values via -D <name>=<value>
- OMNITRACE_CACHELINE_SIZE
- OMNITRACE_CACHELINE_SIZE_MIN
- OMNITRACE_ROCM_MAX_COUNTERS
- remove unused defines
- OMNITRACE_ROCM_LOOK_AHEAD
- OMNITRACE_MAX_ROCM_QUEUES
* Update rocprofiler.hpp
- OMNITRACE_MAX_ROCM_COUNTERS -> OMNITRACE_ROCM_MAX_COUNTERS
* Update aligned_static_vector
- set cacheline_align_v from max of OMNITRACE_CACHELINE_SIZE and OMNITRACE_CACHELINE_SIZE_MIN
* Update tracing.cpp
- acquire locks for updating main hash ids/aliases
- only propagate ids/aliases when finalizing
* Update pthread_create_gotcha.cpp
- make sure hash for "start_thread" exists on main thread
* Update causal end to end tests
- if OMNITRACE_BUILD_NUMBER is 1, set OMNITRACE_VERBOSE=0
132 líneas
5.0 KiB
CMake
132 líneas
5.0 KiB
CMake
include_guard(DIRECTORY)
|
|
|
|
# ----------------------------------------------------------------------------------------#
|
|
#
|
|
# Clang Tidy
|
|
#
|
|
# ----------------------------------------------------------------------------------------#
|
|
|
|
# clang-tidy
|
|
macro(OMNITRACE_ACTIVATE_CLANG_TIDY)
|
|
if(OMNITRACE_USE_CLANG_TIDY)
|
|
find_program(CLANG_TIDY_COMMAND NAMES clang-tidy)
|
|
omnitrace_add_feature(CLANG_TIDY_COMMAND "Path to clang-tidy command")
|
|
if(NOT CLANG_TIDY_COMMAND)
|
|
timemory_message(
|
|
WARNING "OMNITRACE_USE_CLANG_TIDY is ON but clang-tidy is not found!")
|
|
set(OMNITRACE_USE_CLANG_TIDY OFF)
|
|
else()
|
|
set(CMAKE_CXX_CLANG_TIDY ${CLANG_TIDY_COMMAND})
|
|
|
|
# Create a preprocessor definition that depends on .clang-tidy content so the
|
|
# compile command will change when .clang-tidy changes. This ensures that a
|
|
# subsequent build re-runs clang-tidy on all sources even if they do not
|
|
# otherwise need to be recompiled. Nothing actually uses this definition. We
|
|
# add it to targets on which we run clang-tidy just to get the build
|
|
# dependency on the .clang-tidy file.
|
|
file(SHA1 ${CMAKE_CURRENT_LIST_DIR}/.clang-tidy clang_tidy_sha1)
|
|
set(CLANG_TIDY_DEFINITIONS "CLANG_TIDY_SHA1=${clang_tidy_sha1}")
|
|
unset(clang_tidy_sha1)
|
|
endif()
|
|
endif()
|
|
endmacro()
|
|
|
|
# ------------------------------------------------------------------------------#
|
|
#
|
|
# clang-format target
|
|
#
|
|
# ------------------------------------------------------------------------------#
|
|
|
|
find_program(OMNITRACE_CLANG_FORMAT_EXE NAMES clang-format-11 clang-format-mp-11
|
|
clang-format)
|
|
|
|
find_program(OMNITRACE_CMAKE_FORMAT_EXE NAMES cmake-format)
|
|
find_program(OMNITRACE_BLACK_FORMAT_EXE NAMES black)
|
|
|
|
add_custom_target(format-omnitrace)
|
|
if(NOT TARGET format)
|
|
add_custom_target(format)
|
|
endif()
|
|
foreach(_TYPE source python cmake)
|
|
if(NOT TARGET format-${_TYPE})
|
|
add_custom_target(format-${_TYPE})
|
|
endif()
|
|
endforeach()
|
|
|
|
if(OMNITRACE_CLANG_FORMAT_EXE
|
|
OR OMNITRACE_BLACK_FORMAT_EXE
|
|
OR OMNITRACE_CMAKE_FORMAT_EXE)
|
|
file(GLOB_RECURSE sources ${PROJECT_SOURCE_DIR}/source/*.cpp
|
|
${PROJECT_SOURCE_DIR}/source/*.c)
|
|
file(GLOB_RECURSE headers ${PROJECT_SOURCE_DIR}/source/*.hpp
|
|
${PROJECT_SOURCE_DIR}/source/*.hpp.in ${PROJECT_SOURCE_DIR}/source/*.h
|
|
${PROJECT_SOURCE_DIR}/source/*.h.in)
|
|
file(GLOB_RECURSE examples ${PROJECT_SOURCE_DIR}/examples/*.cpp
|
|
${PROJECT_SOURCE_DIR}/examples/*.c ${PROJECT_SOURCE_DIR}/examples/*.hpp
|
|
${PROJECT_SOURCE_DIR}/examples/*.h)
|
|
file(GLOB_RECURSE tests_source ${PROJECT_SOURCE_DIR}/tests/source/*.cpp
|
|
${PROJECT_SOURCE_DIR}/tests/source/*.hpp)
|
|
file(GLOB_RECURSE external ${PROJECT_SOURCE_DIR}/examples/lulesh/external/kokkos/*)
|
|
file(
|
|
GLOB_RECURSE
|
|
cmake_files
|
|
${PROJECT_SOURCE_DIR}/source/*CMakeLists.txt
|
|
${PROJECT_SOURCE_DIR}/examples/*CMakeLists.txt
|
|
${PROJECT_SOURCE_DIR}/tests/*CMakeLists.txt
|
|
${PROJECT_SOURCE_DIR}/source/*.cmake
|
|
${PROJECT_SOURCE_DIR}/examples/*.cmake
|
|
${PROJECT_SOURCE_DIR}/tests/*.cmake
|
|
${PROJECT_SOURCE_DIR}/cmake/*.cmake
|
|
${PROJECT_SOURCE_DIR}/source/*.cmake)
|
|
list(APPEND cmake_files ${PROJECT_SOURCE_DIR}/CMakeLists.txt)
|
|
if(external)
|
|
list(REMOVE_ITEM examples ${external})
|
|
list(REMOVE_ITEM cmake_files ${external})
|
|
endif()
|
|
|
|
if(OMNITRACE_CLANG_FORMAT_EXE)
|
|
add_custom_target(
|
|
format-omnitrace-source
|
|
${OMNITRACE_CLANG_FORMAT_EXE} -i ${sources} ${headers} ${examples}
|
|
${tests_source}
|
|
COMMENT "[omnitrace] Running C++ formatter ${OMNITRACE_CLANG_FORMAT_EXE}...")
|
|
endif()
|
|
|
|
if(OMNITRACE_BLACK_FORMAT_EXE)
|
|
add_custom_target(
|
|
format-omnitrace-python
|
|
${OMNITRACE_BLACK_FORMAT_EXE} -q ${PROJECT_SOURCE_DIR}
|
|
COMMENT
|
|
"[omnitrace] Running Python formatter ${OMNITRACE_BLACK_FORMAT_EXE}...")
|
|
if(NOT TARGET format-python)
|
|
add_custom_target(format-python)
|
|
endif()
|
|
endif()
|
|
|
|
if(OMNITRACE_CMAKE_FORMAT_EXE)
|
|
add_custom_target(
|
|
format-omnitrace-cmake
|
|
${OMNITRACE_CMAKE_FORMAT_EXE} -i ${cmake_files}
|
|
COMMENT "[omnitrace] Running CMake formatter ${OMNITRACE_CMAKE_FORMAT_EXE}..."
|
|
)
|
|
if(NOT TARGET format-cmake)
|
|
add_custom_target(format-cmake)
|
|
endif()
|
|
endif()
|
|
|
|
foreach(_TYPE source python cmake)
|
|
if(TARGET format-omnitrace-${_TYPE})
|
|
add_dependencies(format-omnitrace format-omnitrace-${_TYPE})
|
|
add_dependencies(format-${_TYPE} format-omnitrace-${_TYPE})
|
|
endif()
|
|
endforeach()
|
|
|
|
foreach(_TYPE source python)
|
|
if(TARGET format-omnitrace-${_TYPE})
|
|
add_dependencies(format format-omnitrace-${_TYPE})
|
|
endif()
|
|
endforeach()
|
|
else()
|
|
message(STATUS "clang-format could not be found. format build target not available.")
|
|
endif()
|