mirror of
https://github.com/HDFGroup/hdf5.git
synced 2026-09-25 04:09:44 +03:00
Added 3 new functions to support this: H5TSset_internal_threads(), H5Pset_io_threads(), and H5Pget_io_threads(). This feature internally parallelizes read operations on chunked datasets. H5TSset_internal_threads() is used to enable the feature globally, while H5Pset_io_threads() can be used to disable the feature on a per-operation basis. These functions are only available when the library is configured with HDF5_ENABLE_CONCURRENCY=ON. When performing an internally threaded read, the library will concurrently read from disk, unfilter, and scatter to memory all chunks in a read operation on a chunked dataset. Currently each of these sub-operations is serialized (protected by a mutex), so there is not yet likely to be any performance improvement.
80 lines
3.8 KiB
CMake
80 lines
3.8 KiB
CMake
cmake_minimum_required (VERSION 3.26)
|
|
project (HDF5_DOXYGEN C)
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Option to build documentation
|
|
#-----------------------------------------------------------------------------
|
|
string (TIMESTAMP HDF5_PACKAGE_DATE_STRING "%Y-%m-%d")
|
|
if (DOXYGEN_FOUND)
|
|
set (DOXYGEN_PACKAGE ${HDF5_PACKAGE_NAME})
|
|
# For release builds use the version from the package
|
|
# set (DOXYGEN_VERSION_STRING ${HDF5_PACKAGE_VERSION_STRING})
|
|
set (DOXYGEN_VERSION_STRING "Last Updated on ${HDF5_PACKAGE_DATE_STRING}")
|
|
set (DOXYGEN_DIR ${HDF5_DOXYGEN_DIR})
|
|
set (DOXYGEN_INCLUDE_ALIASES_PATH ${HDF5_DOXYGEN_DIR})
|
|
set (DOXYGEN_INCLUDE_ALIASES aliases)
|
|
set (DOXYGEN_VERBATIM_VARS DOXYGEN_INCLUDE_ALIASES)
|
|
set (DOXYGEN_PROJECT_LOGO ${HDF5_DOXYGEN_DIR}/img/HDFG-logo.png)
|
|
set (DOXYGEN_PROJECT_BRIEF "The HDF5 Field Guide")
|
|
set (DOXYGEN_INPUT_DIRECTORY "${HDF5_SOURCE_DIR} ${HDF5_DOXYGEN_DIR}/dox ${HDF5_GENERATED_SOURCE_DIR}")
|
|
set (DOXYGEN_OPTIMIZE_OUTPUT_FOR_C YES)
|
|
set (DOXYGEN_MACRO_EXPANSION YES)
|
|
set (DOXYGEN_OUTPUT_DIRECTORY ${HDF5_BINARY_DIR}/hdf5lib_docs)
|
|
set (DOXYGEN_EXAMPLES_DIRECTORY "${HDF5_DOXYGEN_DIR}/dox/cookbook ${HDF5_DOXYGEN_DIR}/examples ${HDF5_SRC_DIR} ${HDF5_SOURCE_DIR}/docs ${HDF5_TEST_SRC_DIR}")
|
|
set (DOXYGEN_LAYOUT_FILE ${HDF5_DOXYGEN_DIR}/hdf5doxy_layout.xml)
|
|
set (DOXYGEN_HTML_HEADER ${HDF5_DOXYGEN_DIR}/hdf5_header.html)
|
|
set (DOXYGEN_HTML_FOOTER ${HDF5_DOXYGEN_DIR}/hdf5_footer.html)
|
|
set (DOXYGEN_HTML_EXTRA_STYLESHEET "${HDF5_DOXYGEN_DIR}/hdf5doxy.css ${HDF5_DOXYGEN_DIR}/doxygen-awesome.css")
|
|
set (DOXYGEN_HTML_EXTRA_FILES "${HDF5_DOXYGEN_DIR}/hdf5_navtree_hacks.js ${HDF5_DOXYGEN_DIR}/doxygen-awesome-tabs.js")
|
|
set (DOXYGEN_TAG_FILE ${DOXYGEN_OUTPUT_DIRECTORY}/html/hdf5.tag)
|
|
set (DOXYGEN_SERVER_BASED_SEARCH NO)
|
|
set (DOXYGEN_EXTERNAL_SEARCH NO)
|
|
set (DOXYGEN_SEARCHENGINE_URL)
|
|
set (DOXYGEN_STRIP_FROM_PATH ${HDF5_SOURCE_DIR})
|
|
set (DOXYGEN_STRIP_FROM_INC_PATH ${HDF5_SOURCE_DIR})
|
|
# Versioned API macros are added to PREDEFINED to give Doxygen a fixed
|
|
# expansion and prevent it from discovering the #defines in H5version.h,
|
|
# which otherwise causes "multiple @param documentation sections" warnings
|
|
# when the macro documentation (\def) and the function documentation both
|
|
# get associated with the same underlying function.
|
|
#
|
|
# The versioned API macros are auto-generated from src/H5vers.txt by the
|
|
# bin/make_vers script, which creates docs/doxygen/H5version_doxygen.cmake.
|
|
# This ensures the Doxygen configuration stays synchronized with the
|
|
# actual default versions defined in src/H5version.h.
|
|
set (_doxygen_predefined_entries
|
|
H5_HAVE_CONCURRENCY
|
|
H5_HAVE_DIRECT
|
|
H5_HAVE_LIBHDFS
|
|
H5_HAVE_MAP_API
|
|
H5_HAVE_PARALLEL
|
|
H5_HAVE_ROS3_VFD
|
|
H5_DOXYGEN
|
|
H5_HAVE_SUBFILING_VFD
|
|
H5_HAVE_IOC_VFD
|
|
H5_HAVE_MIRROR_VFD
|
|
"H5std_string=std::string"
|
|
"H5G_link_t=H5L_type_t"
|
|
)
|
|
# Load auto-generated versioned API macros from docs/doxygen/H5version_doxygen.cmake
|
|
include(${HDF5_DOXYGEN_DIR}/H5version_doxygen.cmake)
|
|
list (JOIN _doxygen_predefined_entries " " DOXYGEN_PREDEFINED)
|
|
set (DOXYGEN_WARN_AS_ERROR ${HDF5_DOXY_WARNINGS})
|
|
|
|
# This configure and individual custom targets work together
|
|
# Replace variables inside @@ with the current values
|
|
configure_file (${HDF5_DOXYGEN_DIR}/Doxyfile.in ${HDF5_BINARY_DIR}/Doxyfile @ONLY)
|
|
|
|
# The hdf5.tag file is generated inside hdf5lib_docs/html (see
|
|
# DOXYGEN_TAG_FILE above), so this DIRECTORY install also installs it to
|
|
# ${HDF5_INSTALL_DOC_DIR}/html/hdf5.tag. Keeping the tag file within the html
|
|
# output directory also ensures it is captured by the docs-doxygen CI artifact
|
|
# that publishes the documentation (and hdf5.tag) to S3.
|
|
install (
|
|
DIRECTORY ${DOXYGEN_OUTPUT_DIRECTORY}/html
|
|
DESTINATION ${HDF5_INSTALL_DOC_DIR}
|
|
COMPONENT hdfdocuments
|
|
)
|
|
|
|
endif ()
|