Skip to content

Commit 0a30054

Browse files
authored
Merge branch 'main' into any_resource_constructor
2 parents 7bec153 + 2496571 commit 0a30054

File tree

15 files changed

+117
-146
lines changed

15 files changed

+117
-146
lines changed

.github/actions/workflow-run-job-linux/action.yml

+1
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ runs:
149149
--env "CI=$CI" \
150150
--env "VAULT_HOST=" \
151151
--env "COMMAND=$COMMAND" \
152+
--env "SCCACHE_IDLE_TIMEOUT=0" \
152153
--env "GITHUB_ENV=$GITHUB_ENV" \
153154
--env "GITHUB_SHA=$GITHUB_SHA" \
154155
--env "GITHUB_PATH=$GITHUB_PATH" \

.github/workflows/build-rapids.yml

+34-42
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,37 @@ jobs:
9090
#! /usr/bin/env bash
9191
set -eo pipefail
9292
93-
. ~/cccl/ci/rapids/post-create-command.sh;
94-
9593
declare -a failures
9694
declare -A failures_map
9795
96+
_print_err_exit_msg() {
97+
local code=$?
98+
if test $code -ne 0; then
99+
echo "::error:: Failures: ${failures[*]}"
100+
echo -e "::group::️❗ \e[1;31mInstructions to Reproduce CI Failure Locally\e[0m"
101+
echo "::error:: To replicate this failure locally, follow the steps below:"
102+
echo "1. Clone the repository, and navigate to the correct branch and commit:"
103+
echo " git clone --branch $GITHUB_REF_NAME --single-branch https://github.com/$GITHUB_REPOSITORY.git && cd $(echo $GITHUB_REPOSITORY | cut -d'/' -f2) && git checkout $GITHUB_SHA"
104+
echo ""
105+
echo "2. Run the failed command inside the same Docker container used by this CI job:"
106+
cat <<____EOF
107+
RAPIDS_LIBS='${RAPIDS_LIBS}'$(for lib in cmake ${RAPIDS_LIBS}; do var=RAPIDS_${lib//-/_}_GIT_REPO; if test -v "$var" && test -n "${!var}"; then echo -n " $var='${!var}'"; fi; done) \\
108+
.devcontainer/launch.sh -d -c ${{matrix.cuda}} -H rapids-conda -- ./ci/rapids/rapids-entrypoint.sh \\
109+
/bin/bash -li -c 'uninstall-all -j -qqq && clean-all -j && build-all -j -v || exec /bin/bash -li'
110+
____EOF
111+
echo ""
112+
echo "For additional information, see:"
113+
echo " - DevContainer Documentation: https://github.com/NVIDIA/cccl/blob/main/.devcontainer/README.md"
114+
echo " - Continuous Integration (CI) Overview: https://github.com/NVIDIA/cccl/blob/main/ci-overview.md"
115+
fi
116+
exit $code
117+
}
118+
119+
# Print failures and exit
120+
trap '_print_err_exit_msg' EXIT;
121+
122+
. ~/cccl/ci/rapids/post-create-command.sh;
123+
98124
# Configure and build each lib with -DBUILD_TESTS=OFF, then again with -DBUILD_TESTS=ON
99125
for RAPIDS_ENABLE_TESTS in OFF ON; do
100126
_apply_manifest_modifications;
@@ -109,54 +135,20 @@ jobs:
109135
sccache --show-adv-stats
110136
done
111137
done
112-
113-
# Print failures and exit
114-
if test ${#failures[@]} -gt 0; then
115-
echo "::error:: Failures: ${failures[*]}"
116-
echo -e "::group::️❗ \e[1;31mInstructions to Reproduce CI Failure Locally\e[0m"
117-
echo "::error:: To replicate this failure locally, follow the steps below:"
118-
echo "1. Clone the repository, and navigate to the correct branch and commit:"
119-
echo " git clone --branch $GITHUB_REF_NAME --single-branch https://github.com/$GITHUB_REPOSITORY.git && cd $(echo $GITHUB_REPOSITORY | cut -d'/' -f2) && git checkout $GITHUB_SHA"
120-
echo ""
121-
echo "2. Run the failed command inside the same Docker container used by this CI job:"
122-
cat <<__EOF
123-
RAPIDS_LIBS='${RAPIDS_LIBS}'$(for lib in cmake ${RAPIDS_LIBS}; do var=RAPIDS_${lib//-/_}_GIT_REPO; if test -v "$var" && test -n "${!var}"; then echo -n " $var='${!var}'"; fi; done) \\
124-
.devcontainer/launch.sh -d -c ${{matrix.cuda}} -H rapids-conda -- ./ci/rapids/rapids-entrypoint.sh \\
125-
/bin/bash -li -c 'uninstall-all -j -qqq && clean-all -j && build-all -j -v || exec /bin/bash -li'
126-
__EOF
127-
echo ""
128-
echo "For additional information, see:"
129-
echo " - DevContainer Documentation: https://github.com/NVIDIA/cccl/blob/main/.devcontainer/README.md"
130-
echo " - Continuous Integration (CI) Overview: https://github.com/NVIDIA/cccl/blob/main/ci-overview.md"
131-
exit 1
132-
fi
133138
EOF
134139
135140
chmod +x "$RUNNER_TEMP"/ci{,-entrypoint}.sh
136141
137-
mkdir -p .aws
138-
139-
cat <<EOF > .aws/config
140-
[default]
141-
bucket=rapids-sccache-devs
142-
region=us-east-2
143-
EOF
144-
145-
cat <<EOF > .aws/credentials
146-
[default]
147-
aws_access_key_id=$AWS_ACCESS_KEY_ID
148-
aws_session_token=$AWS_SESSION_TOKEN
149-
aws_secret_access_key=$AWS_SECRET_ACCESS_KEY
150-
EOF
151-
152-
chmod 0600 .aws/credentials
153-
chmod 0664 .aws/config
154-
155142
.devcontainer/launch.sh \
156143
--docker \
157144
--cuda ${{matrix.cuda}} \
158145
--host rapids-conda \
159-
--env VAULT_HOST= \
146+
--env "VAULT_HOST=" \
147+
--env "AWS_REGION=$AWS_REGION" \
148+
--env "SCCACHE_REGION=$AWS_REGION" \
149+
--env "AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID" \
150+
--env "AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN" \
151+
--env "AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY" \
160152
--env "GITHUB_SHA=$GITHUB_SHA" \
161153
--env "GITHUB_REF_NAME=$GITHUB_REF_NAME" \
162154
--env "GITHUB_REPOSITORY=$GITHUB_REPOSITORY" \

CMakeLists.txt

+2
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,10 @@ enable_testing()
5757
if (CCCL_TOPLEVEL_PROJECT)
5858
include(cmake/AppendOptionIfAvailable.cmake)
5959
include(cmake/CCCLUtilities.cmake) # include this before other CCCL helpers
60+
6061
include(cmake/CCCLBuildCompilerTargets.cmake)
6162
include(cmake/CCCLClangdCompileInfo.cmake)
63+
include(cmake/CCCLConfigureTarget.cmake)
6264

6365
cccl_build_compiler_targets()
6466
endif()

ci/rapids/post-create-command.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ _run_post_create_command() {
110110
gh config set git_protocol ssh;
111111
gh config set git_protocol ssh --host github.com;
112112

113-
clone-all -j "$(nproc --all)" -v -q --clone-upstream --single-branch --shallow-submodules;
113+
clone-all -j "$(nproc --all)" -v -q --clone-upstream --single-branch --shallow-submodules --no-update-env;
114114
}
115115

116116
if [ "$(basename "${BASH_SOURCE[${#BASH_SOURCE[@]}-1]}")" = post-create-command.sh ]; then

ci/windows/build_cudax.ps1

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ Param(
33
[Parameter(Mandatory = $false)]
44
[Alias("std")]
55
[ValidateNotNullOrEmpty()]
6-
[ValidateSet(17, 20)]
7-
[int]$CXX_STANDARD = 17
6+
[ValidateSet(20)]
7+
[int]$CXX_STANDARD = 20
88
)
99

1010
$CURRENT_PATH = Split-Path $pwd -leaf

cmake/CCCLConfigureTarget.cmake

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
set(CCCL_EXECUTABLE_OUTPUT_DIR "${CCCL_BINARY_DIR}/bin")
2+
set(CCCL_LIBRARY_OUTPUT_DIR "${CCCL_BINARY_DIR}/lib")
3+
4+
# Setup common properties for all test/example/etc targets.
5+
function(cccl_configure_target target_name)
6+
set(options)
7+
set(oneValueArgs DIALECT)
8+
set(multiValueArgs)
9+
cmake_parse_arguments(CCT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
10+
11+
get_target_property(type ${target_name} TYPE)
12+
13+
if (DEFINED CCT_DIALECT)
14+
set_target_properties(${target_name}
15+
PROPERTIES
16+
CXX_STANDARD ${CCT_DIALECT}
17+
CUDA_STANDARD ${CCT_DIALECT}
18+
# Must manually request that the standards above are actually respected
19+
# or else CMake will silently fail to configure the targets correctly...
20+
# Note that this doesn't actually work as of CMake 3.16:
21+
# https://gitlab.kitware.com/cmake/cmake/-/issues/20953
22+
# We'll leave these properties enabled in hopes that they will someday
23+
# work.
24+
CXX_STANDARD_REQUIRED ON
25+
CUDA_STANDARD_REQUIRED ON
26+
)
27+
28+
get_property(langs GLOBAL PROPERTY ENABLED_LANGUAGES)
29+
set(dialect_features)
30+
if (CUDA IN_LIST langs)
31+
list(APPEND dialect_features cuda_std_${CCT_DIALECT})
32+
endif()
33+
if (CXX IN_LIST langs)
34+
list(APPEND dialect_features cxx_std_${CCT_DIALECT})
35+
endif()
36+
37+
get_target_property(type ${target_name} TYPE)
38+
if (${type} STREQUAL "INTERFACE_LIBRARY")
39+
target_compile_features(${target_name} INTERFACE
40+
${dialect_features}
41+
)
42+
else()
43+
target_compile_features(${target_name} PUBLIC
44+
${dialect_features}
45+
)
46+
endif()
47+
endif()
48+
49+
if (NOT ${type} STREQUAL "INTERFACE_LIBRARY")
50+
set_target_properties(${target_name}
51+
PROPERTIES
52+
ARCHIVE_OUTPUT_DIRECTORY "${CCCL_LIBRARY_OUTPUT_DIR}"
53+
LIBRARY_OUTPUT_DIRECTORY "${CCCL_LIBRARY_OUTPUT_DIR}"
54+
RUNTIME_OUTPUT_DIRECTORY "${CCCL_EXECUTABLE_OUTPUT_DIR}"
55+
)
56+
endif()
57+
endfunction()

cub/CMakeLists.txt

-5
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,6 @@ endif ()
7878

7979
set(CMAKE_CXX_EXTENSIONS OFF)
8080

81-
# Where to put build outputs. Use CMAKE_BINARY_DIR so they'll show up alongside
82-
# Thrust targets when building as part of Thrust.
83-
set(CUB_LIBRARY_OUTPUT_DIR "${CMAKE_BINARY_DIR}/lib")
84-
set(CUB_EXECUTABLE_OUTPUT_DIR "${CMAKE_BINARY_DIR}/bin")
85-
8681
cub_build_compiler_targets()
8782
cub_build_target_list()
8883

cub/benchmarks/CMakeLists.txt

+1-7
Original file line numberDiff line numberDiff line change
@@ -70,14 +70,8 @@ function(add_bench target_name bench_name bench_src)
7070
set(${target_name} ${bench_target} PARENT_SCOPE)
7171

7272
add_executable(${bench_target} "${bench_src}")
73+
cccl_configure_target(${bench_target} DIALECT 17)
7374
target_link_libraries(${bench_target} PRIVATE nvbench_helper nvbench::main)
74-
set_target_properties(${bench_target}
75-
PROPERTIES
76-
ARCHIVE_OUTPUT_DIRECTORY "${CUB_LIBRARY_OUTPUT_DIR}"
77-
LIBRARY_OUTPUT_DIRECTORY "${CUB_LIBRARY_OUTPUT_DIR}"
78-
RUNTIME_OUTPUT_DIRECTORY "${CUB_EXECUTABLE_OUTPUT_DIR}"
79-
CUDA_STANDARD 17
80-
CXX_STANDARD 17)
8175
endfunction()
8276

8377
function(add_bench_dir bench_dir)

cub/benchmarks/nvbench_helper/CMakeLists.txt

+1-7
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,11 @@ if (CUB_ENABLE_NVBENCH_HELPER_TESTS)
2929
test/gen_uniform_distribution.cu
3030
test/gen_power_law_distribution.cu
3131
test/main.cpp)
32+
cccl_configure_target(${nvbench_helper_test_target} DIALECT 17)
3233
target_link_libraries(${nvbench_helper_test_target} PRIVATE nvbench_helper Catch2::Catch2 Boost::math)
3334
if ("${device_system}" STREQUAL "cpp")
3435
target_compile_definitions(${nvbench_helper_test_target} PRIVATE THRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_CPP)
3536
endif()
36-
set_target_properties(${nvbench_helper_test_target}
37-
PROPERTIES
38-
ARCHIVE_OUTPUT_DIRECTORY "${CUB_LIBRARY_OUTPUT_DIR}"
39-
LIBRARY_OUTPUT_DIRECTORY "${CUB_LIBRARY_OUTPUT_DIR}"
40-
RUNTIME_OUTPUT_DIRECTORY "${CUB_EXECUTABLE_OUTPUT_DIR}"
41-
CUDA_STANDARD 17
42-
CXX_STANDARD 17)
4337
endfunction()
4438

4539
add_nvbench_helper_test(cpp)

cub/cmake/CubBuildTargetList.cmake

+2-12
Original file line numberDiff line numberDiff line change
@@ -49,23 +49,13 @@ define_property(TARGET PROPERTY _CUB_PREFIX
4949
)
5050

5151
function(cub_set_target_properties target_name dialect prefix)
52+
cccl_configure_target(${target_name} DIALECT ${dialect})
53+
5254
set_target_properties(${target_name}
5355
PROPERTIES
5456
_CUB_DIALECT ${dialect}
5557
_CUB_PREFIX ${prefix}
5658
)
57-
58-
get_target_property(type ${target_name} TYPE)
59-
if (NOT ${type} STREQUAL "INTERFACE_LIBRARY")
60-
set_target_properties(${target_name}
61-
PROPERTIES
62-
CXX_STANDARD ${dialect}
63-
CUDA_STANDARD ${dialect}
64-
ARCHIVE_OUTPUT_DIRECTORY "${CUB_LIBRARY_OUTPUT_DIR}"
65-
LIBRARY_OUTPUT_DIRECTORY "${CUB_LIBRARY_OUTPUT_DIR}"
66-
RUNTIME_OUTPUT_DIRECTORY "${CUB_EXECUTABLE_OUTPUT_DIR}"
67-
)
68-
endif()
6959
endfunction()
7060

7161
# Get a cub property from a target and store it in var_name

cudax/cmake/cudaxBuildTargetList.cmake

+2-16
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,6 @@
3333
# to ensure that dialect information is updated correctly, e.g.
3434
# `_cn_clone_target_properties(${my_cudax_test} ${some_cudax_target})`
3535

36-
# Place build outputs in the root project dir:
37-
set(cudax_LIBRARY_OUTPUT_DIR "${CMAKE_BINARY_DIR}/lib")
38-
set(cudax_EXECUTABLE_OUTPUT_DIR "${CMAKE_BINARY_DIR}/bin")
39-
4036
# Define available dialects:
4137
set(cudax_CPP_DIALECT_OPTIONS
4238
17 20
@@ -66,23 +62,13 @@ define_property(TARGET PROPERTY _cudax_PREFIX
6662
)
6763

6864
function(cudax_set_target_properties target_name dialect prefix)
65+
cccl_configure_target(${target_name} DIALECT ${dialect})
66+
6967
set_target_properties(${target_name}
7068
PROPERTIES
7169
_cudax_DIALECT ${dialect}
7270
_cudax_PREFIX ${prefix}
7371
)
74-
75-
get_target_property(type ${target_name} TYPE)
76-
if (NOT ${type} STREQUAL "INTERFACE_LIBRARY")
77-
set_target_properties(${target_name}
78-
PROPERTIES
79-
CXX_STANDARD ${dialect}
80-
CUDA_STANDARD ${dialect}
81-
ARCHIVE_OUTPUT_DIRECTORY "${cudax_LIBRARY_OUTPUT_DIR}"
82-
LIBRARY_OUTPUT_DIRECTORY "${cudax_LIBRARY_OUTPUT_DIR}"
83-
RUNTIME_OUTPUT_DIRECTORY "${cudax_EXECUTABLE_OUTPUT_DIR}"
84-
)
85-
endif()
8672
endfunction()
8773

8874
# Get a cudax property from a target and store it in var_name

thrust/CMakeLists.txt

-5
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,6 @@ endif ()
9292
# Disable compiler extensions:
9393
set(CMAKE_CXX_EXTENSIONS OFF)
9494

95-
# Where to put build outputs. Use CMAKE_BINARY_DIR so they'll show up in the
96-
# top-level project's dir when building Thrust via add_subdirectory.
97-
set(THRUST_LIBRARY_OUTPUT_DIR "${CMAKE_BINARY_DIR}/lib")
98-
set(THRUST_EXECUTABLE_OUTPUT_DIR "${CMAKE_BINARY_DIR}/bin")
99-
10095
thrust_configure_multiconfig()
10196
thrust_find_thrust()
10297
thrust_build_compiler_targets()

thrust/benchmarks/CMakeLists.txt

+1-8
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,7 @@ function(add_bench target_name bench_name bench_src)
3232
set(${target_name} ${bench_target} PARENT_SCOPE)
3333

3434
add_executable(${bench_target} "${bench_src}")
35-
36-
set_target_properties(${bench_target}
37-
PROPERTIES
38-
ARCHIVE_OUTPUT_DIRECTORY "${THRUST_LIBRARY_OUTPUT_DIR}"
39-
LIBRARY_OUTPUT_DIRECTORY "${THRUST_LIBRARY_OUTPUT_DIR}"
40-
RUNTIME_OUTPUT_DIRECTORY "${THRUST_EXECUTABLE_OUTPUT_DIR}"
41-
CUDA_STANDARD 17
42-
CXX_STANDARD 17)
35+
cccl_configure_target(${bench_target} DIALECT 17)
4336
target_link_libraries(${bench_target} PRIVATE nvbench_helper nvbench::main)
4437
endfunction()
4538

thrust/cmake/ThrustBuildTargetList.cmake

+2-36
Original file line numberDiff line numberDiff line change
@@ -52,49 +52,15 @@ define_property(TARGET PROPERTY _THRUST_PREFIX
5252
)
5353

5454
function(thrust_set_target_properties target_name host device dialect prefix)
55+
cccl_configure_target(${target_name} DIALECT ${dialect})
56+
5557
set_target_properties(${target_name}
5658
PROPERTIES
5759
_THRUST_HOST ${host}
5860
_THRUST_DEVICE ${device}
5961
_THRUST_DIALECT ${dialect}
6062
_THRUST_PREFIX ${prefix}
6163
)
62-
63-
get_property(langs GLOBAL PROPERTY ENABLED_LANGUAGES)
64-
set(standard_features)
65-
if (CUDA IN_LIST langs)
66-
list(APPEND standard_features cuda_std_${dialect})
67-
endif()
68-
if (CXX IN_LIST langs)
69-
list(APPEND standard_features cxx_std_${dialect})
70-
endif()
71-
72-
get_target_property(type ${target_name} TYPE)
73-
if (${type} STREQUAL "INTERFACE_LIBRARY")
74-
target_compile_features(${target_name} INTERFACE
75-
${standard_features}
76-
)
77-
else()
78-
target_compile_features(${target_name} PUBLIC
79-
${standard_features}
80-
)
81-
set_target_properties(${target_name}
82-
PROPERTIES
83-
CXX_STANDARD ${dialect}
84-
CUDA_STANDARD ${dialect}
85-
# Must manually request that the standards above are actually respected
86-
# or else CMake will silently fail to configure the targets correctly...
87-
# Note that this doesn't actually work as of CMake 3.16:
88-
# https://gitlab.kitware.com/cmake/cmake/-/issues/20953
89-
# We'll leave these properties enabled in hopes that they will someday
90-
# work.
91-
CXX_STANDARD_REQUIRED ON
92-
CUDA_STANDARD_REQUIRED ON
93-
ARCHIVE_OUTPUT_DIRECTORY "${THRUST_LIBRARY_OUTPUT_DIR}"
94-
LIBRARY_OUTPUT_DIRECTORY "${THRUST_LIBRARY_OUTPUT_DIR}"
95-
RUNTIME_OUTPUT_DIRECTORY "${THRUST_EXECUTABLE_OUTPUT_DIR}"
96-
)
97-
endif()
9864
endfunction()
9965

10066
# Get a thrust property from a target and store it in var_name

0 commit comments

Comments
 (0)