From 6b889f81ecf06dd94b8675ccf11377b73004ae34 Mon Sep 17 00:00:00 2001 From: Wesley Maxey Date: Mon, 4 Dec 2023 18:25:26 -0800 Subject: [PATCH 1/4] Create a 16.grco option for LLVM. --- features/src/llvm/devcontainer-feature.json | 1 + features/src/llvm/install.sh | 61 +++++++++++++++------ 2 files changed, 46 insertions(+), 16 deletions(-) diff --git a/features/src/llvm/devcontainer-feature.json b/features/src/llvm/devcontainer-feature.json index aaf5cf5fc..db18ba5c2 100644 --- a/features/src/llvm/devcontainer-feature.json +++ b/features/src/llvm/devcontainer-feature.json @@ -9,6 +9,7 @@ "proposals": [ "dev", "17", + "16.grco", "16", "15", "14", diff --git a/features/src/llvm/install.sh b/features/src/llvm/install.sh index 2cd70ccec..9666e2e5f 100755 --- a/features/src/llvm/install.sh +++ b/features/src/llvm/install.sh @@ -22,26 +22,55 @@ check_packages \ software-properties-common \ ; -if [[ -z "$LLVM_VERSION" \ - || "$LLVM_VERSION" == "latest" \ - || "$LLVM_VERSION" == "dev" \ - || "$LLVM_VERSION" == "pre" \ - || "$LLVM_VERSION" == "prerelease" \ -]]; then - LLVM_VERSION="latest"; - find_version_from_git_tags \ - LLVM_VERSION \ - https://github.com/llvm/llvm-project \ - "tags/llvmorg-" "." "-init" "true"; - LLVM_VERSION="$(echo $LLVM_VERSION | grep -oP '[0-9]+')"; -fi +install_clang_grace() { + if [[ "$(uname -p)" != "aarch64" ]]; then + echo "Clang for Grace is only supported on aarch64" + exit 0; + fi + + echo "Installing NVIDIA Clang for Grace" + wget -O clang-grace-toolchain.deb https://developer.nvidia.com/downloads/assets/grace/clang/16.23.08/clang-grace-toolchain_16.23.08_arm64.deb + apt-get install ./clang-grace-toolchain + + PATH="/opt/nvidia/clang/16.23.08/bin:$PATH" + (update-alternatives --install /usr/bin/clang clang $(which clang) 30); + (update-alternatives --install /usr/bin/clang-16 clang-16 $(which clang) 30); + (update-alternatives --install /usr/bin/clang++ clang $(which clang++) 30); + (update-alternatives --install /usr/bin/clang++-16 clang++-16 $(which clang++) 30); +} -echo "Installing llvm-${LLVM_VERSION} compilers and tools"; +install_llvm() { + if [[ -z "$LLVM_VERSION" \ + || "$LLVM_VERSION" == "latest" \ + || "$LLVM_VERSION" == "dev" \ + || "$LLVM_VERSION" == "pre" \ + || "$LLVM_VERSION" == "prerelease" \ + ]]; then + LLVM_VERSION="latest"; + find_version_from_git_tags \ + LLVM_VERSION \ + https://github.com/llvm/llvm-project \ + "tags/llvmorg-" "." "-init" "true"; + LLVM_VERSION="$(echo $LLVM_VERSION | grep -oP '[0-9]+')"; + fi + + echo "Installing llvm-${LLVM_VERSION} compilers and tools"; -./llvm.sh $LLVM_VERSION ${PACKAGES:-all}; + ./llvm.sh $LLVM_VERSION ${PACKAGES:-all}; +} + +if [[ "$LLVM_VERSION" == "16.grco" ]]; then + LLVM_VERSION="16" + install_llvm + install_clang_grace + LLVM_TOOLS=( clangd clang-format clang-tidy ) +else + install_llvm + LLVM_TOOLS=( clang clangd clang++ clang-format clang-tidy lldb llvm-config llvm-cov ) +fi # Remove existing, install, and set default clang/llvm alternatives -for x in clang clangd clang++ clang-format clang-tidy lldb llvm-config llvm-cov; do +for x in ${LLVM_TOOLS[@]}; do if type ${x}-${LLVM_VERSION} >/dev/null 2>&1; then if ${x} != clang-format; then (update-alternatives --remove-all ${x} >/dev/null 2>&1 || true); From 53edbf3d3649b060056556e9d70cf35429297cfc Mon Sep 17 00:00:00 2001 From: Wesley Maxey Date: Mon, 4 Dec 2023 19:04:20 -0800 Subject: [PATCH 2/4] Add entry for LLVM-16.grco --- matrix.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/matrix.yml b/matrix.yml index b8545fe3e..435fdad83 100644 --- a/matrix.yml +++ b/matrix.yml @@ -25,6 +25,7 @@ x-llvm-14: &llvm_14 { name: "llvm", version: "14" } x-llvm-15: &llvm_15 { name: "llvm", version: "15" } x-llvm-prev: &llvm_prev { name: "llvm", version: "16" } x-llvm-curr: &llvm_curr { name: "llvm", version: "17" } +x-llvm-grco: &llvm_grco { name: "llvm", version: "16.grco" } x-llvm-env: &llvm_env {CC: "clang", CXX: "clang++", CUDAHOSTCXX: "clang++"} x-nvhpc-prev: &nvhpc_prev { name: "nvhpc", version: "23.5" } @@ -82,6 +83,7 @@ include: - {features: [*gcc_12, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *python, *cccl_dev], env: *gcc_env} - {features: [*gcc_13, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *python, *cccl_dev], env: *gcc_env} - {features: [*llvm_15, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *python, *cccl_dev], env: *llvm_env} + - {features: [*llvm_grco, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *python, *cccl_dev], env: *llvm_env} - {features: [*llvm_prev, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *python, *cccl_dev], env: *llvm_env} - {features: [*llvm_curr, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *python, *cccl_dev], env: *llvm_env} - {features: [*oneapi_2022, {<<: *cuda_curr_max, <<: *cccl_cuda_opts}, *python, *cccl_dev], env: *onapi_env} From 22ec1b8a9ae20fdf6d3e390cbdb66bb68f92a1ab Mon Sep 17 00:00:00 2001 From: Wesley Maxey Date: Mon, 4 Dec 2023 19:04:49 -0800 Subject: [PATCH 3/4] Fix build for 16.grco --- features/src/llvm/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/src/llvm/install.sh b/features/src/llvm/install.sh index 9666e2e5f..b755def50 100755 --- a/features/src/llvm/install.sh +++ b/features/src/llvm/install.sh @@ -30,7 +30,7 @@ install_clang_grace() { echo "Installing NVIDIA Clang for Grace" wget -O clang-grace-toolchain.deb https://developer.nvidia.com/downloads/assets/grace/clang/16.23.08/clang-grace-toolchain_16.23.08_arm64.deb - apt-get install ./clang-grace-toolchain + apt-get -y install ./clang-grace-toolchain.deb PATH="/opt/nvidia/clang/16.23.08/bin:$PATH" (update-alternatives --install /usr/bin/clang clang $(which clang) 30); From 02e52dea6abac250e274e9ab65290773a2e349b3 Mon Sep 17 00:00:00 2001 From: Wesley Maxey Date: Tue, 5 Dec 2023 11:31:31 -0800 Subject: [PATCH 4/4] Fix mixup in alternative names for 16.grco --- features/src/llvm/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/src/llvm/install.sh b/features/src/llvm/install.sh index b755def50..a853ef88a 100755 --- a/features/src/llvm/install.sh +++ b/features/src/llvm/install.sh @@ -35,7 +35,7 @@ install_clang_grace() { PATH="/opt/nvidia/clang/16.23.08/bin:$PATH" (update-alternatives --install /usr/bin/clang clang $(which clang) 30); (update-alternatives --install /usr/bin/clang-16 clang-16 $(which clang) 30); - (update-alternatives --install /usr/bin/clang++ clang $(which clang++) 30); + (update-alternatives --install /usr/bin/clang++ clang++ $(which clang++) 30); (update-alternatives --install /usr/bin/clang++-16 clang++-16 $(which clang++) 30); }