From 21d9fda8b783c1745a10ef86f0e694b0f9497676 Mon Sep 17 00:00:00 2001 From: Robert Maynard Date: Fri, 20 Jan 2023 17:55:07 -0500 Subject: [PATCH 1/3] Add deprecation notice to passing "" to CMAKE_CUDA_ARCHITECTURES --- .../cuda/detail/architectures_policy.cmake | 7 ++++ rapids-cmake/cuda/init_architectures.cmake | 2 ++ testing/cuda/CMakeLists.txt | 3 ++ .../CMakeLists.txt | 34 +++++++++++++++++++ 4 files changed, 46 insertions(+) create mode 100644 testing/cuda/init_arch-native-via-empty-str-deprecated/CMakeLists.txt diff --git a/rapids-cmake/cuda/detail/architectures_policy.cmake b/rapids-cmake/cuda/detail/architectures_policy.cmake index 5fdc5b2e..063b7a93 100644 --- a/rapids-cmake/cuda/detail/architectures_policy.cmake +++ b/rapids-cmake/cuda/detail/architectures_policy.cmake @@ -50,6 +50,13 @@ function(rapids_cuda_architectures_policy called_from mode_variable) ) endif() endif() + if(value STREQUAL "") + set(new_value "NATIVE") + rapids_cmake_policy(DEPRECATED_IN 23.02 + REMOVED_IN 23.06 + MESSAGE "Usage of `""` as value for `CMAKE_CUDA_ARCHITECTURES` has been deprecated, use `NATIVE` instead." + ) + endif() set(${mode_variable} ${new_value} PARENT_SCOPE) endfunction() diff --git a/rapids-cmake/cuda/init_architectures.cmake b/rapids-cmake/cuda/init_architectures.cmake index 9be27a52..75ddacd7 100644 --- a/rapids-cmake/cuda/init_architectures.cmake +++ b/rapids-cmake/cuda/init_architectures.cmake @@ -84,6 +84,8 @@ function(rapids_cuda_init_architectures project_name) rapids_cuda_architectures_policy(FROM_INIT cuda_arch_mode) elseif(CMAKE_CUDA_ARCHITECTURES STREQUAL "" OR CMAKE_CUDA_ARCHITECTURES STREQUAL "NATIVE") set(cuda_arch_mode "NATIVE") + set(deprecated_cuda_arch_mode "") + rapids_cuda_architectures_policy(FROM_INIT deprecated_cuda_arch_mode) elseif(NOT (DEFINED ENV{CUDAARCHS} OR DEFINED CMAKE_CUDA_ARCHITECTURES)) set(cuda_arch_mode "RAPIDS") endif() diff --git a/testing/cuda/CMakeLists.txt b/testing/cuda/CMakeLists.txt index 1cb68007..4540a319 100644 --- a/testing/cuda/CMakeLists.txt +++ b/testing/cuda/CMakeLists.txt @@ -45,3 +45,6 @@ set(deprecated_message "rapids-cmake policy [deprecated=23.02 removed=23.06]: Us add_cmake_config_test( init_arch-all-via-env-deprecated.cmake SHOULD_FAIL "${deprecated_message}") add_cmake_config_test( init_arch-all-deprecated.cmake SHOULD_FAIL "${deprecated_message}") add_cmake_config_test( set_arch-all-deprecated.cmake SHOULD_FAIL "${deprecated_message}") + +set(deprecated_message "rapids-cmake policy [deprecated=23.02 removed=23.06]: Usage of `""`") +add_cmake_config_test( init_arch-native-via-empty-str-deprecated SHOULD_FAIL "${deprecated_message}") diff --git a/testing/cuda/init_arch-native-via-empty-str-deprecated/CMakeLists.txt b/testing/cuda/init_arch-native-via-empty-str-deprecated/CMakeLists.txt new file mode 100644 index 00000000..d9940939 --- /dev/null +++ b/testing/cuda/init_arch-native-via-empty-str-deprecated/CMakeLists.txt @@ -0,0 +1,34 @@ +#============================================================================= +# Copyright (c) 2023, NVIDIA CORPORATION. +# +# 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. +#============================================================================= +include(${rapids-cmake-dir}/cuda/init_architectures.cmake) + +cmake_minimum_required(VERSION 3.23.1) + +set(CMAKE_CUDA_ARCHITECTURES "") +set(CMAKE_ERROR_DEPRECATED ON) + +rapids_cuda_init_architectures(rapids-project) +project(rapids-project LANGUAGES CUDA) + +if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES) + message(FATAL_ERROR "rapids_cuda_init_architectures didn't init CUDA_ARCHITECTURES") +endif() + +if(CMAKE_CUDA_ARCHITECTURES STREQUAL "") + message(FATAL_ERROR "rapids_cuda_init_architectures didn't init CUDA_ARCHITECTURES") +endif() + +include("${rapids-cmake-testing-dir}/cuda/validate-cuda-native.cmake") From 0d18b1de12994e64592c83a8ea9c7fbad61a2d00 Mon Sep 17 00:00:00 2001 From: Robert Maynard Date: Mon, 23 Jan 2023 09:11:44 -0500 Subject: [PATCH 2/3] Use string literals for policy messages --- rapids-cmake/cuda/detail/architectures_policy.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rapids-cmake/cuda/detail/architectures_policy.cmake b/rapids-cmake/cuda/detail/architectures_policy.cmake index 063b7a93..b2494618 100644 --- a/rapids-cmake/cuda/detail/architectures_policy.cmake +++ b/rapids-cmake/cuda/detail/architectures_policy.cmake @@ -41,12 +41,12 @@ function(rapids_cuda_architectures_policy called_from mode_variable) if(called_from STREQUAL "FROM_INIT") rapids_cmake_policy(DEPRECATED_IN 23.02 REMOVED_IN 23.06 - MESSAGE "Usage of `ALL` as value for `CMAKE_CUDA_ARCHITECTURES` or the env variable `CUDAARCHS` has been deprecated, use `RAPIDS` instead." + MESSAGE [=[Usage of `ALL` as value for `CMAKE_CUDA_ARCHITECTURES` or the env variable `CUDAARCHS` has been deprecated, use `RAPIDS` instead.]=] ) elseif(called_from STREQUAL "FROM_SET") rapids_cmake_policy(DEPRECATED_IN 23.02 REMOVED_IN 23.06 - MESSAGE "Usage of `ALL` as value passed to `rapids_cuda_set_architectures` has been deprecated, use `RAPIDS` instead." + MESSAGE [=[Usage of `ALL` as value passed to `rapids_cuda_set_architectures` has been deprecated, use `RAPIDS` instead.]=] ) endif() endif() @@ -54,7 +54,7 @@ function(rapids_cuda_architectures_policy called_from mode_variable) set(new_value "NATIVE") rapids_cmake_policy(DEPRECATED_IN 23.02 REMOVED_IN 23.06 - MESSAGE "Usage of `""` as value for `CMAKE_CUDA_ARCHITECTURES` has been deprecated, use `NATIVE` instead." + MESSAGE [=[Usage of `""` as value for `CMAKE_CUDA_ARCHITECTURES` has been deprecated, use `NATIVE` instead.]=] ) endif() From 09e269097460a9b76e836db530e897e20759bcff Mon Sep 17 00:00:00 2001 From: Robert Maynard Date: Mon, 23 Jan 2023 09:15:17 -0500 Subject: [PATCH 3/3] Use better placeholder --- rapids-cmake/cuda/detail/architectures_policy.cmake | 2 +- rapids-cmake/cuda/init_architectures.cmake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rapids-cmake/cuda/detail/architectures_policy.cmake b/rapids-cmake/cuda/detail/architectures_policy.cmake index b2494618..32ff8833 100644 --- a/rapids-cmake/cuda/detail/architectures_policy.cmake +++ b/rapids-cmake/cuda/detail/architectures_policy.cmake @@ -50,7 +50,7 @@ function(rapids_cuda_architectures_policy called_from mode_variable) ) endif() endif() - if(value STREQUAL "") + if(value STREQUAL "EMPTY_STR") set(new_value "NATIVE") rapids_cmake_policy(DEPRECATED_IN 23.02 REMOVED_IN 23.06 diff --git a/rapids-cmake/cuda/init_architectures.cmake b/rapids-cmake/cuda/init_architectures.cmake index 75ddacd7..5d865f84 100644 --- a/rapids-cmake/cuda/init_architectures.cmake +++ b/rapids-cmake/cuda/init_architectures.cmake @@ -84,7 +84,7 @@ function(rapids_cuda_init_architectures project_name) rapids_cuda_architectures_policy(FROM_INIT cuda_arch_mode) elseif(CMAKE_CUDA_ARCHITECTURES STREQUAL "" OR CMAKE_CUDA_ARCHITECTURES STREQUAL "NATIVE") set(cuda_arch_mode "NATIVE") - set(deprecated_cuda_arch_mode "") + set(deprecated_cuda_arch_mode "EMPTY_STR") rapids_cuda_architectures_policy(FROM_INIT deprecated_cuda_arch_mode) elseif(NOT (DEFINED ENV{CUDAARCHS} OR DEFINED CMAKE_CUDA_ARCHITECTURES)) set(cuda_arch_mode "RAPIDS")