diff --git a/conda/environments/all_cuda-118_arch-x86_64.yaml b/conda/environments/all_cuda-118_arch-x86_64.yaml index bf73b938a5..b97b4f0ca6 100644 --- a/conda/environments/all_cuda-118_arch-x86_64.yaml +++ b/conda/environments/all_cuda-118_arch-x86_64.yaml @@ -75,7 +75,7 @@ dependencies: - sphinx-copybutton - sphinx-markdown-tables - statsmodels -- sysroot_linux-64==2.17 +- sysroot_linux-64==2.28 - treelite==4.3.0 - umap-learn==0.5.6 - xgboost>=2.1.0 diff --git a/conda/environments/all_cuda-125_arch-x86_64.yaml b/conda/environments/all_cuda-125_arch-x86_64.yaml index 72539f2d18..5c8439cf50 100644 --- a/conda/environments/all_cuda-125_arch-x86_64.yaml +++ b/conda/environments/all_cuda-125_arch-x86_64.yaml @@ -25,7 +25,7 @@ dependencies: - dask-ml - doxygen=1.9.1 - fmt>=11.0.2,<12 -- gcc_linux-64=11.* +- gcc_linux-64=13.* - graphviz - hdbscan>=0.8.39,<0.8.40 - hypothesis>=6.0,<7 @@ -71,7 +71,7 @@ dependencies: - sphinx-copybutton - sphinx-markdown-tables - statsmodels -- sysroot_linux-64==2.17 +- sysroot_linux-64==2.28 - treelite==4.3.0 - umap-learn==0.5.6 - xgboost>=2.1.0 diff --git a/conda/environments/clang_tidy_cuda-118_arch-x86_64.yaml b/conda/environments/clang_tidy_cuda-118_arch-x86_64.yaml index 836e34b0a9..f307fd45e3 100644 --- a/conda/environments/clang_tidy_cuda-118_arch-x86_64.yaml +++ b/conda/environments/clang_tidy_cuda-118_arch-x86_64.yaml @@ -33,6 +33,6 @@ dependencies: - ninja - nvcc_linux-64=11.8 - spdlog>=1.14.1,<1.15 -- sysroot_linux-64==2.17 +- sysroot_linux-64==2.28 - tomli name: clang_tidy_cuda-118_arch-x86_64 diff --git a/conda/environments/cpp_all_cuda-118_arch-x86_64.yaml b/conda/environments/cpp_all_cuda-118_arch-x86_64.yaml index 8442e61e86..6220cd8a50 100644 --- a/conda/environments/cpp_all_cuda-118_arch-x86_64.yaml +++ b/conda/environments/cpp_all_cuda-118_arch-x86_64.yaml @@ -31,5 +31,5 @@ dependencies: - ninja - nvcc_linux-64=11.8 - spdlog>=1.14.1,<1.15 -- sysroot_linux-64==2.17 +- sysroot_linux-64==2.28 name: cpp_all_cuda-118_arch-x86_64 diff --git a/conda/environments/cpp_all_cuda-125_arch-x86_64.yaml b/conda/environments/cpp_all_cuda-125_arch-x86_64.yaml index d199d744e0..5b553bc95d 100644 --- a/conda/environments/cpp_all_cuda-125_arch-x86_64.yaml +++ b/conda/environments/cpp_all_cuda-125_arch-x86_64.yaml @@ -15,7 +15,7 @@ dependencies: - cuda-version=12.5 - cxx-compiler - fmt>=11.0.2,<12 -- gcc_linux-64=11.* +- gcc_linux-64=13.* - libcublas-dev - libcufft-dev - libcumlprims==25.2.*,>=0.0.0a0 @@ -27,5 +27,5 @@ dependencies: - librmm==25.2.*,>=0.0.0a0 - ninja - spdlog>=1.14.1,<1.15 -- sysroot_linux-64==2.17 +- sysroot_linux-64==2.28 name: cpp_all_cuda-125_arch-x86_64 diff --git a/conda/recipes/cuml-cpu/conda_build_config.yaml b/conda/recipes/cuml-cpu/conda_build_config.yaml index a6f636917a..354e9fb334 100644 --- a/conda/recipes/cuml-cpu/conda_build_config.yaml +++ b/conda/recipes/cuml-cpu/conda_build_config.yaml @@ -1,8 +1,10 @@ c_compiler_version: - - 11 + - 13 # [not os.environ.get("RAPIDS_CUDA_VERSION", "").startswith("11")] + - 11 # [os.environ.get("RAPIDS_CUDA_VERSION", "").startswith("11")] cxx_compiler_version: - - 11 + - 13 # [not os.environ.get("RAPIDS_CUDA_VERSION", "").startswith("11")] + - 11 # [os.environ.get("RAPIDS_CUDA_VERSION", "").startswith("11")] cmake_version: - ">=3.26.4,!=3.30.0" @@ -11,4 +13,4 @@ c_stdlib: - sysroot c_stdlib_version: - - "=2.17" + - "=2.28" diff --git a/conda/recipes/cuml/conda_build_config.yaml b/conda/recipes/cuml/conda_build_config.yaml index eb829ba4de..ded1456b11 100644 --- a/conda/recipes/cuml/conda_build_config.yaml +++ b/conda/recipes/cuml/conda_build_config.yaml @@ -1,14 +1,14 @@ c_compiler_version: - - 11 + - 13 # [not os.environ.get("RAPIDS_CUDA_VERSION", "").startswith("11")] + - 11 # [os.environ.get("RAPIDS_CUDA_VERSION", "").startswith("11")] cxx_compiler_version: - - 11 + - 13 # [not os.environ.get("RAPIDS_CUDA_VERSION", "").startswith("11")] + - 11 # [os.environ.get("RAPIDS_CUDA_VERSION", "").startswith("11")] cuda_compiler: - - cuda-nvcc - -cuda11_compiler: - - nvcc + - cuda-nvcc # [not os.environ.get("RAPIDS_CUDA_VERSION", "").startswith("11")] + - nvcc # [os.environ.get("RAPIDS_CUDA_VERSION", "").startswith("11")] cmake_version: - ">=3.26.4,!=3.30.0" @@ -17,7 +17,7 @@ c_stdlib: - sysroot c_stdlib_version: - - "=2.17" + - "=2.28" treelite_version: - "=4.3.0" diff --git a/conda/recipes/cuml/meta.yaml b/conda/recipes/cuml/meta.yaml index 35157fb3cc..a84f2738f9 100644 --- a/conda/recipes/cuml/meta.yaml +++ b/conda/recipes/cuml/meta.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2018-2024, NVIDIA CORPORATION. +# Copyright (c) 2018-2025, NVIDIA CORPORATION. {% set version = environ['RAPIDS_PACKAGE_VERSION'].lstrip('v') %} {% set minor_version = version.split('.')[0] + '.' + version.split('.')[1] %} @@ -33,10 +33,8 @@ build: - SCCACHE_S3_KEY_PREFIX=cuml-linux64 # [linux64] - SCCACHE_S3_USE_SSL ignore_run_exports_from: - {% if cuda_major == "11" %} - - {{ compiler('cuda11') }} - {% else %} - {{ compiler('cuda') }} + {% if cuda_major != "11" %} - cuda-cudart-dev {% endif %} - cuda-python @@ -46,7 +44,7 @@ requirements: - {{ compiler('c') }} - {{ compiler('cxx') }} {% if cuda_major == "11" %} - - {{ compiler('cuda11') }} ={{ cuda_version }} + - {{ compiler('cuda') }} ={{ cuda_version }} {% else %} - {{ compiler('cuda') }} {% endif %} diff --git a/conda/recipes/libcuml/conda_build_config.yaml b/conda/recipes/libcuml/conda_build_config.yaml index f802440354..b9e0670a70 100644 --- a/conda/recipes/libcuml/conda_build_config.yaml +++ b/conda/recipes/libcuml/conda_build_config.yaml @@ -1,20 +1,20 @@ c_compiler_version: - - 11 + - 13 # [not os.environ.get("RAPIDS_CUDA_VERSION", "").startswith("11")] + - 11 # [os.environ.get("RAPIDS_CUDA_VERSION", "").startswith("11")] cxx_compiler_version: - - 11 + - 13 # [not os.environ.get("RAPIDS_CUDA_VERSION", "").startswith("11")] + - 11 # [os.environ.get("RAPIDS_CUDA_VERSION", "").startswith("11")] cuda_compiler: - - cuda-nvcc - -cuda11_compiler: - - nvcc + - cuda-nvcc # [not os.environ.get("RAPIDS_CUDA_VERSION", "").startswith("11")] + - nvcc # [os.environ.get("RAPIDS_CUDA_VERSION", "").startswith("11")] c_stdlib: - sysroot c_stdlib_version: - - "=2.17" + - "=2.28" cmake_version: - ">=3.26.4,!=3.30.0" diff --git a/conda/recipes/libcuml/meta.yaml b/conda/recipes/libcuml/meta.yaml index f4a65c50f7..4d193a0ae8 100644 --- a/conda/recipes/libcuml/meta.yaml +++ b/conda/recipes/libcuml/meta.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2018-2024, NVIDIA CORPORATION. +# Copyright (c) 2018-2025, NVIDIA CORPORATION. {% set version = environ['RAPIDS_PACKAGE_VERSION'].lstrip('v') %} {% set minor_version = version.split('.')[0] + '.' + version.split('.')[1] %} @@ -14,9 +14,7 @@ source: build: ignore_run_exports_from: - {% if cuda_major == "11" %} - - {{ compiler('cuda11') }} - {% endif %} + - {{ compiler('cuda') }} script_env: - AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY @@ -38,7 +36,7 @@ requirements: - {{ compiler('c') }} - {{ compiler('cxx') }} {% if cuda_major == "11" %} - - {{ compiler('cuda11') }} ={{ cuda_version }} + - {{ compiler('cuda') }} ={{ cuda_version }} {% else %} - {{ compiler('cuda') }} {% endif %} @@ -84,10 +82,8 @@ outputs: number: {{ GIT_DESCRIBE_NUMBER }} string: cuda{{ cuda_major }}_{{ date_string }}_{{ GIT_DESCRIBE_HASH }}_{{ GIT_DESCRIBE_NUMBER }} ignore_run_exports_from: - {% if cuda_major == "11" %} - - {{ compiler('cuda11') }} - {% else %} - {{ compiler('cuda') }} + {% if cuda_major != "11" %} - cuda-cudart-dev {% endif %} requirements: @@ -131,10 +127,8 @@ outputs: number: {{ GIT_DESCRIBE_NUMBER }} string: cuda{{ cuda_major }}_{{ date_string }}_{{ GIT_DESCRIBE_HASH }}_{{ GIT_DESCRIBE_NUMBER }} ignore_run_exports_from: - {% if cuda_major == "11" %} - - {{ compiler('cuda11') }} - {% else %} - {{ compiler('cuda') }} + {% if cuda_major != "11" %} - cuda-cudart-dev {% endif %} requirements: diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 90c0c02cf3..118f3f0e28 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -422,6 +422,27 @@ if(BUILD_CUML_CPP_LIBRARY) src/hdbscan/hdbscan.cu src/hdbscan/condensed_hierarchy.cu src/hdbscan/prediction_data.cu) + + # When using GCC 13, some maybe-uninitialized warnings appear from CCCL and are treated as errors. + # See this issue: https://github.com/rapidsai/cuml/issues/6225 + set_property( + SOURCE src/hdbscan/condensed_hierarchy.cu + APPEND_STRING + PROPERTY COMPILE_FLAGS + " -Xcompiler=-Wno-maybe-uninitialized" + ) + set_property( + SOURCE src/hdbscan/hdbscan.cu + APPEND_STRING + PROPERTY COMPILE_FLAGS + " -Xcompiler=-Wno-maybe-uninitialized" + ) + set_property( + SOURCE src/hdbscan/prediction_data.cu + APPEND_STRING + PROPERTY COMPILE_FLAGS + " -Xcompiler=-Wno-maybe-uninitialized" + ) endif() if(all_algo OR holtwinters_algo) diff --git a/cpp/src/hdbscan/condensed_hierarchy.cu b/cpp/src/hdbscan/condensed_hierarchy.cu index 76f1a19cf8..5744bc51c8 100644 --- a/cpp/src/hdbscan/condensed_hierarchy.cu +++ b/cpp/src/hdbscan/condensed_hierarchy.cu @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021-2024, NVIDIA CORPORATION. + * Copyright (c) 2021-2025, NVIDIA CORPORATION. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,6 +27,7 @@ #include #include +#include #include #include #include @@ -157,8 +158,9 @@ void CondensedHierarchy::condense(value_idx* full_parents, thrust::cuda::par.on(stream), full_sizes, full_sizes + size, - cuda::proclaim_return_type([=] __device__(value_idx a) -> bool { return a != -1; }), - 0, + cuda::proclaim_return_type( + [=] __device__(value_idx a) -> value_idx { return static_cast(a != -1); }), + static_cast(0), thrust::plus()); parents.resize(n_edges, stream); diff --git a/cpp/src/hdbscan/detail/utils.h b/cpp/src/hdbscan/detail/utils.h index b151628429..4456416a6f 100644 --- a/cpp/src/hdbscan/detail/utils.h +++ b/cpp/src/hdbscan/detail/utils.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021-2024, NVIDIA CORPORATION. + * Copyright (c) 2021-2025, NVIDIA CORPORATION. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,6 +34,7 @@ #include #include +#include #include #include #include @@ -114,8 +115,9 @@ Common::CondensedHierarchy make_cluster_tree( thrust_policy, sizes, sizes + condensed_tree.get_n_edges(), - cuda::proclaim_return_type([=] __device__(value_idx a) -> bool { return a > 1; }), - 0, + cuda::proclaim_return_type( + [=] __device__(value_idx a) -> value_idx { return static_cast(a > 1); }), + static_cast(0), thrust::plus()); // remove leaves from condensed tree diff --git a/cpp/test/CMakeLists.txt b/cpp/test/CMakeLists.txt index 0576217965..6cfd9d2d2f 100644 --- a/cpp/test/CMakeLists.txt +++ b/cpp/test/CMakeLists.txt @@ -1,5 +1,5 @@ #============================================================================= -# Copyright (c) 2018-2024, NVIDIA CORPORATION. +# Copyright (c) 2018-2025, NVIDIA CORPORATION. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -149,6 +149,14 @@ if("${CMAKE_CUDA_COMPILER_VERSION}" VERSION_GREATER_EQUAL "11.2") # An HDBSCAN gtest is failing w/ CUDA 11.2 for some reason. if(all_algo OR hdbscan_algo) ConfigureTest(PREFIX SG NAME HDBSCAN_TEST sg/hdbscan_test.cu ML_INCLUDE) + # When using GCC 13, some maybe-uninitialized warnings appear from CCCL and are treated as errors. + # See this issue: https://github.com/rapidsai/cuml/issues/6225 + set_property( + SOURCE sg/hdbscan_test.cu + APPEND_STRING + PROPERTY COMPILE_FLAGS + " -Xcompiler=-Wno-maybe-uninitialized" + ) endif() endif() diff --git a/dependencies.yaml b/dependencies.yaml index f35eb74021..6761744857 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -190,29 +190,37 @@ dependencies: - matrix: arch: x86_64 packages: - - gcc_linux-64=11.* - - sysroot_linux-64==2.17 + - sysroot_linux-64==2.28 - matrix: arch: aarch64 packages: - - gcc_linux-aarch64=11.* - - sysroot_linux-aarch64==2.17 + - sysroot_linux-aarch64==2.28 - output_types: conda matrices: - matrix: arch: x86_64 cuda: "11.8" packages: + - gcc_linux-64=11.* - nvcc_linux-64=11.8 - matrix: arch: aarch64 cuda: "11.8" packages: + - gcc_linux-64=11.* - nvcc_linux-aarch64=11.8 - matrix: + arch: x86_64 + cuda: "12.*" + packages: + - cuda-nvcc + - gcc_linux-64=13.* + - matrix: + arch: aarch64 cuda: "12.*" packages: - cuda-nvcc + - gcc_linux-aarch64=13.* py_build_cuml: common: - output_types: [conda, requirements, pyproject]