From 2cf7e10e2eaa282b97203d310e6bb47553f246eb Mon Sep 17 00:00:00 2001 From: David Gardner <96306125+dagardner-nv@users.noreply.github.com> Date: Mon, 22 Aug 2022 09:34:33 -0700 Subject: [PATCH] IWYU CI integration for Morpheus (#287) * Add IWYU check to CI * Fix includes to pass * Rename `deserialization.hpp` to `deserialize.hpp` such that the filename matches the associated cpp & python file names. This also causes IWYU to identify the header as being associated. Authors: - David Gardner (https://github.com/dagardner-nv) Approvers: - Michael Demoret (https://github.com/mdemoret-nv) URL: https://github.com/nv-morpheus/Morpheus/pull/287 --- CMakeLists.txt | 4 + ci/iwyu/mappings.imp | 63 +++++++++- ci/scripts/cpp_checks.sh | 2 +- ci/scripts/jenkins/checks.sh | 20 +++- ci/scripts/run_iwyu_for_ci.sh | 2 +- cmake/run_iwyu.sh.in | 19 +++ cmake/setup_iwyu.cmake | 61 ++++++++++ docker/conda/environments/cuda11.5_ci.yml | 3 + .../_lib/cmake/libraries/cuda_utils.cmake | 34 +++++- .../_lib/cmake/libraries/cudf_helpers.cmake | 11 ++ .../_lib/include/morpheus/io/serializers.hpp | 1 - .../messages/memory/inference_memory.hpp | 4 - .../messages/memory/inference_memory_fil.hpp | 7 +- .../messages/memory/inference_memory_nlp.hpp | 2 +- .../messages/memory/response_memory.hpp | 5 +- .../messages/memory/response_memory_probs.hpp | 3 - .../messages/memory/tensor_memory.hpp | 8 +- .../_lib/include/morpheus/messages/meta.hpp | 5 +- .../_lib/include/morpheus/messages/multi.hpp | 11 +- .../morpheus/messages/multi_inference.hpp | 3 +- .../morpheus/messages/multi_inference_fil.hpp | 5 +- .../morpheus/messages/multi_inference_nlp.hpp | 6 +- .../morpheus/messages/multi_response.hpp | 5 +- .../messages/multi_response_probs.hpp | 3 +- .../include/morpheus/objects/data_table.hpp | 52 ++++----- .../include/morpheus/objects/fiber_queue.hpp | 109 +++++++++--------- .../morpheus/objects/python_data_table.hpp | 4 +- .../include/morpheus/objects/rmm_tensor.hpp | 6 +- .../include/morpheus/objects/table_info.hpp | 3 + .../_lib/include/morpheus/objects/tensor.hpp | 8 +- .../morpheus/objects/tensor_object.hpp | 7 +- .../morpheus/objects/wrapped_tensor.hpp | 8 -- .../morpheus/stages/add_classification.hpp | 8 ++ .../include/morpheus/stages/add_scores.hpp | 8 ++ .../{deserialization.hpp => deserialize.hpp} | 7 ++ .../include/morpheus/stages/file_source.hpp | 6 + .../morpheus/stages/filter_detection.hpp | 8 ++ .../include/morpheus/stages/kafka_source.hpp | 9 +- .../morpheus/stages/preprocess_fil.hpp | 6 + .../morpheus/stages/preprocess_nlp.hpp | 7 ++ .../include/morpheus/stages/serialize.hpp | 9 +- .../morpheus/stages/triton_inference.hpp | 7 ++ .../include/morpheus/stages/write_to_file.hpp | 9 +- .../include/morpheus/utilities/cudf_util.hpp | 4 + .../include/morpheus/utilities/table_util.hpp | 12 +- .../morpheus/utilities/tensor_util.hpp | 3 +- .../morpheus/utilities/type_util_detail.hpp | 11 +- morpheus/_lib/src/io/serializers.cpp | 9 +- .../src/messages/memory/inference_memory.cpp | 4 +- .../messages/memory/inference_memory_fil.cpp | 6 +- .../messages/memory/inference_memory_nlp.cpp | 7 +- .../src/messages/memory/response_memory.cpp | 4 +- .../messages/memory/response_memory_probs.cpp | 5 +- .../src/messages/memory/tensor_memory.cpp | 6 - morpheus/_lib/src/messages/meta.cpp | 1 - morpheus/_lib/src/messages/multi.cpp | 14 ++- .../_lib/src/messages/multi_inference.cpp | 5 +- .../_lib/src/messages/multi_inference_fil.cpp | 2 - .../_lib/src/messages/multi_inference_nlp.cpp | 2 - morpheus/_lib/src/messages/multi_response.cpp | 9 +- .../src/messages/multi_response_probs.cpp | 2 - morpheus/_lib/src/objects/dev_mem_info.cpp | 2 + morpheus/_lib/src/objects/fiber_queue.cpp | 6 +- morpheus/_lib/src/objects/file_types.cpp | 1 + .../_lib/src/objects/python_data_table.cpp | 3 +- morpheus/_lib/src/objects/rmm_tensor.cpp | 13 ++- morpheus/_lib/src/objects/table_info.cpp | 13 ++- morpheus/_lib/src/objects/tensor.cpp | 3 + morpheus/_lib/src/objects/tensor_object.cpp | 1 - morpheus/_lib/src/objects/wrapped_tensor.cpp | 4 +- morpheus/_lib/src/python_modules/common.cpp | 1 + morpheus/_lib/src/python_modules/messages.cpp | 10 +- morpheus/_lib/src/python_modules/stages.cpp | 8 +- .../_lib/src/stages/add_classification.cpp | 19 ++- morpheus/_lib/src/stages/add_scores.cpp | 27 ++++- morpheus/_lib/src/stages/deserialize.cpp | 6 +- morpheus/_lib/src/stages/file_source.cpp | 18 ++- morpheus/_lib/src/stages/filter_detection.cpp | 21 +++- morpheus/_lib/src/stages/kafka_source.cpp | 16 ++- morpheus/_lib/src/stages/preprocess_fil.cpp | 22 +++- morpheus/_lib/src/stages/preprocess_nlp.cpp | 12 +- morpheus/_lib/src/stages/serialize.cpp | 9 +- morpheus/_lib/src/stages/triton_inference.cpp | 19 ++- morpheus/_lib/src/stages/write_to_file.cpp | 12 +- morpheus/_lib/src/utilities/cudf_util.cpp | 7 +- morpheus/_lib/src/utilities/cupy_util.cpp | 13 ++- morpheus/_lib/src/utilities/table_util.cpp | 4 +- morpheus/_lib/src/utilities/tensor_util.cpp | 1 - morpheus/_lib/tests/test_matx_util.cpp | 8 ++ morpheus/_lib/tests/test_morpheus.cpp | 2 +- morpheus/_lib/tests/test_multi_slices.cpp | 3 +- morpheus/_lib/tests/test_tensor.cpp | 10 +- morpheus/_lib/tests/test_type_util_detail.cpp | 3 + 93 files changed, 699 insertions(+), 272 deletions(-) create mode 100755 cmake/run_iwyu.sh.in create mode 100644 cmake/setup_iwyu.cmake rename morpheus/_lib/include/morpheus/stages/{deserialization.hpp => deserialize.hpp} (86%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 24ef2b9cf3..2f0cf4014a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,6 +29,7 @@ option(MORPHEUS_USE_CCACHE "Enable caching compilation results with ccache" OFF) option(MORPHEUS_USE_CLANG_TIDY "Enable running clang-tidy as part of the build process" OFF) option(MORPHEUS_USE_CONDA "Enables finding dependencies via conda instead of vcpkg. Note: This will disable vcpkg. All dependencies must be installed first in the conda environment" OFF) +option(MORPHEUS_USE_IWYU "Enable running include-what-you-use as part of the build process" OFF) set(MORPHEUS_PY_INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/wheel" CACHE STRING "Location to install the python directory") set(MORPHEUS_CACHE_DIR "${CMAKE_SOURCE_DIR}/.cache" CACHE PATH "Directory to contain all CPM and CCache data") @@ -74,6 +75,9 @@ include(cmake/dependencies.cmake) # - Post dependencies setup -------- include(cmake/setup_compiler.cmake) +# Setup IWYU if enabled +include(cmake/setup_iwyu.cmake) + # To make it easier for CI to find output files, set the default executable suffix to .x if not set if("${CMAKE_EXECUTABLE_SUFFIX}" STREQUAL "") set(CMAKE_EXECUTABLE_SUFFIX ".x") diff --git a/ci/iwyu/mappings.imp b/ci/iwyu/mappings.imp index 24caf7c04b..2fa46c3a69 100644 --- a/ci/iwyu/mappings.imp +++ b/ci/iwyu/mappings.imp @@ -37,11 +37,55 @@ # Protobuf { "include": [ "", private, "", "public" ] }, +# rxcpp +# Hide includes that are exported by +{ "include": [ "\"rx-includes.hpp\"", private, "", "public" ] }, +{ "include": [ "", private, "", "public" ] }, +{ "include": [ "\"rxcpp/rx-util.hpp\"", private, "", "public" ] }, +{ "include": [ "", private, "", "public" ] }, +{ "include": [ "\"rxcpp/rx-predef.hpp\"", private, "", "public" ] }, +{ "include": [ "", private, "", "public" ] }, +{ "include": [ "\"rxcpp/rx-subscription.hpp\"", private, "", "public" ] }, +{ "include": [ "", private, "", "public" ] }, +{ "include": [ "", private, "", "public" ] }, +{ "include": [ "", private, "", "public" ] }, +{ "include": [ "\"rxcpp/rx-observer.hpp\"", private, "", "public" ] }, +{ "include": [ "", private, "", "public" ] }, +{ "include": [ "", private, "", "public" ] }, +{ "include": [ "", private, "", "public" ] }, +{ "include": [ "\"rxcpp/rx-scheduler.hpp\"", private, "", "public" ] }, +{ "include": [ "", private, "", "public" ] }, +{ "include": [ "\"rxcpp/rx-subscriber.hpp\"", private, "", "public" ] }, +{ "include": [ "", private, "", "public" ] }, +{ "include": [ "", private, "", "public" ] }, +{ "include": [ "\"rxcpp/rx-notification.hpp\"", private, "", "public" ] }, +{ "include": [ "", private, "", "public" ] }, +{ "include": [ "\"rxcpp/rx-coordination.hpp\"", private, "", "public" ] }, +{ "include": [ "", private, "", "public" ] }, +{ "include": [ "\"rxcpp/rx-sources.hpp\"", private, "", "public" ] }, +{ "include": [ "", private, "", "public" ] }, +{ "include": [ "\"rxcpp/rx-subjects.hpp\"", private, "", "public" ] }, +{ "include": [ "", private, "", "public" ] }, +{ "include": [ "\"rxcpp/rx-operators.hpp\"", private, "", "public" ] }, +{ "include": [ "", private, "", "public" ] }, +{ "include": [ "\"rxcpp/rx-observable.hpp\"", private, "", "public" ] }, +{ "include": [ "", private, "", "public" ] }, +{ "include": [ "\"rxcpp/rx-connectable_observable.hpp\"", private, "", "public" ] }, +{ "include": [ "", private, "", "public" ] }, +{ "include": [ "\"rxcpp/rx-grouped_observable.hpp\"", private, "", "public" ] }, +{ "include": [ "", private, "", "public" ] }, + +#Triton Client +{ "include": ["\"common.h\"", "private", "", "public"] }, + ## Symbol mappings # stdlib { "symbol": ["__gnu_cxx::__enable_if::__type", "private", "", "public"] }, { "symbol": ["std::__success_type>>::type" , "private", "", "public"] }, { "symbol": ["__cxxabiv1::__forced_unwind", "private", "", "public"] }, +{ "symbol": ["std::filesystem", "private", "", "public"] }, +{ "symbol": ["size_t", , "private", "", "public"] }, +{ "symbol": ["std::size_t", , "private", "", "public"] }, # boost { "symbol": ["__forced_unwind", "private", "", "public"] }, @@ -66,20 +110,27 @@ { "symbol": ["pybind11", "private", "", "public"] }, { "symbol": ["pybind11", "private", "", "public"] }, +{ "symbol": ["_Py_IsFinalizing", "private", "", "public"] }, { "symbol": ["PYBIND11_MODULE", "private", "", "public"] }, -{ "symbol": ["PySequence_GetItem", "private", "", "public"] }, { "symbol": ["PyExc_ImportError", "private", "", "public"] }, +{ "symbol": ["PyErr_SetNone", "private", "", "public"] }, { "symbol": ["PyErr_SetObject", "private", "", "public"] }, { "symbol": ["PyExc_StopIteration", "private", "", "public"] }, -{ "symbol": ["_Py_IsFinalizing", "private", "", "public"] }, -{ "symbol": ["pybind11::detail::str_attr_accessor", "private", "", "public"] }, +{ "symbol": ["PyGILState_Check", "private", "", "public"] }, +{ "symbol": ["PyObject", "private", "", "public"] }, +{ "symbol": ["PySequence_GetItem", "private", "", "public"] }, +{ "symbol": ["pybind11::arg", "private", "", "public"] }, +{ "symbol": ["pybind11::detail::get_type_info", "private", "", "public"] }, +{ "symbol": ["pybind11::detail::key_error", "private", "", "public"] }, { "symbol": ["pybind11::detail::overload_cast_impl", "private", "", "public"] }, +{ "symbol": ["pybind11::detail::str_attr_accessor", "private", "", "public"] }, +{ "symbol": ["pybind11::key_error", "private", "", "public"] }, { "symbol": ["pybind11::overload_cast", "private", "", "public"] }, -{ "symbol": ["pybind11::stop_iteration", "private", "", "public"] }, { "symbol": ["pybind11::return_value_policy", "private", "", "public"] }, +{ "symbol": ["pybind11::return_value_policy::move", "private", "", "public"] }, { "symbol": ["pybind11::return_value_policy::reference_internal", "private", "", "public"] }, -{ "symbol": ["pybind11::detail::get_type_info", "private", "", "public"] }, -{ "symbol": ["PyGILState_Check", "private", "", "public"] }, +{ "symbol": ["pybind11::size_t", "private", "", "public"] }, +{ "symbol": ["pybind11::stop_iteration", "private", "", "public"] }, # spdlog { "symbol": ["spdlog::details::file_helper::~file_helper", "private", "", "public"] }, diff --git a/ci/scripts/cpp_checks.sh b/ci/scripts/cpp_checks.sh index e8ca347c38..4c8bca71e6 100755 --- a/ci/scripts/cpp_checks.sh +++ b/ci/scripts/cpp_checks.sh @@ -80,7 +80,7 @@ if [[ -n "${MORPHEUS_MODIFIED_FILES}" ]]; then # Include What You Use if [[ "${SKIP_IWYU}" == "" ]]; then - IWYU_DIRS="benchmarks examples python src tools" + IWYU_DIRS="morpheus" NUM_PROC=$(get_num_proc) IWYU_OUTPUT=`${IWYU_TOOL} -p ${BUILD_DIR} -j ${NUM_PROC} ${IWYU_DIRS} 2>&1` IWYU_RETVAL=$? diff --git a/ci/scripts/jenkins/checks.sh b/ci/scripts/jenkins/checks.sh index 076fadde17..c699f59ed4 100755 --- a/ci/scripts/jenkins/checks.sh +++ b/ci/scripts/jenkins/checks.sh @@ -17,11 +17,12 @@ set -e source ${WORKSPACE}/ci/scripts/jenkins/common.sh +export IWYU_DIR="${WORKSPACE_TMP}/iwyu" fetch_base_branch gpuci_logger "Creating conda env" -rm -rf ${MORPHEUS_ROOT}/.cache/ ${MORPHEUS_ROOT}/build/ +rm -rf ${MORPHEUS_ROOT}/.cache/ ${MORPHEUS_ROOT}/build/ ${IWYU_DIR} conda config --add pkgs_dirs /opt/conda/pkgs conda config --env --add channels conda-forge conda config --env --set channel_alias ${CONDA_CHANNEL_ALIAS:-"https://conda.anaconda.org"} @@ -33,6 +34,21 @@ mamba env update -q -f ${MORPHEUS_ROOT}/docker/conda/environments/cuda${CUDA_VER show_conda_info +gpuci_logger "Installing IWYU" +git clone https://github.com/include-what-you-use/include-what-you-use.git ${IWYU_DIR} +pushd ${IWYU_DIR} +git checkout clang_12 +cmake -G Ninja \ + -DCMAKE_PREFIX_PATH=$(llvm-config --cmakedir) \ + -DCMAKE_C_COMPILER=$(which clang) \ + -DCMAKE_CXX_COMPILER=$(which clang++) \ + -DCMAKE_INSTALL_PREFIX=${CONDA_PREFIX} \ + . + +cmake --build . --parallel ${PARALLEL_LEVEL} --target install + +popd + gpuci_logger "Runing Python style checks" ${MORPHEUS_ROOT}/ci/scripts/python_checks.sh @@ -46,7 +62,7 @@ gpuci_logger "sccache usage for source build:" sccache --show-stats gpuci_logger "Runing C++ style checks" -SKIP_IWYU=1 ${MORPHEUS_ROOT}/ci/scripts/cpp_checks.sh +${MORPHEUS_ROOT}/ci/scripts/cpp_checks.sh gpuci_logger "Checking copyright headers" python ${MORPHEUS_ROOT}/ci/scripts/copyright.py --verify-apache-v2 --git-diff-commits ${CHANGE_TARGET} ${GIT_COMMIT} diff --git a/ci/scripts/run_iwyu_for_ci.sh b/ci/scripts/run_iwyu_for_ci.sh index b32b7798ab..d92a960a10 100755 --- a/ci/scripts/run_iwyu_for_ci.sh +++ b/ci/scripts/run_iwyu_for_ci.sh @@ -25,5 +25,5 @@ ${IWYU_TOOL_PY:-iwyu_tool.py} "$@" -- \ -Xiwyu --no_fwd_decls \ -Xiwyu --quoted_includes_first \ -Xiwyu --cxx17ns \ - -Xiwyu --no_comments \ + -Xiwyu --max_line_length=120 \ --driver-mode=g++ diff --git a/cmake/run_iwyu.sh.in b/cmake/run_iwyu.sh.in new file mode 100755 index 0000000000..b880aa3f60 --- /dev/null +++ b/cmake/run_iwyu.sh.in @@ -0,0 +1,19 @@ +#!/bin/bash +# SPDX-FileCopyrightText: Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Allows running ccache with options inside of CMake. CMake does not work well +# with setting variables before calling a command +${MORPHEUS_IWYU_PROGRAM} ${MORPHEUS_IWYU_OPTIONS} "$@" diff --git a/cmake/setup_iwyu.cmake b/cmake/setup_iwyu.cmake new file mode 100644 index 0000000000..4844e5828a --- /dev/null +++ b/cmake/setup_iwyu.cmake @@ -0,0 +1,61 @@ +#============================================================================= +# SPDX-FileCopyrightText: Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#============================================================================= + + +function(configure_iwyu) + list(APPEND CMAKE_MESSAGE_CONTEXT "iwyu") + + set(MORPHEUS_IWYU_VERBOSITY "1" CACHE STRING "Set verbosity level for include-what-you-use, 1 is default, 1 only shows recomendations and 11+ prints everything") + + find_program(MORPHEUS_IWYU_PROGRAM "include-what-you-use") + + if(MORPHEUS_IWYU_PROGRAM) + set(MORPHEUS_IWYU_OPTIONS + -Xiwyu; --mapping_file=${PROJECT_SOURCE_DIR}/ci/iwyu/mappings.imp; + -Xiwyu; --max_line_length=120; + -Xiwyu; --verbose=${MORPHEUS_IWYU_VERBOSITY}; + -Xiwyu; --no_fwd_decls; + -Xiwyu; --quoted_includes_first; + -Xiwyu; --cxx17ns;) + + # Convert these to space separated arguments + string(REPLACE ";" " " MORPHEUS_IWYU_OPTIONS "${MORPHEUS_IWYU_OPTIONS}") + + message(STATUS "Enabling include-what-you-use for Morpheus targets") + + set(IWYU_WRAPPER "${CMAKE_CURRENT_BINARY_DIR}/run_iwyu.sh") + + # Make a ccache runner file with the necessary settings. ccache must already be configured + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/run_iwyu.sh.in" "${IWYU_WRAPPER}") + + if(MORPHEUS_USE_CCACHE) + set(CMAKE_C_INCLUDE_WHAT_YOU_USE "${CMAKE_CURRENT_BINARY_DIR}/run_ccache_prefix.sh;${IWYU_WRAPPER};${CMAKE_C_COMPILER}" PARENT_SCOPE) + set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE "${CMAKE_CURRENT_BINARY_DIR}/run_ccache_prefix.sh;${IWYU_WRAPPER};${CMAKE_CXX_COMPILER}" PARENT_SCOPE) + else() + set(CMAKE_C_INCLUDE_WHAT_YOU_USE "${IWYU_WRAPPER}" PARENT_SCOPE) + set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE "${IWYU_WRAPPER}" PARENT_SCOPE) + endif() + + else() + message(WARNING "IWYU option MORPHEUS_USE_IWYU is enabled but the include-what-you-use was not found. Check iwyu installation and add the iwyu bin dir to your PATH variable.") + endif(MORPHEUS_IWYU_PROGRAM) +endfunction() + +# Configure IWYU if requested +if(MORPHEUS_USE_IWYU) + configure_iwyu() +endif(MORPHEUS_USE_IWYU) diff --git a/docker/conda/environments/cuda11.5_ci.yml b/docker/conda/environments/cuda11.5_ci.yml index 267453a1d8..1ac61799bc 100644 --- a/docker/conda/environments/cuda11.5_ci.yml +++ b/docker/conda/environments/cuda11.5_ci.yml @@ -21,9 +21,12 @@ dependencies: - bash=5.1.16 # bash >=4.4 is necessary for morpheus cli auto-complete tests to pass. - clang=12 - clang-tools=12 + - clangdev=12 + - clangxx=12 - conda-pack=0.7 - git-lfs=3.2 - git>=2.35.3 # Needed for wildcards on safe.directory + - llvmdev=12 - pip - pkg-config=0.29 - sccache=0.3 diff --git a/morpheus/_lib/cmake/libraries/cuda_utils.cmake b/morpheus/_lib/cmake/libraries/cuda_utils.cmake index 0708506a09..8ee728c8c6 100644 --- a/morpheus/_lib/cmake/libraries/cuda_utils.cmake +++ b/morpheus/_lib/cmake/libraries/cuda_utils.cmake @@ -16,15 +16,45 @@ list(APPEND CMAKE_MESSAGE_CONTEXT "cuda_utils") find_package(pybind11 REQUIRED) +# Place the two cuda sources in their own target and disable IWYU for that target. +add_library(cuda_utils_objs +OBJECT + ${MORPHEUS_LIB_ROOT}/src/utilities/matx_util.cu + ${MORPHEUS_LIB_ROOT}/src/utilities/type_util.cu +) + + +set_target_properties( + cuda_utils_objs + PROPERTIES + C_INCLUDE_WHAT_YOU_USE "" + CXX_INCLUDE_WHAT_YOU_USE "" + EXPORT_COMPILE_COMMANDS OFF +) + +target_include_directories(cuda_utils_objs + PUBLIC + "${MORPHEUS_LIB_ROOT}/include" + cudf::cudf + matx::matx + srf::pysrf +) + +target_link_libraries(cuda_utils_objs + PUBLIC + cudf::cudf + matx::matx + srf::pysrf +) + add_library(cuda_utils SHARED + $ ${MORPHEUS_LIB_ROOT}/src/objects/dev_mem_info.cpp ${MORPHEUS_LIB_ROOT}/src/objects/table_info.cpp ${MORPHEUS_LIB_ROOT}/src/objects/tensor_object.cpp - ${MORPHEUS_LIB_ROOT}/src/utilities/matx_util.cu ${MORPHEUS_LIB_ROOT}/src/utilities/tensor_util.cpp ${MORPHEUS_LIB_ROOT}/src/utilities/type_util_detail.cpp - ${MORPHEUS_LIB_ROOT}/src/utilities/type_util.cu ) target_include_directories(cuda_utils diff --git a/morpheus/_lib/cmake/libraries/cudf_helpers.cmake b/morpheus/_lib/cmake/libraries/cudf_helpers.cmake index f95dd47e08..ffe4b965fc 100644 --- a/morpheus/_lib/cmake/libraries/cudf_helpers.cmake +++ b/morpheus/_lib/cmake/libraries/cudf_helpers.cmake @@ -33,6 +33,17 @@ morpheus_add_cython_libraries( # The `style_checks` target allows these to be generated without a full build of Morpheus. add_dependencies(style_checks ${cudf_helpers_target}) + +# Disable clang-tidy and IWYU for cython generated code +set_target_properties( + ${cudf_helpers_target} + PROPERTIES + CXX_CLANG_TIDY "" + C_INCLUDE_WHAT_YOU_USE "" + CXX_INCLUDE_WHAT_YOU_USE "" + EXPORT_COMPILE_COMMANDS OFF +) + if (MORPHEUS_PYTHON_INPLACE_BUILD) inplace_build_copy(${cudf_helpers_target} ${MORPHEUS_LIB_ROOT}) endif() diff --git a/morpheus/_lib/include/morpheus/io/serializers.hpp b/morpheus/_lib/include/morpheus/io/serializers.hpp index 2a8f7ee265..79f698d911 100644 --- a/morpheus/_lib/include/morpheus/io/serializers.hpp +++ b/morpheus/_lib/include/morpheus/io/serializers.hpp @@ -21,7 +21,6 @@ #include #include -#include namespace morpheus { diff --git a/morpheus/_lib/include/morpheus/messages/memory/inference_memory.hpp b/morpheus/_lib/include/morpheus/messages/memory/inference_memory.hpp index 7a92268748..966d225c90 100644 --- a/morpheus/_lib/include/morpheus/messages/memory/inference_memory.hpp +++ b/morpheus/_lib/include/morpheus/messages/memory/inference_memory.hpp @@ -18,15 +18,11 @@ #pragma once #include "morpheus/messages/memory/tensor_memory.hpp" -#include "morpheus/objects/tensor.hpp" -#include "morpheus/objects/tensor_object.hpp" #include -#include #include namespace morpheus { - /** * TODO(Documentation) */ diff --git a/morpheus/_lib/include/morpheus/messages/memory/inference_memory_fil.hpp b/morpheus/_lib/include/morpheus/messages/memory/inference_memory_fil.hpp index 73618942e9..8f9b979e3c 100644 --- a/morpheus/_lib/include/morpheus/messages/memory/inference_memory_fil.hpp +++ b/morpheus/_lib/include/morpheus/messages/memory/inference_memory_fil.hpp @@ -18,15 +18,12 @@ #pragma once #include "morpheus/messages/memory/inference_memory.hpp" -#include "morpheus/objects/python_data_table.hpp" -#include "morpheus/objects/tensor.hpp" #include "morpheus/objects/tensor_object.hpp" -#include -#include +#include // for size_type +#include // for object #include -#include #include #include diff --git a/morpheus/_lib/include/morpheus/messages/memory/inference_memory_nlp.hpp b/morpheus/_lib/include/morpheus/messages/memory/inference_memory_nlp.hpp index eb3713903f..522d1bed57 100644 --- a/morpheus/_lib/include/morpheus/messages/memory/inference_memory_nlp.hpp +++ b/morpheus/_lib/include/morpheus/messages/memory/inference_memory_nlp.hpp @@ -18,9 +18,9 @@ #pragma once #include "morpheus/messages/memory/inference_memory.hpp" -#include "morpheus/objects/tensor.hpp" #include "morpheus/objects/tensor_object.hpp" +#include // for size_type #include #include diff --git a/morpheus/_lib/include/morpheus/messages/memory/response_memory.hpp b/morpheus/_lib/include/morpheus/messages/memory/response_memory.hpp index b7a6778763..535130ebc4 100644 --- a/morpheus/_lib/include/morpheus/messages/memory/response_memory.hpp +++ b/morpheus/_lib/include/morpheus/messages/memory/response_memory.hpp @@ -18,13 +18,12 @@ #pragma once #include "morpheus/messages/memory/tensor_memory.hpp" -#include "morpheus/objects/tensor.hpp" +#include "morpheus/objects/tensor_object.hpp" // for TensorObject -#include #include +#include // for size_t #include -#include namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/include/morpheus/messages/memory/response_memory_probs.hpp b/morpheus/_lib/include/morpheus/messages/memory/response_memory_probs.hpp index 765ce5479b..62c716e952 100644 --- a/morpheus/_lib/include/morpheus/messages/memory/response_memory_probs.hpp +++ b/morpheus/_lib/include/morpheus/messages/memory/response_memory_probs.hpp @@ -18,16 +18,13 @@ #pragma once #include "morpheus/messages/memory/response_memory.hpp" -#include "morpheus/objects/tensor.hpp" #include "morpheus/objects/tensor_object.hpp" -#include #include #include #include #include -#include namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/include/morpheus/messages/memory/tensor_memory.hpp b/morpheus/_lib/include/morpheus/messages/memory/tensor_memory.hpp index 569890bf75..7f6fe90abc 100644 --- a/morpheus/_lib/include/morpheus/messages/memory/tensor_memory.hpp +++ b/morpheus/_lib/include/morpheus/messages/memory/tensor_memory.hpp @@ -17,12 +17,12 @@ #pragma once -#include "morpheus/objects/tensor.hpp" - -#include -#include +#include "morpheus/objects/tensor_object.hpp" // for TensorIndex, TensorObject +#include // for size_t +#include #include +#include // for pair #include namespace morpheus { diff --git a/morpheus/_lib/include/morpheus/messages/meta.hpp b/morpheus/_lib/include/morpheus/messages/meta.hpp index 2cc920dcd2..2a2edf3ea3 100644 --- a/morpheus/_lib/include/morpheus/messages/meta.hpp +++ b/morpheus/_lib/include/morpheus/messages/meta.hpp @@ -17,11 +17,14 @@ #pragma once +#include "morpheus/objects/data_table.hpp" // for IDataTable #include "morpheus/objects/table_info.hpp" #include -#include +#include // for size_type +#include +#include // for size_t #include #include diff --git a/morpheus/_lib/include/morpheus/messages/multi.hpp b/morpheus/_lib/include/morpheus/messages/multi.hpp index 0302c1e6f7..a40d90ff4c 100644 --- a/morpheus/_lib/include/morpheus/messages/multi.hpp +++ b/morpheus/_lib/include/morpheus/messages/multi.hpp @@ -19,19 +19,14 @@ #include "morpheus/messages/meta.hpp" #include "morpheus/objects/table_info.hpp" -#include "morpheus/objects/tensor.hpp" #include "morpheus/objects/tensor_object.hpp" -#include -#include -#include #include -#include -#include -#include +#include // for DCHECK_NOTNULL #include -#include +#include // IWYU pragma: keep +#include // for size_t #include #include #include // for pair diff --git a/morpheus/_lib/include/morpheus/messages/multi_inference.hpp b/morpheus/_lib/include/morpheus/messages/multi_inference.hpp index 71522a7ef6..13c3b9ce37 100644 --- a/morpheus/_lib/include/morpheus/messages/multi_inference.hpp +++ b/morpheus/_lib/include/morpheus/messages/multi_inference.hpp @@ -20,7 +20,6 @@ #include "morpheus/messages/memory/inference_memory.hpp" #include "morpheus/messages/meta.hpp" #include "morpheus/messages/multi.hpp" -#include "morpheus/objects/tensor.hpp" #include "morpheus/objects/tensor_object.hpp" #include @@ -29,6 +28,8 @@ #include #include #include +#include // for pair +#include namespace morpheus { /****** Component public implementations********************/ diff --git a/morpheus/_lib/include/morpheus/messages/multi_inference_fil.hpp b/morpheus/_lib/include/morpheus/messages/multi_inference_fil.hpp index 7468d82a32..73bb8b5068 100644 --- a/morpheus/_lib/include/morpheus/messages/multi_inference_fil.hpp +++ b/morpheus/_lib/include/morpheus/messages/multi_inference_fil.hpp @@ -17,13 +17,14 @@ #pragma once +#include "morpheus/messages/memory/inference_memory.hpp" // for InferenceMemory +#include "morpheus/messages/meta.hpp" // for MessageMeta #include "morpheus/messages/multi_inference.hpp" -#include "morpheus/objects/tensor.hpp" #include "morpheus/objects/tensor_object.hpp" -#include #include +#include // for size_t #include namespace morpheus { diff --git a/morpheus/_lib/include/morpheus/messages/multi_inference_nlp.hpp b/morpheus/_lib/include/morpheus/messages/multi_inference_nlp.hpp index 4d09cef3dd..debbd6b384 100644 --- a/morpheus/_lib/include/morpheus/messages/multi_inference_nlp.hpp +++ b/morpheus/_lib/include/morpheus/messages/multi_inference_nlp.hpp @@ -17,16 +17,16 @@ #pragma once +#include "morpheus/messages/memory/inference_memory.hpp" // for InferenceMemory +#include "morpheus/messages/meta.hpp" // for MessageMeta #include "morpheus/messages/multi_inference.hpp" -#include "morpheus/objects/tensor.hpp" #include "morpheus/objects/tensor_object.hpp" #include -#include +#include // for object #include #include -#include namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/include/morpheus/messages/multi_response.hpp b/morpheus/_lib/include/morpheus/messages/multi_response.hpp index 32fb59e9da..1730b09718 100644 --- a/morpheus/_lib/include/morpheus/messages/multi_response.hpp +++ b/morpheus/_lib/include/morpheus/messages/multi_response.hpp @@ -20,10 +20,7 @@ #include "morpheus/messages/memory/response_memory.hpp" #include "morpheus/messages/meta.hpp" #include "morpheus/messages/multi.hpp" -#include "morpheus/objects/table_info.hpp" -#include "morpheus/objects/tensor.hpp" #include "morpheus/objects/tensor_object.hpp" -#include "morpheus/utilities/table_util.hpp" #include #include @@ -31,6 +28,8 @@ #include #include #include +#include // for pair +#include namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/include/morpheus/messages/multi_response_probs.hpp b/morpheus/_lib/include/morpheus/messages/multi_response_probs.hpp index 7d0d744725..67e4164259 100644 --- a/morpheus/_lib/include/morpheus/messages/multi_response_probs.hpp +++ b/morpheus/_lib/include/morpheus/messages/multi_response_probs.hpp @@ -21,14 +21,13 @@ #include "morpheus/messages/meta.hpp" #include "morpheus/messages/multi.hpp" #include "morpheus/messages/multi_response.hpp" -#include "morpheus/objects/tensor.hpp" #include "morpheus/objects/tensor_object.hpp" #include #include +#include // for size_t #include -#include namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/include/morpheus/objects/data_table.hpp b/morpheus/_lib/include/morpheus/objects/data_table.hpp index 989e42fcd1..c0f7f7356c 100644 --- a/morpheus/_lib/include/morpheus/objects/data_table.hpp +++ b/morpheus/_lib/include/morpheus/objects/data_table.hpp @@ -1,5 +1,5 @@ /** - * SPDX-FileCopyrightText: Copyright (c) 2021, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-FileCopyrightText: Copyright (c) 2021-2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -18,35 +18,35 @@ #pragma once #include - #include namespace morpheus { - class TableInfo; +class TableInfo; + +/****** Component public implementations *******************/ +/****** IDataTable******************************************/ + +/** + * @brief Owning object which owns a unique_ptr, table_metadata, and index information + * Why this doesnt exist in cudf is beyond me + */ +struct IDataTable : public std::enable_shared_from_this +{ + IDataTable() = default; - /****** Component public implementations *******************/ - /****** IDataTable******************************************/ + /** + * TODO(Documentation) + */ + virtual cudf::size_type count() const = 0; + + /** + * TODO(Documentation) + */ + virtual TableInfo get_info() const = 0; /** - * @brief Owning object which owns a unique_ptr, table_metadata, and index information - * Why this doesnt exist in cudf is beyond me + * TODO(Documentation) */ - struct IDataTable : public std::enable_shared_from_this { - IDataTable() = default; - - /** - * TODO(Documentation) - */ - virtual cudf::size_type count() const = 0; - - /** - * TODO(Documentation) - */ - virtual TableInfo get_info() const = 0; - - /** - * TODO(Documentation) - */ - virtual const pybind11::object &get_py_object() const = 0; - }; -} + virtual const pybind11::object &get_py_object() const = 0; +}; +} // namespace morpheus diff --git a/morpheus/_lib/include/morpheus/objects/fiber_queue.hpp b/morpheus/_lib/include/morpheus/objects/fiber_queue.hpp index b68a71a5b7..a13a5c6d52 100644 --- a/morpheus/_lib/include/morpheus/objects/fiber_queue.hpp +++ b/morpheus/_lib/include/morpheus/objects/fiber_queue.hpp @@ -1,5 +1,5 @@ /** - * SPDX-FileCopyrightText: Copyright (c) 2021, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-FileCopyrightText: Copyright (c) 2021-2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,77 +19,78 @@ #include #include - -#include +#include // IWYU pragma: keep #include -#include #include +#include namespace morpheus { - /****** Component public implementations *******************/ - /****** FiberQueue****************************************/ +/****** Component public implementations *******************/ +/****** FiberQueue****************************************/ +/** + * TODO(Documentation) + */ +class FiberQueue +{ + public: + FiberQueue(std::size_t max_size); + /** * TODO(Documentation) */ - class FiberQueue { - public: - FiberQueue(std::size_t max_size); + boost::fibers::channel_op_status put(pybind11::object &&item, bool block = true, float timeout = 0.0); - /** - * TODO(Documentation) - */ - boost::fibers::channel_op_status put(pybind11::object &&item, bool block = true, float timeout = 0.0); - - /** - * TODO(Documentation) - */ - boost::fibers::channel_op_status get(pybind11::object &item, bool block = true, float timeout = 0.0); + /** + * TODO(Documentation) + */ + boost::fibers::channel_op_status get(pybind11::object &item, bool block = true, float timeout = 0.0); - /** - * TODO(Documentation) - */ - void close(); + /** + * TODO(Documentation) + */ + void close(); - /** - * TODO(Documentation) - */ - bool is_closed(); + /** + * TODO(Documentation) + */ + bool is_closed(); - /** - * TODO(Documentation) - */ - void join(); + /** + * TODO(Documentation) + */ + void join(); - private: - boost::fibers::buffered_channel m_queue; - }; + private: + boost::fibers::buffered_channel m_queue; +}; #pragma GCC visibility push(default) - /****** FiberQueueInterfaceProxy *************************/ +/****** FiberQueueInterfaceProxy *************************/ +/** + * @brief Interface proxy, used to insulate python bindings. + */ +struct FiberQueueInterfaceProxy +{ /** - * @brief Interface proxy, used to insulate python bindings. + * @brief Create and initialize a FIberQueue, and return a shared pointer to the result. */ - struct FiberQueueInterfaceProxy { - /** - * @brief Create and initialize a FIberQueue, and return a shared pointer to the result. - */ - static std::shared_ptr init(std::size_t max_size); + static std::shared_ptr init(std::size_t max_size); - /** - * TODO(Documentation) - */ - static void put(morpheus::FiberQueue &self, pybind11::object item, bool block = true, float timeout = 0.0); + /** + * TODO(Documentation) + */ + static void put(morpheus::FiberQueue &self, pybind11::object item, bool block = true, float timeout = 0.0); - /** - * TODO(Documentation) - */ - static pybind11::object get(morpheus::FiberQueue &self, bool block = true, float timeout = 0.0); + /** + * TODO(Documentation) + */ + static pybind11::object get(morpheus::FiberQueue &self, bool block = true, float timeout = 0.0); - /** - * TODO(Documentation) - */ - static void close(morpheus::FiberQueue &self); - }; + /** + * TODO(Documentation) + */ + static void close(morpheus::FiberQueue &self); +}; #pragma GCC visibility pop -} \ No newline at end of file +} // namespace morpheus diff --git a/morpheus/_lib/include/morpheus/objects/python_data_table.hpp b/morpheus/_lib/include/morpheus/objects/python_data_table.hpp index 0e5ec93f16..bb78d346fa 100644 --- a/morpheus/_lib/include/morpheus/objects/python_data_table.hpp +++ b/morpheus/_lib/include/morpheus/objects/python_data_table.hpp @@ -17,9 +17,11 @@ #pragma once +#include "morpheus/objects/data_table.hpp" // for IDataTable #include "morpheus/objects/table_info.hpp" -#include +#include // for size_type +#include // for object namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/include/morpheus/objects/rmm_tensor.hpp b/morpheus/_lib/include/morpheus/objects/rmm_tensor.hpp index 81a1f469c8..bdf61f720c 100644 --- a/morpheus/_lib/include/morpheus/objects/rmm_tensor.hpp +++ b/morpheus/_lib/include/morpheus/objects/rmm_tensor.hpp @@ -19,14 +19,12 @@ #include "morpheus/objects/tensor_object.hpp" #include "morpheus/utilities/type_util.hpp" +#include "morpheus/utilities/type_util_detail.hpp" // for DataType -#include #include -#include -#include +#include // for size_t #include -#include #include // for pair #include diff --git a/morpheus/_lib/include/morpheus/objects/table_info.hpp b/morpheus/_lib/include/morpheus/objects/table_info.hpp index cfbf5c3fef..8e874bd40a 100644 --- a/morpheus/_lib/include/morpheus/objects/table_info.hpp +++ b/morpheus/_lib/include/morpheus/objects/table_info.hpp @@ -20,7 +20,10 @@ #include "morpheus/objects/data_table.hpp" #include "morpheus/utilities/type_util_detail.hpp" +#include // for column_view #include +#include // for size_type +#include // for object #include #include diff --git a/morpheus/_lib/include/morpheus/objects/tensor.hpp b/morpheus/_lib/include/morpheus/objects/tensor.hpp index ee73ce3f3e..e66752c7b7 100644 --- a/morpheus/_lib/include/morpheus/objects/tensor.hpp +++ b/morpheus/_lib/include/morpheus/objects/tensor.hpp @@ -17,18 +17,12 @@ #pragma once -#include "morpheus/objects/rmm_tensor.hpp" #include "morpheus/objects/tensor_object.hpp" -#include "morpheus/utilities/matx_util.hpp" #include "morpheus/utilities/type_util.hpp" -#include -#include -#include -#include #include -#include +#include // for size_t #include #include #include diff --git a/morpheus/_lib/include/morpheus/objects/tensor_object.hpp b/morpheus/_lib/include/morpheus/objects/tensor_object.hpp index 766e4a1cc3..7de293b371 100644 --- a/morpheus/_lib/include/morpheus/objects/tensor_object.hpp +++ b/morpheus/_lib/include/morpheus/objects/tensor_object.hpp @@ -26,16 +26,14 @@ #include #include #include -#include // for memory_kind_type #include #include #include // for size_t, byte #include #include -#include -#include -#include +#include // for shared_ptr +#include // IWYU pragma: keep #include #include // for runtime_error #include @@ -43,6 +41,7 @@ #include // IWYU is confusing std::size_t with __gnu_cxx::size_t for some reason // when we define vector +// The header is needed for transform_reduce but IWYU thinks we don't need it // IWYU pragma: no_include namespace morpheus { diff --git a/morpheus/_lib/include/morpheus/objects/wrapped_tensor.hpp b/morpheus/_lib/include/morpheus/objects/wrapped_tensor.hpp index fa845dbe38..409fb75ff9 100644 --- a/morpheus/_lib/include/morpheus/objects/wrapped_tensor.hpp +++ b/morpheus/_lib/include/morpheus/objects/wrapped_tensor.hpp @@ -20,16 +20,8 @@ #include "morpheus/objects/tensor_object.hpp" -#include -#include #include -#include -#include -#include -#include -#include - namespace morpheus { /****** Component public implementations *******************/ /****** TensorObject****************************************/ diff --git a/morpheus/_lib/include/morpheus/stages/add_classification.hpp b/morpheus/_lib/include/morpheus/stages/add_classification.hpp index 850ff726c4..36bd8538ea 100644 --- a/morpheus/_lib/include/morpheus/stages/add_classification.hpp +++ b/morpheus/_lib/include/morpheus/stages/add_classification.hpp @@ -20,10 +20,18 @@ #include "morpheus/messages/multi_response_probs.hpp" #include +#include +#include // for Status +#include // for SinkProperties<>::sink_type_t +#include // for SourceProperties<>::source_type_t #include +#include // for Object +#include // for size_t +#include #include #include +#include namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/include/morpheus/stages/add_scores.hpp b/morpheus/_lib/include/morpheus/stages/add_scores.hpp index 02ba811bab..c7affd8e84 100644 --- a/morpheus/_lib/include/morpheus/stages/add_scores.hpp +++ b/morpheus/_lib/include/morpheus/stages/add_scores.hpp @@ -20,10 +20,18 @@ #include "morpheus/messages/multi_response_probs.hpp" #include +#include // for apply, make_subscriber, observable_member, is_on_error<>::not_void, is_on_next_of<>::not_void, trace_activity +#include // for Status +#include // for SinkProperties<>::sink_type_t +#include // for SourceProperties<>::source_type_t #include +#include // for Object +#include // for size_t +#include #include #include +#include namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/include/morpheus/stages/deserialization.hpp b/morpheus/_lib/include/morpheus/stages/deserialize.hpp similarity index 86% rename from morpheus/_lib/include/morpheus/stages/deserialization.hpp rename to morpheus/_lib/include/morpheus/stages/deserialize.hpp index 6b4cf821da..3d801d56a7 100644 --- a/morpheus/_lib/include/morpheus/stages/deserialization.hpp +++ b/morpheus/_lib/include/morpheus/stages/deserialize.hpp @@ -21,10 +21,17 @@ #include "morpheus/messages/multi.hpp" #include +#include +#include // for Status +#include // for SinkProperties<>::sink_type_t +#include // for SourceProperties<>::source_type_t #include +#include // for Object +#include // for size_t #include #include +#include namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/include/morpheus/stages/file_source.hpp b/morpheus/_lib/include/morpheus/stages/file_source.hpp index 4eb27ffcfe..7dc4c54f15 100644 --- a/morpheus/_lib/include/morpheus/stages/file_source.hpp +++ b/morpheus/_lib/include/morpheus/stages/file_source.hpp @@ -19,11 +19,17 @@ #include "morpheus/messages/meta.hpp" +#include // for table_with_metadata #include +#include // for apply, make_subscriber, observable_member, is_on_error<>::not_void, is_on_next_of<>::not_void, trace_activity +#include // for Status +#include // for SourceProperties<>::source_type_t #include +#include // for Object #include #include +#include // for vector namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/include/morpheus/stages/filter_detection.hpp b/morpheus/_lib/include/morpheus/stages/filter_detection.hpp index cc7c3b4dfc..e5529be3cf 100644 --- a/morpheus/_lib/include/morpheus/stages/filter_detection.hpp +++ b/morpheus/_lib/include/morpheus/stages/filter_detection.hpp @@ -20,10 +20,18 @@ #include "morpheus/messages/multi_response_probs.hpp" #include +#include +#include // for Status +#include // for SinkProperties<>::sink_type_t +#include // for SourceProperties<>::source_type_t #include +#include // for Object +#include // for size_t +#include #include #include +#include namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/include/morpheus/stages/kafka_source.hpp b/morpheus/_lib/include/morpheus/stages/kafka_source.hpp index c3370cf485..fdf86611f2 100644 --- a/morpheus/_lib/include/morpheus/stages/kafka_source.hpp +++ b/morpheus/_lib/include/morpheus/stages/kafka_source.hpp @@ -22,10 +22,15 @@ #include #include #include -#include -#include +#include // for apply, make_subscriber, observable_member, is_on_error<>::not_void, is_on_next_of<>::not_void, trace_activity +#include // for Status +#include // for SourceProperties<>::source_type_t #include +#include // for Object +#include // for size_t +#include // for int32_t, uint32_t +#include #include #include #include diff --git a/morpheus/_lib/include/morpheus/stages/preprocess_fil.hpp b/morpheus/_lib/include/morpheus/stages/preprocess_fil.hpp index 6b19073ba1..03aa91396b 100644 --- a/morpheus/_lib/include/morpheus/stages/preprocess_fil.hpp +++ b/morpheus/_lib/include/morpheus/stages/preprocess_fil.hpp @@ -21,10 +21,16 @@ #include "morpheus/messages/multi_inference.hpp" #include +#include // for apply, make_subscriber, observable_member, is_on_error<>::not_void, is_on_next_of<>::not_void, from +#include // for Status +#include // for SinkProperties<>::sink_type_t +#include // for SourceProperties<>::source_type_t #include +#include // for Object #include #include +#include namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/include/morpheus/stages/preprocess_nlp.hpp b/morpheus/_lib/include/morpheus/stages/preprocess_nlp.hpp index 977dadb1b9..afbe650378 100644 --- a/morpheus/_lib/include/morpheus/stages/preprocess_nlp.hpp +++ b/morpheus/_lib/include/morpheus/stages/preprocess_nlp.hpp @@ -21,10 +21,17 @@ #include "morpheus/messages/multi_inference.hpp" #include +#include // for apply, make_subscriber, observable_member, is_on_error<>::not_void, is_on_next_of<>::not_void, from +#include // for Status +#include // for SinkProperties<>::sink_type_t +#include // for SourceProperties<>::source_type_t #include +#include // for Object +#include // for uint32_t #include #include +#include namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/include/morpheus/stages/serialize.hpp b/morpheus/_lib/include/morpheus/stages/serialize.hpp index 038ced9ce1..58dca40efa 100644 --- a/morpheus/_lib/include/morpheus/stages/serialize.hpp +++ b/morpheus/_lib/include/morpheus/stages/serialize.hpp @@ -17,15 +17,22 @@ #pragma once +#include "morpheus/messages/meta.hpp" // for MessageMeta #include "morpheus/messages/multi.hpp" +#include "morpheus/objects/table_info.hpp" // for TableInfo #include +#include // for apply, make_subscriber, observable_member, is_on_error<>::not_void, is_on_next_of<>::not_void, from +#include // for Status +#include // for SinkProperties<>::sink_type_t +#include // for SourceProperties<>::source_type_t #include +#include // for Object -#include #include #include #include +#include // for vector namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/include/morpheus/stages/triton_inference.hpp b/morpheus/_lib/include/morpheus/stages/triton_inference.hpp index 14d99d338a..d847984d67 100644 --- a/morpheus/_lib/include/morpheus/stages/triton_inference.hpp +++ b/morpheus/_lib/include/morpheus/stages/triton_inference.hpp @@ -23,10 +23,17 @@ #include #include +#include // for apply, make_subscriber, observable_member, is_on_error<>::not_void, is_on_next_of<>::not_void, from +#include // for Status +#include // for SinkProperties<>::sink_type_t +#include // for SourceProperties<>::source_type_t #include +#include // for Object +#include #include #include +#include namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/include/morpheus/stages/write_to_file.hpp b/morpheus/_lib/include/morpheus/stages/write_to_file.hpp index f966ea5242..cb56faa117 100644 --- a/morpheus/_lib/include/morpheus/stages/write_to_file.hpp +++ b/morpheus/_lib/include/morpheus/stages/write_to_file.hpp @@ -17,17 +17,22 @@ #pragma once -#include "morpheus/io/serializers.hpp" #include "morpheus/messages/meta.hpp" #include "morpheus/objects/file_types.hpp" -#include "morpheus/utilities/string_util.hpp" #include +#include +#include // for Status +#include // for SinkProperties<>::sink_type_t +#include // for SourceProperties<>::source_type_t #include +#include // for Object #include +#include // for function #include #include +#include namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/include/morpheus/utilities/cudf_util.hpp b/morpheus/_lib/include/morpheus/utilities/cudf_util.hpp index 5b87df29d0..b2515648bb 100644 --- a/morpheus/_lib/include/morpheus/utilities/cudf_util.hpp +++ b/morpheus/_lib/include/morpheus/utilities/cudf_util.hpp @@ -17,11 +17,15 @@ #pragma once +#include "morpheus/objects/data_table.hpp" // for IDataTable #include "morpheus/objects/table_info.hpp" +#include // for column_view #include #include +#include // for shared_ptr + namespace morpheus { /****** Component public free function implementations******/ /** diff --git a/morpheus/_lib/include/morpheus/utilities/table_util.hpp b/morpheus/_lib/include/morpheus/utilities/table_util.hpp index 656c53d270..9e31f2ca88 100644 --- a/morpheus/_lib/include/morpheus/utilities/table_util.hpp +++ b/morpheus/_lib/include/morpheus/utilities/table_util.hpp @@ -16,17 +16,9 @@ */ #include -#include -#include -#include +#include // IWYU pragma: keep -#include -#include -#include - -#include -#include -#include +#include #pragma once diff --git a/morpheus/_lib/include/morpheus/utilities/tensor_util.hpp b/morpheus/_lib/include/morpheus/utilities/tensor_util.hpp index 903855a6e2..8d31a94e70 100644 --- a/morpheus/_lib/include/morpheus/utilities/tensor_util.hpp +++ b/morpheus/_lib/include/morpheus/utilities/tensor_util.hpp @@ -19,10 +19,11 @@ #include "morpheus/objects/tensor_object.hpp" -#include // for copy, min_element & transform +#include // IWYU pragma: keep #include // for ostream #include // for string #include // for vector +// is needed for copy, min_element & transform namespace morpheus { diff --git a/morpheus/_lib/include/morpheus/utilities/type_util_detail.hpp b/morpheus/_lib/include/morpheus/utilities/type_util_detail.hpp index 90dfe85486..475f271de1 100644 --- a/morpheus/_lib/include/morpheus/utilities/type_util_detail.hpp +++ b/morpheus/_lib/include/morpheus/utilities/type_util_detail.hpp @@ -17,14 +17,13 @@ #pragma once -#include -#include -#include -#include -#include +#include // for CHAR_BIT +#include // for size_t +#include // for int32_t +#include // for string #ifndef NDEBUG -#include + #include #endif namespace morpheus { diff --git a/morpheus/_lib/src/io/serializers.cpp b/morpheus/_lib/src/io/serializers.cpp index 5bc4527555..2b1cef1e1d 100644 --- a/morpheus/_lib/src/io/serializers.cpp +++ b/morpheus/_lib/src/io/serializers.cpp @@ -19,17 +19,22 @@ #include #include +#include // for column_name_info, sink_info, table_metadata #include #include +#include #include #include #include #include -#include +#include // for array +#include // for size_t #include #include -#include +#include // IWYU pragma: keep +#include +// IWYU pragma: no_include namespace morpheus { diff --git a/morpheus/_lib/src/messages/memory/inference_memory.cpp b/morpheus/_lib/src/messages/memory/inference_memory.cpp index b2e8ba4513..3306c09b53 100644 --- a/morpheus/_lib/src/messages/memory/inference_memory.cpp +++ b/morpheus/_lib/src/messages/memory/inference_memory.cpp @@ -17,10 +17,8 @@ #include "morpheus/messages/memory/inference_memory.hpp" -#include - #include -#include +#include // for move namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/src/messages/memory/inference_memory_fil.cpp b/morpheus/_lib/src/messages/memory/inference_memory_fil.cpp index 2d4fd70140..f6e0fc8162 100644 --- a/morpheus/_lib/src/messages/memory/inference_memory_fil.cpp +++ b/morpheus/_lib/src/messages/memory/inference_memory_fil.cpp @@ -18,17 +18,17 @@ #include "morpheus/messages/memory/inference_memory_fil.hpp" #include "morpheus/messages/memory/inference_memory.hpp" -#include "morpheus/objects/tensor.hpp" +#include "morpheus/messages/memory/tensor_memory.hpp" #include "morpheus/utilities/cupy_util.hpp" -#include #include #include +#include // this->tensors is a map #include +#include // for runtime_error #include #include -#include namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/src/messages/memory/inference_memory_nlp.cpp b/morpheus/_lib/src/messages/memory/inference_memory_nlp.cpp index 5b756a588f..ffa78d8d8f 100644 --- a/morpheus/_lib/src/messages/memory/inference_memory_nlp.cpp +++ b/morpheus/_lib/src/messages/memory/inference_memory_nlp.cpp @@ -18,13 +18,16 @@ #include "morpheus/messages/memory/inference_memory_nlp.hpp" #include "morpheus/messages/memory/inference_memory.hpp" -#include "morpheus/objects/tensor.hpp" +#include "morpheus/messages/memory/tensor_memory.hpp" #include "morpheus/utilities/cupy_util.hpp" -#include +#include // for size_type #include #include +#include // this->tensors is a map +#include // for runtime_error +#include // for move, pair namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/src/messages/memory/response_memory.cpp b/morpheus/_lib/src/messages/memory/response_memory.cpp index 8dd7b1bb87..9af4a4b882 100644 --- a/morpheus/_lib/src/messages/memory/response_memory.cpp +++ b/morpheus/_lib/src/messages/memory/response_memory.cpp @@ -17,14 +17,12 @@ #include "morpheus/messages/memory/response_memory.hpp" -#include "morpheus/objects/tensor.hpp" #include "morpheus/utilities/cupy_util.hpp" -#include #include #include -#include +#include // for move namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/src/messages/memory/response_memory_probs.cpp b/morpheus/_lib/src/messages/memory/response_memory_probs.cpp index d514b3928f..575182788e 100644 --- a/morpheus/_lib/src/messages/memory/response_memory_probs.cpp +++ b/morpheus/_lib/src/messages/memory/response_memory_probs.cpp @@ -18,15 +18,16 @@ #include "morpheus/messages/memory/response_memory_probs.hpp" #include "morpheus/messages/memory/response_memory.hpp" -#include "morpheus/objects/tensor.hpp" +#include "morpheus/messages/memory/tensor_memory.hpp" #include "morpheus/utilities/cupy_util.hpp" -#include #include #include #include +#include // this->tensors is a map #include +#include // for runtime_error #include namespace morpheus { diff --git a/morpheus/_lib/src/messages/memory/tensor_memory.cpp b/morpheus/_lib/src/messages/memory/tensor_memory.cpp index 0e5dbb8031..01c6377edc 100644 --- a/morpheus/_lib/src/messages/memory/tensor_memory.cpp +++ b/morpheus/_lib/src/messages/memory/tensor_memory.cpp @@ -17,12 +17,6 @@ #include "morpheus/messages/memory/tensor_memory.hpp" -#include "morpheus/objects/tensor.hpp" -#include "morpheus/utilities/cupy_util.hpp" - -#include -#include - #include #include diff --git a/morpheus/_lib/src/messages/meta.cpp b/morpheus/_lib/src/messages/meta.cpp index a7f3217483..1df4e162f3 100644 --- a/morpheus/_lib/src/messages/meta.cpp +++ b/morpheus/_lib/src/messages/meta.cpp @@ -28,7 +28,6 @@ #include #include -#include namespace morpheus { /******* Component-private Classes *********************/ diff --git a/morpheus/_lib/src/messages/multi.cpp b/morpheus/_lib/src/messages/multi.cpp index 52512e0509..424dd4ce44 100644 --- a/morpheus/_lib/src/messages/multi.cpp +++ b/morpheus/_lib/src/messages/multi.cpp @@ -19,16 +19,28 @@ #include "morpheus/messages/meta.hpp" #include "morpheus/objects/table_info.hpp" +#include "morpheus/utilities/type_util.hpp" +#include "morpheus/utilities/type_util_detail.hpp" // for TypeId, DataType +#include // for cudaMemcpy, cudaMemcpy2D, cudaMemcpyDeviceToDevice +#include // for column_view #include #include #include #include - +#include +#include +#include // for get_current_device_resource +#include // for SRF_CHECK_CUDA + +#include // for transform +#include // needed for pybind11::make_tuple +#include // for uint8_t #include #include #include #include +// IWYU pragma: no_include namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/src/messages/multi_inference.cpp b/morpheus/_lib/src/messages/multi_inference.cpp index 24c4d8a013..c5fb6379e8 100644 --- a/morpheus/_lib/src/messages/multi_inference.cpp +++ b/morpheus/_lib/src/messages/multi_inference.cpp @@ -18,15 +18,18 @@ #include "morpheus/messages/multi_inference.hpp" #include "morpheus/messages/memory/inference_memory.hpp" +#include "morpheus/messages/memory/tensor_memory.hpp" // for TensorMemory::tensor_map_t #include "morpheus/messages/meta.hpp" #include "morpheus/messages/multi.hpp" -#include "morpheus/objects/tensor.hpp" #include "morpheus/utilities/cupy_util.hpp" #include +#include #include +#include // for int32_t #include +#include // needed for logging #include #include diff --git a/morpheus/_lib/src/messages/multi_inference_fil.cpp b/morpheus/_lib/src/messages/multi_inference_fil.cpp index 676258a8b9..e22a1650a3 100644 --- a/morpheus/_lib/src/messages/multi_inference_fil.cpp +++ b/morpheus/_lib/src/messages/multi_inference_fil.cpp @@ -20,13 +20,11 @@ #include "morpheus/messages/memory/inference_memory.hpp" #include "morpheus/messages/meta.hpp" #include "morpheus/messages/multi_inference.hpp" -#include "morpheus/objects/tensor.hpp" #include #include #include -#include namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/src/messages/multi_inference_nlp.cpp b/morpheus/_lib/src/messages/multi_inference_nlp.cpp index e737ca4e0a..16945b6702 100644 --- a/morpheus/_lib/src/messages/multi_inference_nlp.cpp +++ b/morpheus/_lib/src/messages/multi_inference_nlp.cpp @@ -20,7 +20,6 @@ #include "morpheus/messages/memory/inference_memory.hpp" #include "morpheus/messages/meta.hpp" #include "morpheus/messages/multi_inference.hpp" -#include "morpheus/objects/tensor.hpp" #include "morpheus/utilities/cupy_util.hpp" #include @@ -28,7 +27,6 @@ #include #include -#include namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/src/messages/multi_response.cpp b/morpheus/_lib/src/messages/multi_response.cpp index 7b12506bbf..7ffbf59469 100644 --- a/morpheus/_lib/src/messages/multi_response.cpp +++ b/morpheus/_lib/src/messages/multi_response.cpp @@ -18,9 +18,9 @@ #include "morpheus/messages/multi_response.hpp" #include "morpheus/messages/memory/response_memory.hpp" +#include "morpheus/messages/memory/tensor_memory.hpp" // for TensorMemory::tensor_map_t #include "morpheus/messages/meta.hpp" #include "morpheus/messages/multi.hpp" -#include "morpheus/objects/tensor.hpp" #include "morpheus/objects/tensor_object.hpp" #include "morpheus/utilities/cupy_util.hpp" @@ -30,6 +30,7 @@ #include #include +#include // needed for logging #include #include @@ -96,9 +97,9 @@ void MultiResponseMessage::get_slice_impl(std::shared_ptr new_mess sliced_message->offset = start; sliced_message->count = stop - start; - // Currently our output lengths should always match mess_count, and even if they didn't we wouldn't have any way to - // associate rows in the output with rows in the dataframe. Note on the input side we have the seq_ids array to - // but we don't have any equivelant for the output. + // Currently our output lengths should always match mess_count, and even if they didn't we wouldn't have any way + // to associate rows in the output with rows in the dataframe. Note on the input side we have the seq_ids array + // to but we don't have any equivelant for the output. DCHECK(this->count == this->mess_count) << "Number of rows in response output does not match number of messages in DF"; diff --git a/morpheus/_lib/src/messages/multi_response_probs.cpp b/morpheus/_lib/src/messages/multi_response_probs.cpp index 051380caa2..cdc1171f02 100644 --- a/morpheus/_lib/src/messages/multi_response_probs.cpp +++ b/morpheus/_lib/src/messages/multi_response_probs.cpp @@ -18,7 +18,6 @@ #include "morpheus/messages/multi_response_probs.hpp" #include "morpheus/messages/meta.hpp" -#include "morpheus/objects/tensor.hpp" #include "morpheus/utilities/cupy_util.hpp" #include @@ -26,7 +25,6 @@ #include #include -#include namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/src/objects/dev_mem_info.cpp b/morpheus/_lib/src/objects/dev_mem_info.cpp index 4d92dfe3cc..8b6c3951fb 100644 --- a/morpheus/_lib/src/objects/dev_mem_info.cpp +++ b/morpheus/_lib/src/objects/dev_mem_info.cpp @@ -17,6 +17,8 @@ #include "morpheus/objects/dev_mem_info.hpp" +#include // for uint8_t + namespace morpheus { // Component public implementations // ************ DevMemInfo************************* // diff --git a/morpheus/_lib/src/objects/fiber_queue.cpp b/morpheus/_lib/src/objects/fiber_queue.cpp index 2fcf783519..c5be4fcffe 100644 --- a/morpheus/_lib/src/objects/fiber_queue.cpp +++ b/morpheus/_lib/src/objects/fiber_queue.cpp @@ -18,10 +18,14 @@ #include "morpheus/objects/fiber_queue.hpp" #include -#include +#include // for gil_scoped_release +#include #include +#include // for ref, reference_wrapper #include +#include // for ratio needed for std::chrono::duration +#include // for invalid_argument, runtime_error #include namespace morpheus { diff --git a/morpheus/_lib/src/objects/file_types.cpp b/morpheus/_lib/src/objects/file_types.cpp index e180755613..c7dfe11ed4 100644 --- a/morpheus/_lib/src/objects/file_types.cpp +++ b/morpheus/_lib/src/objects/file_types.cpp @@ -20,6 +20,7 @@ #include "morpheus/utilities/string_util.hpp" #include +#include // ostringstream needed by MORPHEUS_CONCAT_STR #include namespace morpheus { diff --git a/morpheus/_lib/src/objects/python_data_table.cpp b/morpheus/_lib/src/objects/python_data_table.cpp index 7ab871e965..a3442bfac0 100644 --- a/morpheus/_lib/src/objects/python_data_table.cpp +++ b/morpheus/_lib/src/objects/python_data_table.cpp @@ -21,8 +21,9 @@ #include "morpheus/utilities/cudf_util.hpp" #include +#include // for object::cast #include -#include +#include #include diff --git a/morpheus/_lib/src/objects/rmm_tensor.cpp b/morpheus/_lib/src/objects/rmm_tensor.cpp index d27e8fa273..79bfcf28a8 100644 --- a/morpheus/_lib/src/objects/rmm_tensor.cpp +++ b/morpheus/_lib/src/objects/rmm_tensor.cpp @@ -17,18 +17,25 @@ #include "morpheus/objects/rmm_tensor.hpp" +#include "morpheus/objects/dev_mem_info.hpp" // for DevMemInfo #include "morpheus/objects/tensor_object.hpp" #include "morpheus/utilities/matx_util.hpp" #include "morpheus/utilities/tensor_util.hpp" // for get_element_stride #include "morpheus/utilities/type_util.hpp" -#include -#include +#include // for cudaMemcpy, cudaMemcpy2D, cudaMemcpyDeviceToDevice +#include // for DCHECK_LT, COMPACT_GOOGLE_LOG_FATAL, DCHECK, DCHECK_EQ, LogMessageFatal +#include // for cuda_stream_per_thread #include +#include // for SRF_CHECK_CUDA +#include // for copy, transform #include +#include // for multiplies, plus, minus +#include // for back_insert_iterator, back_inserter #include -#include +#include // for accumulate, transform_reduce +#include // needed for logging #include namespace morpheus { diff --git a/morpheus/_lib/src/objects/table_info.cpp b/morpheus/_lib/src/objects/table_info.cpp index 0dc7ebd98f..8f3b3d7c81 100644 --- a/morpheus/_lib/src/objects/table_info.cpp +++ b/morpheus/_lib/src/objects/table_info.cpp @@ -23,13 +23,18 @@ #include #include #include -#include -#include -#include - +#include // for gil_scoped_acquire +#include // IWYU pragma: keep +#include // IWYU pragma: keep + +#include // for find, transform +#include // needed for pybind11::make_tuple +#include // for size_t +#include // for back_insert_iterator, back_inserter #include #include #include +// IWYU pragma: no_include namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/src/objects/tensor.cpp b/morpheus/_lib/src/objects/tensor.cpp index 632977665d..0d0f56d651 100644 --- a/morpheus/_lib/src/objects/tensor.cpp +++ b/morpheus/_lib/src/objects/tensor.cpp @@ -21,11 +21,14 @@ #include "morpheus/objects/tensor_object.hpp" #include "morpheus/utilities/type_util.hpp" +#include // for cudaMemcpy, cudaMemcpyDeviceToHost #include +#include // for SRF_CHECK_CUDA #include #include #include +#include // for move #include namespace morpheus { diff --git a/morpheus/_lib/src/objects/tensor_object.cpp b/morpheus/_lib/src/objects/tensor_object.cpp index 9641416a37..b740222e65 100644 --- a/morpheus/_lib/src/objects/tensor_object.cpp +++ b/morpheus/_lib/src/objects/tensor_object.cpp @@ -20,7 +20,6 @@ #include "morpheus/utilities/tensor_util.hpp" #include // for blob -#include // for DataType #include diff --git a/morpheus/_lib/src/objects/wrapped_tensor.cpp b/morpheus/_lib/src/objects/wrapped_tensor.cpp index 7b314c4eb5..b2cf9bc59b 100644 --- a/morpheus/_lib/src/objects/wrapped_tensor.cpp +++ b/morpheus/_lib/src/objects/wrapped_tensor.cpp @@ -22,7 +22,9 @@ #include #include -#include +#include // needed for make_tuple +#include // for uintptr_t +#include // get_shape & get_stride return vectors namespace morpheus { /****** Component public implementations *******************/ diff --git a/morpheus/_lib/src/python_modules/common.cpp b/morpheus/_lib/src/python_modules/common.cpp index ca2ab266fe..b90a59b91e 100644 --- a/morpheus/_lib/src/python_modules/common.cpp +++ b/morpheus/_lib/src/python_modules/common.cpp @@ -16,6 +16,7 @@ */ #include "morpheus/objects/fiber_queue.hpp" +#include "morpheus/objects/tensor_object.hpp" // for TensorObject #include "morpheus/objects/wrapped_tensor.hpp" #include "morpheus/utilities/cudf_util.hpp" diff --git a/morpheus/_lib/src/python_modules/messages.cpp b/morpheus/_lib/src/python_modules/messages.cpp index 019e4204b0..84c963f571 100644 --- a/morpheus/_lib/src/python_modules/messages.cpp +++ b/morpheus/_lib/src/python_modules/messages.cpp @@ -20,6 +20,7 @@ #include "morpheus/messages/memory/inference_memory_nlp.hpp" #include "morpheus/messages/memory/response_memory.hpp" #include "morpheus/messages/memory/response_memory_probs.hpp" +#include "morpheus/messages/memory/tensor_memory.hpp" #include "morpheus/messages/meta.hpp" #include "morpheus/messages/multi.hpp" #include "morpheus/messages/multi_inference.hpp" @@ -27,18 +28,21 @@ #include "morpheus/messages/multi_inference_nlp.hpp" #include "morpheus/messages/multi_response.hpp" #include "morpheus/messages/multi_response_probs.hpp" -#include "morpheus/objects/tensor.hpp" +#include "morpheus/objects/data_table.hpp" #include "morpheus/utilities/cudf_util.hpp" -#include #include // IWYU pragma: keep #include #include -#include // IWYU pragma: keep +#include // IWYU pragma: keep +#include // for pysrf::import +#include // for Status #include #include +#include #include +#include #include namespace morpheus { diff --git a/morpheus/_lib/src/python_modules/stages.cpp b/morpheus/_lib/src/python_modules/stages.cpp index 87e527e2fe..57df6042a1 100644 --- a/morpheus/_lib/src/python_modules/stages.cpp +++ b/morpheus/_lib/src/python_modules/stages.cpp @@ -17,7 +17,7 @@ #include "morpheus/stages/add_classification.hpp" #include "morpheus/stages/add_scores.hpp" -#include "morpheus/stages/deserialization.hpp" +#include "morpheus/stages/deserialize.hpp" #include "morpheus/stages/file_source.hpp" #include "morpheus/stages/filter_detection.hpp" #include "morpheus/stages/kafka_source.hpp" @@ -28,8 +28,14 @@ #include "morpheus/stages/write_to_file.hpp" #include "morpheus/utilities/cudf_util.hpp" +#include // for multiple_inheritance +#include // for arg, init, class_, module_, str_attr_accessor, PYBIND11_MODULE, pybind11 +#include // for dict, sequence +#include // for pysrf::import #include +#include + namespace morpheus { namespace py = pybind11; diff --git a/morpheus/_lib/src/stages/add_classification.cpp b/morpheus/_lib/src/stages/add_classification.cpp index f67bb6b71c..97b1f0f871 100644 --- a/morpheus/_lib/src/stages/add_classification.cpp +++ b/morpheus/_lib/src/stages/add_classification.cpp @@ -17,12 +17,29 @@ #include "morpheus/stages/add_classification.hpp" +#include "morpheus/objects/dev_mem_info.hpp" // for DevMemInfo +#include "morpheus/objects/tensor.hpp" +#include "morpheus/objects/tensor_object.hpp" // for TensorIndex, TensorObject #include "morpheus/utilities/matx_util.hpp" +#include "morpheus/utilities/type_util.hpp" // for DType +#include "morpheus/utilities/type_util_detail.hpp" // for DataType +#include // for cudaMemcpy, cudaMemcpyDeviceToDevice +#include +#include // for cuda_stream_per_thread +#include // for device_buffer +#include // for SRF_CHECK_CUDA + +#include // for min_element, transform #include #include +#include // for divides, bind, placeholders #include -#include +#include // needed for logging +#include // for declval +#include // for move +// IWYU thinks we need __alloc_traits<>::value_type for vector assignments +// IWYU pragma: no_include namespace morpheus { // Component public implementations diff --git a/morpheus/_lib/src/stages/add_scores.cpp b/morpheus/_lib/src/stages/add_scores.cpp index 0b23890382..b3e81c79af 100644 --- a/morpheus/_lib/src/stages/add_scores.cpp +++ b/morpheus/_lib/src/stages/add_scores.cpp @@ -17,12 +17,31 @@ #include "morpheus/stages/add_scores.hpp" -#include "morpheus/utilities/matx_util.hpp" - -#include +#include "morpheus/objects/tensor.hpp" +#include "morpheus/objects/tensor_object.hpp" // for TensorIndex, TensorObject + +#include // for cudaMemcpy, cudaMemcpyDeviceToDevice +#include +#include // for cuda_stream_per_thread +#include // for device_buffer +#include // for Status +#include // for SRF_CHECK_CUDA +#include // for SinkProperties<>::sink_type_t +#include // for SourceProperties<>::source_type_t +#include // for Object + +#include // for min_element, transform +#include // for size_t #include +#include // for divides, placeholders +#include #include -#include +#include // for logging +#include // for declval +#include // for move +#include +// IWYU thinks we need __alloc_traits<>::value_type for vector assignments +// IWYU pragma: no_include namespace morpheus { // Component public implementations diff --git a/morpheus/_lib/src/stages/deserialize.cpp b/morpheus/_lib/src/stages/deserialize.cpp index e98c8e8477..3ca4ad0163 100644 --- a/morpheus/_lib/src/stages/deserialize.cpp +++ b/morpheus/_lib/src/stages/deserialize.cpp @@ -15,15 +15,17 @@ * limitations under the License. */ -#include "morpheus/stages/deserialization.hpp" +#include "morpheus/stages/deserialize.hpp" #include +#include #include +#include // for min #include #include #include -#include +#include // for declval #include namespace morpheus { diff --git a/morpheus/_lib/src/stages/file_source.cpp b/morpheus/_lib/src/stages/file_source.cpp index 825f10c6c5..9db0dd895f 100644 --- a/morpheus/_lib/src/stages/file_source.cpp +++ b/morpheus/_lib/src/stages/file_source.cpp @@ -17,25 +17,31 @@ #include "morpheus/stages/file_source.hpp" +#include // for column #include #include +#include // for string_scalar #include +#include // for strings_column_view +#include // for table #include #include -#include -#include +#include // for object_api::operator() #include -#include +#include // for str_attr_accessor +#include // for pybind11::int_ #include -#include +#include // for find +#include // for size_t #include -#include #include -#include #include #include +#include // for runtime_error #include +// IWYU thinks we need __alloc_traits<>::value_type for vector assignments +// IWYU pragma: no_include namespace morpheus { // Component public implementations diff --git a/morpheus/_lib/src/stages/filter_detection.cpp b/morpheus/_lib/src/stages/filter_detection.cpp index 7197c7afaa..1040440642 100644 --- a/morpheus/_lib/src/stages/filter_detection.cpp +++ b/morpheus/_lib/src/stages/filter_detection.cpp @@ -15,18 +15,29 @@ * limitations under the License. */ -#include "morpheus/stages/filter_detection.hpp" +#include "morpheus/stages/filter_detection.hpp" // IWYU pragma: accosiated +#include "morpheus/objects/dev_mem_info.hpp" // for DevMemInfo +#include "morpheus/objects/tensor_object.hpp" // for TensorIndex, TensorObject #include "morpheus/utilities/matx_util.hpp" -#include "morpheus/utilities/tensor_util.hpp" // for TensorUtils::get_element_stride +#include "morpheus/utilities/tensor_util.hpp" // for TensorUtils::get_element_stride +#include "morpheus/utilities/type_util_detail.hpp" // for DataType -#include // for CHECK +#include // for cudaMemcpy, cudaMemcpyDeviceToDevice, cudaMemcpyDeviceToHost +#include // for CHECK +#include // for cuda_stream_per_thread +#include // for device_buffer +#include // for SRF_CHECK_CUDA #include +#include // for uint8_t #include #include -#include // needed for glog -#include // for pair +#include // needed for glog +#include // for declval (indirectly via templates) +#include // for pair +// IWYU thinks we need ext/new_allocator.h for size_t for some reason +// IWYU pragma: no_include namespace morpheus { diff --git a/morpheus/_lib/src/stages/kafka_source.cpp b/morpheus/_lib/src/stages/kafka_source.cpp index e8eeb4da1e..fc870be6f3 100644 --- a/morpheus/_lib/src/stages/kafka_source.cpp +++ b/morpheus/_lib/src/stages/kafka_source.cpp @@ -21,30 +21,40 @@ #include "morpheus/utilities/stage_util.hpp" #include "morpheus/utilities/string_util.hpp" +#include // for sleep_for, yield #include -#include +#include // for column #include +#include // for string_scalar #include +#include // for strings_column_view +#include // for table #include -#include #include #include -#include #include #include #include +#include // for SharedFuture +#include // for find, min, transform #include #include #include #include #include +#include // for initializer_list +#include // for back_insert_iterator, back_inserter #include #include #include #include #include #include +// IWYU thinks we need atomic for vector.emplace_back of a unique_ptr +// and __alloc_traits<>::value_type for vector assignments +// IWYU pragma: no_include +// IWYU pragma: no_include #define CHECK_KAFKA(command, expected, msg) \ { \ diff --git a/morpheus/_lib/src/stages/preprocess_fil.cpp b/morpheus/_lib/src/stages/preprocess_fil.cpp index fc33c9d559..20ca1875e2 100644 --- a/morpheus/_lib/src/stages/preprocess_fil.cpp +++ b/morpheus/_lib/src/stages/preprocess_fil.cpp @@ -18,27 +18,37 @@ #include "morpheus/stages/preprocess_fil.hpp" #include "morpheus/messages/memory/inference_memory_fil.hpp" +#include "morpheus/messages/meta.hpp" // for MessageMeta +#include "morpheus/objects/dev_mem_info.hpp" // for DevMemInfo +#include "morpheus/objects/table_info.hpp" // for TableInfo +#include "morpheus/objects/tensor.hpp" +#include "morpheus/objects/tensor_object.hpp" // for TensorIndex #include "morpheus/utilities/matx_util.hpp" #include "morpheus/utilities/type_util.hpp" #include "morpheus/utilities/type_util_detail.hpp" -#include -#include +#include // for cudaMemcpy, cudaMemcpyDeviceToDevice +#include // for column, column::contents +#include // for column_view +#include // for table_view #include #include -#include -#include +#include // for object_api::operator(), operator""_a #include +#include // for str_attr_accessor, arg #include #include -#include +#include // for cuda_stream_per_thread +#include // for device_buffer +#include // for SRF_CHECK_CUDA #include +#include #include #include #include #include -#include +#include // for declval #include namespace morpheus { diff --git a/morpheus/_lib/src/stages/preprocess_nlp.cpp b/morpheus/_lib/src/stages/preprocess_nlp.cpp index 9b4f130f61..eeb1820db2 100644 --- a/morpheus/_lib/src/stages/preprocess_nlp.cpp +++ b/morpheus/_lib/src/stages/preprocess_nlp.cpp @@ -17,20 +17,28 @@ #include "morpheus/stages/preprocess_nlp.hpp" +#include "morpheus/messages/memory/inference_memory.hpp" // for InferenceMemory +#include "morpheus/messages/memory/tensor_memory.hpp" // for TensorMemory::tensor_map_t #include "morpheus/messages/multi_inference.hpp" +#include "morpheus/objects/table_info.hpp" // for TableInfo +#include "morpheus/objects/tensor.hpp" +#include "morpheus/objects/tensor_object.hpp" // for TensorIndex, TensorObject #include "morpheus/utilities/type_util.hpp" +#include // for column, column::contents +#include // for strings_column_view #include #include -#include #include #include +#include // for device_buffer #include #include #include +#include #include -#include +#include // for declval #include namespace morpheus { diff --git a/morpheus/_lib/src/stages/serialize.cpp b/morpheus/_lib/src/stages/serialize.cpp index 55319862b5..3dc533c77e 100644 --- a/morpheus/_lib/src/stages/serialize.cpp +++ b/morpheus/_lib/src/stages/serialize.cpp @@ -17,14 +17,19 @@ #include "morpheus/stages/serialize.hpp" +#include // for gil_scoped_acquire + #include #include #include +#include // for declval +#include // for move +// IWYU thinks basic_stringbuf & map are needed for the regex constructor +// IWYU pragma: no_include +// IWYU pragma: no_include namespace morpheus { -using namespace std::literals; - constexpr std::regex_constants::syntax_option_type RegexOptions = std::regex_constants::ECMAScript | std::regex_constants::icase; diff --git a/morpheus/_lib/src/stages/triton_inference.cpp b/morpheus/_lib/src/stages/triton_inference.cpp index 0e6c4eb7f0..da58a5e063 100644 --- a/morpheus/_lib/src/stages/triton_inference.cpp +++ b/morpheus/_lib/src/stages/triton_inference.cpp @@ -17,24 +17,41 @@ #include "morpheus/stages/triton_inference.hpp" +#include "morpheus/messages/memory/inference_memory.hpp" // for InferenceMemory +#include "morpheus/messages/memory/response_memory.hpp" // for ResponseMemory +#include "morpheus/messages/memory/tensor_memory.hpp" // for TensorMemory::tensor_map_t #include "morpheus/messages/multi_response_probs.hpp" +#include "morpheus/objects/dev_mem_info.hpp" // for DevMemInfo +#include "morpheus/objects/tensor.hpp" +#include "morpheus/objects/tensor_object.hpp" // for TensorIndex, TensorObject #include "morpheus/objects/triton_in_out.hpp" #include "morpheus/utilities/matx_util.hpp" #include "morpheus/utilities/stage_util.hpp" +#include "morpheus/utilities/string_util.hpp" // for MORPHEUS_CONCAT_STR #include "morpheus/utilities/type_util.hpp" +#include "morpheus/utilities/type_util_detail.hpp" // for DataType +#include // for cudaMemcpy, cudaMemcpy2D, cudaMemcpyDeviceToHost, cudaMemcpyHostToDevice #include #include #include #include +#include // for cuda_stream_per_thread +#include // for device_buffer +#include // for SRF_CHECK_CUDA +#include // for min #include #include #include +#include // for multiplies #include -#include +#include // for accumulate #include +#include // for runtime_error, out_of_range +#include // for declval #include +// IWYU pragma: no_include #define CHECK_TRITON(method) ::InferenceClientStage__check_triton_errors(method, #method, __FILE__, __LINE__); diff --git a/morpheus/_lib/src/stages/write_to_file.cpp b/morpheus/_lib/src/stages/write_to_file.cpp index cda3ed00f3..b177bdb17b 100644 --- a/morpheus/_lib/src/stages/write_to_file.cpp +++ b/morpheus/_lib/src/stages/write_to_file.cpp @@ -15,16 +15,22 @@ * limitations under the License. */ -#include "morpheus/stages/write_to_file.hpp" +#include "morpheus/stages/write_to_file.hpp" // IWYU pragma: accosiated -#include "morpheus/utilities/matx_util.hpp" +#include "morpheus/io/serializers.hpp" +#include "morpheus/utilities/string_util.hpp" + +#include #include #include -#include +#include // for invalid_argument, runtime_error #include +#include // for declval (indirectly via templates) +#include // for forward, move, addressof namespace morpheus { + // Component public implementations // ************ WriteToFileStage **************************** // WriteToFileStage::WriteToFileStage(const std::string &filename, diff --git a/morpheus/_lib/src/utilities/cudf_util.cpp b/morpheus/_lib/src/utilities/cudf_util.cpp index 42dc1a94c9..8dada42067 100644 --- a/morpheus/_lib/src/utilities/cudf_util.cpp +++ b/morpheus/_lib/src/utilities/cudf_util.cpp @@ -19,9 +19,12 @@ #include "morpheus/objects/table_info.hpp" -#include +#include // IWYU pragma: keep #include -#include +#include + +#include // Needed for logging +#include // for move /** * **************This needs to come last.******************** diff --git a/morpheus/_lib/src/utilities/cupy_util.cpp b/morpheus/_lib/src/utilities/cupy_util.cpp index e449de825a..4b33b42bf5 100644 --- a/morpheus/_lib/src/utilities/cupy_util.cpp +++ b/morpheus/_lib/src/utilities/cupy_util.cpp @@ -18,13 +18,24 @@ #include "morpheus/utilities/cupy_util.hpp" #include "morpheus/objects/tensor.hpp" +#include "morpheus/utilities/type_util.hpp" // for DType +#include // for COMPACT_GOOGLE_LOG_FATAL, DCHECK, LogMessageFatal #include #include // IWYU pragma: keep #include // IWYU pragma: keep #include #include -#include // IWYU pragma: keep +#include // IWYU pragma: keep +#include // for cuda_stream_per_thread +#include // for device_buffer + +#include // for array +#include // for size_t +#include // for uintptr_t +#include // for make_shared +#include // for string +#include // for vector namespace morpheus { pybind11::object CupyUtil::cp_module = pybind11::none(); diff --git a/morpheus/_lib/src/utilities/table_util.cpp b/morpheus/_lib/src/utilities/table_util.cpp index 0cbf327088..777569c1c0 100644 --- a/morpheus/_lib/src/utilities/table_util.cpp +++ b/morpheus/_lib/src/utilities/table_util.cpp @@ -20,9 +20,11 @@ #include #include #include +#include #include -#include +#include // needed for logging +#include // for runtime_error namespace fs = std::filesystem; namespace py = pybind11; diff --git a/morpheus/_lib/src/utilities/tensor_util.cpp b/morpheus/_lib/src/utilities/tensor_util.cpp index e06c963e00..0b11d089d5 100644 --- a/morpheus/_lib/src/utilities/tensor_util.cpp +++ b/morpheus/_lib/src/utilities/tensor_util.cpp @@ -20,7 +20,6 @@ #include // for DCHECK_EQ #include // for sort_indexes -#include // for copy // clang-format off // prevent from moving this into the third-party section #include // for make_ostream_joiner diff --git a/morpheus/_lib/tests/test_matx_util.cpp b/morpheus/_lib/tests/test_matx_util.cpp index 50091f5aaa..53d076085c 100644 --- a/morpheus/_lib/tests/test_matx_util.cpp +++ b/morpheus/_lib/tests/test_matx_util.cpp @@ -17,17 +17,25 @@ #include "./test_morpheus.hpp" // IWYU pragma: associated +#include "morpheus/objects/dev_mem_info.hpp" #include "morpheus/utilities/matx_util.hpp" #include "morpheus/utilities/type_util.hpp" #include "morpheus/utilities/type_util_detail.hpp" +#include // for cudaMemcpy, cudaMemcpyDeviceToHost, cudaMemcpyHostToDevice +#include // for column +#include // for column_view #include +#include // for data_type, size_type #include +#include // for cuda_stream_per_thread #include #include +#include // for int64_t, int32_t, uint8_t #include // for std::getenv #include +#include // for shared_ptr, make_shared, unique_ptr #include #include diff --git a/morpheus/_lib/tests/test_morpheus.cpp b/morpheus/_lib/tests/test_morpheus.cpp index 3c41db3f1e..73da7bbca1 100644 --- a/morpheus/_lib/tests/test_morpheus.cpp +++ b/morpheus/_lib/tests/test_morpheus.cpp @@ -18,7 +18,7 @@ #include "test_morpheus.hpp" #include -#include +#include // IWYU pragma: keep cudf::io::table_with_metadata load_table_from_csv(std::string filename) { diff --git a/morpheus/_lib/tests/test_multi_slices.cpp b/morpheus/_lib/tests/test_multi_slices.cpp index d92bdac887..ee94b80701 100644 --- a/morpheus/_lib/tests/test_multi_slices.cpp +++ b/morpheus/_lib/tests/test_multi_slices.cpp @@ -20,12 +20,13 @@ #include #include #include -#include #include +#include #include #include #include +#include // for unique_ptr #include TEST_CLASS(Masking); diff --git a/morpheus/_lib/tests/test_tensor.cpp b/morpheus/_lib/tests/test_tensor.cpp index 18642e0c4a..ff58575ddf 100644 --- a/morpheus/_lib/tests/test_tensor.cpp +++ b/morpheus/_lib/tests/test_tensor.cpp @@ -17,11 +17,17 @@ #include "./test_morpheus.hpp" // IWYU pragma: associated -#include // for TensorUtils, TensorUtils::shape_type +#include "morpheus/objects/tensor_object.hpp" // for TensorIndex +#include "morpheus/utilities/tensor_util.hpp" // for TensorUtils, TensorUtils::shape_type #include // for AssertionResult, SuiteApiResolver, TestInfo, EXPECT_TRUE, Message, TEST_F, Test, TestFactoryImpl, TestPartResult -#include // for allocator, operator==, basic_string, string +#include // for size_t +#include // for allocator, operator==, basic_string, string +#include // for vector +// IWYU pragma: no_include "morpheus/utilities/string_util.hpp" +// IWYU thinks we need ext/new_allocator.h for size_t for some reason +// IWYU pragma: no_include using namespace morpheus; diff --git a/morpheus/_lib/tests/test_type_util_detail.cpp b/morpheus/_lib/tests/test_type_util_detail.cpp index ddf1186d44..964a975d01 100644 --- a/morpheus/_lib/tests/test_type_util_detail.cpp +++ b/morpheus/_lib/tests/test_type_util_detail.cpp @@ -22,6 +22,9 @@ #include // for EXPECT_EQ #include +// work-around for known iwyu issue +// https://github.com/include-what-you-use/include-what-you-use/issues/908 +// IWYU pragma: no_include TEST_CLASS(TypeUtils);