diff --git a/CITATION.cff b/CITATION.cff index 2ab1d9bb6a65..5f5e507056c5 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -7,7 +7,7 @@ # Metadata for citation of this software according to the CFF format (https://citation-file-format.github.io/) cff-version: 1.2.0 message: If you use this software, please cite it using these metadata. -title: 'STEllAR-GROUP/hpx: HPX V1.9.1: The C++ Standards Library for Parallelism and +title: 'STEllAR-GROUP/hpx: HPX V1.10.0: The C++ Standards Library for Parallelism and Concurrency' doi: 10.5281/zenodo.5185328 authors: @@ -84,7 +84,7 @@ authors: - given-names: Zahra family-names: Khatami affiliation: Louisiana State University -version: 1.9.1 -date-released: 2023-08-04 +version: 1.10.0 +date-released: 2023-10-12 repository-code: https://github.com/STEllAR-GROUP/hpx license: BSL-1.0 diff --git a/CMakeLists.txt b/CMakeLists.txt index 18898ce32a8b..92a69c2e92f7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,12 +60,16 @@ endif() set(HPX_VERSION_MAJOR 1) set(HPX_VERSION_MINOR 10) set(HPX_VERSION_SUBMINOR 0) -set(HPX_VERSION_DATE 20230804) -set(HPX_VERSION_TAG "-trunk") +set(HPX_VERSION_DATE 20240529) +set(HPX_VERSION_TAG "") set(HPX_VERSION "${HPX_VERSION_MAJOR}.${HPX_VERSION_MINOR}.${HPX_VERSION_SUBMINOR}" ) +set(HPX_VERSION_FULL + "${HPX_VERSION_MAJOR}.${HPX_VERSION_MINOR}.${HPX_VERSION_SUBMINOR}${HPX_VERSION_TAG}" +) + set(HPX_LIBRARY_VERSION "${HPX_VERSION}") set(HPX_SOVERSION ${HPX_VERSION_MAJOR}) set(HPX_PACKAGE_NAME HPX) @@ -149,6 +153,12 @@ if(MSVC) endif() # ############################################################################## +# Disable check for compiler compatibility by default +hpx_option( + HPX_WITH_IGNORE_COMPILER_COMPATIBILITY BOOL + "Ignore compiler incompatibility in dependent projects (default: ON)." ON + ADVANCED +) # ############################################################################## # Set our build options cache variables which are customizable by users @@ -156,7 +166,7 @@ endif() hpx_option( HPX_WITH_DEPRECATION_WARNINGS BOOL - "Enable warnings for deprecated facilities. (default: ON)" ON ADVANCED + "Enable warnings for deprecated facilities (default: ON)." ON ADVANCED ) if(HPX_WITH_DEPRECATION_WARNINGS) @@ -179,7 +189,7 @@ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") hpx_option( HPX_WITH_STACKOVERFLOW_DETECTION BOOL - "Enable stackoverflow detection for HPX threads/coroutines. (default: OFF, debug: ON)" + "Enable stackoverflow detection for HPX threads/coroutines (default: OFF, debug: ON)." ${HPX_WITH_STACKOVERFLOW_DETECTION_DEFAULT} ADVANCED ) @@ -2321,7 +2331,7 @@ if(HPX_WITH_GIT_BRANCH AND ((NOT HPX_WITH_GIT_TAG) OR "${HPX_WITH_GIT_TAG}x" ) string(REGEX MATCH "^release-[0-9]+.[0-9]+.X$" matched ${HPX_WITH_GIT_BRANCH}) if(matched) - set(HPX_WITH_GIT_TAG "v${HPX_VERSION}") + set(HPX_WITH_GIT_TAG "v${HPX_VERSION_FULL}") hpx_info("Setting HPX_WITH_GIT_TAG to: " "${HPX_WITH_GIT_TAG}") endif() endif() diff --git a/cmake/CacheLineSize.cmake b/cmake/CacheLineSize.cmake index 1f63ed9cc740..4bfe402bd3b4 100644 --- a/cmake/CacheLineSize.cmake +++ b/cmake/CacheLineSize.cmake @@ -27,23 +27,27 @@ set(cache_line_size_detect_cpp_code function(cache_line_size output_var) if(NOT HPX_INTERNAL_CACHE_LINE_SIZE_DETECT) - file(WRITE "${PROJECT_BINARY_DIR}/cache_line_size.cpp" - "${cache_line_size_detect_cpp_code}" - ) - if(HPX_WITH_CXX17_HARDWARE_DESTRUCTIVE_INTERFERENCE_SIZE) - set(compile_definitions - "-DHPX_HAVE_CXX17_HARDWARE_DESTRUCTIVE_INTERFERENCE_SIZE" + if(NOT CMAKE_CROSSCOMPILING) + file(WRITE "${PROJECT_BINARY_DIR}/cache_line_size.cpp" + "${cache_line_size_detect_cpp_code}" ) - endif() - try_run( - run_result_unused compile_result_unused "${PROJECT_BINARY_DIR}" SOURCES - "${PROJECT_BINARY_DIR}/cache_line_size.cpp" - COMPILE_DEFINITIONS ${compile_definitions} - CMAKE_FLAGS CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS FALSE - RUN_OUTPUT_VARIABLE CACHE_LINE_SIZE - ) + if(HPX_WITH_CXX17_HARDWARE_DESTRUCTIVE_INTERFERENCE_SIZE) + set(compile_definitions + "-DHPX_HAVE_CXX17_HARDWARE_DESTRUCTIVE_INTERFERENCE_SIZE" + ) + endif() + + try_run( + run_result_unused compile_result_unused "${PROJECT_BINARY_DIR}" SOURCES + "${PROJECT_BINARY_DIR}/cache_line_size.cpp" + COMPILE_DEFINITIONS ${compile_definitions} + CMAKE_FLAGS CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS + FALSE + RUN_OUTPUT_VARIABLE CACHE_LINE_SIZE + ) + endif() if(NOT CACHE_LINE_SIZE) set(CACHE_LINE_SIZE "64") diff --git a/cmake/FindBreathe.cmake b/cmake/FindBreathe.cmake index a43963c2bba5..5b3bedf2f821 100644 --- a/cmake/FindBreathe.cmake +++ b/cmake/FindBreathe.cmake @@ -20,6 +20,10 @@ find_program( DOC "Path to breathe-apidoc executable" ) +if(Breathe_APIDOC_ROOT) + file(TO_CMAKE_PATH ${Breathe_APIDOC_ROOT} Breathe_APIDOC_ROOT) +endif() + if(Breathe_APIDOC_EXECUTABLE) include(FindPackageHandleStandardArgs) find_package_handle_standard_args( diff --git a/cmake/HPX_SetupBoost.cmake b/cmake/HPX_SetupBoost.cmake index 86d2d3fa7e75..7560311b8285 100644 --- a/cmake/HPX_SetupBoost.cmake +++ b/cmake/HPX_SetupBoost.cmake @@ -149,6 +149,10 @@ if(NOT TARGET hpx_dependencies_boost) string(REPLACE "/include" "" Boost_ROOT "${Boost_INCLUDE_DIRS}") endif() + if(Boost_ROOT) + file(TO_CMAKE_PATH ${Boost_ROOT} Boost_ROOT) + endif() + add_library(hpx_dependencies_boost INTERFACE IMPORTED) target_link_libraries(hpx_dependencies_boost INTERFACE Boost::boost) diff --git a/cmake/HPX_UpdateGitDocs.cmake b/cmake/HPX_UpdateGitDocs.cmake index 092aa4f653dd..d022ce48bf62 100644 --- a/cmake/HPX_UpdateGitDocs.cmake +++ b/cmake/HPX_UpdateGitDocs.cmake @@ -16,6 +16,60 @@ if(NOT GIT_FOUND) ) endif() +macro(add_docs what) + # add all newly generated files + execute_process( + COMMAND "${GIT_EXECUTABLE}" add ${what} + WORKING_DIRECTORY "${HPX_BINARY_DIR}/docs/gh-pages" + RESULT_VARIABLE git_add_result + ERROR_VARIABLE git_add_result_message COMMAND_ECHO STDERR + ) + if(NOT "${git_add_result}" EQUAL "0") + message( + FATAL_ERROR + "Adding files to the GitHub pages branch failed: ${git_add_result_message}." + ) + endif() +endmacro() + +macro(commit_docs message) + # check if there are changes to commit + execute_process( + COMMAND "${GIT_EXECUTABLE}" diff-index --quiet HEAD + WORKING_DIRECTORY "${HPX_BINARY_DIR}/docs/gh-pages" + RESULT_VARIABLE git_diff_index_result COMMAND_ECHO STDERR + ) + if(NOT "${git_diff_index_result}" EQUAL "0") + # commit changes + execute_process( + COMMAND "${GIT_EXECUTABLE}" commit -am "Updating Sphinx docs - ${message}" + WORKING_DIRECTORY "${HPX_BINARY_DIR}/docs/gh-pages" + RESULT_VARIABLE git_commit_result + ERROR_VARIABLE git_pull_result_message COMMAND_ECHO STDERR + ) + if(NOT "${git_commit_result}" EQUAL "0") + message( + FATAL_ERROR + "Committing to the GitHub pages branch failed: ${git_pull_result_message}." + ) + endif() + + # push everything up to github + execute_process( + COMMAND "${GIT_EXECUTABLE}" push --force + WORKING_DIRECTORY "${HPX_BINARY_DIR}/docs/gh-pages" + RESULT_VARIABLE git_push_result + ERROR_VARIABLE git_push_result_message COMMAND_ECHO STDERR + ) + if(NOT "${git_push_result}" EQUAL "0") + message( + FATAL_ERROR + "Pushing to the GitHub pages branch failed: ${git_push_result_message}." + ) + endif() + endif() +endmacro() + if(NOT GIT_REPOSITORY) set(GIT_REPOSITORY git@github.com:STEllAR-GROUP/hpx-docs.git --branch master) endif() @@ -34,7 +88,6 @@ if(EXISTS "${HPX_BINARY_DIR}/docs/gh-pages") ) endif() else() - message("${GIT_EXECUTABLE}") execute_process( COMMAND "${GIT_EXECUTABLE}" clone ${GIT_REPOSITORY} gh-pages RESULT_VARIABLE git_clone_result @@ -71,6 +124,8 @@ if(HPX_WITH_GIT_BRANCH) DESTINATION "${DOCS_BRANCH_DEST}" PATTERN "*.buildinfo" EXCLUDE ) + add_docs("branches/${HPX_WITH_GIT_BRANCH}/*") + commit_docs("branch (html)") endif() if("singlehtml" IN_LIST HPX_WITH_DOCUMENTATION_OUTPUT_FORMATS) file( @@ -78,17 +133,24 @@ if(HPX_WITH_GIT_BRANCH) DESTINATION "${DOCS_BRANCH_DEST}" PATTERN "*.buildinfo" EXCLUDE ) + add_docs("branches/${HPX_WITH_GIT_BRANCH}/*") + commit_docs("branch (singlehtml)") endif() if("latexpdf" IN_LIST HPX_WITH_DOCUMENTATION_OUTPUT_FORMATS) if(EXISTS "${DOCS_SOURCE}/latexpdf/latex/HPX.pdf") file(COPY "${DOCS_SOURCE}/latexpdf/latex/HPX.pdf" DESTINATION "${DOCS_BRANCH_DEST}/pdf/" ) + add_docs("branches/${HPX_WITH_GIT_BRANCH}/*") + commit_docs("branch (latexpdf)") endif() endif() + # special handling of dependency report files if(EXISTS "${DOCS_SOURCE}/report") file(COPY "${DOCS_SOURCE}/report" DESTINATION "${DOCS_BRANCH_DEST}") + add_docs("branches/${HPX_WITH_GIT_BRANCH}/*") + commit_docs("branch (depreport)") endif() endif() @@ -103,6 +165,8 @@ if(HPX_WITH_GIT_TAG) DESTINATION "${DOCS_TAG_DEST}" PATTERN "*.buildinfo" EXCLUDE ) + add_docs("tags/${HPX_WITH_GIT_TAG}/*") + commit_docs("tag (html)") endif() if("singlehtml" IN_LIST HPX_WITH_DOCUMENTATION_OUTPUT_FORMATS) file( @@ -110,6 +174,8 @@ if(HPX_WITH_GIT_TAG) DESTINATION "${DOCS_TAG_DEST}" PATTERN "*.buildinfo" EXCLUDE ) + add_docs("tags/${HPX_WITH_GIT_TAG}/*") + commit_docs("tag (singlehtml)") endif() if("latexpdf" IN_LIST HPX_WITH_DOCUMENTATION_OUTPUT_FORMATS) file( @@ -117,18 +183,22 @@ if(HPX_WITH_GIT_TAG) DESTINATION "${DOCS_TAG_DEST}/pdf/" PATTERN "*.buildinfo" EXCLUDE ) + add_docs("tags/${HPX_WITH_GIT_TAG}/*") + commit_docs("tag (latexpdf)") endif() # special handling of dependency report files if(EXISTS "${DOCS_SOURCE}/report") file(COPY "${DOCS_SOURCE}/report" DESTINATION "${DOCS_TAG_DEST}") + add_docs("tags/${HPX_WITH_GIT_TAG}/*") + commit_docs("tag (depreport)") endif() # If a tag name has been set and it is a suitable version number, we also copy # files to the "latest" directory. The regex only matches full version numbers # with three numerical components (X.Y.Z). It does not match release # candidates or other non-version tag names. - if("${HPX_WITH_GIT_TAG}" MATCHES "v^[0-9]+\\.[0-9]+\\.[0-9]+$") + if("${HPX_WITH_GIT_TAG}" MATCHES "^v[0-9]+\\.[0-9]+\\.[0-9]+$") message("Updating latest directory") set(DOCS_LATEST_DEST "${HPX_BINARY_DIR}/docs/gh-pages/latest") file(REMOVE_RECURSE "${DOCS_LATEST_DEST}") @@ -138,6 +208,8 @@ if(HPX_WITH_GIT_TAG) DESTINATION "${DOCS_LATEST_DEST}" PATTERN "*.buildinfo" EXCLUDE ) + add_docs("latest/*") + commit_docs("latest (html)") endif() if("singlehtml" IN_LIST HPX_WITH_DOCUMENTATION_OUTPUT_FORMATS) file( @@ -145,6 +217,8 @@ if(HPX_WITH_GIT_TAG) DESTINATION "${DOCS_LATEST_DEST}" PATTERN "*.buildinfo" EXCLUDE ) + add_docs("latest/*") + commit_docs("latest (singlehtml)") endif() if("latexpdf" IN_LIST HPX_WITH_DOCUMENTATION_OUTPUT_FORMATS) file( @@ -152,61 +226,15 @@ if(HPX_WITH_GIT_TAG) DESTINATION "${DOCS_LATEST_DEST}/pdf/" PATTERN "*.buildinfo" EXCLUDE ) + add_docs("latest/*") + commit_docs("latest (latexpdf)") endif() # special handling of dependency report files if(EXISTS "${DOCS_SOURCE}/report") file(COPY "${DOCS_SOURCE}/report" DESTINATION "${DOCS_LATEST_DEST}") + add_docs("latest/*") + commit_docs("latest (depreport)") endif() endif() endif() - -# add all newly generated files -execute_process( - COMMAND "${GIT_EXECUTABLE}" add * - WORKING_DIRECTORY "${HPX_BINARY_DIR}/docs/gh-pages" - RESULT_VARIABLE git_add_result - ERROR_VARIABLE git_pull_result_message COMMAND_ECHO STDERR -) -if(NOT "${git_add_result}" EQUAL "0") - message( - FATAL_ERROR - "Adding files to the GitHub pages branch failed: ${git_pull_result_message}." - ) -endif() - -# check if there are changes to commit -execute_process( - COMMAND "${GIT_EXECUTABLE}" diff-index --quiet HEAD - WORKING_DIRECTORY "${HPX_BINARY_DIR}/docs/gh-pages" - RESULT_VARIABLE git_diff_index_result COMMAND_ECHO STDERR -) -if(NOT "${git_diff_index_result}" EQUAL "0") - # commit changes - execute_process( - COMMAND "${GIT_EXECUTABLE}" commit -am "Updating Sphinx docs" - WORKING_DIRECTORY "${HPX_BINARY_DIR}/docs/gh-pages" - RESULT_VARIABLE git_commit_result - ERROR_VARIABLE git_pull_result_message COMMAND_ECHO STDERR - ) - if(NOT "${git_commit_result}" EQUAL "0") - message( - FATAL_ERROR - "Committing to the GitHub pages branch failed: ${git_pull_result_message}." - ) - endif() - - # push everything up to github - execute_process( - COMMAND "${GIT_EXECUTABLE}" push - WORKING_DIRECTORY "${HPX_BINARY_DIR}/docs/gh-pages" - RESULT_VARIABLE git_push_result - ERROR_VARIABLE git_pull_result_message COMMAND_ECHO STDERR - ) - if(NOT "${git_push_result}" EQUAL "0") - message( - FATAL_ERROR - "Pushing to the GitHub pages branch failed: ${git_pull_result_message}." - ) - endif() -endif() diff --git a/cmake/TargetArch.cmake b/cmake/TargetArch.cmake index 833d6c0b63f1..013b5c893313 100644 --- a/cmake/TargetArch.cmake +++ b/cmake/TargetArch.cmake @@ -122,29 +122,32 @@ function(target_architecture output_var) endif() else() if(NOT HPX_INTERNAL_ARCH_DETECT) - file(WRITE "${PROJECT_BINARY_DIR}/arch.cpp" "${archdetect_cpp_code}") - - # Detect the architecture in a rather creative way... This compiles a - # small C++ program which is a series of ifdefs that selects a particular - # #error preprocessor directive whose message string contains the target - # architecture. The program will always fail to compile (both because file - # is not a valid C program, and obviously because of the presence of the - # #error preprocessor directives... but by exploiting the preprocessor in - # this way, we can detect the correct target architecture even when - # cross-compiling, since the program itself never needs to be run (only - # the compiler/preprocessor) - try_run( - run_result_unused compile_result_unused "${PROJECT_BINARY_DIR}" - "${PROJECT_BINARY_DIR}/arch.cpp" - COMPILE_OUTPUT_VARIABLE ARCH - CMAKE_FLAGS CMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} - ) - - # Parse the architecture name from the compiler output - string(REGEX MATCH "cmake_ARCH ([a-zA-Z0-9_]+)" ARCH "${ARCH}") - # Get rid of the value marker leaving just the architecture name - string(REPLACE "cmake_ARCH " "" ARCH "${ARCH}") + if(NOT CMAKE_CROSSCOMPILING) + file(WRITE "${PROJECT_BINARY_DIR}/arch.cpp" "${archdetect_cpp_code}") + + # Detect the architecture in a rather creative way... This compiles a + # small C++ program which is a series of ifdefs that selects a + # particular #error preprocessor directive whose message string contains + # the target architecture. The program will always fail to compile (both + # because file is not a valid C program, and obviously because of the + # presence of the #error preprocessor directives... but by exploiting + # the preprocessor in this way, we can detect the correct target + # architecture even when cross-compiling, since the program itself never + # needs to be run (only the compiler/preprocessor) + try_run( + run_result_unused compile_result_unused "${PROJECT_BINARY_DIR}" + "${PROJECT_BINARY_DIR}/arch.cpp" + COMPILE_OUTPUT_VARIABLE ARCH + CMAKE_FLAGS CMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} + ) + + # Parse the architecture name from the compiler output + string(REGEX MATCH "cmake_ARCH ([a-zA-Z0-9_]+)" ARCH "${ARCH}") + + # Get rid of the value marker leaving just the architecture name + string(REPLACE "cmake_ARCH " "" ARCH "${ARCH}") + endif() # If we are compiling with an unknown architecture this variable should # already be set to "unknown" but in the case that it's empty (i.e. due to diff --git a/cmake/packaging/rpm/Changelog.txt b/cmake/packaging/rpm/Changelog.txt index 231fcee5d395..317e2c017643 100644 --- a/cmake/packaging/rpm/Changelog.txt +++ b/cmake/packaging/rpm/Changelog.txt @@ -1,3 +1,6 @@ +* Wed Apr 17 2024 STE||AR Group 1.10.0 +- HPX Release 1.10.0 (https://hpx-docs.stellar-group.org/tags/1.10.0/html/releases/whats_new_1_10_0.html) + * Fri Aug 04 2023 STE||AR Group 1.9.1 - HPX Release 1.9.1 (https://hpx-docs.stellar-group.org/tags/1.9.1/html/releases/whats_new_1_9_1.html) diff --git a/cmake/templates/HPXMacros.cmake.in b/cmake/templates/HPXMacros.cmake.in index bd2f1dd6bb82..a3dd7a5f8e13 100644 --- a/cmake/templates/HPXMacros.cmake.in +++ b/cmake/templates/HPXMacros.cmake.in @@ -12,17 +12,23 @@ include(GNUInstallDirs) include(HPX_Utils) function(hpx_check_compiler_compatibility) - if(HPX_IGNORE_COMPILER_COMPATIBILITY) + if(HPX_WITH_IGNORE_COMPILER_COMPATIBILITY + OR HPX_IGNORE_COMPILER_COMPATIBILITY + ) return() endif() if(HPX_WITH_BUILD_BINARY_PACKAGE) string(REGEX MATCH "[0-9]+" HPX_MAJOR_VERSION "${HPX_CXX_COMPILER_VERSION}") - string(REGEX MATCH "[0-9]+" CXX_MAJOR_VERSION "${CMAKE_CXX_COMPILER_VERSION}") + string(REGEX MATCH "[0-9]+" CXX_MAJOR_VERSION + "${CMAKE_CXX_COMPILER_VERSION}" + ) - if(NOT (${CMAKE_CXX_COMPILER_ID} STREQUAL ${HPX_CXX_COMPILER_ID} AND - ${HPX_MAJOR_VERSION} STREQUAL ${CXX_MAJOR_VERSION})) - set(MESSAGE "Compilers do not match. In order to compile HPX application it is" + if(NOT (${CMAKE_CXX_COMPILER_ID} STREQUAL ${HPX_CXX_COMPILER_ID} + AND ${HPX_MAJOR_VERSION} STREQUAL ${CXX_MAJOR_VERSION}) + ) + set(MESSAGE + "Compilers do not match. In order to compile HPX application it is" " recommended to use the same major version of the compiler as you did for HPX. " "HPX_CXX_COMPILER=${HPX_CXX_COMPILER}, " "CMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}. " @@ -30,20 +36,30 @@ function(hpx_check_compiler_compatibility) "CMAKE_CXX_COMPILER_ID=${CMAKE_CXX_COMPILER_ID}. " "HPX_CXX_MAJOR_VERSION=${HPX_MAJOR_VERSION}, " "CMAKE_CXX_COMPILER_VERSION=${CXX_MAJOR_VERSION}." - "To disable this message set HPX_IGNORE_COMPILER_COMPATIBILITY to On.") + "To disable this message set HPX_WITH_IGNORE_COMPILER_COMPATIBILITY to On." + ) if(HPX_FIND_REQUIRED) hpx_error("${MESSAGE}") else() hpx_warn("${MESSAGE}") - set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "${MESSAGE}" PARENT_SCOPE) - set(${CMAKE_FIND_PACKAGE_NAME}_FOUND False PARENT_SCOPE) + set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE + "${MESSAGE}" + PARENT_SCOPE + ) + set(${CMAKE_FIND_PACKAGE_NAME}_FOUND + False + PARENT_SCOPE + ) endif() endif() else() - if(NOT (${CMAKE_CXX_COMPILER_ID} STREQUAL ${HPX_CXX_COMPILER_ID} AND - ${CMAKE_CXX_COMPILER_VERSION} STREQUAL ${HPX_CXX_COMPILER_VERSION})) - set(MESSAGE "Compilers do not match. In order to compile HPX application it is" + if(NOT (${CMAKE_CXX_COMPILER_ID} STREQUAL ${HPX_CXX_COMPILER_ID} + AND ${CMAKE_CXX_COMPILER_VERSION} STREQUAL + ${HPX_CXX_COMPILER_VERSION}) + ) + set(MESSAGE + "Compilers do not match. In order to compile HPX application it is" " recommended to use the same compiler as you did for HPX. " "HPX_CXX_COMPILER=${HPX_CXX_COMPILER}, " "CMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}. " @@ -51,14 +67,21 @@ function(hpx_check_compiler_compatibility) "CMAKE_CXX_COMPILER_ID=${CMAKE_CXX_COMPILER_ID}. " "HPX_CXX_COMPILER_VERSION=${HPX_CXX_COMPILER_VERSION}, " "CMAKE_CXX_COMPILER_VERSION=${CMAKE_CXX_COMPILER_VERSION}." - "To disable this message set HPX_IGNORE_COMPILER_COMPATIBILITY to On.") + "To disable this message set HPX_WITH_IGNORE_COMPILER_COMPATIBILITY to On." + ) if(HPX_FIND_REQUIRED) hpx_error("${MESSAGE}") else() hpx_warn("${MESSAGE}") - set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "${MESSAGE}" PARENT_SCOPE) - set(${CMAKE_FIND_PACKAGE_NAME}_FOUND False PARENT_SCOPE) + set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE + "${MESSAGE}" + PARENT_SCOPE + ) + set(${CMAKE_FIND_PACKAGE_NAME}_FOUND + False + PARENT_SCOPE + ) endif() endif() endif() @@ -77,10 +100,11 @@ function(hpx_check_boost_compatibility) get_filename_component(PATH2 "${Boost_ROOT}" ABSOLUTE) if(NOT PATH1 STREQUAL PATH2) - hpx_error("The specified Boost_ROOT differs from what has been used when" - " configuring and building HPX. Please use the same Boost " - "versions. HPX boost is ${HPX_BOOST_ROOT} and users is ${Boost_ROOT}. " - "To disable this message set HPX_IGNORE_BOOST_COMPATIBILITY On." + hpx_error( + "The specified Boost_ROOT differs from what has been used when" + " configuring and building HPX. Please use the same Boost " + "versions. HPX boost is ${HPX_BOOST_ROOT} and users is ${Boost_ROOT}. " + "To disable this message set HPX_IGNORE_BOOST_COMPATIBILITY On." ) endif() endfunction() @@ -89,9 +113,11 @@ function(hpx_check_allocator_compatibility) string(TOUPPER "${HPX_WITH_MALLOC}" HPX_MALLOC_UPPER) string(TOUPPER "${HPX_WITH_MALLOC_DEFAULT}" HPX_MALLOC_DEFAULT_UPPER) if(NOT (HPX_MALLOC_UPPER STREQUAL HPX_MALLOC_DEFAULT_UPPER)) - hpx_error("HPX_WITH_MALLOC has been changed by this project. This project " + hpx_error( + "HPX_WITH_MALLOC has been changed by this project. This project " "has set HPX_WITH_MALLOC='${HPX_WITH_MALLOC}' and HPX was configured " "with '${HPX_WITH_MALLOC_DEFAULT}'. HPX_WITH_MALLOC is only provided for " - "informational purposes to dependent projects and should not be changed.") + "informational purposes to dependent projects and should not be changed." + ) endif() endfunction() diff --git a/cmake/templates/conf.py.in b/cmake/templates/conf.py.in index abe721ce0c10..cd369d5be9ce 100644 --- a/cmake/templates/conf.py.in +++ b/cmake/templates/conf.py.in @@ -84,8 +84,37 @@ def get_info_from_file(source): # The text in the rst file should be: # :hpx-header:`base_path,file_name` link_hpx_headers = { - "libs/full/include/include": ["hpx/algorithm.hpp", "hpx/barrier.hpp", "hpx/channel.hpp", "hpx/future.hpp", "hpx/latch.hpp", "hpx/runtime.hpp"], - "libs/core/include_local/include": ["hpx/any.hpp", "hpx/chrono.hpp", "hpx/condition_variable.hpp", "hpx/exception.hpp", "hpx/execution.hpp", "hpx/functional.hpp", "hpx/mutex.hpp", "hpx/memory.hpp", "hpx/numeric.hpp", "hpx/optional.hpp", "hpx/source_location.hpp", "hpx/system_error.hpp", "hpx/task_block.hpp", "hpx/experimental/task_group.hpp", "hpx/thread.hpp", "hpx/semaphore.hpp", "hpx/shared_mutex.hpp", "hpx/stop_token.hpp", "hpx/tuple.hpp", "hpx/type_traits.hpp", "hpx/unwrap.hpp"], + "libs/full/include/include": [ + "hpx/algorithm.hpp", + "hpx/barrier.hpp", + "hpx/channel.hpp", + "hpx/future.hpp", + "hpx/latch.hpp", + "hpx/runtime.hpp" + ], + "libs/core/include_local/include": [ + "hpx/any.hpp", + "hpx/chrono.hpp", + "hpx/condition_variable.hpp", + "hpx/exception.hpp", + "hpx/execution.hpp", + "hpx/functional.hpp", + "hpx/mutex.hpp", + "hpx/memory.hpp", + "hpx/numeric.hpp", + "hpx/optional.hpp", + "hpx/source_location.hpp", + "hpx/system_error.hpp", + "hpx/task_block.hpp", + "hpx/experimental/task_group.hpp", + "hpx/thread.hpp", + "hpx/semaphore.hpp", + "hpx/shared_mutex.hpp", + "hpx/stop_token.hpp", + "hpx/tuple.hpp", + "hpx/type_traits.hpp", + "hpx/unwrap.hpp" + ], "libs/full/init_runtime/include": ["hpx/init.hpp"], "libs/core/version/include": ["hpx/version.hpp"], "wrap/include": ["hpx/wrap_main.hpp"] @@ -337,7 +366,7 @@ rst_prolog += ''' .. |hpx_dependency_report| replace:: |hpx| Dependency report .. _hpx_dependency_report: ../../report/index.html .. |hpx_single_html| replace:: |hpx| Single HTML documentation -.. _hpx_single_html: ../singlehtml/index.h +.. _hpx_single_html: ../singlehtml/index.html .. |hpx_pdf| replace:: |hpx| PDF documentation .. _hpx_pdf: ../pdf/HPX.pdf @@ -568,6 +597,8 @@ rst_prolog += ''' .. _cpp17_n4755: http://wg21.link/n4755 .. |cpp19_n4808| replace:: N4808 .. _cpp19_n4808: http://wg21.link/n4808 +.. |cpp26_n4948| replace:: N4948 +.. _cpp26_n4948: http://wg21.link/n4948 .. |cpp20_p0075r1| replace:: P0075R1 .. _cpp20_p0075r1: http://wg21.link/p0075r1 .. |cpp20_p0443| replace:: P0443 @@ -576,6 +607,8 @@ rst_prolog += ''' .. _p0792: http://wg21.link/p0792 .. |p0159| replace:: P0159 .. _p0159: http://wg21.link/p0159 +.. |cpp26_p1144| replace:: P1144 +.. _cpp26_p1144: https://wg21.link/p1144 .. |p1393| replace:: P1393 .. _p1393: http://wg21.link/p1393 .. |p2220| replace:: P2220 diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index bc2c88e473a7..c6c273a1cabb 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -109,7 +109,7 @@ elseif(HPX_WITH_GIT_BRANCH) set(HPX_CONF_DOCUMENTATION_VERSION "${HPX_WITH_GIT_BRANCH}") else() # HPX_VERSION is always available, use as fallback - set(HPX_CONF_DOCUMENTATION_VERSION "${HPX_VERSION}") + set(HPX_CONF_DOCUMENTATION_VERSION "${HPX_VERSION_FULL}") endif() set(SPHINX_CONF_PY_DEST "${CMAKE_CURRENT_BINARY_DIR}/sphinx/conf.py") diff --git a/docs/sphinx/contributing/release_procedure.rst b/docs/sphinx/contributing/release_procedure.rst index b6d60bbfa3eb..8ca0adc815c6 100644 --- a/docs/sphinx/contributing/release_procedure.rst +++ b/docs/sphinx/contributing/release_procedure.rst @@ -1,6 +1,6 @@ .. Copyright (c) 2021 ETH Zurich - Copyright (c) 2007-2017 Louisiana State University + Copyright (c) 2007-2023 Louisiana State University SPDX-License-Identifier: BSL-1.0 Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -46,14 +46,13 @@ are completed to avoid confusion. * Update collaborators * Update grant information -#. This step does not apply to patch releases. For both APEX and libCDS: +#. This step does not apply to patch releases. For APEX: * Change the release branch to be the most current release tag available in - the APEX/libCDS ``git_external`` section in the main ``CMakeLists.txt``. + the APEX ``git_external`` section in the main ``CMakeLists.txt``. Please contact the maintainers of the respective packages to generate a new release to synchronize with the |hpx| release (`APEX - `_, `libCDS - `_). + `_). #. Make sure ``HPX_VERSION_MAJOR/MINOR/SUBMINOR`` in ``CMakeLists.txt`` contain the correct values. Change them if needed. @@ -95,7 +94,7 @@ are completed to avoid confusion. The script requires that you have the |stellar| Group signing key. #. This step is not necessary for patch releases. Notify - ``hpx-users@stellar-group.org`` and ``stellar@cct.lsu.edu`` of the + ``hpx-users@stellar-group.org`` of the availability of the release candidate. Ask users to test the candidate by checking out the release candidate tag. @@ -125,9 +124,8 @@ are completed to avoid confusion. script automatically tag the with the corresponding release number. The script requires that you have the |stellar| Group signing key. -#. Update the websites (`hpx.stellar-group.org `_, - `stellar-group.org `_ and - `stellar.cct.lsu.edu `_). You can login on +#. Update the websites (`hpx.stellar-group.org `_ + and `stellar-group.org `). You can login on wordpress through `this page `. You can update the pages with the following: diff --git a/docs/sphinx/manual/building_hpx.rst b/docs/sphinx/manual/building_hpx.rst index 3e974517ddfa..4ca39d84c3cf 100644 --- a/docs/sphinx/manual/building_hpx.rst +++ b/docs/sphinx/manual/building_hpx.rst @@ -26,7 +26,7 @@ but rather generates the files needed by your build tool (GNU make, Visual Studio, etc.) for building |hpx|. If CMake is not already installed in your system, you can download it and install it here: |cmake_download|_. -Once |cmake| has been run, the build process can be started. The build process consists of the following parts: +Once |cmake|_ has been run, the build process can be started. The build process consists of the following parts: * The |hpx| core libraries (target ``core``): This forms the basic set of |hpx| libraries. @@ -44,9 +44,9 @@ Once |cmake| has been run, the build process can be started. The build process c :ref:`documentation`. -The |hpx| build process is highly configurable through |cmake|, and various |cmake| variables -influence the build process. A list with the most important |cmake| variables can be found in -the section that follows, while the complete list of available |cmake| variables is in +The |hpx| build process is highly configurable through |cmake|_, and various |cmake|_ variables +influence the build process. A list with the most important |cmake|_ variables can be found in +the section that follows, while the complete list of available |cmake|_ variables is in :ref:`cmake_variables`. These variables can be used to refine the recipes that can be found at :ref:`build_recipes`, a section that shows some basic steps on how to build |hpx| for a specific platform. @@ -73,8 +73,8 @@ used CMake options. .. option:: HPX_WITH_CUDA - Enable support for CUDA. Use ``CMAKE_CUDA_COMPILER`` to set the CUDA compiler. This is a standard |cmake| variable, - like ``CMAKE_CXX_COMPILER``. + Enable support for CUDA. Use ``CMAKE_CUDA_COMPILER`` to set the CUDA compiler. This is a standard + |cmake|_ variable, like ``CMAKE_CXX_COMPILER``. .. option:: HPX_WITH_PARCELPORT_MPI @@ -120,7 +120,7 @@ used CMake options. Build tests. -For a complete list of available |cmake| variables that influence the build of +For a complete list of available |cmake|_ variables that influence the build of |hpx|, see :ref:`cmake_variables`. .. _build_types: @@ -128,9 +128,9 @@ For a complete list of available |cmake| variables that influence the build of Build types =========== -|cmake| can be configured to generate project files suitable for builds that +|cmake|_ can be configured to generate project files suitable for builds that have enabled debugging support or for an optimized build (without debugging -support). The |cmake| variable used to set the build type is +support). The |cmake|_ variable used to set the build type is ``CMAKE_BUILD_TYPE`` (for more information see the `CMake Documentation `_). Available build types are: @@ -163,7 +163,7 @@ Unix variants ------------- Once you have the source code and the dependencies and assuming all your dependencies are in paths -known to |cmake|, the following gets you started: +known to |cmake|_, the following gets you started: #. First, set up a separate build directory to configure the project: @@ -181,7 +181,7 @@ known to |cmake|, the following gets you started: .. tip:: - If you want to change |cmake| variables for your build, it is usually a good + If you want to change |cmake|_ variables for your build, it is usually a good idea to start with a clean build directory to avoid configuration problems. It is especially important that you use a clean build directory when changing between ``Release`` and ``Debug`` modes. @@ -192,7 +192,8 @@ known to |cmake|, the following gets you started: $ cmake .. - * If your dependencies are in custom locations, you may need to tell |cmake| where to find them by passing one or more options to |cmake| as shown below: + * If your dependencies are in custom locations, you may need to tell |cmake|_ + where to find them by passing one or more options to |cmake|_ as shown below: .. code-block:: shell-session @@ -209,7 +210,7 @@ known to |cmake|, the following gets you started: $ cmake -DBoost_ROOT=~/packages/boost -DHwloc_ROOT=/packages/hwloc -DCMAKE_INSTALL_PREFIX=~/packages/hpx ~/downloads/hpx_1.5.1 - * If you want to try |hpx| without using a custom allocator pass ``-DHPX_WITH_MALLOC=system`` to |cmake|: + * If you want to try |hpx| without using a custom allocator pass ``-DHPX_WITH_MALLOC=system`` to |cmake|_: .. code-block:: shell-session @@ -221,7 +222,7 @@ known to |cmake|, the following gets you started: .. important:: If you are building |hpx| for a system with more than 64 processing units, - you must change the |cmake| variable ``HPX_WITH_MAX_CPU_COUNT`` (to a value at least as big as the + you must change the |cmake|_ variable ``HPX_WITH_MAX_CPU_COUNT`` (to a value at least as big as the number of (virtual) cores on your system). Note that the default value is 64. .. caution:: diff --git a/docs/sphinx/manual/creating_hpx_projects.rst b/docs/sphinx/manual/creating_hpx_projects.rst index 102f118f879a..9d281234c3f0 100644 --- a/docs/sphinx/manual/creating_hpx_projects.rst +++ b/docs/sphinx/manual/creating_hpx_projects.rst @@ -242,7 +242,7 @@ Using |cmake| targets --------------------- The recommended way of setting up your targets to use |hpx| is to link to the -``HPX::hpx`` |cmake| target: +``HPX::hpx`` |cmake|_ target: .. code-block:: cmake @@ -255,7 +255,7 @@ This requires that you have already created the target like this: add_library(hello_world_component SHARED hello_world_component.cpp) target_include_directories(hello_world_component PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -When you link your library to the ``HPX::hpx`` |cmake| target, you will be able +When you link your library to the ``HPX::hpx`` |cmake|_ target, you will be able use |hpx| functionality in your library. To use ``main()`` as the implicit entry point in your application you must additionally link your application to the |cmake| target ``HPX::wrap_main``. This target is automatically linked to diff --git a/docs/sphinx/manual/debugging_hpx_applications.rst b/docs/sphinx/manual/debugging_hpx_applications.rst index e13214f915ce..c6445c3ec106 100644 --- a/docs/sphinx/manual/debugging_hpx_applications.rst +++ b/docs/sphinx/manual/debugging_hpx_applications.rst @@ -53,7 +53,7 @@ Using sanitizers with |hpx| applications applications. To use sanitizers with |hpx|, turn on ``HPX_WITH_SANITIZERS`` and turn -off ``HPX_WITH_STACKOVERFLOW_DETECTION`` during |cmake| configuration. It's +off ``HPX_WITH_STACKOVERFLOW_DETECTION`` during |cmake|_ configuration. It's recommended to also build |boost| with the same sanitizers that will be used for |hpx|. The appropriate sanitizers can then be enabled using |cmake| by appending ``-fsanitize=address -fno-omit-frame-pointer`` to ``CMAKE_CXX_FLAGS`` diff --git a/docs/sphinx/manual/launching_and_configuring_hpx_applications.rst b/docs/sphinx/manual/launching_and_configuring_hpx_applications.rst index 20d7348e7644..dd22b74cbd94 100644 --- a/docs/sphinx/manual/launching_and_configuring_hpx_applications.rst +++ b/docs/sphinx/manual/launching_and_configuring_hpx_applications.rst @@ -275,7 +275,7 @@ The `|hpx| configuration section to sleep after being idle for ``hpx.max_idle_loop_count`` iterations. This setting is applicable only if ``HPX_WITH_THREAD_MANAGER_IDLE_BACKOFF`` is set during configuration in - |cmake|. By default this is defined by the preprocessor constant + |cmake|_. By default this is defined by the preprocessor constant ``HPX_IDLE_BACKOFF_TIME_MAX``. This is an internal setting that you should change only if you know exactly what you are doing. * * ``hpx.exception_verbosity`` diff --git a/docs/sphinx/manual/optimizing_hpx_applications.rst b/docs/sphinx/manual/optimizing_hpx_applications.rst index 90d956441728..d917db98dec8 100644 --- a/docs/sphinx/manual/optimizing_hpx_applications.rst +++ b/docs/sphinx/manual/optimizing_hpx_applications.rst @@ -3404,13 +3404,13 @@ APEX integration |hpx| provides integration with |apex|_, which is a framework for application profiling using task timers and various performance counters :footcite:t:`2015:apex`. It can be added as a ``git`` submodule by turning on the option :option:`HPX_WITH_APEX:BOOL` -during |cmake| configuration. |tau|_ is an optional dependency when using |apex|. +during |cmake|_ configuration. |tau|_ is an optional dependency when using |apex|. -To build |hpx| with |apex|, add :option:`HPX_WITH_APEX`\ ``=ON``, and, -optionally, ``Tau_ROOT=$PATH_TO_TAU`` to your |cmake| configuration. In -addition, you can override the tag used for |apex| with the +To build |hpx| with |apex|_, add :option:`HPX_WITH_APEX`\ ``=ON``, and, +optionally, ``Tau_ROOT=$PATH_TO_TAU`` to your |cmake|_ configuration. In +addition, you can override the tag used for |apex|_ with the :option:`HPX_WITH_APEX_TAG` option. Please see the |apex_hpx_doc|_ for detailed -instructions on using |apex| with |hpx|. +instructions on using |apex|_ with |hpx|. References ========== diff --git a/docs/sphinx/manual/starting_the_hpx_runtime.rst b/docs/sphinx/manual/starting_the_hpx_runtime.rst index b5ba8ce19818..2dcf222fd741 100644 --- a/docs/sphinx/manual/starting_the_hpx_runtime.rst +++ b/docs/sphinx/manual/starting_the_hpx_runtime.rst @@ -50,7 +50,7 @@ The only change to your code you have to make is to include the file the first |hpx| thread of the application. The runtime system will be initialized behind the scenes before the function ``main()`` is executed and will automatically stop after ``main()`` has returned. For this method to work -you must link your application to the |cmake| target ``HPX::wrap_main``. This is +you must link your application to the |cmake|_ target ``HPX::wrap_main``. This is done automatically if you are using the provided macros (:ref:`using_hpx_cmake_macros`) to set up your application, but must be done explicitly if you are using targets directly (:ref:`using_hpx_cmake_targets`). diff --git a/docs/sphinx/manual/troubleshooting.rst b/docs/sphinx/manual/troubleshooting.rst index 5b374f236768..99f8d2d94ff9 100644 --- a/docs/sphinx/manual/troubleshooting.rst +++ b/docs/sphinx/manual/troubleshooting.rst @@ -27,7 +27,7 @@ one the options found in `Support for deploying and using HPX .. + $ cmake -DHPX_DIR= .. $ make all $ ./my_hpx_program @@ -156,7 +156,7 @@ distributed applications similarly to how you would write applications for a single node (see :ref:`why_hpx` and :ref:`writing_distributed_hpx_applications`). -If you are already familiar with ``async`` and ``future``\ s from the C++ standard +If you are already familiar with ``async`` and ``future`` from the C++ standard library, the same functionality is available in |hpx|. The following terminology is essential when talking about task-based C++ diff --git a/docs/sphinx/releases/whats_new_1_10_0.rst b/docs/sphinx/releases/whats_new_1_10_0.rst index 38ed581aa559..d0fc11101d64 100644 --- a/docs/sphinx/releases/whats_new_1_10_0.rst +++ b/docs/sphinx/releases/whats_new_1_10_0.rst @@ -1,5 +1,5 @@ .. - Copyright (C) 2007-2023 Hartmut Kaiser + Copyright (C) 2007-2024 Hartmut Kaiser SPDX-License-Identifier: BSL-1.0 Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -7,25 +7,257 @@ .. _hpx_1_10_0: -=========================== -|hpx| V1.10.0 (TBD) -=========================== +============================ +|hpx| V1.10.0 (May 29, 2024) +============================ General changes =============== +- The HPX documentation has seen a major overhaul for this release. We finished + documenting the public local HPX API, we have added migration guides from widely + used parallelization platforms to HPX (OpenMP, TBB, and MPI). +- We have added facilities enabling optimizations for trivially-relocatable types + (see |cpp26_p1144|_ for more details). +- We have added (and use) the ``scope_xxx`` helper facilities as specified by the + C++ library fundamentals TS v3 (see: |cpp26_n4948|_). +- We have added configuration options that allow to build HPX without pre-installing + any prerequisites. Use ``HPX_WITH_FETCH_HWLOC=On`` to have |hwloc|_ installed for + you. Similarly, setting ``HPX_WITH_FETCH_BOOST=On`` during configuration time will + install the necessary |boost|_ libraries (currently V1.84.0). +- We have performed a lot of code cleanup and refactoring to improve the overall + code quality and decrease compile times. +- The collective operations APIs have seen an unification, we have fixed issues and + performance problems for the collectives. +- The HPX executors have seen a streamlining and some consistency changes. We have + applied many performance improvements to the executor implementations that directly + positively impact the performance of our parallel algorithms. +- We have added a new parcelport allowing to use Gasnet as a communication platform. +- We have added optimizations to various parcelports improving overall communication + performance. This includes - amongst other things - send immediate optimizations and + receiver-side zero-copy optimizations. +- Futures will now execute the associated task eagerly and inline on any wait + operation if the task has not started running yet. This feature can be enabled + using the ``HPX_COROUTINES_WITH_THREAD_SCHEDULE_HINT_RUNS_AS_CHILD=On`` configuration + setting (which is `Off` by default). +- We have enabled using json files to supply configuration information through the + command line. This feature can be enabled with the configuration option + ``HPX_COMMAND_LINE_HANDLING_WITH_JSON_CONFIGURATION_FILES=On``. This functionality + depends on the external `JSon library `_, which + can be built at configuration time by supplying ``HPX_WITH_FETCH_JSON=On`` to + |cmake|_. +- We have applied many fixes to our CUDA, ROCm, and SYCL build environments. + Breaking changes ================ -- The |cmake| configuration keys ``SOMELIB_ROOT`` (e.g., ``BOOST_ROOT``) have been +- The |cmake|_ configuration keys ``SOMELIB_ROOT`` (e.g., ``BOOST_ROOT``) have been renamed to ``Somelib_ROOT`` (e.g., ``Boost_ROOT``) to avoid warnings when using - newer versions of |cmake|. Please update your scripts accordingly. For now, the - old variable names are re-assigned to the new names and unset in the |cmake| + newer versions of |cmake|_. Please update your scripts accordingly. For now, the + old variable names are re-assigned to the new names and unset in the |cmake|_ cache. Closed issues ============= +* :hpx-issue:`6466` - No access limitations to Wiki +* :hpx-issue:`6461` - handle_received_parcels may never return +* :hpx-issue:`6459` - Building HPX +* :hpx-issue:`6451` - HPX hangs at the very end +* :hpx-issue:`6446` - Issue on page /manual/getting_hpx.html +* :hpx-issue:`6443` - PR #6435 (parcel_layer_tweaks) broke Octo-Tiger +* :hpx-issue:`6440` - HPX does not compile with MSVC of Visual Studio 2022 17.9+ +* :hpx-issue:`6437` - HPX 1.9.1 does not compile on Fedora with '#pragma message: [Parallel STL message]: "Vectorized algorithm unimplemented, redirected to serial +* :hpx-issue:`6419` - Enhancement of the macro functionalities within hpx +* :hpx-issue:`6417` - The current HPX master branch is still not compatible with Kokkos 4.0.1 +* :hpx-issue:`6414` - Current HPX master causes segfaults within Octo-Tiger +* :hpx-issue:`6412` - Clangd (Language Server) throws error for __integer_pack at pack.hpp +* :hpx-issue:`6407` - Cannot build Kokkos 4.0.01 with current HPX master +* :hpx-issue:`6405` - Spack Build Error with ROCm 5.7.0 +* :hpx-issue:`6398` - HPX sets affinity wrong with multiple processes per node and LCI parcelport enabled +* :hpx-issue:`6392` - [Feature] Install dependencies using CMake +* :hpx-issue:`6388` - HPX error: "Host not found" when running on Expanse with 128 nodes +* :hpx-issue:`6366` - serialize_buffer allocator support needs adjustments +* :hpx-issue:`6361` - HPX 1.9.1 does not compile on Fedora 40 +* :hpx-issue:`6355` - Single page documentation is broken +* :hpx-issue:`6334` - Segmentation fault after adding a padding in one_size_heap_list +* :hpx-issue:`6329` - Log hpx threads on forced shutdown +* :hpx-issue:`6316` - Build breaks on FreeBSD +* :hpx-issue:`6299` - HPX does not use distributed localities on Fugaku +* :hpx-issue:`6298` - Update config for coroutines on ARM +* :hpx-issue:`6291` - Zero-copy receive optimization disabled the invocation of direct actions +* :hpx-issue:`6261` - Add optional reading of json files for command line options +* :hpx-issue:`6087` - Support for vcpkg on Linux is broken +* :hpx-issue:`5921` - hpx::info claims that async_mpi was not built, while cmake assures its existence +* :hpx-issue:`5893` - Tests fail on FreeBSD: Executable copyn_test does not exist +* :hpx-issue:`5833` - barrier lockup +* :hpx-issue:`5799` - Investigate CUDA compilation problems +* :hpx-issue:`5340` - Examples do not run on Mac OSX using the M1 chip + Closed pull requests ==================== +* :hpx-pr:`6493` - Fix distributed latch documentation +* :hpx-pr:`6492` - Fix kokkos hpx nvcc compilation +* :hpx-pr:`6491` - More fixes to handling bool arguments for collective operations +* :hpx-pr:`6490` - Remove the default max cpu count +* :hpx-pr:`6489` - Ensure TCP parcelport is deactivated if not needed +* :hpx-pr:`6488` - Fixing handling of bool value type for collective operations +* :hpx-pr:`6485` - Destructive interference size +* :hpx-pr:`6484` - Improve performance counter error handling +* :hpx-pr:`6482` - Generalize the notion of bitwise serialization +* :hpx-pr:`6481` - Fixing use of HPX_WITH_CXX_STANDARD +* :hpx-pr:`6480` - Remove equal_to from hpx::any +* :hpx-pr:`6479` - Remove optimizations for certain built-in compiler intrinsics +* :hpx-pr:`6478` - Fixing issues on MacOS +* :hpx-pr:`6477` - lci pp: lci's github repo name changed from LC to lci +* :hpx-pr:`6476` - Fixing binary filter test target names +* :hpx-pr:`6475` - Fix mac os github actions +* :hpx-pr:`6472` - Troubleshoot CI hangs +* :hpx-pr:`6469` - improve(lci pp): more options to control the LCI parcelport +* :hpx-pr:`6467` - Bump jwlawson/actions-setup-cmake from 1.14 to 2.0 +* :hpx-pr:`6464` - Update docs of "Writing distributed applications" page +* :hpx-pr:`6463` - Revert "Always return outermost thread id" +* :hpx-pr:`6458` - Reduce test workload to fix CI/CD time-out +* :hpx-pr:`6457` - replace boost::array with std::array and update file name +* :hpx-pr:`6456` - Move APEX CI to rostam +* :hpx-pr:`6455` - Fixing compilation if HPX_HAVE_THREAD_QUEUE_WAITTIME is defined +* :hpx-pr:`6454` - Update perftests reference measurements +* :hpx-pr:`6453` - Update supported platforms of Manual/Prerequisites page +* :hpx-pr:`6452` - Fix nvcc crashes in transform_stream.cu and synchronize.cu +* :hpx-pr:`6450` - Fix git tag name in Getting HPX page +* :hpx-pr:`6449` - LCI parcelport: add yield to potentially infinite retry loop +* :hpx-pr:`6447` - Use compressed ptr in schedulers when 128 atomics are not lockfree +* :hpx-pr:`6445` - Fix agas addressing cache +* :hpx-pr:`6444` - Update CTestConfig.cmake +* :hpx-pr:`6442` - Update CMakeLists.txt +* :hpx-pr:`6441` - Minor documentation fixes +* :hpx-pr:`6439` - Optimizing use of certain #includes +* :hpx-pr:`6438` - Bump jwlawson/actions-setup-cmake from 1.14 to 2.0 +* :hpx-pr:`6436` - Update docs +* :hpx-pr:`6435` - Parcel layer tweaks +* :hpx-pr:`6434` - improve termination detection: removing lock from critical path +* :hpx-pr:`6433` - Use shared mutex for resolve_locality procedure +* :hpx-pr:`6432` - Module cleanup up to level 30 +* :hpx-pr:`6429` - Making sure HPX_WITH_ASYNC_MPI is reported properly +* :hpx-pr:`6427` - Modifying CMakeLists to copy libhwloc-15.dll to the binary folder in Windows, independently +* :hpx-pr:`6425` - Fix macOS failing test +* :hpx-pr:`6424` - Adding option for downloading Boost using CMake FetchContent +* :hpx-pr:`6423` - Move adjacent_difference to numeric header file +* :hpx-pr:`6422` - Adding steal-half functionalities to work-requesting scheduler +* :hpx-pr:`6421` - Bump actions/checkout from 2 to 4 +* :hpx-pr:`6418` - Working around nvcc problems to use CTAD +* :hpx-pr:`6416` - Change run_as_os_thread deprecation forwarding due to hipcc compilation issue +* :hpx-pr:`6415` - Attempting to avoid segfault in OctoTiger during initialization +* :hpx-pr:`6413` - Always return outermost thread id +* :hpx-pr:`6411` - Minor refactoring and fixes to the LCI parcelport and pingpong_performance2 benchmark +* :hpx-pr:`6410` - Adding scope_xxx from library fundamentals TS v3 +* :hpx-pr:`6409` - Working around CUDA issue +* :hpx-pr:`6408` - Tightening up collective operation semantics +* :hpx-pr:`6406` - Working around ROCm compiler issue +* :hpx-pr:`6404` - Allow to disable use of [[no_unique_address]] attribute +* :hpx-pr:`6403` - Fixing copyright year +* :hpx-pr:`6402` - fix(lci pp): fix deadlocks with too many failed sends +* :hpx-pr:`6401` - fix(lci pp): fix the null_thread_id bug in the LCI parcelport +* :hpx-pr:`6400` - Fix the affinity setting bug when using LCI pp and multiple localities per node +* :hpx-pr:`6397` - Change API header titles and info +* :hpx-pr:`6396` - Making is_bitwise_serializable SFINAE-friendly +* :hpx-pr:`6395` - Adapt amount of collective testing +* :hpx-pr:`6394` - Adding option for installing Hwloc using CMake FetchContent +* :hpx-pr:`6393` - Optionally disable caching allocator +* :hpx-pr:`6391` - Cleaning up collective operations +* :hpx-pr:`6390` - Making function local constexpr variables non-static +* :hpx-pr:`6389` - Disable resolving hostnames if TCP is disabled +* :hpx-pr:`6387` - Need to break out of the loop when searching the suffixes. +* :hpx-pr:`6384` - Fixing allocation/deallocation mismatch in serialize_buffer +* :hpx-pr:`6383` - Enable fork_join_executor to handle return values from scheduled functions +* :hpx-pr:`6381` - Consistently treat conflicting parameters provided by executors and parameter objects +* :hpx-pr:`6380` - Fixing setting an annotation for an execution policy +* :hpx-pr:`6378` - Allowing to disable signal handlers +* :hpx-pr:`6377` - Fix gasnet-related test failures +* :hpx-pr:`6375` - Update LSU Jenkins with 2023-10 libraries +* :hpx-pr:`6374` - Investigate builder gasnet failure +* :hpx-pr:`6373` - Fixing communicator API, adding docs +* :hpx-pr:`6372` - Fix resource partitioner tests for small thread count +* :hpx-pr:`6371` - Fix jacobi omp examples. +* :hpx-pr:`6370` - improve one_size_heap_list: use rwlock to speedup the allocation/free +* :hpx-pr:`6369` - working issue with MPI_CC / CC conflict in automake +* :hpx-pr:`6368` - Making sure serialize_buffer properly destroys buffer, if needed. +* :hpx-pr:`6367` - Fix parallel relocation test +* :hpx-pr:`6364` - Relocation variants +* :hpx-pr:`6363` - Update the lci parcelport to use LCI v1.7.6 +* :hpx-pr:`6362` - Fixing compilation problems on 32 Linux systems +* :hpx-pr:`6360` - Fix broken links in docs: PDF, Single HTML page, Dependency report +* :hpx-pr:`6359` - Fix header file links in Public API page +* :hpx-pr:`6358` - Fix CMake find_library for HWLOC +* :hpx-pr:`6357` - Replace Custom Benchmarking Code with Nanobench +* :hpx-pr:`6356` - Fixed matrix multiplication example output +* :hpx-pr:`6354` - Fix broken links for header files in Public API page +* :hpx-pr:`6353` - Enable using std::reference_wrapper with executor parameters +* :hpx-pr:`6352` - Add Public distributed API documentation +* :hpx-pr:`6350` - Make coverage work with Jenkins Github Branch Source plugin +* :hpx-pr:`6349` - Moving hpx::threads::run_as_xxx to namespace hpx +* :hpx-pr:`6348` - Adding --exclusive to launching tests on rostam +* :hpx-pr:`6346` - changed chat link to discord +* :hpx-pr:`6344` - uninitialized_relocate w/ type_support primitive +* :hpx-pr:`6343` - Bump actions/checkout from 3 to 4 +* :hpx-pr:`6342` - Fix HPX-APEX cmake integration +* :hpx-pr:`6341` - Fix shared_future_continuation_order regression test +* :hpx-pr:`6340` - Log alive hpx threads on exit +* :hpx-pr:`6339` - Add coverage testing on Jenkins +* :hpx-pr:`6338` - Fixing HPX_CURRENT_SOURCE_LOCATION when std::source_location exists +* :hpx-pr:`6337` - Remove aurianer, biddisco, and msimberg from codeowners +* :hpx-pr:`6336` - More cleaning up for module levels 19-20 +* :hpx-pr:`6335` - Finalize the MPI docs of the Migration Guide +* :hpx-pr:`6332` - More fixes for CMake V3.27 +* :hpx-pr:`6330` - Adding basic logging to collective operations +* :hpx-pr:`6328` - Cleanup previous patch adapting to CMake V3.27 +* :hpx-pr:`6327` - Modernize modules in level 17 and 18 +* :hpx-pr:`6324` - P1144 Relocation primitives +* :hpx-pr:`6321` - Ensure hpx_main is a proper thread_function +* :hpx-pr:`6320` - Fixing cyclic dependencies in naming and agas modules +* :hpx-pr:`6319` - Generate git tag if needed but it is not available +* :hpx-pr:`6317` - Fixing linker problem on FreeBSD +* :hpx-pr:`6315` - acknowledge triv-rel and nothrow-rel types +* :hpx-pr:`6314` - Relocation algorithms Clean +* :hpx-pr:`6313` - Trivial relocation of c-v-ref-array types +* :hpx-pr:`6312` - Fixing warning/error +* :hpx-pr:`6311` - Adding executor parallel invoke CPOs +* :hpx-pr:`6310` - Define HPX_COMPUTE_CODE in builds with SYCL +* :hpx-pr:`6309` - Making sure changed number of cores is propagated to executor +* :hpx-pr:`6308` - openshmem-parcelport initial import +* :hpx-pr:`6306` - The hpxcxx script was broken such that it could only compile for _release +* :hpx-pr:`6305` - Adapting build system for CMake V3.27 +* :hpx-pr:`6304` - Fixing an integral type mismatch warning +* :hpx-pr:`6303` - omp for default vectorization +* :hpx-pr:`6301` - Add MPI migration guide +* :hpx-pr:`6294` - Add internal reference counting to semaphores +* :hpx-pr:`6286` - Simd helpers +* :hpx-pr:`6280` - Add TBB to HPX documentation in Migration Guide +* :hpx-pr:`6276` - Add dependabot.yml +* :hpx-pr:`6275` - Revert "Move dependabot.yml into correct directory" +* :hpx-pr:`6272` - set thread name for linux +* :hpx-pr:`6271` - Uninitialised algorithms, move using std::memcpy +* :hpx-pr:`6270` - Bump jwlawson/actions-setup-cmake from 1.9 to 1.14 +* :hpx-pr:`6269` - Bump actions/checkout from 2 to 3 +* :hpx-pr:`6268` - Move dependabot.yml into correct directory +* :hpx-pr:`6265` - Create dependabot.yml +* :hpx-pr:`6264` - hpx::is_trivially_relocatable trait implementation +* :hpx-pr:`6263` - Adding support for reading json configuration files for command line options +* :hpx-pr:`6249` - Implement the send immediate optimization for the MPI parcelport. +* :hpx-pr:`6237` - Improve compilation performance +* :hpx-pr:`6234` - Adding release notes page for next release +* :hpx-pr:`6233` - Moving is_relocatable to namespace hpx +* :hpx-pr:`6230` - gasnet based parcelport +* :hpx-pr:`6226` - Re-enable dependency on segmented algorithms on CircleCI +* :hpx-pr:`6220` - Add execution on +* :hpx-pr:`6212` - Initial trait definition for `relocatable` +* :hpx-pr:`6199` - added support for unseq, par_unseq for hpx::make_heap algorithm +* :hpx-pr:`6173` - C++ modules +* :hpx-pr:`6122` - Add Module support +* :hpx-pr:`6099` - Futures attempt to execute threads directly if those have not started executing +* :hpx-pr:`6050` - Investigating partitioned_vector problems +* :hpx-pr:`5988` - Adding CI configuration for DGX-A100 at LSU +* :hpx-pr:`5910` - Improve MPI initialization +* :hpx-pr:`5845` - Adding local work requesting scheduler that is based on message passing internally + diff --git a/tools/hpxdep/CMakeLists.txt b/tools/hpxdep/CMakeLists.txt index dfaed7ce0317..facbda38f48f 100644 --- a/tools/hpxdep/CMakeLists.txt +++ b/tools/hpxdep/CMakeLists.txt @@ -25,7 +25,7 @@ elseif(HPX_WITH_GIT_BRANCH) else() # HPX_VERSION is always available, use as fallback set(HPX_DEPREPORT_VERSION "latest") - set(HPX_DEPREPORT_CAPTION "Version ${HPX_VERSION}${HPX_VERSION_TAG}") + set(HPX_DEPREPORT_CAPTION "Version ${HPX_VERSION_FULL}") endif() # cmake-format: off