From 86fd57b08fa44bd6c71092f942a3d8538e895259 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Thu, 9 Feb 2023 21:51:22 -0800 Subject: [PATCH 01/25] add devcontainer and initial scripts --- .devcontainer/Dockerfile | 22 ++++ .devcontainer/devcontainer.json | 119 ++++++++++++++++++ .../home/coder/workspace.code-workspace | 12 ++ .devcontainer/opt/rapids/.clangd | 52 ++++++++ .devcontainer/opt/rapids/bin/clone-cudf.sh | 6 + .devcontainer/opt/rapids/bin/clone-rmm.sh | 6 + .../opt/rapids/bin/make-clangd-config-yml.sh | 24 ++++ .../opt/rapids/bin/make-rapids-conda-env.sh | 70 +++++++++++ .../opt/rapids/bin/post-attach-command.sh | 6 + .../opt/rapids/bin/update-content-command.sh | 9 ++ .gitignore | 2 + 11 files changed, 328 insertions(+) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json create mode 100644 .devcontainer/home/coder/workspace.code-workspace create mode 100644 .devcontainer/opt/rapids/.clangd create mode 100755 .devcontainer/opt/rapids/bin/clone-cudf.sh create mode 100755 .devcontainer/opt/rapids/bin/clone-rmm.sh create mode 100755 .devcontainer/opt/rapids/bin/make-clangd-config-yml.sh create mode 100755 .devcontainer/opt/rapids/bin/make-rapids-conda-env.sh create mode 100755 .devcontainer/opt/rapids/bin/post-attach-command.sh create mode 100755 .devcontainer/opt/rapids/bin/update-content-command.sh diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 000000000..b545de4bc --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,22 @@ +ARG CUDA=11.8 +ARG RAPIDS=23.04 +ARG DISTRO=ubuntu22.04 +ARG REPO=rapidsai/devcontainers +ARG FROM_IMAGE=${REPO}:${RAPIDS}-cpp-cuda${CUDA}-mambaforge-${DISTRO} + +FROM ${FROM_IMAGE} + +RUN /opt/conda/bin/pip install rapids-dependency-file-generator conda-merge + +COPY --chown=coder:coder home/coder/workspace.code-workspace /home/coder/ + +COPY --chown=root:root opt/rapids /opt/rapids + +WORKDIR /home/coder/ + +ENV RUSTC_WRAPPER=sccache +ENV CMAKE_C_COMPILER_LAUNCHER=sccache +ENV CMAKE_CXX_COMPILER_LAUNCHER=sccache +ENV CMAKE_CUDA_COMPILER_LAUNCHER=sccache +ENV HISTFILE=/home/coder/.cache/._bash_history +ENV SCCACHE_S3_KEY_PREFIX=cuspatial-dev diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 000000000..20d3b231d --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,119 @@ +{ + "build": { + "context": ".", + "dockerfile": "./Dockerfile", + "args": { + "CUDA": "11.8" + } + }, + + "capAdd": [ + "SYS_PTRACE" + ], + "securityOpt": [ + "seccomp=unconfined" + ], + "hostRequirements": { + "gpu": true + }, + + "initializeCommand": "mkdir -p ../.cache ../.conda ../rmm ../cudf", + "updateContentCommand": ["bash", "-li", "/opt/devcontainer/bin/update-content-command.sh"], + "postStartCommand": ["bash", "-li", "/opt/devcontainer/bin/post-start-command.sh"], + "postAttachCommand": ["bash", "-li", "/opt/devcontainer/bin/post-attach-command.sh"], + + "containerEnv": { + "DEFAULT_CONDA_ENV": "cuspatial", + "PYTHONDONTWRITEBYTECODE": "1", + "VAULT_HOST": "https://vault.ops.k8s.rapids.ai" + }, + + "workspaceFolder": "/home/coder", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuspatial,type=bind", + "mounts": [ + { + "type": "bind", + "target": "/home/coder/.cache", + "source": "${localWorkspaceFolder}/../.cache" + }, + { + "type": "bind", + "target": "/home/coder/.conda", + "source": "${localWorkspaceFolder}/../.conda" + }, + { + "type": "bind", + "target": "/home/coder/rmm", + "source": "${localWorkspaceFolder}/../rmm" + }, + { + "type": "bind", + "target": "/home/coder/cudf", + "source": "${localWorkspaceFolder}/../cudf" + }, + { + "type": "bind", + "target": "/opt/rapids", + "source": "${localWorkspaceFolder}/.devcontainer/opt/rapids" + }, + { + "type": "bind", + "target": "/home/coder/workspace.code-workspace", + "source": "${localWorkspaceFolder}/.devcontainer/home/coder/workspace.code-workspace" + } + ], + + "customizations": { + "vscode": { + "extensions": [ + "cschlosser.doxdocgen", + "llvm-vs-code-extensions.vscode-clangd", + "mutantdino.resourcemonitor", + "ms-vscode.cpptools", + "tamasfe.even-better-toml", + "twxs.cmake", + "vadimcn.vscode-lldb", + "xaver.clang-format" + ], + "settings": { + "C_Cpp.vcpkg.enabled": false, + "C_Cpp.formatting": "disabled", + "C_Cpp.autocomplete": "disabled", + "C_Cpp.errorSquiggles": "disabled", + "C_Cpp.intelliSenseEngine": "disabled", + "C_Cpp.configurationWarnings": "disabled", + "C_Cpp.autoAddFileAssociations": false, + "clang-format.fallbackStyle": "none", + "clangd.arguments": [ + "--log=info", + "--clang-tidy", + "--debug-origin", + "--pch-storage=disk", + "--use-dirty-headers", + "--background-index=true", + "--all-scopes-completion", + "--header-insertion=iwyu", + "--completion-parse=always", + "--completion-style=detailed", + "--header-insertion-decorators" + ], + "files.trimFinalNewlines": true, + "files.insertFinalNewline": true, + "files.trimTrailingWhitespace": true, + "files.watcherExclude": { + "**/target/**": true + }, + "python.linting.flake8Enabled": true, + "[c]": { + "editor.defaultFormatter": "xaver.clang-format" + }, + "[cpp]": { + "editor.defaultFormatter": "xaver.clang-format" + }, + "[cuda-cpp]": { + "editor.defaultFormatter": "xaver.clang-format" + } + } + } + } +} diff --git a/.devcontainer/home/coder/workspace.code-workspace b/.devcontainer/home/coder/workspace.code-workspace new file mode 100644 index 000000000..1900f081a --- /dev/null +++ b/.devcontainer/home/coder/workspace.code-workspace @@ -0,0 +1,12 @@ +{ + "folders": [ + { "path": "cuspatial" }, + { "path": "cudf" }, + { "path": "rmm" }, + { "path": ".conda" }, + { "path": ".cache" }, + ], + "settings": { + "terminal.integrated.cwd": "" + } +} diff --git a/.devcontainer/opt/rapids/.clangd b/.devcontainer/opt/rapids/.clangd new file mode 100644 index 000000000..ed4bf9ef8 --- /dev/null +++ b/.devcontainer/opt/rapids/.clangd @@ -0,0 +1,52 @@ +# https://clangd.llvm.org/config + +# Apply a config conditionally to all C files +If: + PathMatch: .*\.(c|h)$ + +--- + +# Apply a config conditionally to all C++ files +If: + PathMatch: .*\.(c|h)pp + +--- + +# Apply a config conditionally to all CUDA files +If: + PathMatch: .*\.cuh? +CompileFlags: + Add: + # No error on unknown CUDA versions + - "-Wno-unknown-cuda-version" + # Allow variadic CUDA functions + - "-Xclang=-fcuda-allow-variadic-functions" + +--- + +# Tweak the clangd parse settings for all files +CompileFlags: + Add: + # report all errors + - "-ferror-limit=0" + - "-fmacro-backtrace-limit=0" + - "-ftemplate-backtrace-limit=0" + Remove: + - "-stdpar*" + # strip CUDA fatbin args + - "-Xfatbin*" + - "-Xcompiler*" + - "-gpu=*" + - "--diag_suppress*" + # strip CUDA arch flags + - "-gencode*" + - "--generate-code*" + # strip gcc's -fcoroutines + - -fcoroutines + # strip CUDA flags unknown to clang + - "-ccbin*" + - "--compiler-options*" + - "--expt-extended-lambda" + - "--expt-relaxed-constexpr" + - "-forward-unknown-to-host-compiler" + - "-Werror=cross-execution-space-call" diff --git a/.devcontainer/opt/rapids/bin/clone-cudf.sh b/.devcontainer/opt/rapids/bin/clone-cudf.sh new file mode 100755 index 000000000..07f731c85 --- /dev/null +++ b/.devcontainer/opt/rapids/bin/clone-cudf.sh @@ -0,0 +1,6 @@ +#! /usr/bin/env bash + +if [[ ! -d ~/cudf/.git ]]; then + echo "Cloning cuDF" 1>&2; + /opt/devcontainer/bin/github/repo/clone.sh "rapidsai" "cudf" "cudf"; +fi diff --git a/.devcontainer/opt/rapids/bin/clone-rmm.sh b/.devcontainer/opt/rapids/bin/clone-rmm.sh new file mode 100755 index 000000000..dbbcbed79 --- /dev/null +++ b/.devcontainer/opt/rapids/bin/clone-rmm.sh @@ -0,0 +1,6 @@ +#! /usr/bin/env bash + +if [[ ! -d ~/rmm/.git ]]; then + echo "Cloning RMM" 1>&2; + /opt/devcontainer/bin/github/repo/clone.sh "rapidsai" "rmm" "rmm"; +fi diff --git a/.devcontainer/opt/rapids/bin/make-clangd-config-yml.sh b/.devcontainer/opt/rapids/bin/make-clangd-config-yml.sh new file mode 100755 index 000000000..6d1039457 --- /dev/null +++ b/.devcontainer/opt/rapids/bin/make-clangd-config-yml.sh @@ -0,0 +1,24 @@ +#! /usr/bin/env bash + +skbuild_dir="$(python -c 'import skbuild; print(skbuild.constants.SKBUILD_DIR())')"; + +mkdir -p ~/.config/clangd; + +cat < ~/.config/clangd/config.yaml +$(cat /opt/rapids/.clangd) +--- +If: + PathMatch: $HOME/rmm/.* +CompileFlags: + CompilationDatabase: $HOME/rmm/build +--- +If: + PathMatch: $HOME/cudf/.* +CompileFlags: + CompilationDatabase: $HOME/cudf/cpp/build +--- +If: + PathMatch: $HOME/cuspatial/.* +CompileFlags: + CompilationDatabase: $HOME/cuspatial/cpp/build +EOF diff --git a/.devcontainer/opt/rapids/bin/make-rapids-conda-env.sh b/.devcontainer/opt/rapids/bin/make-rapids-conda-env.sh new file mode 100755 index 000000000..55f5b8e61 --- /dev/null +++ b/.devcontainer/opt/rapids/bin/make-rapids-conda-env.sh @@ -0,0 +1,70 @@ +#! /usr/bin/env -S bash -euo pipefail + +make_rapids_conda_env() { + + local env_name="${1}"; + + # Remove the current conda env if called with `-f|--force` + if echo "${@:2}" | grep -qE '(\-f|\-\-force)'; then + rm -rf "$HOME/.conda/envs/${env_name}"; + fi + + local cuda_version="${CUDA_VERSION:-${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}}"; + cuda_version="$(echo "${cuda_version}" | cut -d'.' -f3 --complement)"; + + local python_version="${PYTHON_VERSION:-}"; + + if [ -z "${python_version}" ]; then + python_version="$(python3 --version 2>&1 | cut -d' ' -f2 | cut -d'.' -f3 --complement)"; + fi + + local env_file_name="${env_name}.yml"; + local new_env_path="$(realpath -m /tmp/${env_file_name})"; + local old_env_path="$(realpath -m ~/.cache/${env_file_name})"; + + local dfg_args="--file_key all --output conda --matrix arch=$(uname -m);cuda=${cuda_version};py=${python_version}"; + + # Generate a combined conda env yaml file. + conda-merge \ + <(rapids-dependency-file-generator --config ~/rmm/dependencies.yaml ${dfg_args}) \ + <(rapids-dependency-file-generator --config ~/cudf/dependencies.yaml ${dfg_args}) \ + <(rapids-dependency-file-generator --config ~/cuspatial/dependencies.yaml ${dfg_args}) \ + | grep -v -P '^(.*?)\-(.*?)(rapids-build-env|rapids-notebook-env|rapids-doc-env|rapids-pytest-benchmark)(.*?)$' \ + | grep -v -P '^(.*?)\-(.*?)(rmm|cudf|dask-cudf|cuspatial)(.*?)$' \ + | grep -v -P '^(.*?)\-(.*?)(\.git\@[^(main|master)])(.*?)$' \ + | grep -v '^name:' \ + > "${new_env_path}"; + + # If the conda env doesn't exist, make one + if ! conda info -e | grep -q "${env_name}"; then + echo -e "Creating '${env_name}' conda environment\n" 1>&2; + echo -e "Environment (${env_file_name}):\n" 1>&2; + cat "${new_env_path}"; + echo ""; + + mamba env create -n "${env_name}" -f "${new_env_path}"; + # If the conda env does exist but it's different from the one + # generated by the current legate branch, print the diff between + # the envs and update it + elif ! diff -BNqw "${old_env_path}" "${new_env_path}" >/dev/null 2>&1; then + echo -e "Updating '${env_name}' conda environment\n" 1>&2; + echo -e "Environment (${env_file_name}):\n" 1>&2; + + # Print the diff to the console for debugging + [ ! -f "${old_env_path}" ] \ + && cat "${new_env_path}" \ + || diff -BNyw "${old_env_path}" "${new_env_path}" \ + || true \ + && echo ""; + + # Update the current conda env + prune libs that were removed + mamba env update -n "${env_name}" -f "${new_env_path}" --prune; + fi + + cp -a "${new_env_path}" "${old_env_path}"; +} + +make_rapids_conda_env "${DEFAULT_CONDA_ENV}" "$@"; + +. /opt/conda/etc/profile.d/conda.sh; +conda activate "${DEFAULT_CONDA_ENV}" 2>/dev/null; diff --git a/.devcontainer/opt/rapids/bin/post-attach-command.sh b/.devcontainer/opt/rapids/bin/post-attach-command.sh new file mode 100755 index 000000000..df3b0ace3 --- /dev/null +++ b/.devcontainer/opt/rapids/bin/post-attach-command.sh @@ -0,0 +1,6 @@ +#! /usr/bin/env bash + +. /opt/rapids/bin/clone-rmm.sh; +. /opt/rapids/bin/clone-cudf.sh; +. /opt/rapids/bin/make-rapids-conda-env.sh; +. /opt/rapids/bin/make-clangd-config-yml.sh; diff --git a/.devcontainer/opt/rapids/bin/update-content-command.sh b/.devcontainer/opt/rapids/bin/update-content-command.sh new file mode 100755 index 000000000..b4093dd7f --- /dev/null +++ b/.devcontainer/opt/rapids/bin/update-content-command.sh @@ -0,0 +1,9 @@ +#! /usr/bin/env bash + +mkdir -m 0755 -p ~/{.cache,.conda,rmm,cudf}; + +cat <<"EOF" >> ~/.bashrc +if [[ "$PATH" != *"/opt/rapids/bin"* ]]; then + export PATH="$PATH:/opt/rapids/bin"; +fi +EOF diff --git a/.gitignore b/.gitignore index 618de8e07..4f242a021 100644 --- a/.gitignore +++ b/.gitignore @@ -152,3 +152,5 @@ notebooks/taxi2016.csv notebooks/taxi2017.csv notebooks/tzones_lonlat.json notebooks/cu_taxi.zones.* + +!.devcontainer/opt/rapids/.clangd From 81608ba10c7174f200c819b0684e5c0f38a56fa5 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Mon, 13 Feb 2023 20:49:06 -0800 Subject: [PATCH 02/25] mount .aws and .config --- .devcontainer/Dockerfile | 3 +- .devcontainer/devcontainer.json | 58 +++++-------------- .../opt/rapids/bin/make-rapids-conda-env.sh | 2 + .../opt/rapids/bin/update-content-command.sh | 2 +- 4 files changed, 20 insertions(+), 45 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index b545de4bc..e603be8c5 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,8 +1,9 @@ ARG CUDA=11.8 +ARG LLVM=15 ARG RAPIDS=23.04 ARG DISTRO=ubuntu22.04 ARG REPO=rapidsai/devcontainers -ARG FROM_IMAGE=${REPO}:${RAPIDS}-cpp-cuda${CUDA}-mambaforge-${DISTRO} +ARG FROM_IMAGE=${REPO}:${RAPIDS}-cpp-llvm${LLVM}-cuda${CUDA}-mambaforge-${DISTRO} FROM ${FROM_IMAGE} diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 20d3b231d..9a3aa184e 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -3,7 +3,8 @@ "context": ".", "dockerfile": "./Dockerfile", "args": { - "CUDA": "11.8" + "CUDA": "11.8", + "LLVM": "15" } }, @@ -17,10 +18,7 @@ "gpu": true }, - "initializeCommand": "mkdir -p ../.cache ../.conda ../rmm ../cudf", - "updateContentCommand": ["bash", "-li", "/opt/devcontainer/bin/update-content-command.sh"], - "postStartCommand": ["bash", "-li", "/opt/devcontainer/bin/post-start-command.sh"], - "postAttachCommand": ["bash", "-li", "/opt/devcontainer/bin/post-attach-command.sh"], + "initializeCommand": "mkdir -p ../.aws ../.cache ../.conda ../.config ../rmm ../cudf", "containerEnv": { "DEFAULT_CONDA_ENV": "cuspatial", @@ -31,6 +29,11 @@ "workspaceFolder": "/home/coder", "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuspatial,type=bind", "mounts": [ + { + "type": "bind", + "target": "/home/coder/.aws", + "source": "${localWorkspaceFolder}/../.aws" + }, { "type": "bind", "target": "/home/coder/.cache", @@ -41,6 +44,11 @@ "target": "/home/coder/.conda", "source": "${localWorkspaceFolder}/../.conda" }, + { + "type": "bind", + "target": "/home/coder/.config", + "source": "${localWorkspaceFolder}/../.config" + }, { "type": "bind", "target": "/home/coder/rmm", @@ -66,53 +74,17 @@ "customizations": { "vscode": { "extensions": [ - "cschlosser.doxdocgen", - "llvm-vs-code-extensions.vscode-clangd", "mutantdino.resourcemonitor", - "ms-vscode.cpptools", - "tamasfe.even-better-toml", - "twxs.cmake", - "vadimcn.vscode-lldb", - "xaver.clang-format" + "tamasfe.even-better-toml" ], "settings": { - "C_Cpp.vcpkg.enabled": false, - "C_Cpp.formatting": "disabled", - "C_Cpp.autocomplete": "disabled", - "C_Cpp.errorSquiggles": "disabled", - "C_Cpp.intelliSenseEngine": "disabled", - "C_Cpp.configurationWarnings": "disabled", - "C_Cpp.autoAddFileAssociations": false, - "clang-format.fallbackStyle": "none", - "clangd.arguments": [ - "--log=info", - "--clang-tidy", - "--debug-origin", - "--pch-storage=disk", - "--use-dirty-headers", - "--background-index=true", - "--all-scopes-completion", - "--header-insertion=iwyu", - "--completion-parse=always", - "--completion-style=detailed", - "--header-insertion-decorators" - ], "files.trimFinalNewlines": true, "files.insertFinalNewline": true, "files.trimTrailingWhitespace": true, "files.watcherExclude": { "**/target/**": true }, - "python.linting.flake8Enabled": true, - "[c]": { - "editor.defaultFormatter": "xaver.clang-format" - }, - "[cpp]": { - "editor.defaultFormatter": "xaver.clang-format" - }, - "[cuda-cpp]": { - "editor.defaultFormatter": "xaver.clang-format" - } + "python.linting.flake8Enabled": true } } } diff --git a/.devcontainer/opt/rapids/bin/make-rapids-conda-env.sh b/.devcontainer/opt/rapids/bin/make-rapids-conda-env.sh index 55f5b8e61..fc7c413eb 100755 --- a/.devcontainer/opt/rapids/bin/make-rapids-conda-env.sh +++ b/.devcontainer/opt/rapids/bin/make-rapids-conda-env.sh @@ -24,6 +24,8 @@ make_rapids_conda_env() { local dfg_args="--file_key all --output conda --matrix arch=$(uname -m);cuda=${cuda_version};py=${python_version}"; + export PATH="$PATH:/opt/conda/bin" + # Generate a combined conda env yaml file. conda-merge \ <(rapids-dependency-file-generator --config ~/rmm/dependencies.yaml ${dfg_args}) \ diff --git a/.devcontainer/opt/rapids/bin/update-content-command.sh b/.devcontainer/opt/rapids/bin/update-content-command.sh index b4093dd7f..e5db288be 100755 --- a/.devcontainer/opt/rapids/bin/update-content-command.sh +++ b/.devcontainer/opt/rapids/bin/update-content-command.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -mkdir -m 0755 -p ~/{.cache,.conda,rmm,cudf}; +mkdir -m 0755 -p ~/{.aws,.cache,.conda,.config,rmm,cudf}; cat <<"EOF" >> ~/.bashrc if [[ "$PATH" != *"/opt/rapids/bin"* ]]; then From dd0af560c197ee7eae0e888bcc4544d2c3a6a050 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Wed, 22 Feb 2023 07:04:57 +0000 Subject: [PATCH 03/25] use rapids-build-utils feature --- .devcontainer/Dockerfile | 19 +++-- .../devcontainer-conda/devcontainer.json | 47 ++++++++++++ .../isolated/.devcontainer/devcontainer.json | 51 +++++++++++++ .../single/.devcontainer/devcontainer.json | 58 +++++++++++++++ .../unified/.devcontainer/devcontainer.json | 60 ++++++++++++++++ .../devcontainer-pip/devcontainer.json | 47 ++++++++++++ .../isolated/.devcontainer/devcontainer.json | 51 +++++++++++++ .../single/.devcontainer/devcontainer.json | 58 +++++++++++++++ .../unified/.devcontainer/devcontainer.json | 60 ++++++++++++++++ .devcontainer/devcontainer.json | 71 ++++++------------ .../home/coder/workspace.code-workspace | 12 ---- .devcontainer/launch.sh | 52 ++++++++++++++ .../opt/cuspatial/bin/post-attach-command.sh | 9 +++ .../opt/cuspatial/bin/post-create-command.sh | 3 + .../cuspatial/bin/update-content-command.sh | 5 ++ .devcontainer/opt/rapids/bin/clone-cudf.sh | 6 -- .devcontainer/opt/rapids/bin/clone-rmm.sh | 6 -- .../opt/rapids/bin/make-clangd-config-yml.sh | 24 ------- .../opt/rapids/bin/make-rapids-conda-env.sh | 72 ------------------- .../opt/rapids/bin/post-attach-command.sh | 6 -- .../opt/rapids/bin/update-content-command.sh | 9 --- .gitignore | 3 +- {.devcontainer/opt/rapids => cpp}/.clangd | 4 ++ 23 files changed, 536 insertions(+), 197 deletions(-) create mode 100644 .devcontainer/devcontainer-conda/devcontainer.json create mode 100644 .devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json create mode 100644 .devcontainer/devcontainer-conda/single/.devcontainer/devcontainer.json create mode 100644 .devcontainer/devcontainer-conda/unified/.devcontainer/devcontainer.json create mode 100644 .devcontainer/devcontainer-pip/devcontainer.json create mode 100644 .devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json create mode 100644 .devcontainer/devcontainer-pip/single/.devcontainer/devcontainer.json create mode 100644 .devcontainer/devcontainer-pip/unified/.devcontainer/devcontainer.json delete mode 100644 .devcontainer/home/coder/workspace.code-workspace create mode 100755 .devcontainer/launch.sh create mode 100755 .devcontainer/opt/cuspatial/bin/post-attach-command.sh create mode 100755 .devcontainer/opt/cuspatial/bin/post-create-command.sh create mode 100755 .devcontainer/opt/cuspatial/bin/update-content-command.sh delete mode 100755 .devcontainer/opt/rapids/bin/clone-cudf.sh delete mode 100755 .devcontainer/opt/rapids/bin/clone-rmm.sh delete mode 100755 .devcontainer/opt/rapids/bin/make-clangd-config-yml.sh delete mode 100755 .devcontainer/opt/rapids/bin/make-rapids-conda-env.sh delete mode 100755 .devcontainer/opt/rapids/bin/post-attach-command.sh delete mode 100755 .devcontainer/opt/rapids/bin/update-content-command.sh rename {.devcontainer/opt/rapids => cpp}/.clangd (95%) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index e603be8c5..84e19a90b 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,3 +1,5 @@ +# syntax=docker/dockerfile:1.5 + ARG CUDA=11.8 ARG LLVM=15 ARG RAPIDS=23.04 @@ -7,17 +9,14 @@ ARG FROM_IMAGE=${REPO}:${RAPIDS}-cpp-llvm${LLVM}-cuda${CUDA}-mambaforge-${DISTRO FROM ${FROM_IMAGE} -RUN /opt/conda/bin/pip install rapids-dependency-file-generator conda-merge +COPY --chown=root:root opt/cuspatial /opt/cuspatial -COPY --chown=coder:coder home/coder/workspace.code-workspace /home/coder/ +WORKDIR /home/coder/ -COPY --chown=root:root opt/rapids /opt/rapids +ENV PYTHONDONTWRITEBYTECODE="1" -WORKDIR /home/coder/ +ENV SCCACHE_REGION="us-east-2" +ENV SCCACHE_BUCKET="rapids-sccache-devs" +ENV VAULT_HOST="https://vault.ops.k8s.rapids.ai" -ENV RUSTC_WRAPPER=sccache -ENV CMAKE_C_COMPILER_LAUNCHER=sccache -ENV CMAKE_CXX_COMPILER_LAUNCHER=sccache -ENV CMAKE_CUDA_COMPILER_LAUNCHER=sccache -ENV HISTFILE=/home/coder/.cache/._bash_history -ENV SCCACHE_S3_KEY_PREFIX=cuspatial-dev +ENV HISTFILE="/home/coder/.cache/._bash_history" diff --git a/.devcontainer/devcontainer-conda/devcontainer.json b/.devcontainer/devcontainer-conda/devcontainer.json new file mode 100644 index 000000000..ad13b555e --- /dev/null +++ b/.devcontainer/devcontainer-conda/devcontainer.json @@ -0,0 +1,47 @@ +{ + "build": { + "context": ".", + "dockerfile": "./Dockerfile", + "args": { + "CUDA": "11.8", + "LLVM": "15" + } + }, + "hostRequirements": { + "gpu": true + }, + + "features": { + "./features/utils": {}, + "./features/rapids-build-utils": {} + }, + "overrideFeatureInstallOrder": [ + "./features/utils", + "./features/rapids-build-utils" + ], + + "containerEnv": { + "DEFAULT_CONDA_ENV": "rapids" + }, + + "workspaceFolder": "/home/coder", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuspatial,type=bind", + + "customizations": { + "vscode": { + "extensions": [ + "mutantdino.resourcemonitor", + "tamasfe.even-better-toml" + ], + "settings": { + "files.trimFinalNewlines": true, + "files.insertFinalNewline": true, + "files.trimTrailingWhitespace": true, + "files.watcherExclude": { + "**/target/**": true + }, + "python.linting.flake8Enabled": true + } + } + } +} diff --git a/.devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json new file mode 100644 index 000000000..b1e7916ea --- /dev/null +++ b/.devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json @@ -0,0 +1,51 @@ +{ + "build": { + "context": "${localWorkspaceFolder}/.devcontainer", + "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", + "args": { + "CUDA": "11.8", + "LLVM": "15" + } + }, + "hostRequirements": { + "gpu": true + }, + + "features": { + "./features/utils": {}, + "./features/rapids-build-utils": {} + }, + "overrideFeatureInstallOrder": [ + "./features/utils", + "./features/rapids-build-utils" + ], + + "updateContentCommand": [ + "/bin/bash", "-c", "cp -ar /workspaces/cuspatial /home/coder/cuspatial && rapids-make-vscode-workspace > ~/workspace.code-workspace" + ], + + "containerEnv": { + "DEFAULT_CONDA_ENV": "rapids" + }, + + "workspaceFolder": "/home/coder", + "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/cuspatial,type=bind", + + "customizations": { + "vscode": { + "extensions": [ + "mutantdino.resourcemonitor", + "tamasfe.even-better-toml" + ], + "settings": { + "files.trimFinalNewlines": true, + "files.insertFinalNewline": true, + "files.trimTrailingWhitespace": true, + "files.watcherExclude": { + "**/target/**": true + }, + "python.linting.flake8Enabled": true + } + } + } +} diff --git a/.devcontainer/devcontainer-conda/single/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-conda/single/.devcontainer/devcontainer.json new file mode 100644 index 000000000..5ecb879e3 --- /dev/null +++ b/.devcontainer/devcontainer-conda/single/.devcontainer/devcontainer.json @@ -0,0 +1,58 @@ +{ + "build": { + "context": "../../..", + "dockerfile": "../../../Dockerfile", + "args": { + "CUDA": "11.8", + "LLVM": "15" + } + }, + "hostRequirements": { + "gpu": true + }, + + "features": { + "./features/utils": {}, + "./features/rapids-build-utils": {} + }, + "overrideFeatureInstallOrder": [ + "./features/utils", + "./features/rapids-build-utils" + ], + + "initializeCommand": [ + "/bin/bash", "-c", "mkdir -m 0755 -p ../../../../{.aws,.cache,.conda,.config}" + ], + + "containerEnv": { + "DEFAULT_CONDA_ENV": "rapids" + }, + + "workspaceFolder": "/home/coder", + "workspaceMount": "source=${localWorkspaceFolder}/../../..,target=/home/coder/cuspatial,type=bind", + "mounts": [ + "source=${localWorkspaceFolder}/../../../../.aws,target=/home/coder/.aws,type=bind", + "source=${localWorkspaceFolder}/../../../../.cache,target=/home/coder/.cache,type=bind", + "source=${localWorkspaceFolder}/../../../../.conda,target=/home/coder/.conda,type=bind", + "source=${localWorkspaceFolder}/../../../../.config,target=/home/coder/.config,type=bind", + "source=${localWorkspaceFolder}/../../../.devcontainer/opt/cuspatial,target=/opt/cuspatial,type=bind" + ], + + "customizations": { + "vscode": { + "extensions": [ + "mutantdino.resourcemonitor", + "tamasfe.even-better-toml" + ], + "settings": { + "files.trimFinalNewlines": true, + "files.insertFinalNewline": true, + "files.trimTrailingWhitespace": true, + "files.watcherExclude": { + "**/target/**": true + }, + "python.linting.flake8Enabled": true + } + } + } +} diff --git a/.devcontainer/devcontainer-conda/unified/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-conda/unified/.devcontainer/devcontainer.json new file mode 100644 index 000000000..49744cc1c --- /dev/null +++ b/.devcontainer/devcontainer-conda/unified/.devcontainer/devcontainer.json @@ -0,0 +1,60 @@ +{ + "build": { + "context": "../../..", + "dockerfile": "../../../Dockerfile", + "args": { + "CUDA": "11.8", + "LLVM": "15" + } + }, + "hostRequirements": { + "gpu": true + }, + + "features": { + "./features/utils": {}, + "./features/rapids-build-utils": {} + }, + "overrideFeatureInstallOrder": [ + "./features/utils", + "./features/rapids-build-utils" + ], + + "initializeCommand": [ + "/bin/bash", "-c", "mkdir -m 0755 -p ../../../../{.aws,.cache,.conda,.config,rmm,cudf}" + ], + + "containerEnv": { + "DEFAULT_CONDA_ENV": "rapids" + }, + + "workspaceFolder": "/home/coder", + "workspaceMount": "source=${localWorkspaceFolder}/../../..,target=/home/coder/cuspatial,type=bind", + "mounts": [ + "source=${localWorkspaceFolder}/../../../../rmm,target=/home/coder/rmm,type=bind", + "source=${localWorkspaceFolder}/../../../../cudf,target=/home/coder/cudf,type=bind", + "source=${localWorkspaceFolder}/../../../../.aws,target=/home/coder/.aws,type=bind", + "source=${localWorkspaceFolder}/../../../../.cache,target=/home/coder/.cache,type=bind", + "source=${localWorkspaceFolder}/../../../../.conda,target=/home/coder/.conda,type=bind", + "source=${localWorkspaceFolder}/../../../../.config,target=/home/coder/.config,type=bind", + "source=${localWorkspaceFolder}/../../../.devcontainer/opt/cuspatial,target=/opt/cuspatial,type=bind" + ], + + "customizations": { + "vscode": { + "extensions": [ + "mutantdino.resourcemonitor", + "tamasfe.even-better-toml" + ], + "settings": { + "files.trimFinalNewlines": true, + "files.insertFinalNewline": true, + "files.trimTrailingWhitespace": true, + "files.watcherExclude": { + "**/target/**": true + }, + "python.linting.flake8Enabled": true + } + } + } +} diff --git a/.devcontainer/devcontainer-pip/devcontainer.json b/.devcontainer/devcontainer-pip/devcontainer.json new file mode 100644 index 000000000..ad13b555e --- /dev/null +++ b/.devcontainer/devcontainer-pip/devcontainer.json @@ -0,0 +1,47 @@ +{ + "build": { + "context": ".", + "dockerfile": "./Dockerfile", + "args": { + "CUDA": "11.8", + "LLVM": "15" + } + }, + "hostRequirements": { + "gpu": true + }, + + "features": { + "./features/utils": {}, + "./features/rapids-build-utils": {} + }, + "overrideFeatureInstallOrder": [ + "./features/utils", + "./features/rapids-build-utils" + ], + + "containerEnv": { + "DEFAULT_CONDA_ENV": "rapids" + }, + + "workspaceFolder": "/home/coder", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuspatial,type=bind", + + "customizations": { + "vscode": { + "extensions": [ + "mutantdino.resourcemonitor", + "tamasfe.even-better-toml" + ], + "settings": { + "files.trimFinalNewlines": true, + "files.insertFinalNewline": true, + "files.trimTrailingWhitespace": true, + "files.watcherExclude": { + "**/target/**": true + }, + "python.linting.flake8Enabled": true + } + } + } +} diff --git a/.devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json new file mode 100644 index 000000000..b1e7916ea --- /dev/null +++ b/.devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json @@ -0,0 +1,51 @@ +{ + "build": { + "context": "${localWorkspaceFolder}/.devcontainer", + "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", + "args": { + "CUDA": "11.8", + "LLVM": "15" + } + }, + "hostRequirements": { + "gpu": true + }, + + "features": { + "./features/utils": {}, + "./features/rapids-build-utils": {} + }, + "overrideFeatureInstallOrder": [ + "./features/utils", + "./features/rapids-build-utils" + ], + + "updateContentCommand": [ + "/bin/bash", "-c", "cp -ar /workspaces/cuspatial /home/coder/cuspatial && rapids-make-vscode-workspace > ~/workspace.code-workspace" + ], + + "containerEnv": { + "DEFAULT_CONDA_ENV": "rapids" + }, + + "workspaceFolder": "/home/coder", + "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/cuspatial,type=bind", + + "customizations": { + "vscode": { + "extensions": [ + "mutantdino.resourcemonitor", + "tamasfe.even-better-toml" + ], + "settings": { + "files.trimFinalNewlines": true, + "files.insertFinalNewline": true, + "files.trimTrailingWhitespace": true, + "files.watcherExclude": { + "**/target/**": true + }, + "python.linting.flake8Enabled": true + } + } + } +} diff --git a/.devcontainer/devcontainer-pip/single/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-pip/single/.devcontainer/devcontainer.json new file mode 100644 index 000000000..5ecb879e3 --- /dev/null +++ b/.devcontainer/devcontainer-pip/single/.devcontainer/devcontainer.json @@ -0,0 +1,58 @@ +{ + "build": { + "context": "../../..", + "dockerfile": "../../../Dockerfile", + "args": { + "CUDA": "11.8", + "LLVM": "15" + } + }, + "hostRequirements": { + "gpu": true + }, + + "features": { + "./features/utils": {}, + "./features/rapids-build-utils": {} + }, + "overrideFeatureInstallOrder": [ + "./features/utils", + "./features/rapids-build-utils" + ], + + "initializeCommand": [ + "/bin/bash", "-c", "mkdir -m 0755 -p ../../../../{.aws,.cache,.conda,.config}" + ], + + "containerEnv": { + "DEFAULT_CONDA_ENV": "rapids" + }, + + "workspaceFolder": "/home/coder", + "workspaceMount": "source=${localWorkspaceFolder}/../../..,target=/home/coder/cuspatial,type=bind", + "mounts": [ + "source=${localWorkspaceFolder}/../../../../.aws,target=/home/coder/.aws,type=bind", + "source=${localWorkspaceFolder}/../../../../.cache,target=/home/coder/.cache,type=bind", + "source=${localWorkspaceFolder}/../../../../.conda,target=/home/coder/.conda,type=bind", + "source=${localWorkspaceFolder}/../../../../.config,target=/home/coder/.config,type=bind", + "source=${localWorkspaceFolder}/../../../.devcontainer/opt/cuspatial,target=/opt/cuspatial,type=bind" + ], + + "customizations": { + "vscode": { + "extensions": [ + "mutantdino.resourcemonitor", + "tamasfe.even-better-toml" + ], + "settings": { + "files.trimFinalNewlines": true, + "files.insertFinalNewline": true, + "files.trimTrailingWhitespace": true, + "files.watcherExclude": { + "**/target/**": true + }, + "python.linting.flake8Enabled": true + } + } + } +} diff --git a/.devcontainer/devcontainer-pip/unified/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-pip/unified/.devcontainer/devcontainer.json new file mode 100644 index 000000000..49744cc1c --- /dev/null +++ b/.devcontainer/devcontainer-pip/unified/.devcontainer/devcontainer.json @@ -0,0 +1,60 @@ +{ + "build": { + "context": "../../..", + "dockerfile": "../../../Dockerfile", + "args": { + "CUDA": "11.8", + "LLVM": "15" + } + }, + "hostRequirements": { + "gpu": true + }, + + "features": { + "./features/utils": {}, + "./features/rapids-build-utils": {} + }, + "overrideFeatureInstallOrder": [ + "./features/utils", + "./features/rapids-build-utils" + ], + + "initializeCommand": [ + "/bin/bash", "-c", "mkdir -m 0755 -p ../../../../{.aws,.cache,.conda,.config,rmm,cudf}" + ], + + "containerEnv": { + "DEFAULT_CONDA_ENV": "rapids" + }, + + "workspaceFolder": "/home/coder", + "workspaceMount": "source=${localWorkspaceFolder}/../../..,target=/home/coder/cuspatial,type=bind", + "mounts": [ + "source=${localWorkspaceFolder}/../../../../rmm,target=/home/coder/rmm,type=bind", + "source=${localWorkspaceFolder}/../../../../cudf,target=/home/coder/cudf,type=bind", + "source=${localWorkspaceFolder}/../../../../.aws,target=/home/coder/.aws,type=bind", + "source=${localWorkspaceFolder}/../../../../.cache,target=/home/coder/.cache,type=bind", + "source=${localWorkspaceFolder}/../../../../.conda,target=/home/coder/.conda,type=bind", + "source=${localWorkspaceFolder}/../../../../.config,target=/home/coder/.config,type=bind", + "source=${localWorkspaceFolder}/../../../.devcontainer/opt/cuspatial,target=/opt/cuspatial,type=bind" + ], + + "customizations": { + "vscode": { + "extensions": [ + "mutantdino.resourcemonitor", + "tamasfe.even-better-toml" + ], + "settings": { + "files.trimFinalNewlines": true, + "files.insertFinalNewline": true, + "files.trimTrailingWhitespace": true, + "files.watcherExclude": { + "**/target/**": true + }, + "python.linting.flake8Enabled": true + } + } + } +} diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 9a3aa184e..f0527d08c 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -7,68 +7,37 @@ "LLVM": "15" } }, - - "capAdd": [ - "SYS_PTRACE" - ], - "securityOpt": [ - "seccomp=unconfined" - ], "hostRequirements": { "gpu": true }, - "initializeCommand": "mkdir -p ../.aws ../.cache ../.conda ../.config ../rmm ../cudf", + "features": { + "ghcr.io/trxcllnt/devcontainers/features/mambaforge:latest": {}, + "ghcr.io/trxcllnt/devcontainers/features/utils:latest": {}, + "ghcr.io/trxcllnt/devcontainers/features/rapids-build-utils:latest": {} + }, + "overrideFeatureInstallOrder": [ + "ghcr.io/trxcllnt/devcontainers/features/mambaforge", + "ghcr.io/trxcllnt/devcontainers/features/utils", + "ghcr.io/trxcllnt/devcontainers/features/rapids-build-utils" + ], + + "initializeCommand": [ + "/bin/bash", "-c", "mkdir -m 0755 -p ../{.aws,.cache,.conda,.config}" + ], "containerEnv": { - "DEFAULT_CONDA_ENV": "cuspatial", - "PYTHONDONTWRITEBYTECODE": "1", - "VAULT_HOST": "https://vault.ops.k8s.rapids.ai" + "DEFAULT_CONDA_ENV": "rapids" }, "workspaceFolder": "/home/coder", "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuspatial,type=bind", "mounts": [ - { - "type": "bind", - "target": "/home/coder/.aws", - "source": "${localWorkspaceFolder}/../.aws" - }, - { - "type": "bind", - "target": "/home/coder/.cache", - "source": "${localWorkspaceFolder}/../.cache" - }, - { - "type": "bind", - "target": "/home/coder/.conda", - "source": "${localWorkspaceFolder}/../.conda" - }, - { - "type": "bind", - "target": "/home/coder/.config", - "source": "${localWorkspaceFolder}/../.config" - }, - { - "type": "bind", - "target": "/home/coder/rmm", - "source": "${localWorkspaceFolder}/../rmm" - }, - { - "type": "bind", - "target": "/home/coder/cudf", - "source": "${localWorkspaceFolder}/../cudf" - }, - { - "type": "bind", - "target": "/opt/rapids", - "source": "${localWorkspaceFolder}/.devcontainer/opt/rapids" - }, - { - "type": "bind", - "target": "/home/coder/workspace.code-workspace", - "source": "${localWorkspaceFolder}/.devcontainer/home/coder/workspace.code-workspace" - } + "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind", + "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind", + "source=${localWorkspaceFolder}/../.conda,target=/home/coder/.conda,type=bind", + "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind", + "source=${localWorkspaceFolder}/.devcontainer/opt/cuspatial,target=/opt/cuspatial,type=bind" ], "customizations": { diff --git a/.devcontainer/home/coder/workspace.code-workspace b/.devcontainer/home/coder/workspace.code-workspace deleted file mode 100644 index 1900f081a..000000000 --- a/.devcontainer/home/coder/workspace.code-workspace +++ /dev/null @@ -1,12 +0,0 @@ -{ - "folders": [ - { "path": "cuspatial" }, - { "path": "cudf" }, - { "path": "rmm" }, - { "path": ".conda" }, - { "path": ".cache" }, - ], - "settings": { - "terminal.integrated.cwd": "" - } -} diff --git a/.devcontainer/launch.sh b/.devcontainer/launch.sh new file mode 100755 index 000000000..527d512cb --- /dev/null +++ b/.devcontainer/launch.sh @@ -0,0 +1,52 @@ +#! /usr/bin/env bash + +launch_devcontainer() { + + # Ensure we're in the repo root + cd "$( cd "$( dirname "$(realpath -m "${BASH_SOURCE[0]}")" )" && pwd )/.."; + + local pkgs="${1:-conda}"; + local mode="${2:-single}"; + + case "$pkgs" in + pip ) ;; + conda ) ;; + * ) pkgs="conda";; + esac + + case "$mode" in + single ) ;; + unified ) ;; + isolated) ;; + * ) mode="single";; + esac + + local tmpdir="$(mktemp -d)"; + local flavor="devcontainer-${pkgs}/${mode}"; + local path="$(pwd)/.devcontainer/${flavor}"; + + if [[ "$mode" == "isolated" ]]; then + cp -arL "$path/.devcontainer" "${tmpdir}/"; + sed -i "s@\${localWorkspaceFolder}@$(pwd)@g" "${tmpdir}/.devcontainer/devcontainer.json"; + path="${tmpdir}"; + fi + + local hash="$(echo -n "${path}" | xxd -pu - | tr -d '[:space:]')"; + local url="vscode://vscode-remote/dev-container+${hash}/home/coder"; + + echo "devcontainer URL: $url"; + + local launch=""; + if type open >/dev/null 2>&1; then + launch="open"; + elif type xdg-open >/dev/null 2>&1; then + launch="xdg-open"; + fi + + if [ -n "${launch}" ]; then + code --new-window "$tmpdir"; + $launch "$url" >/dev/null 2>&1 & + fi +} + +launch_devcontainer "$@"; diff --git a/.devcontainer/opt/cuspatial/bin/post-attach-command.sh b/.devcontainer/opt/cuspatial/bin/post-attach-command.sh new file mode 100755 index 000000000..27c703726 --- /dev/null +++ b/.devcontainer/opt/cuspatial/bin/post-attach-command.sh @@ -0,0 +1,9 @@ +#! /usr/bin/env bash + +# Source this call in case we're running in Codespaces. +# +# Codespaces runs the "postAttachCommand" in an interactive login shell. +# Once "postAttachCommand" is finished, the terminal is relenquished to +# the user. Sourcing here ensures the new conda env is already activated +# in the shell for the user. +source rapids-make-conda-env; diff --git a/.devcontainer/opt/cuspatial/bin/post-create-command.sh b/.devcontainer/opt/cuspatial/bin/post-create-command.sh new file mode 100755 index 000000000..855ea50ab --- /dev/null +++ b/.devcontainer/opt/cuspatial/bin/post-create-command.sh @@ -0,0 +1,3 @@ +#! /usr/bin/env bash + +rapids-make-vscode-workspace > ~/workspace.code-workspace; diff --git a/.devcontainer/opt/cuspatial/bin/update-content-command.sh b/.devcontainer/opt/cuspatial/bin/update-content-command.sh new file mode 100755 index 000000000..0844cb37b --- /dev/null +++ b/.devcontainer/opt/cuspatial/bin/update-content-command.sh @@ -0,0 +1,5 @@ +#! /usr/bin/env bash + +mkdir -m 0755 -p ~/{.aws,.cache,.conda,.config}; + +rapids-make-vscode-workspace > ~/workspace.code-workspace; diff --git a/.devcontainer/opt/rapids/bin/clone-cudf.sh b/.devcontainer/opt/rapids/bin/clone-cudf.sh deleted file mode 100755 index 07f731c85..000000000 --- a/.devcontainer/opt/rapids/bin/clone-cudf.sh +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env bash - -if [[ ! -d ~/cudf/.git ]]; then - echo "Cloning cuDF" 1>&2; - /opt/devcontainer/bin/github/repo/clone.sh "rapidsai" "cudf" "cudf"; -fi diff --git a/.devcontainer/opt/rapids/bin/clone-rmm.sh b/.devcontainer/opt/rapids/bin/clone-rmm.sh deleted file mode 100755 index dbbcbed79..000000000 --- a/.devcontainer/opt/rapids/bin/clone-rmm.sh +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env bash - -if [[ ! -d ~/rmm/.git ]]; then - echo "Cloning RMM" 1>&2; - /opt/devcontainer/bin/github/repo/clone.sh "rapidsai" "rmm" "rmm"; -fi diff --git a/.devcontainer/opt/rapids/bin/make-clangd-config-yml.sh b/.devcontainer/opt/rapids/bin/make-clangd-config-yml.sh deleted file mode 100755 index 6d1039457..000000000 --- a/.devcontainer/opt/rapids/bin/make-clangd-config-yml.sh +++ /dev/null @@ -1,24 +0,0 @@ -#! /usr/bin/env bash - -skbuild_dir="$(python -c 'import skbuild; print(skbuild.constants.SKBUILD_DIR())')"; - -mkdir -p ~/.config/clangd; - -cat < ~/.config/clangd/config.yaml -$(cat /opt/rapids/.clangd) ---- -If: - PathMatch: $HOME/rmm/.* -CompileFlags: - CompilationDatabase: $HOME/rmm/build ---- -If: - PathMatch: $HOME/cudf/.* -CompileFlags: - CompilationDatabase: $HOME/cudf/cpp/build ---- -If: - PathMatch: $HOME/cuspatial/.* -CompileFlags: - CompilationDatabase: $HOME/cuspatial/cpp/build -EOF diff --git a/.devcontainer/opt/rapids/bin/make-rapids-conda-env.sh b/.devcontainer/opt/rapids/bin/make-rapids-conda-env.sh deleted file mode 100755 index fc7c413eb..000000000 --- a/.devcontainer/opt/rapids/bin/make-rapids-conda-env.sh +++ /dev/null @@ -1,72 +0,0 @@ -#! /usr/bin/env -S bash -euo pipefail - -make_rapids_conda_env() { - - local env_name="${1}"; - - # Remove the current conda env if called with `-f|--force` - if echo "${@:2}" | grep -qE '(\-f|\-\-force)'; then - rm -rf "$HOME/.conda/envs/${env_name}"; - fi - - local cuda_version="${CUDA_VERSION:-${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}}"; - cuda_version="$(echo "${cuda_version}" | cut -d'.' -f3 --complement)"; - - local python_version="${PYTHON_VERSION:-}"; - - if [ -z "${python_version}" ]; then - python_version="$(python3 --version 2>&1 | cut -d' ' -f2 | cut -d'.' -f3 --complement)"; - fi - - local env_file_name="${env_name}.yml"; - local new_env_path="$(realpath -m /tmp/${env_file_name})"; - local old_env_path="$(realpath -m ~/.cache/${env_file_name})"; - - local dfg_args="--file_key all --output conda --matrix arch=$(uname -m);cuda=${cuda_version};py=${python_version}"; - - export PATH="$PATH:/opt/conda/bin" - - # Generate a combined conda env yaml file. - conda-merge \ - <(rapids-dependency-file-generator --config ~/rmm/dependencies.yaml ${dfg_args}) \ - <(rapids-dependency-file-generator --config ~/cudf/dependencies.yaml ${dfg_args}) \ - <(rapids-dependency-file-generator --config ~/cuspatial/dependencies.yaml ${dfg_args}) \ - | grep -v -P '^(.*?)\-(.*?)(rapids-build-env|rapids-notebook-env|rapids-doc-env|rapids-pytest-benchmark)(.*?)$' \ - | grep -v -P '^(.*?)\-(.*?)(rmm|cudf|dask-cudf|cuspatial)(.*?)$' \ - | grep -v -P '^(.*?)\-(.*?)(\.git\@[^(main|master)])(.*?)$' \ - | grep -v '^name:' \ - > "${new_env_path}"; - - # If the conda env doesn't exist, make one - if ! conda info -e | grep -q "${env_name}"; then - echo -e "Creating '${env_name}' conda environment\n" 1>&2; - echo -e "Environment (${env_file_name}):\n" 1>&2; - cat "${new_env_path}"; - echo ""; - - mamba env create -n "${env_name}" -f "${new_env_path}"; - # If the conda env does exist but it's different from the one - # generated by the current legate branch, print the diff between - # the envs and update it - elif ! diff -BNqw "${old_env_path}" "${new_env_path}" >/dev/null 2>&1; then - echo -e "Updating '${env_name}' conda environment\n" 1>&2; - echo -e "Environment (${env_file_name}):\n" 1>&2; - - # Print the diff to the console for debugging - [ ! -f "${old_env_path}" ] \ - && cat "${new_env_path}" \ - || diff -BNyw "${old_env_path}" "${new_env_path}" \ - || true \ - && echo ""; - - # Update the current conda env + prune libs that were removed - mamba env update -n "${env_name}" -f "${new_env_path}" --prune; - fi - - cp -a "${new_env_path}" "${old_env_path}"; -} - -make_rapids_conda_env "${DEFAULT_CONDA_ENV}" "$@"; - -. /opt/conda/etc/profile.d/conda.sh; -conda activate "${DEFAULT_CONDA_ENV}" 2>/dev/null; diff --git a/.devcontainer/opt/rapids/bin/post-attach-command.sh b/.devcontainer/opt/rapids/bin/post-attach-command.sh deleted file mode 100755 index df3b0ace3..000000000 --- a/.devcontainer/opt/rapids/bin/post-attach-command.sh +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env bash - -. /opt/rapids/bin/clone-rmm.sh; -. /opt/rapids/bin/clone-cudf.sh; -. /opt/rapids/bin/make-rapids-conda-env.sh; -. /opt/rapids/bin/make-clangd-config-yml.sh; diff --git a/.devcontainer/opt/rapids/bin/update-content-command.sh b/.devcontainer/opt/rapids/bin/update-content-command.sh deleted file mode 100755 index e5db288be..000000000 --- a/.devcontainer/opt/rapids/bin/update-content-command.sh +++ /dev/null @@ -1,9 +0,0 @@ -#! /usr/bin/env bash - -mkdir -m 0755 -p ~/{.aws,.cache,.conda,.config,rmm,cudf}; - -cat <<"EOF" >> ~/.bashrc -if [[ "$PATH" != *"/opt/rapids/bin"* ]]; then - export PATH="$PATH:/opt/rapids/bin"; -fi -EOF diff --git a/.gitignore b/.gitignore index 4f242a021..f080d2c06 100644 --- a/.gitignore +++ b/.gitignore @@ -153,4 +153,5 @@ notebooks/taxi2017.csv notebooks/tzones_lonlat.json notebooks/cu_taxi.zones.* -!.devcontainer/opt/rapids/.clangd +# clang tooling +compile_commands.json diff --git a/.devcontainer/opt/rapids/.clangd b/cpp/.clangd similarity index 95% rename from .devcontainer/opt/rapids/.clangd rename to cpp/.clangd index ed4bf9ef8..2341970f6 100644 --- a/.devcontainer/opt/rapids/.clangd +++ b/cpp/.clangd @@ -17,6 +17,8 @@ If: PathMatch: .*\.cuh? CompileFlags: Add: + - "-x" + - "cuda" # No error on unknown CUDA versions - "-Wno-unknown-cuda-version" # Allow variadic CUDA functions @@ -39,12 +41,14 @@ CompileFlags: - "-gpu=*" - "--diag_suppress*" # strip CUDA arch flags + - "-arch*" - "-gencode*" - "--generate-code*" # strip gcc's -fcoroutines - -fcoroutines # strip CUDA flags unknown to clang - "-ccbin*" + - "-Xcudafe=*" - "--compiler-options*" - "--expt-extended-lambda" - "--expt-relaxed-constexpr" From bd8ae14f594f74ff63066798b9a809250d363960 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Wed, 22 Feb 2023 10:24:56 -0800 Subject: [PATCH 04/25] use feature from rapidsai/devcontainers --- .devcontainer/devcontainer-conda/devcontainer.json | 7 +++---- .../isolated/.devcontainer/devcontainer.json | 7 +++---- .../single/.devcontainer/devcontainer.json | 7 +++---- .../unified/.devcontainer/devcontainer.json | 7 +++---- .devcontainer/devcontainer-pip/devcontainer.json | 7 +++---- .../isolated/.devcontainer/devcontainer.json | 7 +++---- .../single/.devcontainer/devcontainer.json | 7 +++---- .../unified/.devcontainer/devcontainer.json | 7 +++---- .devcontainer/devcontainer.json | 9 +++------ 9 files changed, 27 insertions(+), 38 deletions(-) diff --git a/.devcontainer/devcontainer-conda/devcontainer.json b/.devcontainer/devcontainer-conda/devcontainer.json index ad13b555e..ac9bf80b9 100644 --- a/.devcontainer/devcontainer-conda/devcontainer.json +++ b/.devcontainer/devcontainer-conda/devcontainer.json @@ -12,12 +12,11 @@ }, "features": { - "./features/utils": {}, - "./features/rapids-build-utils": {} + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:latest": {} }, + "overrideFeatureInstallOrder": [ - "./features/utils", - "./features/rapids-build-utils" + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" ], "containerEnv": { diff --git a/.devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json index b1e7916ea..99e62db0c 100644 --- a/.devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json @@ -12,12 +12,11 @@ }, "features": { - "./features/utils": {}, - "./features/rapids-build-utils": {} + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:latest": {} }, + "overrideFeatureInstallOrder": [ - "./features/utils", - "./features/rapids-build-utils" + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" ], "updateContentCommand": [ diff --git a/.devcontainer/devcontainer-conda/single/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-conda/single/.devcontainer/devcontainer.json index 5ecb879e3..29b7b10e1 100644 --- a/.devcontainer/devcontainer-conda/single/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-conda/single/.devcontainer/devcontainer.json @@ -12,12 +12,11 @@ }, "features": { - "./features/utils": {}, - "./features/rapids-build-utils": {} + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:latest": {} }, + "overrideFeatureInstallOrder": [ - "./features/utils", - "./features/rapids-build-utils" + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" ], "initializeCommand": [ diff --git a/.devcontainer/devcontainer-conda/unified/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-conda/unified/.devcontainer/devcontainer.json index 49744cc1c..56775cdd7 100644 --- a/.devcontainer/devcontainer-conda/unified/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-conda/unified/.devcontainer/devcontainer.json @@ -12,12 +12,11 @@ }, "features": { - "./features/utils": {}, - "./features/rapids-build-utils": {} + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:latest": {} }, + "overrideFeatureInstallOrder": [ - "./features/utils", - "./features/rapids-build-utils" + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" ], "initializeCommand": [ diff --git a/.devcontainer/devcontainer-pip/devcontainer.json b/.devcontainer/devcontainer-pip/devcontainer.json index ad13b555e..ac9bf80b9 100644 --- a/.devcontainer/devcontainer-pip/devcontainer.json +++ b/.devcontainer/devcontainer-pip/devcontainer.json @@ -12,12 +12,11 @@ }, "features": { - "./features/utils": {}, - "./features/rapids-build-utils": {} + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:latest": {} }, + "overrideFeatureInstallOrder": [ - "./features/utils", - "./features/rapids-build-utils" + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" ], "containerEnv": { diff --git a/.devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json index b1e7916ea..99e62db0c 100644 --- a/.devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json @@ -12,12 +12,11 @@ }, "features": { - "./features/utils": {}, - "./features/rapids-build-utils": {} + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:latest": {} }, + "overrideFeatureInstallOrder": [ - "./features/utils", - "./features/rapids-build-utils" + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" ], "updateContentCommand": [ diff --git a/.devcontainer/devcontainer-pip/single/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-pip/single/.devcontainer/devcontainer.json index 5ecb879e3..29b7b10e1 100644 --- a/.devcontainer/devcontainer-pip/single/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-pip/single/.devcontainer/devcontainer.json @@ -12,12 +12,11 @@ }, "features": { - "./features/utils": {}, - "./features/rapids-build-utils": {} + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:latest": {} }, + "overrideFeatureInstallOrder": [ - "./features/utils", - "./features/rapids-build-utils" + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" ], "initializeCommand": [ diff --git a/.devcontainer/devcontainer-pip/unified/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-pip/unified/.devcontainer/devcontainer.json index 49744cc1c..56775cdd7 100644 --- a/.devcontainer/devcontainer-pip/unified/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-pip/unified/.devcontainer/devcontainer.json @@ -12,12 +12,11 @@ }, "features": { - "./features/utils": {}, - "./features/rapids-build-utils": {} + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:latest": {} }, + "overrideFeatureInstallOrder": [ - "./features/utils", - "./features/rapids-build-utils" + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" ], "initializeCommand": [ diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index f0527d08c..ed3fe32ad 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -12,14 +12,11 @@ }, "features": { - "ghcr.io/trxcllnt/devcontainers/features/mambaforge:latest": {}, - "ghcr.io/trxcllnt/devcontainers/features/utils:latest": {}, - "ghcr.io/trxcllnt/devcontainers/features/rapids-build-utils:latest": {} + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:latest": {} }, + "overrideFeatureInstallOrder": [ - "ghcr.io/trxcllnt/devcontainers/features/mambaforge", - "ghcr.io/trxcllnt/devcontainers/features/utils", - "ghcr.io/trxcllnt/devcontainers/features/rapids-build-utils" + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" ], "initializeCommand": [ From 2cbc9ac537d471ae01c91283610f2d51ce2e7740 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Wed, 22 Feb 2023 19:29:07 +0000 Subject: [PATCH 05/25] initialize the CUDA language in cuspatial-python scikit-build --- python/cuspatial/CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/python/cuspatial/CMakeLists.txt b/python/cuspatial/CMakeLists.txt index 1726fa4d3..f48ba913b 100644 --- a/python/cuspatial/CMakeLists.txt +++ b/python/cuspatial/CMakeLists.txt @@ -16,9 +16,9 @@ cmake_minimum_required(VERSION 3.23.1 FATAL_ERROR) set(cuspatial_version 23.04.00) -file(DOWNLOAD https://raw.githubusercontent.com/rapidsai/rapids-cmake/branch-23.04/RAPIDS.cmake - ${CMAKE_BINARY_DIR}/RAPIDS.cmake) -include(${CMAKE_BINARY_DIR}/RAPIDS.cmake) +include(../../fetch_rapids.cmake) +include(rapids-cuda) +rapids_cuda_init_architectures(cuspatial-python) project( cuspatial-python @@ -27,7 +27,7 @@ project( # language to be enabled here. The test project that is built in scikit-build to verify # various linking options for the python library is hardcoded to build with C, so until # that is fixed we need to keep C. - C CXX) + C CXX CUDA) option(FIND_CUSPATIAL_CPP "Search for existing cuspatial C++ installations before defaulting to local files" OFF) From 5da12309f0ae99337b6fb03899028c6664e81b0c Mon Sep 17 00:00:00 2001 From: ptaylor Date: Thu, 23 Feb 2023 12:03:02 -0800 Subject: [PATCH 06/25] make devcontainer launcher always copy into a tmpdir --- .../devcontainer-conda/devcontainer.json | 2 +- .../isolated/.devcontainer/devcontainer.json | 4 ++-- .../single/.devcontainer/devcontainer.json | 18 +++++++-------- .../unified/.devcontainer/devcontainer.json | 22 +++++++++---------- .../devcontainer-pip/devcontainer.json | 2 +- .../isolated/.devcontainer/devcontainer.json | 4 ++-- .../single/.devcontainer/devcontainer.json | 18 +++++++-------- .../unified/.devcontainer/devcontainer.json | 22 +++++++++---------- .devcontainer/devcontainer.json | 4 ++-- .devcontainer/launch.sh | 12 +++++----- 10 files changed, 54 insertions(+), 54 deletions(-) diff --git a/.devcontainer/devcontainer-conda/devcontainer.json b/.devcontainer/devcontainer-conda/devcontainer.json index ac9bf80b9..af7897cb2 100644 --- a/.devcontainer/devcontainer-conda/devcontainer.json +++ b/.devcontainer/devcontainer-conda/devcontainer.json @@ -24,7 +24,7 @@ }, "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuspatial,type=bind", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind", "customizations": { "vscode": { diff --git a/.devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json index 99e62db0c..60119113e 100644 --- a/.devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json @@ -20,7 +20,7 @@ ], "updateContentCommand": [ - "/bin/bash", "-c", "cp -ar /workspaces/cuspatial /home/coder/cuspatial && rapids-make-vscode-workspace > ~/workspace.code-workspace" + "/bin/bash", "-c", "cp -ar /workspaces/${localWorkspaceFolderBasename} /home/coder/${localWorkspaceFolderBasename} && rapids-make-vscode-workspace > ~/workspace.code-workspace" ], "containerEnv": { @@ -28,7 +28,7 @@ }, "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/cuspatial,type=bind", + "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/${localWorkspaceFolderBasename},type=bind", "customizations": { "vscode": { diff --git a/.devcontainer/devcontainer-conda/single/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-conda/single/.devcontainer/devcontainer.json index 29b7b10e1..dd5d31f71 100644 --- a/.devcontainer/devcontainer-conda/single/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-conda/single/.devcontainer/devcontainer.json @@ -1,7 +1,7 @@ { "build": { - "context": "../../..", - "dockerfile": "../../../Dockerfile", + "context": "${localWorkspaceFolder}/.devcontainer", + "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", "args": { "CUDA": "11.8", "LLVM": "15" @@ -20,7 +20,7 @@ ], "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ../../../../{.aws,.cache,.conda,.config}" + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.conda,.config}" ], "containerEnv": { @@ -28,13 +28,13 @@ }, "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder}/../../..,target=/home/coder/cuspatial,type=bind", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind", "mounts": [ - "source=${localWorkspaceFolder}/../../../../.aws,target=/home/coder/.aws,type=bind", - "source=${localWorkspaceFolder}/../../../../.cache,target=/home/coder/.cache,type=bind", - "source=${localWorkspaceFolder}/../../../../.conda,target=/home/coder/.conda,type=bind", - "source=${localWorkspaceFolder}/../../../../.config,target=/home/coder/.config,type=bind", - "source=${localWorkspaceFolder}/../../../.devcontainer/opt/cuspatial,target=/opt/cuspatial,type=bind" + "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind", + "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind", + "source=${localWorkspaceFolder}/../.conda,target=/home/coder/.conda,type=bind", + "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind", + "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind" ], "customizations": { diff --git a/.devcontainer/devcontainer-conda/unified/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-conda/unified/.devcontainer/devcontainer.json index 56775cdd7..28ef291b4 100644 --- a/.devcontainer/devcontainer-conda/unified/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-conda/unified/.devcontainer/devcontainer.json @@ -1,7 +1,7 @@ { "build": { - "context": "../../..", - "dockerfile": "../../../Dockerfile", + "context": "${localWorkspaceFolder}/.devcontainer", + "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", "args": { "CUDA": "11.8", "LLVM": "15" @@ -20,7 +20,7 @@ ], "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ../../../../{.aws,.cache,.conda,.config,rmm,cudf}" + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.conda,.config,rmm,cudf}" ], "containerEnv": { @@ -28,15 +28,15 @@ }, "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder}/../../..,target=/home/coder/cuspatial,type=bind", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind", "mounts": [ - "source=${localWorkspaceFolder}/../../../../rmm,target=/home/coder/rmm,type=bind", - "source=${localWorkspaceFolder}/../../../../cudf,target=/home/coder/cudf,type=bind", - "source=${localWorkspaceFolder}/../../../../.aws,target=/home/coder/.aws,type=bind", - "source=${localWorkspaceFolder}/../../../../.cache,target=/home/coder/.cache,type=bind", - "source=${localWorkspaceFolder}/../../../../.conda,target=/home/coder/.conda,type=bind", - "source=${localWorkspaceFolder}/../../../../.config,target=/home/coder/.config,type=bind", - "source=${localWorkspaceFolder}/../../../.devcontainer/opt/cuspatial,target=/opt/cuspatial,type=bind" + "source=${localWorkspaceFolder}/../rmm,target=/home/coder/rmm,type=bind", + "source=${localWorkspaceFolder}/../cudf,target=/home/coder/cudf,type=bind", + "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind", + "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind", + "source=${localWorkspaceFolder}/../.conda,target=/home/coder/.conda,type=bind", + "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind", + "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind" ], "customizations": { diff --git a/.devcontainer/devcontainer-pip/devcontainer.json b/.devcontainer/devcontainer-pip/devcontainer.json index ac9bf80b9..af7897cb2 100644 --- a/.devcontainer/devcontainer-pip/devcontainer.json +++ b/.devcontainer/devcontainer-pip/devcontainer.json @@ -24,7 +24,7 @@ }, "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuspatial,type=bind", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind", "customizations": { "vscode": { diff --git a/.devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json index 99e62db0c..60119113e 100644 --- a/.devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json @@ -20,7 +20,7 @@ ], "updateContentCommand": [ - "/bin/bash", "-c", "cp -ar /workspaces/cuspatial /home/coder/cuspatial && rapids-make-vscode-workspace > ~/workspace.code-workspace" + "/bin/bash", "-c", "cp -ar /workspaces/${localWorkspaceFolderBasename} /home/coder/${localWorkspaceFolderBasename} && rapids-make-vscode-workspace > ~/workspace.code-workspace" ], "containerEnv": { @@ -28,7 +28,7 @@ }, "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/cuspatial,type=bind", + "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/${localWorkspaceFolderBasename},type=bind", "customizations": { "vscode": { diff --git a/.devcontainer/devcontainer-pip/single/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-pip/single/.devcontainer/devcontainer.json index 29b7b10e1..dd5d31f71 100644 --- a/.devcontainer/devcontainer-pip/single/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-pip/single/.devcontainer/devcontainer.json @@ -1,7 +1,7 @@ { "build": { - "context": "../../..", - "dockerfile": "../../../Dockerfile", + "context": "${localWorkspaceFolder}/.devcontainer", + "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", "args": { "CUDA": "11.8", "LLVM": "15" @@ -20,7 +20,7 @@ ], "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ../../../../{.aws,.cache,.conda,.config}" + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.conda,.config}" ], "containerEnv": { @@ -28,13 +28,13 @@ }, "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder}/../../..,target=/home/coder/cuspatial,type=bind", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind", "mounts": [ - "source=${localWorkspaceFolder}/../../../../.aws,target=/home/coder/.aws,type=bind", - "source=${localWorkspaceFolder}/../../../../.cache,target=/home/coder/.cache,type=bind", - "source=${localWorkspaceFolder}/../../../../.conda,target=/home/coder/.conda,type=bind", - "source=${localWorkspaceFolder}/../../../../.config,target=/home/coder/.config,type=bind", - "source=${localWorkspaceFolder}/../../../.devcontainer/opt/cuspatial,target=/opt/cuspatial,type=bind" + "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind", + "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind", + "source=${localWorkspaceFolder}/../.conda,target=/home/coder/.conda,type=bind", + "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind", + "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind" ], "customizations": { diff --git a/.devcontainer/devcontainer-pip/unified/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-pip/unified/.devcontainer/devcontainer.json index 56775cdd7..28ef291b4 100644 --- a/.devcontainer/devcontainer-pip/unified/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-pip/unified/.devcontainer/devcontainer.json @@ -1,7 +1,7 @@ { "build": { - "context": "../../..", - "dockerfile": "../../../Dockerfile", + "context": "${localWorkspaceFolder}/.devcontainer", + "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", "args": { "CUDA": "11.8", "LLVM": "15" @@ -20,7 +20,7 @@ ], "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ../../../../{.aws,.cache,.conda,.config,rmm,cudf}" + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.conda,.config,rmm,cudf}" ], "containerEnv": { @@ -28,15 +28,15 @@ }, "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder}/../../..,target=/home/coder/cuspatial,type=bind", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind", "mounts": [ - "source=${localWorkspaceFolder}/../../../../rmm,target=/home/coder/rmm,type=bind", - "source=${localWorkspaceFolder}/../../../../cudf,target=/home/coder/cudf,type=bind", - "source=${localWorkspaceFolder}/../../../../.aws,target=/home/coder/.aws,type=bind", - "source=${localWorkspaceFolder}/../../../../.cache,target=/home/coder/.cache,type=bind", - "source=${localWorkspaceFolder}/../../../../.conda,target=/home/coder/.conda,type=bind", - "source=${localWorkspaceFolder}/../../../../.config,target=/home/coder/.config,type=bind", - "source=${localWorkspaceFolder}/../../../.devcontainer/opt/cuspatial,target=/opt/cuspatial,type=bind" + "source=${localWorkspaceFolder}/../rmm,target=/home/coder/rmm,type=bind", + "source=${localWorkspaceFolder}/../cudf,target=/home/coder/cudf,type=bind", + "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind", + "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind", + "source=${localWorkspaceFolder}/../.conda,target=/home/coder/.conda,type=bind", + "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind", + "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind" ], "customizations": { diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index ed3fe32ad..aac599c0b 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -28,13 +28,13 @@ }, "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuspatial,type=bind", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind", "mounts": [ "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind", "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind", "source=${localWorkspaceFolder}/../.conda,target=/home/coder/.conda,type=bind", "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind", - "source=${localWorkspaceFolder}/.devcontainer/opt/cuspatial,target=/opt/cuspatial,type=bind" + "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind" ], "customizations": { diff --git a/.devcontainer/launch.sh b/.devcontainer/launch.sh index 527d512cb..3691cb359 100755 --- a/.devcontainer/launch.sh +++ b/.devcontainer/launch.sh @@ -21,15 +21,15 @@ launch_devcontainer() { * ) mode="single";; esac - local tmpdir="$(mktemp -d)"; + local workspace="$(basename "$(pwd)")"; + local tmpdir="$(mktemp -d)/$workspace"; local flavor="devcontainer-${pkgs}/${mode}"; local path="$(pwd)/.devcontainer/${flavor}"; - if [[ "$mode" == "isolated" ]]; then - cp -arL "$path/.devcontainer" "${tmpdir}/"; - sed -i "s@\${localWorkspaceFolder}@$(pwd)@g" "${tmpdir}/.devcontainer/devcontainer.json"; - path="${tmpdir}"; - fi + mkdir -p "$tmpdir"; + cp -arL "$path/.devcontainer" "${tmpdir}/"; + sed -i "s@\${localWorkspaceFolder}@$(pwd)@g" "${tmpdir}/.devcontainer/devcontainer.json"; + path="${tmpdir}"; local hash="$(echo -n "${path}" | xxd -pu - | tr -d '[:space:]')"; local url="vscode://vscode-remote/dev-container+${hash}/home/coder"; From 6bc7039e10a71b712f5bae38687d9a785022821f Mon Sep 17 00:00:00 2001 From: ptaylor Date: Fri, 24 Feb 2023 09:07:48 -0800 Subject: [PATCH 07/25] still mount settings in isolated devcontainers --- .../isolated/.devcontainer/devcontainer.json | 6 ++++++ .../isolated/.devcontainer/devcontainer.json | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/.devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json index 60119113e..4ae3278f1 100644 --- a/.devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json @@ -29,6 +29,12 @@ "workspaceFolder": "/home/coder", "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/${localWorkspaceFolderBasename},type=bind", + "mounts": [ + "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind", + "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind", + "source=${localWorkspaceFolder}/../.conda/pkgs,target=/home/coder/.conda/pkgs,type=bind", + "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind" + ], "customizations": { "vscode": { diff --git a/.devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json index 60119113e..effe58ea7 100644 --- a/.devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json @@ -29,6 +29,11 @@ "workspaceFolder": "/home/coder", "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/${localWorkspaceFolderBasename},type=bind", + "mounts": [ + "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind", + "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind", + "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind" + ], "customizations": { "vscode": { From 561d26f28540e5c0c1c29804616abe6c6b3ccccb Mon Sep 17 00:00:00 2001 From: ptaylor Date: Fri, 24 Feb 2023 09:10:31 -0800 Subject: [PATCH 08/25] keep bind mounts consistent between host and container --- .../devcontainer-conda/devcontainer.json | 2 +- .../isolated/.devcontainer/devcontainer.json | 10 +++++----- .../single/.devcontainer/devcontainer.json | 12 ++++++------ .../unified/.devcontainer/devcontainer.json | 16 ++++++++-------- .devcontainer/devcontainer-pip/devcontainer.json | 2 +- .../isolated/.devcontainer/devcontainer.json | 8 ++++---- .../single/.devcontainer/devcontainer.json | 12 ++++++------ .../unified/.devcontainer/devcontainer.json | 16 ++++++++-------- .devcontainer/devcontainer.json | 12 ++++++------ 9 files changed, 45 insertions(+), 45 deletions(-) diff --git a/.devcontainer/devcontainer-conda/devcontainer.json b/.devcontainer/devcontainer-conda/devcontainer.json index af7897cb2..ddf978978 100644 --- a/.devcontainer/devcontainer-conda/devcontainer.json +++ b/.devcontainer/devcontainer-conda/devcontainer.json @@ -24,7 +24,7 @@ }, "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind,consistency=consistent", "customizations": { "vscode": { diff --git a/.devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json index 4ae3278f1..741b74fa8 100644 --- a/.devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json @@ -28,12 +28,12 @@ }, "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/${localWorkspaceFolderBasename},type=bind", + "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/${localWorkspaceFolderBasename},type=bind,consistency=consistent", "mounts": [ - "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind", - "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind", - "source=${localWorkspaceFolder}/../.conda/pkgs,target=/home/coder/.conda/pkgs,type=bind", - "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind" + "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.conda/pkgs,target=/home/coder/.conda/pkgs,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent" ], "customizations": { diff --git a/.devcontainer/devcontainer-conda/single/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-conda/single/.devcontainer/devcontainer.json index dd5d31f71..ea285c250 100644 --- a/.devcontainer/devcontainer-conda/single/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-conda/single/.devcontainer/devcontainer.json @@ -28,13 +28,13 @@ }, "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind,consistency=consistent", "mounts": [ - "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind", - "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind", - "source=${localWorkspaceFolder}/../.conda,target=/home/coder/.conda,type=bind", - "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind", - "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind" + "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.conda,target=/home/coder/.conda,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind,consistency=consistent" ], "customizations": { diff --git a/.devcontainer/devcontainer-conda/unified/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-conda/unified/.devcontainer/devcontainer.json index 28ef291b4..53f904fce 100644 --- a/.devcontainer/devcontainer-conda/unified/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-conda/unified/.devcontainer/devcontainer.json @@ -28,15 +28,15 @@ }, "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind,consistency=consistent", "mounts": [ - "source=${localWorkspaceFolder}/../rmm,target=/home/coder/rmm,type=bind", - "source=${localWorkspaceFolder}/../cudf,target=/home/coder/cudf,type=bind", - "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind", - "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind", - "source=${localWorkspaceFolder}/../.conda,target=/home/coder/.conda,type=bind", - "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind", - "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind" + "source=${localWorkspaceFolder}/../rmm,target=/home/coder/rmm,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../cudf,target=/home/coder/cudf,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.conda,target=/home/coder/.conda,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind,consistency=consistent" ], "customizations": { diff --git a/.devcontainer/devcontainer-pip/devcontainer.json b/.devcontainer/devcontainer-pip/devcontainer.json index af7897cb2..ddf978978 100644 --- a/.devcontainer/devcontainer-pip/devcontainer.json +++ b/.devcontainer/devcontainer-pip/devcontainer.json @@ -24,7 +24,7 @@ }, "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind,consistency=consistent", "customizations": { "vscode": { diff --git a/.devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json index effe58ea7..6c7c207ed 100644 --- a/.devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json @@ -28,11 +28,11 @@ }, "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/${localWorkspaceFolderBasename},type=bind", + "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/${localWorkspaceFolderBasename},type=bind,consistency=consistent", "mounts": [ - "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind", - "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind", - "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind" + "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent" ], "customizations": { diff --git a/.devcontainer/devcontainer-pip/single/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-pip/single/.devcontainer/devcontainer.json index dd5d31f71..ea285c250 100644 --- a/.devcontainer/devcontainer-pip/single/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-pip/single/.devcontainer/devcontainer.json @@ -28,13 +28,13 @@ }, "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind,consistency=consistent", "mounts": [ - "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind", - "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind", - "source=${localWorkspaceFolder}/../.conda,target=/home/coder/.conda,type=bind", - "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind", - "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind" + "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.conda,target=/home/coder/.conda,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind,consistency=consistent" ], "customizations": { diff --git a/.devcontainer/devcontainer-pip/unified/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-pip/unified/.devcontainer/devcontainer.json index 28ef291b4..53f904fce 100644 --- a/.devcontainer/devcontainer-pip/unified/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-pip/unified/.devcontainer/devcontainer.json @@ -28,15 +28,15 @@ }, "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind,consistency=consistent", "mounts": [ - "source=${localWorkspaceFolder}/../rmm,target=/home/coder/rmm,type=bind", - "source=${localWorkspaceFolder}/../cudf,target=/home/coder/cudf,type=bind", - "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind", - "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind", - "source=${localWorkspaceFolder}/../.conda,target=/home/coder/.conda,type=bind", - "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind", - "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind" + "source=${localWorkspaceFolder}/../rmm,target=/home/coder/rmm,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../cudf,target=/home/coder/cudf,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.conda,target=/home/coder/.conda,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind,consistency=consistent" ], "customizations": { diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index aac599c0b..f8b9e9c86 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -28,13 +28,13 @@ }, "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind,consistency=consistent", "mounts": [ - "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind", - "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind", - "source=${localWorkspaceFolder}/../.conda,target=/home/coder/.conda,type=bind", - "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind", - "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind" + "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.conda,target=/home/coder/.conda,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind,consistency=consistent" ], "customizations": { From 978ddd8666cc5eb6945fa23e41866241c9396c58 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Mon, 27 Feb 2023 15:16:44 -0800 Subject: [PATCH 09/25] make isolated images still use conda cache, make both conda and pip envs work --- .devcontainer/Dockerfile | 18 +++++- .../devcontainer-conda/devcontainer.json | 47 +-------------- .../isolated/.devcontainer/devcontainer.json | 15 +++-- .../single/.devcontainer/devcontainer.json | 10 +++- .../unified/.devcontainer/devcontainer.json | 10 +++- .../devcontainer-pip/devcontainer.json | 47 +-------------- .../isolated/.devcontainer/devcontainer.json | 18 ++++-- .../single/.devcontainer/devcontainer.json | 13 +++-- .../unified/.devcontainer/devcontainer.json | 13 +++-- .devcontainer/devcontainer.json | 57 ------------------- .../opt/cuspatial/bin/post-attach-command.sh | 2 +- .../opt/cuspatial/bin/post-create-command.sh | 2 +- .../cuspatial/bin/update-content-command.sh | 4 +- 13 files changed, 77 insertions(+), 179 deletions(-) mode change 100644 => 120000 .devcontainer/devcontainer-conda/devcontainer.json mode change 100644 => 120000 .devcontainer/devcontainer-pip/devcontainer.json delete mode 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 84e19a90b..3cc6c211e 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -5,11 +5,23 @@ ARG LLVM=15 ARG RAPIDS=23.04 ARG DISTRO=ubuntu22.04 ARG REPO=rapidsai/devcontainers -ARG FROM_IMAGE=${REPO}:${RAPIDS}-cpp-llvm${LLVM}-cuda${CUDA}-mambaforge-${DISTRO} -FROM ${FROM_IMAGE} +ARG PYTHON_PACKAGE_MANAGER=conda -COPY --chown=root:root opt/cuspatial /opt/cuspatial +FROM ${REPO}:${RAPIDS}-cpp-llvm${LLVM}-cuda${CUDA}-${DISTRO} as pip-base + +FROM ${REPO}:${RAPIDS}-cpp-llvm${LLVM}-cuda${CUDA}-mambaforge-${DISTRO} as conda-base + +FROM ${PYTHON_PACKAGE_MANAGER}-base + +ARG PYTHON_PACKAGE_MANAGER +ENV PYTHON_PACKAGE_MANAGER="${PYTHON_PACKAGE_MANAGER}" + +USER coder + +COPY --chown=coder:coder opt/cuspatial /opt/cuspatial + +RUN /bin/bash -c 'mkdir -m 0755 -p ~/{.aws,.cache,.conda,.config,.local}' WORKDIR /home/coder/ diff --git a/.devcontainer/devcontainer-conda/devcontainer.json b/.devcontainer/devcontainer-conda/devcontainer.json deleted file mode 100644 index ddf978978..000000000 --- a/.devcontainer/devcontainer-conda/devcontainer.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "build": { - "context": ".", - "dockerfile": "./Dockerfile", - "args": { - "CUDA": "11.8", - "LLVM": "15" - } - }, - "hostRequirements": { - "gpu": true - }, - - "features": { - "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:latest": {} - }, - - "overrideFeatureInstallOrder": [ - "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" - ], - - "containerEnv": { - "DEFAULT_CONDA_ENV": "rapids" - }, - - "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind,consistency=consistent", - - "customizations": { - "vscode": { - "extensions": [ - "mutantdino.resourcemonitor", - "tamasfe.even-better-toml" - ], - "settings": { - "files.trimFinalNewlines": true, - "files.insertFinalNewline": true, - "files.trimTrailingWhitespace": true, - "files.watcherExclude": { - "**/target/**": true - }, - "python.linting.flake8Enabled": true - } - } - } -} diff --git a/.devcontainer/devcontainer-conda/devcontainer.json b/.devcontainer/devcontainer-conda/devcontainer.json new file mode 120000 index 000000000..270424649 --- /dev/null +++ b/.devcontainer/devcontainer-conda/devcontainer.json @@ -0,0 +1 @@ +single/.devcontainer/devcontainer.json \ No newline at end of file diff --git a/.devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json index 741b74fa8..1e0008e0d 100644 --- a/.devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json @@ -1,10 +1,13 @@ { + "shutdownAction": "none", + "build": { "context": "${localWorkspaceFolder}/.devcontainer", "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", "args": { "CUDA": "11.8", - "LLVM": "15" + "LLVM": "15", + "PYTHON_PACKAGE_MANAGER": "conda" } }, "hostRequirements": { @@ -19,8 +22,12 @@ "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" ], + "initializeCommand": [ + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.conda}" + ], + "updateContentCommand": [ - "/bin/bash", "-c", "cp -ar /workspaces/${localWorkspaceFolderBasename} /home/coder/${localWorkspaceFolderBasename} && rapids-make-vscode-workspace > ~/workspace.code-workspace" + "/bin/bash", "-c", "cp -ar /workspaces/${localWorkspaceFolderBasename} /home/coder/${localWorkspaceFolderBasename}" ], "containerEnv": { @@ -32,8 +39,8 @@ "mounts": [ "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.conda/pkgs,target=/home/coder/.conda/pkgs,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent" + "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.conda/pkgs,target=/home/coder/.conda/pkgs,type=bind,consistency=consistent" ], "customizations": { diff --git a/.devcontainer/devcontainer-conda/single/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-conda/single/.devcontainer/devcontainer.json index ea285c250..7cf721c2c 100644 --- a/.devcontainer/devcontainer-conda/single/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-conda/single/.devcontainer/devcontainer.json @@ -1,10 +1,13 @@ { + "shutdownAction": "none", + "build": { "context": "${localWorkspaceFolder}/.devcontainer", "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", "args": { "CUDA": "11.8", - "LLVM": "15" + "LLVM": "15", + "PYTHON_PACKAGE_MANAGER": "conda" } }, "hostRequirements": { @@ -20,7 +23,7 @@ ], "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.conda,.config}" + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.conda/${localWorkspaceFolderBasename}-single-envs}" ], "containerEnv": { @@ -32,8 +35,9 @@ "mounts": [ "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.conda,target=/home/coder/.conda,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.conda/pkgs,target=/home/coder/.conda/pkgs,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.conda/${localWorkspaceFolderBasename}-single-envs,target=/home/coder/.conda/envs,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind,consistency=consistent" ], diff --git a/.devcontainer/devcontainer-conda/unified/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-conda/unified/.devcontainer/devcontainer.json index 53f904fce..42c8fa7a9 100644 --- a/.devcontainer/devcontainer-conda/unified/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-conda/unified/.devcontainer/devcontainer.json @@ -1,10 +1,13 @@ { + "shutdownAction": "none", + "build": { "context": "${localWorkspaceFolder}/.devcontainer", "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", "args": { "CUDA": "11.8", - "LLVM": "15" + "LLVM": "15", + "PYTHON_PACKAGE_MANAGER": "conda" } }, "hostRequirements": { @@ -20,7 +23,7 @@ ], "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.conda,.config,rmm,cudf}" + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.conda/${localWorkspaceFolderBasename}-unified-envs}" ], "containerEnv": { @@ -34,8 +37,9 @@ "source=${localWorkspaceFolder}/../cudf,target=/home/coder/cudf,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.conda,target=/home/coder/.conda,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.conda/pkgs,target=/home/coder/.conda/pkgs,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.conda/${localWorkspaceFolderBasename}-unified-envs,target=/home/coder/.conda/envs,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind,consistency=consistent" ], diff --git a/.devcontainer/devcontainer-pip/devcontainer.json b/.devcontainer/devcontainer-pip/devcontainer.json deleted file mode 100644 index ddf978978..000000000 --- a/.devcontainer/devcontainer-pip/devcontainer.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "build": { - "context": ".", - "dockerfile": "./Dockerfile", - "args": { - "CUDA": "11.8", - "LLVM": "15" - } - }, - "hostRequirements": { - "gpu": true - }, - - "features": { - "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:latest": {} - }, - - "overrideFeatureInstallOrder": [ - "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" - ], - - "containerEnv": { - "DEFAULT_CONDA_ENV": "rapids" - }, - - "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind,consistency=consistent", - - "customizations": { - "vscode": { - "extensions": [ - "mutantdino.resourcemonitor", - "tamasfe.even-better-toml" - ], - "settings": { - "files.trimFinalNewlines": true, - "files.insertFinalNewline": true, - "files.trimTrailingWhitespace": true, - "files.watcherExclude": { - "**/target/**": true - }, - "python.linting.flake8Enabled": true - } - } - } -} diff --git a/.devcontainer/devcontainer-pip/devcontainer.json b/.devcontainer/devcontainer-pip/devcontainer.json new file mode 120000 index 000000000..270424649 --- /dev/null +++ b/.devcontainer/devcontainer-pip/devcontainer.json @@ -0,0 +1 @@ +single/.devcontainer/devcontainer.json \ No newline at end of file diff --git a/.devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json index 6c7c207ed..e50a9be85 100644 --- a/.devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json @@ -1,10 +1,13 @@ { + "shutdownAction": "none", + "build": { "context": "${localWorkspaceFolder}/.devcontainer", "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", "args": { "CUDA": "11.8", - "LLVM": "15" + "LLVM": "15", + "PYTHON_PACKAGE_MANAGER": "pip" } }, "hostRequirements": { @@ -12,19 +15,25 @@ }, "features": { + "ghcr.io/devcontainers/features/python:1": {}, "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:latest": {} }, "overrideFeatureInstallOrder": [ + "ghcr.io/devcontainers/features/python", "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" ], + "initializeCommand": [ + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.local}" + ], + "updateContentCommand": [ - "/bin/bash", "-c", "cp -ar /workspaces/${localWorkspaceFolderBasename} /home/coder/${localWorkspaceFolderBasename} && rapids-make-vscode-workspace > ~/workspace.code-workspace" + "/bin/bash", "-c", "cp -ar /workspaces/${localWorkspaceFolderBasename} /home/coder/${localWorkspaceFolderBasename}" ], "containerEnv": { - "DEFAULT_CONDA_ENV": "rapids" + "DEFAULT_VIRTUAL_ENV": "rapids" }, "workspaceFolder": "/home/coder", @@ -32,7 +41,8 @@ "mounts": [ "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent" + "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.local,target=/home/coder/.local,type=bind,consistency=consistent" ], "customizations": { diff --git a/.devcontainer/devcontainer-pip/single/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-pip/single/.devcontainer/devcontainer.json index ea285c250..29c5cafe9 100644 --- a/.devcontainer/devcontainer-pip/single/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-pip/single/.devcontainer/devcontainer.json @@ -1,10 +1,13 @@ { + "shutdownAction": "none", + "build": { "context": "${localWorkspaceFolder}/.devcontainer", "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", "args": { "CUDA": "11.8", - "LLVM": "15" + "LLVM": "15", + "PYTHON_PACKAGE_MANAGER": "pip" } }, "hostRequirements": { @@ -12,19 +15,21 @@ }, "features": { + "ghcr.io/devcontainers/features/python:1": {}, "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:latest": {} }, "overrideFeatureInstallOrder": [ + "ghcr.io/devcontainers/features/python", "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" ], "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.conda,.config}" + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.${localWorkspaceFolderBasename}-single-local}" ], "containerEnv": { - "DEFAULT_CONDA_ENV": "rapids" + "DEFAULT_VIRTUAL_ENV": "rapids" }, "workspaceFolder": "/home/coder", @@ -32,8 +37,8 @@ "mounts": [ "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.conda,target=/home/coder/.conda,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.${localWorkspaceFolderBasename}-single-local,target=/home/coder/.local,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind,consistency=consistent" ], diff --git a/.devcontainer/devcontainer-pip/unified/.devcontainer/devcontainer.json b/.devcontainer/devcontainer-pip/unified/.devcontainer/devcontainer.json index 53f904fce..bc2491109 100644 --- a/.devcontainer/devcontainer-pip/unified/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer-pip/unified/.devcontainer/devcontainer.json @@ -1,10 +1,13 @@ { + "shutdownAction": "none", + "build": { "context": "${localWorkspaceFolder}/.devcontainer", "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", "args": { "CUDA": "11.8", - "LLVM": "15" + "LLVM": "15", + "PYTHON_PACKAGE_MANAGER": "pip" } }, "hostRequirements": { @@ -12,19 +15,21 @@ }, "features": { + "ghcr.io/devcontainers/features/python:1": {}, "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:latest": {} }, "overrideFeatureInstallOrder": [ + "ghcr.io/devcontainers/features/python", "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" ], "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.conda,.config,rmm,cudf}" + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.${localWorkspaceFolderBasename}-unified-local}" ], "containerEnv": { - "DEFAULT_CONDA_ENV": "rapids" + "DEFAULT_VIRTUAL_ENV": "rapids" }, "workspaceFolder": "/home/coder", @@ -34,8 +39,8 @@ "source=${localWorkspaceFolder}/../cudf,target=/home/coder/cudf,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.conda,target=/home/coder/.conda,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.${localWorkspaceFolderBasename}-unified-local,target=/home/coder/.local,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind,consistency=consistent" ], diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json deleted file mode 100644 index f8b9e9c86..000000000 --- a/.devcontainer/devcontainer.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "build": { - "context": ".", - "dockerfile": "./Dockerfile", - "args": { - "CUDA": "11.8", - "LLVM": "15" - } - }, - "hostRequirements": { - "gpu": true - }, - - "features": { - "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:latest": {} - }, - - "overrideFeatureInstallOrder": [ - "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" - ], - - "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ../{.aws,.cache,.conda,.config}" - ], - - "containerEnv": { - "DEFAULT_CONDA_ENV": "rapids" - }, - - "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind,consistency=consistent", - "mounts": [ - "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.conda,target=/home/coder/.conda,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind,consistency=consistent" - ], - - "customizations": { - "vscode": { - "extensions": [ - "mutantdino.resourcemonitor", - "tamasfe.even-better-toml" - ], - "settings": { - "files.trimFinalNewlines": true, - "files.insertFinalNewline": true, - "files.trimTrailingWhitespace": true, - "files.watcherExclude": { - "**/target/**": true - }, - "python.linting.flake8Enabled": true - } - } - } -} diff --git a/.devcontainer/opt/cuspatial/bin/post-attach-command.sh b/.devcontainer/opt/cuspatial/bin/post-attach-command.sh index 27c703726..637734566 100755 --- a/.devcontainer/opt/cuspatial/bin/post-attach-command.sh +++ b/.devcontainer/opt/cuspatial/bin/post-attach-command.sh @@ -6,4 +6,4 @@ # Once "postAttachCommand" is finished, the terminal is relenquished to # the user. Sourcing here ensures the new conda env is already activated # in the shell for the user. -source rapids-make-conda-env; +source rapids-make-${PYTHON_PACKAGE_MANAGER}-env; diff --git a/.devcontainer/opt/cuspatial/bin/post-create-command.sh b/.devcontainer/opt/cuspatial/bin/post-create-command.sh index 855ea50ab..0b1796c8e 100755 --- a/.devcontainer/opt/cuspatial/bin/post-create-command.sh +++ b/.devcontainer/opt/cuspatial/bin/post-create-command.sh @@ -1,3 +1,3 @@ #! /usr/bin/env bash -rapids-make-vscode-workspace > ~/workspace.code-workspace; +rapids-make-vscode-workspace --update; diff --git a/.devcontainer/opt/cuspatial/bin/update-content-command.sh b/.devcontainer/opt/cuspatial/bin/update-content-command.sh index 0844cb37b..0b1796c8e 100755 --- a/.devcontainer/opt/cuspatial/bin/update-content-command.sh +++ b/.devcontainer/opt/cuspatial/bin/update-content-command.sh @@ -1,5 +1,3 @@ #! /usr/bin/env bash -mkdir -m 0755 -p ~/{.aws,.cache,.conda,.config}; - -rapids-make-vscode-workspace > ~/workspace.code-workspace; +rapids-make-vscode-workspace --update; From 207515ed21513cdbd71702e97021a49656ea4f3e Mon Sep 17 00:00:00 2001 From: ptaylor Date: Mon, 27 Feb 2023 15:17:06 -0800 Subject: [PATCH 10/25] generate correct dependencies for requirements.txt --- dependencies.yaml | 53 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/dependencies.yaml b/dependencies.yaml index 1633d5651..6346cae7a 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -88,10 +88,12 @@ dependencies: - output_types: [conda, requirements] packages: - *cmake_ver - - &cudf_ver cudf=23.04 - cython>=0.29,<0.30 - scikit-build>=0.13.1 - setuptools + - output_types: conda + packages: + - &cudf_conda cudf=23.04 specific: - output_types: conda matrices: @@ -105,6 +107,28 @@ dependencies: packages: - *gcc_aarch64 - *sysroot_aarch64 + - output_types: requirements + matrices: + - matrix: + cuda: "11.8" + packages: + - "--extra-index-url=https://pypi.nvidia.com" + - cudf-cu11==23.4.* + - matrix: + cuda: "11.5" + packages: + - "--extra-index-url=https://pypi.nvidia.com" + - cudf-cu11==23.4.* + - matrix: + cuda: "11.4" + packages: + - "--extra-index-url=https://pypi.nvidia.com" + - cudf-cu11==23.4.* + - matrix: + cuda: "11.2" + packages: + - "--extra-index-url=https://pypi.nvidia.com" + - cudf-cu11==23.4.* cudatoolkit: specific: - output_types: conda @@ -171,9 +195,34 @@ dependencies: common: - output_types: [conda, requirements] packages: - - *cudf_ver - geopandas>=0.11.0 + - output_types: conda + packages: + - *cudf_conda - rmm=23.04 + specific: + - output_types: requirements + matrices: + - matrix: + cuda: "11.8" + packages: + - "--extra-index-url=https://pypi.nvidia.com" + - rmm-cu11==23.4.* + - matrix: + cuda: "11.5" + packages: + - "--extra-index-url=https://pypi.nvidia.com" + - rmm-cu11==23.4.* + - matrix: + cuda: "11.4" + packages: + - "--extra-index-url=https://pypi.nvidia.com" + - rmm-cu11==23.4.* + - matrix: + cuda: "11.2" + packages: + - "--extra-index-url=https://pypi.nvidia.com" + - rmm-cu11==23.4.* test_python: common: - output_types: [conda, requirements] From 5a2d108d6a3f9ec88c1a6e2dbd4c37bb1e0febfb Mon Sep 17 00:00:00 2001 From: ptaylor Date: Mon, 27 Feb 2023 15:47:17 -0800 Subject: [PATCH 11/25] rename devcontainer dirs --- .../{devcontainer-conda => conda}/devcontainer.json | 0 .../isolated/.devcontainer/devcontainer.json | 0 .../single/.devcontainer/devcontainer.json | 0 .../unified/.devcontainer/devcontainer.json | 0 .devcontainer/devcontainer.json | 1 + .devcontainer/launch.sh | 10 +++++----- .../{devcontainer-pip => pip}/devcontainer.json | 0 .../isolated/.devcontainer/devcontainer.json | 0 .../single/.devcontainer/devcontainer.json | 0 .../unified/.devcontainer/devcontainer.json | 0 10 files changed, 6 insertions(+), 5 deletions(-) rename .devcontainer/{devcontainer-conda => conda}/devcontainer.json (100%) rename .devcontainer/{devcontainer-conda => conda}/isolated/.devcontainer/devcontainer.json (100%) rename .devcontainer/{devcontainer-conda => conda}/single/.devcontainer/devcontainer.json (100%) rename .devcontainer/{devcontainer-conda => conda}/unified/.devcontainer/devcontainer.json (100%) create mode 120000 .devcontainer/devcontainer.json rename .devcontainer/{devcontainer-pip => pip}/devcontainer.json (100%) rename .devcontainer/{devcontainer-pip => pip}/isolated/.devcontainer/devcontainer.json (100%) rename .devcontainer/{devcontainer-pip => pip}/single/.devcontainer/devcontainer.json (100%) rename .devcontainer/{devcontainer-pip => pip}/unified/.devcontainer/devcontainer.json (100%) diff --git a/.devcontainer/devcontainer-conda/devcontainer.json b/.devcontainer/conda/devcontainer.json similarity index 100% rename from .devcontainer/devcontainer-conda/devcontainer.json rename to .devcontainer/conda/devcontainer.json diff --git a/.devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json b/.devcontainer/conda/isolated/.devcontainer/devcontainer.json similarity index 100% rename from .devcontainer/devcontainer-conda/isolated/.devcontainer/devcontainer.json rename to .devcontainer/conda/isolated/.devcontainer/devcontainer.json diff --git a/.devcontainer/devcontainer-conda/single/.devcontainer/devcontainer.json b/.devcontainer/conda/single/.devcontainer/devcontainer.json similarity index 100% rename from .devcontainer/devcontainer-conda/single/.devcontainer/devcontainer.json rename to .devcontainer/conda/single/.devcontainer/devcontainer.json diff --git a/.devcontainer/devcontainer-conda/unified/.devcontainer/devcontainer.json b/.devcontainer/conda/unified/.devcontainer/devcontainer.json similarity index 100% rename from .devcontainer/devcontainer-conda/unified/.devcontainer/devcontainer.json rename to .devcontainer/conda/unified/.devcontainer/devcontainer.json diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 120000 index 000000000..4d5226415 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1 @@ +conda/single/.devcontainer/devcontainer.json \ No newline at end of file diff --git a/.devcontainer/launch.sh b/.devcontainer/launch.sh index 3691cb359..13cd04ace 100755 --- a/.devcontainer/launch.sh +++ b/.devcontainer/launch.sh @@ -21,12 +21,12 @@ launch_devcontainer() { * ) mode="single";; esac + local flavor="${pkgs}/${mode}"; local workspace="$(basename "$(pwd)")"; - local tmpdir="$(mktemp -d)/$workspace"; - local flavor="devcontainer-${pkgs}/${mode}"; + local tmpdir="$(mktemp -d)/${workspace}"; local path="$(pwd)/.devcontainer/${flavor}"; - mkdir -p "$tmpdir"; + mkdir -p "${tmpdir}"; cp -arL "$path/.devcontainer" "${tmpdir}/"; sed -i "s@\${localWorkspaceFolder}@$(pwd)@g" "${tmpdir}/.devcontainer/devcontainer.json"; path="${tmpdir}"; @@ -34,7 +34,7 @@ launch_devcontainer() { local hash="$(echo -n "${path}" | xxd -pu - | tr -d '[:space:]')"; local url="vscode://vscode-remote/dev-container+${hash}/home/coder"; - echo "devcontainer URL: $url"; + echo "devcontainer URL: ${url}"; local launch=""; if type open >/dev/null 2>&1; then @@ -45,7 +45,7 @@ launch_devcontainer() { if [ -n "${launch}" ]; then code --new-window "$tmpdir"; - $launch "$url" >/dev/null 2>&1 & + $launch "${url}" >/dev/null 2>&1 & fi } diff --git a/.devcontainer/devcontainer-pip/devcontainer.json b/.devcontainer/pip/devcontainer.json similarity index 100% rename from .devcontainer/devcontainer-pip/devcontainer.json rename to .devcontainer/pip/devcontainer.json diff --git a/.devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json b/.devcontainer/pip/isolated/.devcontainer/devcontainer.json similarity index 100% rename from .devcontainer/devcontainer-pip/isolated/.devcontainer/devcontainer.json rename to .devcontainer/pip/isolated/.devcontainer/devcontainer.json diff --git a/.devcontainer/devcontainer-pip/single/.devcontainer/devcontainer.json b/.devcontainer/pip/single/.devcontainer/devcontainer.json similarity index 100% rename from .devcontainer/devcontainer-pip/single/.devcontainer/devcontainer.json rename to .devcontainer/pip/single/.devcontainer/devcontainer.json diff --git a/.devcontainer/devcontainer-pip/unified/.devcontainer/devcontainer.json b/.devcontainer/pip/unified/.devcontainer/devcontainer.json similarity index 100% rename from .devcontainer/devcontainer-pip/unified/.devcontainer/devcontainer.json rename to .devcontainer/pip/unified/.devcontainer/devcontainer.json From 425d8318db72890e6c30716a957e115d4c2734f3 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Mon, 27 Feb 2023 21:31:44 -0800 Subject: [PATCH 12/25] change symlinks --- .devcontainer/conda/devcontainer.json | 62 +++++++++++++++++- .../single/.devcontainer/devcontainer.json | 62 +----------------- .devcontainer/launch.sh | 2 +- .devcontainer/pip/devcontainer.json | 63 ++++++++++++++++++- .../single/.devcontainer/devcontainer.json | 63 +------------------ 5 files changed, 126 insertions(+), 126 deletions(-) mode change 120000 => 100644 .devcontainer/conda/devcontainer.json mode change 100644 => 120000 .devcontainer/conda/single/.devcontainer/devcontainer.json mode change 120000 => 100644 .devcontainer/pip/devcontainer.json mode change 100644 => 120000 .devcontainer/pip/single/.devcontainer/devcontainer.json diff --git a/.devcontainer/conda/devcontainer.json b/.devcontainer/conda/devcontainer.json deleted file mode 120000 index 270424649..000000000 --- a/.devcontainer/conda/devcontainer.json +++ /dev/null @@ -1 +0,0 @@ -single/.devcontainer/devcontainer.json \ No newline at end of file diff --git a/.devcontainer/conda/devcontainer.json b/.devcontainer/conda/devcontainer.json new file mode 100644 index 000000000..7cf721c2c --- /dev/null +++ b/.devcontainer/conda/devcontainer.json @@ -0,0 +1,61 @@ +{ + "shutdownAction": "none", + + "build": { + "context": "${localWorkspaceFolder}/.devcontainer", + "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", + "args": { + "CUDA": "11.8", + "LLVM": "15", + "PYTHON_PACKAGE_MANAGER": "conda" + } + }, + "hostRequirements": { + "gpu": true + }, + + "features": { + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:latest": {} + }, + + "overrideFeatureInstallOrder": [ + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" + ], + + "initializeCommand": [ + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.conda/${localWorkspaceFolderBasename}-single-envs}" + ], + + "containerEnv": { + "DEFAULT_CONDA_ENV": "rapids" + }, + + "workspaceFolder": "/home/coder", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind,consistency=consistent", + "mounts": [ + "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.conda/pkgs,target=/home/coder/.conda/pkgs,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.conda/${localWorkspaceFolderBasename}-single-envs,target=/home/coder/.conda/envs,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind,consistency=consistent" + ], + + "customizations": { + "vscode": { + "extensions": [ + "mutantdino.resourcemonitor", + "tamasfe.even-better-toml" + ], + "settings": { + "files.trimFinalNewlines": true, + "files.insertFinalNewline": true, + "files.trimTrailingWhitespace": true, + "files.watcherExclude": { + "**/target/**": true + }, + "python.linting.flake8Enabled": true + } + } + } +} diff --git a/.devcontainer/conda/single/.devcontainer/devcontainer.json b/.devcontainer/conda/single/.devcontainer/devcontainer.json deleted file mode 100644 index 7cf721c2c..000000000 --- a/.devcontainer/conda/single/.devcontainer/devcontainer.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "shutdownAction": "none", - - "build": { - "context": "${localWorkspaceFolder}/.devcontainer", - "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", - "args": { - "CUDA": "11.8", - "LLVM": "15", - "PYTHON_PACKAGE_MANAGER": "conda" - } - }, - "hostRequirements": { - "gpu": true - }, - - "features": { - "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:latest": {} - }, - - "overrideFeatureInstallOrder": [ - "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" - ], - - "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.conda/${localWorkspaceFolderBasename}-single-envs}" - ], - - "containerEnv": { - "DEFAULT_CONDA_ENV": "rapids" - }, - - "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind,consistency=consistent", - "mounts": [ - "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.conda/pkgs,target=/home/coder/.conda/pkgs,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.conda/${localWorkspaceFolderBasename}-single-envs,target=/home/coder/.conda/envs,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind,consistency=consistent" - ], - - "customizations": { - "vscode": { - "extensions": [ - "mutantdino.resourcemonitor", - "tamasfe.even-better-toml" - ], - "settings": { - "files.trimFinalNewlines": true, - "files.insertFinalNewline": true, - "files.trimTrailingWhitespace": true, - "files.watcherExclude": { - "**/target/**": true - }, - "python.linting.flake8Enabled": true - } - } - } -} diff --git a/.devcontainer/conda/single/.devcontainer/devcontainer.json b/.devcontainer/conda/single/.devcontainer/devcontainer.json new file mode 120000 index 000000000..cec0647b2 --- /dev/null +++ b/.devcontainer/conda/single/.devcontainer/devcontainer.json @@ -0,0 +1 @@ +../../devcontainer.json \ No newline at end of file diff --git a/.devcontainer/launch.sh b/.devcontainer/launch.sh index 13cd04ace..7e722ae98 100755 --- a/.devcontainer/launch.sh +++ b/.devcontainer/launch.sh @@ -44,7 +44,7 @@ launch_devcontainer() { fi if [ -n "${launch}" ]; then - code --new-window "$tmpdir"; + code --new-window "${tmpdir}"; $launch "${url}" >/dev/null 2>&1 & fi } diff --git a/.devcontainer/pip/devcontainer.json b/.devcontainer/pip/devcontainer.json deleted file mode 120000 index 270424649..000000000 --- a/.devcontainer/pip/devcontainer.json +++ /dev/null @@ -1 +0,0 @@ -single/.devcontainer/devcontainer.json \ No newline at end of file diff --git a/.devcontainer/pip/devcontainer.json b/.devcontainer/pip/devcontainer.json new file mode 100644 index 000000000..29c5cafe9 --- /dev/null +++ b/.devcontainer/pip/devcontainer.json @@ -0,0 +1,62 @@ +{ + "shutdownAction": "none", + + "build": { + "context": "${localWorkspaceFolder}/.devcontainer", + "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", + "args": { + "CUDA": "11.8", + "LLVM": "15", + "PYTHON_PACKAGE_MANAGER": "pip" + } + }, + "hostRequirements": { + "gpu": true + }, + + "features": { + "ghcr.io/devcontainers/features/python:1": {}, + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:latest": {} + }, + + "overrideFeatureInstallOrder": [ + "ghcr.io/devcontainers/features/python", + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" + ], + + "initializeCommand": [ + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.${localWorkspaceFolderBasename}-single-local}" + ], + + "containerEnv": { + "DEFAULT_VIRTUAL_ENV": "rapids" + }, + + "workspaceFolder": "/home/coder", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind,consistency=consistent", + "mounts": [ + "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.${localWorkspaceFolderBasename}-single-local,target=/home/coder/.local,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind,consistency=consistent" + ], + + "customizations": { + "vscode": { + "extensions": [ + "mutantdino.resourcemonitor", + "tamasfe.even-better-toml" + ], + "settings": { + "files.trimFinalNewlines": true, + "files.insertFinalNewline": true, + "files.trimTrailingWhitespace": true, + "files.watcherExclude": { + "**/target/**": true + }, + "python.linting.flake8Enabled": true + } + } + } +} diff --git a/.devcontainer/pip/single/.devcontainer/devcontainer.json b/.devcontainer/pip/single/.devcontainer/devcontainer.json deleted file mode 100644 index 29c5cafe9..000000000 --- a/.devcontainer/pip/single/.devcontainer/devcontainer.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "shutdownAction": "none", - - "build": { - "context": "${localWorkspaceFolder}/.devcontainer", - "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", - "args": { - "CUDA": "11.8", - "LLVM": "15", - "PYTHON_PACKAGE_MANAGER": "pip" - } - }, - "hostRequirements": { - "gpu": true - }, - - "features": { - "ghcr.io/devcontainers/features/python:1": {}, - "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:latest": {} - }, - - "overrideFeatureInstallOrder": [ - "ghcr.io/devcontainers/features/python", - "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" - ], - - "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.${localWorkspaceFolderBasename}-single-local}" - ], - - "containerEnv": { - "DEFAULT_VIRTUAL_ENV": "rapids" - }, - - "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind,consistency=consistent", - "mounts": [ - "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.${localWorkspaceFolderBasename}-single-local,target=/home/coder/.local,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind,consistency=consistent" - ], - - "customizations": { - "vscode": { - "extensions": [ - "mutantdino.resourcemonitor", - "tamasfe.even-better-toml" - ], - "settings": { - "files.trimFinalNewlines": true, - "files.insertFinalNewline": true, - "files.trimTrailingWhitespace": true, - "files.watcherExclude": { - "**/target/**": true - }, - "python.linting.flake8Enabled": true - } - } - } -} diff --git a/.devcontainer/pip/single/.devcontainer/devcontainer.json b/.devcontainer/pip/single/.devcontainer/devcontainer.json new file mode 120000 index 000000000..cec0647b2 --- /dev/null +++ b/.devcontainer/pip/single/.devcontainer/devcontainer.json @@ -0,0 +1 @@ +../../devcontainer.json \ No newline at end of file From b833ffab41460f9446ac3c72eaf920ac3894dec3 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Mon, 27 Feb 2023 21:34:25 -0800 Subject: [PATCH 13/25] update main devcontainer symlink --- .devcontainer/devcontainer.json | 62 ++++++++++++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) mode change 120000 => 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json deleted file mode 120000 index 4d5226415..000000000 --- a/.devcontainer/devcontainer.json +++ /dev/null @@ -1 +0,0 @@ -conda/single/.devcontainer/devcontainer.json \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 000000000..7cf721c2c --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,61 @@ +{ + "shutdownAction": "none", + + "build": { + "context": "${localWorkspaceFolder}/.devcontainer", + "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", + "args": { + "CUDA": "11.8", + "LLVM": "15", + "PYTHON_PACKAGE_MANAGER": "conda" + } + }, + "hostRequirements": { + "gpu": true + }, + + "features": { + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:latest": {} + }, + + "overrideFeatureInstallOrder": [ + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" + ], + + "initializeCommand": [ + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.conda/${localWorkspaceFolderBasename}-single-envs}" + ], + + "containerEnv": { + "DEFAULT_CONDA_ENV": "rapids" + }, + + "workspaceFolder": "/home/coder", + "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind,consistency=consistent", + "mounts": [ + "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.conda/pkgs,target=/home/coder/.conda/pkgs,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.conda/${localWorkspaceFolderBasename}-single-envs,target=/home/coder/.conda/envs,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/.devcontainer/opt/${localWorkspaceFolderBasename},target=/opt/${localWorkspaceFolderBasename},type=bind,consistency=consistent" + ], + + "customizations": { + "vscode": { + "extensions": [ + "mutantdino.resourcemonitor", + "tamasfe.even-better-toml" + ], + "settings": { + "files.trimFinalNewlines": true, + "files.insertFinalNewline": true, + "files.trimTrailingWhitespace": true, + "files.watcherExclude": { + "**/target/**": true + }, + "python.linting.flake8Enabled": true + } + } + } +} From 908df323152f28a98e55baa089350a380c6d2161 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Mon, 27 Feb 2023 22:33:51 -0800 Subject: [PATCH 14/25] swap launch.sh argument order --- .devcontainer/launch.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.devcontainer/launch.sh b/.devcontainer/launch.sh index 7e722ae98..300ecc01c 100755 --- a/.devcontainer/launch.sh +++ b/.devcontainer/launch.sh @@ -5,8 +5,8 @@ launch_devcontainer() { # Ensure we're in the repo root cd "$( cd "$( dirname "$(realpath -m "${BASH_SOURCE[0]}")" )" && pwd )/.."; - local pkgs="${1:-conda}"; - local mode="${2:-single}"; + local mode="${1:-single}"; + local pkgs="${2:-conda}"; case "$pkgs" in pip ) ;; From 2c13e2cd555bbd0cfa143d892f458615944eb147 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Tue, 28 Feb 2023 00:57:59 -0800 Subject: [PATCH 15/25] replace shell with xdg-open --- .devcontainer/launch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/launch.sh b/.devcontainer/launch.sh index 300ecc01c..a33ec8238 100755 --- a/.devcontainer/launch.sh +++ b/.devcontainer/launch.sh @@ -45,7 +45,7 @@ launch_devcontainer() { if [ -n "${launch}" ]; then code --new-window "${tmpdir}"; - $launch "${url}" >/dev/null 2>&1 & + exec "${launch}" "${url}" >/dev/null 2>&1; fi } From 792107020da73de1f1d5942da999204b84104515 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Tue, 28 Feb 2023 11:06:27 -0800 Subject: [PATCH 16/25] ensure .conda/pkgs exists --- .devcontainer/conda/devcontainer.json | 2 +- .devcontainer/conda/isolated/.devcontainer/devcontainer.json | 2 +- .devcontainer/conda/unified/.devcontainer/devcontainer.json | 2 +- .devcontainer/devcontainer.json | 2 +- .devcontainer/launch.sh | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.devcontainer/conda/devcontainer.json b/.devcontainer/conda/devcontainer.json index 7cf721c2c..06958895a 100644 --- a/.devcontainer/conda/devcontainer.json +++ b/.devcontainer/conda/devcontainer.json @@ -23,7 +23,7 @@ ], "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.conda/${localWorkspaceFolderBasename}-single-envs}" + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.conda/pkgs,.conda/${localWorkspaceFolderBasename}-single-envs}" ], "containerEnv": { diff --git a/.devcontainer/conda/isolated/.devcontainer/devcontainer.json b/.devcontainer/conda/isolated/.devcontainer/devcontainer.json index 1e0008e0d..731196b42 100644 --- a/.devcontainer/conda/isolated/.devcontainer/devcontainer.json +++ b/.devcontainer/conda/isolated/.devcontainer/devcontainer.json @@ -23,7 +23,7 @@ ], "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.conda}" + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.conda/pkgs}" ], "updateContentCommand": [ diff --git a/.devcontainer/conda/unified/.devcontainer/devcontainer.json b/.devcontainer/conda/unified/.devcontainer/devcontainer.json index 42c8fa7a9..8b4170fbb 100644 --- a/.devcontainer/conda/unified/.devcontainer/devcontainer.json +++ b/.devcontainer/conda/unified/.devcontainer/devcontainer.json @@ -23,7 +23,7 @@ ], "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.conda/${localWorkspaceFolderBasename}-unified-envs}" + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.conda/pkgs,.conda/${localWorkspaceFolderBasename}-unified-envs}" ], "containerEnv": { diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 7cf721c2c..06958895a 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -23,7 +23,7 @@ ], "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.conda/${localWorkspaceFolderBasename}-single-envs}" + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.conda/pkgs,.conda/${localWorkspaceFolderBasename}-single-envs}" ], "containerEnv": { diff --git a/.devcontainer/launch.sh b/.devcontainer/launch.sh index a33ec8238..60bc3e38a 100755 --- a/.devcontainer/launch.sh +++ b/.devcontainer/launch.sh @@ -8,13 +8,13 @@ launch_devcontainer() { local mode="${1:-single}"; local pkgs="${2:-conda}"; - case "$pkgs" in + case "${pkgs}" in pip ) ;; conda ) ;; * ) pkgs="conda";; esac - case "$mode" in + case "${mode}" in single ) ;; unified ) ;; isolated) ;; From 5cc687a6d8d7c80939c98f2d7d5672007f503667 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Tue, 28 Feb 2023 14:16:17 -0800 Subject: [PATCH 17/25] use '-isystem ' instead of 'isystem=' to work around clangd parser bug --- cpp/CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 8bd8958bc..d6a1ca6b4 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -32,6 +32,11 @@ project(CUSPATIAL VERSION 23.04.00 LANGUAGES C CXX CUDA) # Setting this flag ensures `Threads::Threads` is the same value in first run and subsequent runs. set(THREADS_PREFER_PTHREAD_FLAG ON) +# Must come after enable_language(CUDA) +# Use `-isystem ` instead of `-isystem=` +# because the former works with clangd intellisense +set(CMAKE_INCLUDE_SYSTEM_FLAG_CUDA "-isystem ") + ################################################################################################### # - build options --------------------------------------------------------------------------------- From 0a5a21645f49010c4f0eca7f958da3eb377ae086 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Tue, 28 Feb 2023 14:16:45 -0800 Subject: [PATCH 18/25] use libc++ for clangd intellisense --- cpp/.clangd | 1 + 1 file changed, 1 insertion(+) diff --git a/cpp/.clangd b/cpp/.clangd index 2341970f6..352f9d7e0 100644 --- a/cpp/.clangd +++ b/cpp/.clangd @@ -29,6 +29,7 @@ CompileFlags: # Tweak the clangd parse settings for all files CompileFlags: Add: + - "-stdlib=libc++" # report all errors - "-ferror-limit=0" - "-fmacro-backtrace-limit=0" From e38e708a8a3430924e9a72cedb7352d400bc5200 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Tue, 28 Feb 2023 14:26:52 -0800 Subject: [PATCH 19/25] use LLVM 16 --- .devcontainer/conda/devcontainer.json | 4 +- .../isolated/.devcontainer/devcontainer.json | 4 +- .../unified/.devcontainer/devcontainer.json | 4 +- .devcontainer/devcontainer.json | 4 +- .devcontainer/opt/cuspatial/.clangd | 55 +++++++++++++++++++ .../cuspatial/bin/update-content-command.sh | 4 ++ .devcontainer/pip/devcontainer.json | 4 +- .../isolated/.devcontainer/devcontainer.json | 4 +- .../unified/.devcontainer/devcontainer.json | 4 +- 9 files changed, 73 insertions(+), 14 deletions(-) create mode 100644 .devcontainer/opt/cuspatial/.clangd diff --git a/.devcontainer/conda/devcontainer.json b/.devcontainer/conda/devcontainer.json index 06958895a..01eef184f 100644 --- a/.devcontainer/conda/devcontainer.json +++ b/.devcontainer/conda/devcontainer.json @@ -6,7 +6,7 @@ "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", "args": { "CUDA": "11.8", - "LLVM": "15", + "LLVM": "16", "PYTHON_PACKAGE_MANAGER": "conda" } }, @@ -23,7 +23,7 @@ ], "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.conda/pkgs,.conda/${localWorkspaceFolderBasename}-single-envs}" + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-single-envs}" ], "containerEnv": { diff --git a/.devcontainer/conda/isolated/.devcontainer/devcontainer.json b/.devcontainer/conda/isolated/.devcontainer/devcontainer.json index 731196b42..a23085da9 100644 --- a/.devcontainer/conda/isolated/.devcontainer/devcontainer.json +++ b/.devcontainer/conda/isolated/.devcontainer/devcontainer.json @@ -6,7 +6,7 @@ "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", "args": { "CUDA": "11.8", - "LLVM": "15", + "LLVM": "16", "PYTHON_PACKAGE_MANAGER": "conda" } }, @@ -23,7 +23,7 @@ ], "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.conda/pkgs}" + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs}" ], "updateContentCommand": [ diff --git a/.devcontainer/conda/unified/.devcontainer/devcontainer.json b/.devcontainer/conda/unified/.devcontainer/devcontainer.json index 8b4170fbb..5a6af88c9 100644 --- a/.devcontainer/conda/unified/.devcontainer/devcontainer.json +++ b/.devcontainer/conda/unified/.devcontainer/devcontainer.json @@ -6,7 +6,7 @@ "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", "args": { "CUDA": "11.8", - "LLVM": "15", + "LLVM": "16", "PYTHON_PACKAGE_MANAGER": "conda" } }, @@ -23,7 +23,7 @@ ], "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.conda/pkgs,.conda/${localWorkspaceFolderBasename}-unified-envs}" + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-unified-envs}" ], "containerEnv": { diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 06958895a..97519fc3f 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -6,7 +6,7 @@ "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", "args": { "CUDA": "11.8", - "LLVM": "15", + "LLVM": "16", "PYTHON_PACKAGE_MANAGER": "conda" } }, @@ -23,7 +23,7 @@ ], "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.conda/pkgs,.conda/${localWorkspaceFolderBasename}-single-envs}" + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/clangd,conda/pkgs,conda/${localWorkspaceFolderBasename}-single-envs}" ], "containerEnv": { diff --git a/.devcontainer/opt/cuspatial/.clangd b/.devcontainer/opt/cuspatial/.clangd new file mode 100644 index 000000000..66a7640ba --- /dev/null +++ b/.devcontainer/opt/cuspatial/.clangd @@ -0,0 +1,55 @@ +# https://clangd.llvm.org/config + +# Apply a config conditionally to all C files +If: + PathMatch: .*\.(c|h)$ + +--- + +# Apply a config conditionally to all C++ files +If: + PathMatch: .*\.(c|h)pp + +--- + +# Apply a config conditionally to all CUDA files +If: + PathMatch: .*\.cuh? +CompileFlags: + Add: + - "-x" + - "cuda" + # No error on unknown CUDA versions + - "-Wno-unknown-cuda-version" + # Allow variadic CUDA functions + - "-Xclang=-fcuda-allow-variadic-functions" + +--- + +# Tweak the clangd parse settings for all files +CompileFlags: + Add: + # report all errors + - "-ferror-limit=0" + - "-fmacro-backtrace-limit=0" + - "-ftemplate-backtrace-limit=0" + Remove: + - "-stdpar*" + # strip CUDA fatbin args + - "-Xfatbin*" + - "-Xcompiler*" + - "-gpu=*" + - "--diag_suppress*" + # strip CUDA arch flags + - "-arch*" + - "-gencode*" + - "--generate-code*" + # strip gcc's -fcoroutines + - -fcoroutines + # strip CUDA flags unknown to clang + - "-ccbin*" + - "--compiler-options*" + - "--expt-extended-lambda" + - "--expt-relaxed-constexpr" + - "-forward-unknown-to-host-compiler" + - "-Werror=cross-execution-space-call" diff --git a/.devcontainer/opt/cuspatial/bin/update-content-command.sh b/.devcontainer/opt/cuspatial/bin/update-content-command.sh index 0b1796c8e..ef0fb727c 100755 --- a/.devcontainer/opt/cuspatial/bin/update-content-command.sh +++ b/.devcontainer/opt/cuspatial/bin/update-content-command.sh @@ -1,3 +1,7 @@ #! /usr/bin/env bash +mkdir -m 0755 -p ~/.{aws,cache,config/clangd,conda,local}; + +cp /opt/cuspatial/.clangd ~/.config/clangd/config.yaml; + rapids-make-vscode-workspace --update; diff --git a/.devcontainer/pip/devcontainer.json b/.devcontainer/pip/devcontainer.json index 29c5cafe9..39c9c01f7 100644 --- a/.devcontainer/pip/devcontainer.json +++ b/.devcontainer/pip/devcontainer.json @@ -6,7 +6,7 @@ "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", "args": { "CUDA": "11.8", - "LLVM": "15", + "LLVM": "16", "PYTHON_PACKAGE_MANAGER": "pip" } }, @@ -25,7 +25,7 @@ ], "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.${localWorkspaceFolderBasename}-single-local}" + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/clangd,${localWorkspaceFolderBasename}-single-local}" ], "containerEnv": { diff --git a/.devcontainer/pip/isolated/.devcontainer/devcontainer.json b/.devcontainer/pip/isolated/.devcontainer/devcontainer.json index e50a9be85..a1d99d10c 100644 --- a/.devcontainer/pip/isolated/.devcontainer/devcontainer.json +++ b/.devcontainer/pip/isolated/.devcontainer/devcontainer.json @@ -6,7 +6,7 @@ "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", "args": { "CUDA": "11.8", - "LLVM": "15", + "LLVM": "16", "PYTHON_PACKAGE_MANAGER": "pip" } }, @@ -25,7 +25,7 @@ ], "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.local}" + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/clangd,local}" ], "updateContentCommand": [ diff --git a/.devcontainer/pip/unified/.devcontainer/devcontainer.json b/.devcontainer/pip/unified/.devcontainer/devcontainer.json index bc2491109..da83f50a8 100644 --- a/.devcontainer/pip/unified/.devcontainer/devcontainer.json +++ b/.devcontainer/pip/unified/.devcontainer/devcontainer.json @@ -6,7 +6,7 @@ "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", "args": { "CUDA": "11.8", - "LLVM": "15", + "LLVM": "16", "PYTHON_PACKAGE_MANAGER": "pip" } }, @@ -25,7 +25,7 @@ ], "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../{.aws,.cache,.config,.${localWorkspaceFolderBasename}-unified-local}" + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/clangd,${localWorkspaceFolderBasename}-unified-local}" ], "containerEnv": { From c6dd6c1abff43d1e336d4edde65569b0e96b9e06 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Tue, 28 Feb 2023 14:27:09 -0800 Subject: [PATCH 20/25] ignore attributes_not_allowed error from cudf headers --- cpp/.clangd | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cpp/.clangd b/cpp/.clangd index 352f9d7e0..2d2ed314a 100644 --- a/cpp/.clangd +++ b/cpp/.clangd @@ -55,3 +55,6 @@ CompileFlags: - "--expt-relaxed-constexpr" - "-forward-unknown-to-host-compiler" - "-Werror=cross-execution-space-call" +Diagnostics: + Suppress: + - "attributes_not_allowed" From 69030314ff55b3e84907804b640e8e9ef171fae3 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Wed, 1 Mar 2023 09:14:51 -0800 Subject: [PATCH 21/25] update pip versions in dependencies.yaml --- ci/release/update-version.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ci/release/update-version.sh b/ci/release/update-version.sh index 34b4abe4b..e8ac2810a 100755 --- a/ci/release/update-version.sh +++ b/ci/release/update-version.sh @@ -56,3 +56,14 @@ sed_runner "/TAGFILES/ s|[0-9]\+.[0-9]\+|${NEXT_SHORT_TAG}|g" cpp/doxygen/Doxyfi for FILE in .github/workflows/*.yaml; do sed_runner "/shared-action-workflows/ s/@.*/@branch-${NEXT_SHORT_TAG}/g" "${FILE}" done + +# Need to distutils-normalize the original version +CURRRENT_SHORT_TAG_PEP440=$(python -c "from setuptools.extern import packaging; print(packaging.version.Version('${CURRENT_SHORT_TAG}'))") +NEXT_SHORT_TAG_PEP440=$(python -c "from setuptools.extern import packaging; print(packaging.version.Version('${NEXT_SHORT_TAG}'))") + +# Dependency versions in dependencies.yaml +sed_runner "s/==${CURRRENT_SHORT_TAG_PEP440}.*\"/==${NEXT_SHORT_TAG_PEP440}.*\"/g" dependencies.yaml +# Dependency versions in setup.py +sed_runner "s/==${CURRRENT_SHORT_TAG_PEP440}.*\"/==${NEXT_SHORT_TAG_PEP440}.*\"/g" python/cuspatial/setup.py +# Dependency versions in pyproject.toml +sed_runner "s/==${CURRRENT_SHORT_TAG_PEP440}.*\"/==${NEXT_SHORT_TAG_PEP440}.*\"/g" python/cuspatial/pyproject.toml From 0a19a7ba99f63daf60e261f119041d5e597051c4 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Mon, 6 Mar 2023 13:21:47 -0800 Subject: [PATCH 22/25] fix typo --- ci/release/update-version.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ci/release/update-version.sh b/ci/release/update-version.sh index e8ac2810a..dd48d460a 100755 --- a/ci/release/update-version.sh +++ b/ci/release/update-version.sh @@ -58,12 +58,12 @@ for FILE in .github/workflows/*.yaml; do done # Need to distutils-normalize the original version -CURRRENT_SHORT_TAG_PEP440=$(python -c "from setuptools.extern import packaging; print(packaging.version.Version('${CURRENT_SHORT_TAG}'))") +CURRENT_SHORT_TAG_PEP440=$(python -c "from setuptools.extern import packaging; print(packaging.version.Version('${CURRENT_SHORT_TAG}'))") NEXT_SHORT_TAG_PEP440=$(python -c "from setuptools.extern import packaging; print(packaging.version.Version('${NEXT_SHORT_TAG}'))") # Dependency versions in dependencies.yaml -sed_runner "s/==${CURRRENT_SHORT_TAG_PEP440}.*\"/==${NEXT_SHORT_TAG_PEP440}.*\"/g" dependencies.yaml +sed_runner "s/==${CURRENT_SHORT_TAG_PEP440}.*\"/==${NEXT_SHORT_TAG_PEP440}.*\"/g" dependencies.yaml # Dependency versions in setup.py -sed_runner "s/==${CURRRENT_SHORT_TAG_PEP440}.*\"/==${NEXT_SHORT_TAG_PEP440}.*\"/g" python/cuspatial/setup.py +sed_runner "s/==${CURRENT_SHORT_TAG_PEP440}.*\"/==${NEXT_SHORT_TAG_PEP440}.*\"/g" python/cuspatial/setup.py # Dependency versions in pyproject.toml -sed_runner "s/==${CURRRENT_SHORT_TAG_PEP440}.*\"/==${NEXT_SHORT_TAG_PEP440}.*\"/g" python/cuspatial/pyproject.toml +sed_runner "s/==${CURRENT_SHORT_TAG_PEP440}.*\"/==${NEXT_SHORT_TAG_PEP440}.*\"/g" python/cuspatial/pyproject.toml From 473a1c9a73b1c3458ef88e3b62a6349850f63168 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Tue, 7 Mar 2023 21:26:47 -0800 Subject: [PATCH 23/25] use fancy sed in update-version.sh --- ci/release/update-version.sh | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/ci/release/update-version.sh b/ci/release/update-version.sh index dd48d460a..cfacb5e3e 100755 --- a/ci/release/update-version.sh +++ b/ci/release/update-version.sh @@ -58,12 +58,15 @@ for FILE in .github/workflows/*.yaml; do done # Need to distutils-normalize the original version -CURRENT_SHORT_TAG_PEP440=$(python -c "from setuptools.extern import packaging; print(packaging.version.Version('${CURRENT_SHORT_TAG}'))") NEXT_SHORT_TAG_PEP440=$(python -c "from setuptools.extern import packaging; print(packaging.version.Version('${NEXT_SHORT_TAG}'))") # Dependency versions in dependencies.yaml -sed_runner "s/==${CURRENT_SHORT_TAG_PEP440}.*\"/==${NEXT_SHORT_TAG_PEP440}.*\"/g" dependencies.yaml +sed_runner "/-cu[0-9]\{2\}==/ s/==.*/==${NEXT_SHORT_TAG_PEP440}.*/g" dependencies.yaml + # Dependency versions in setup.py -sed_runner "s/==${CURRENT_SHORT_TAG_PEP440}.*\"/==${NEXT_SHORT_TAG_PEP440}.*\"/g" python/cuspatial/setup.py +sed_runner "s/rmm==.*\",/rmm==${NEXT_SHORT_TAG_PEP440}.*\",/g" python/cuspatial/setup.py +sed_runner "s/cudf==.*\",/cudf==${NEXT_SHORT_TAG_PEP440}.*\",/g" python/cuspatial/setup.py + # Dependency versions in pyproject.toml -sed_runner "s/==${CURRENT_SHORT_TAG_PEP440}.*\"/==${NEXT_SHORT_TAG_PEP440}.*\"/g" python/cuspatial/pyproject.toml +sed_runner "s/rmm==.*\",/rmm==${NEXT_SHORT_TAG_PEP440}.*\",/g" python/cuspatial/pyproject.toml +sed_runner "s/cudf==.*\",/cudf==${NEXT_SHORT_TAG_PEP440}.*\",/g" python/cuspatial/pyproject.toml From 465bb4ce189e049b7c6baa1b68d30efe752704c0 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Wed, 15 Mar 2023 10:41:14 -0700 Subject: [PATCH 24/25] copy in clangd config from llvm feature --- .devcontainer/Dockerfile | 2 +- .devcontainer/devcontainer.json | 2 +- .devcontainer/opt/cuspatial/.clangd | 55 ------------------- .../cuspatial/bin/update-content-command.sh | 2 +- .devcontainer/pip/devcontainer.json | 2 +- .../isolated/.devcontainer/devcontainer.json | 2 +- .../unified/.devcontainer/devcontainer.json | 2 +- 7 files changed, 6 insertions(+), 61 deletions(-) delete mode 100644 .devcontainer/opt/cuspatial/.clangd diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 3cc6c211e..80052720b 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -21,7 +21,7 @@ USER coder COPY --chown=coder:coder opt/cuspatial /opt/cuspatial -RUN /bin/bash -c 'mkdir -m 0755 -p ~/{.aws,.cache,.conda,.config,.local}' +RUN /bin/bash -c 'mkdir -m 0755 -p ~/.{aws,cache,conda,config,local}' WORKDIR /home/coder/ diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 97519fc3f..01eef184f 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -23,7 +23,7 @@ ], "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/clangd,conda/pkgs,conda/${localWorkspaceFolderBasename}-single-envs}" + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-single-envs}" ], "containerEnv": { diff --git a/.devcontainer/opt/cuspatial/.clangd b/.devcontainer/opt/cuspatial/.clangd deleted file mode 100644 index 66a7640ba..000000000 --- a/.devcontainer/opt/cuspatial/.clangd +++ /dev/null @@ -1,55 +0,0 @@ -# https://clangd.llvm.org/config - -# Apply a config conditionally to all C files -If: - PathMatch: .*\.(c|h)$ - ---- - -# Apply a config conditionally to all C++ files -If: - PathMatch: .*\.(c|h)pp - ---- - -# Apply a config conditionally to all CUDA files -If: - PathMatch: .*\.cuh? -CompileFlags: - Add: - - "-x" - - "cuda" - # No error on unknown CUDA versions - - "-Wno-unknown-cuda-version" - # Allow variadic CUDA functions - - "-Xclang=-fcuda-allow-variadic-functions" - ---- - -# Tweak the clangd parse settings for all files -CompileFlags: - Add: - # report all errors - - "-ferror-limit=0" - - "-fmacro-backtrace-limit=0" - - "-ftemplate-backtrace-limit=0" - Remove: - - "-stdpar*" - # strip CUDA fatbin args - - "-Xfatbin*" - - "-Xcompiler*" - - "-gpu=*" - - "--diag_suppress*" - # strip CUDA arch flags - - "-arch*" - - "-gencode*" - - "--generate-code*" - # strip gcc's -fcoroutines - - -fcoroutines - # strip CUDA flags unknown to clang - - "-ccbin*" - - "--compiler-options*" - - "--expt-extended-lambda" - - "--expt-relaxed-constexpr" - - "-forward-unknown-to-host-compiler" - - "-Werror=cross-execution-space-call" diff --git a/.devcontainer/opt/cuspatial/bin/update-content-command.sh b/.devcontainer/opt/cuspatial/bin/update-content-command.sh index ef0fb727c..e0529489b 100755 --- a/.devcontainer/opt/cuspatial/bin/update-content-command.sh +++ b/.devcontainer/opt/cuspatial/bin/update-content-command.sh @@ -2,6 +2,6 @@ mkdir -m 0755 -p ~/.{aws,cache,config/clangd,conda,local}; -cp /opt/cuspatial/.clangd ~/.config/clangd/config.yaml; +cp /etc/skel/.config/clangd/config.yaml ~/.config/clangd/config.yaml; rapids-make-vscode-workspace --update; diff --git a/.devcontainer/pip/devcontainer.json b/.devcontainer/pip/devcontainer.json index 39c9c01f7..a21faaa8d 100644 --- a/.devcontainer/pip/devcontainer.json +++ b/.devcontainer/pip/devcontainer.json @@ -25,7 +25,7 @@ ], "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/clangd,${localWorkspaceFolderBasename}-single-local}" + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,configlWorkspaceFolderBasename}-single-local}" ], "containerEnv": { diff --git a/.devcontainer/pip/isolated/.devcontainer/devcontainer.json b/.devcontainer/pip/isolated/.devcontainer/devcontainer.json index a1d99d10c..a6a2f5bad 100644 --- a/.devcontainer/pip/isolated/.devcontainer/devcontainer.json +++ b/.devcontainer/pip/isolated/.devcontainer/devcontainer.json @@ -25,7 +25,7 @@ ], "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/clangd,local}" + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,local}" ], "updateContentCommand": [ diff --git a/.devcontainer/pip/unified/.devcontainer/devcontainer.json b/.devcontainer/pip/unified/.devcontainer/devcontainer.json index da83f50a8..39ecc7102 100644 --- a/.devcontainer/pip/unified/.devcontainer/devcontainer.json +++ b/.devcontainer/pip/unified/.devcontainer/devcontainer.json @@ -25,7 +25,7 @@ ], "initializeCommand": [ - "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/clangd,${localWorkspaceFolderBasename}-unified-local}" + "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,${localWorkspaceFolderBasename}-unified-local}" ], "containerEnv": { From 827996e460743ab58e01197029c9151383c8f040 Mon Sep 17 00:00:00 2001 From: ptaylor Date: Wed, 15 Mar 2023 10:41:49 -0700 Subject: [PATCH 25/25] add initial .devcontainer README.md --- .devcontainer/README.md | 103 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 .devcontainer/README.md diff --git a/.devcontainer/README.md b/.devcontainer/README.md new file mode 100644 index 000000000..40d330b1c --- /dev/null +++ b/.devcontainer/README.md @@ -0,0 +1,103 @@ +# cuSpatial Development Containers + +This directory contains [devcontainer configurations](https://containers.dev/implementors/json_reference/) for using VSCode to [develop in a container](https://code.visualstudio.com/docs/devcontainers/containers) via the `Remote Containers` [extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) or [GitHub Codespaces](https://github.com/codespaces). + +This container is a turnkey development environment for building and testing the cuSpatial C++ and Python libraries. + +## Table of Contents + +* [Prerequisites](#prerequisites) +* [Host bind mounts](#host-bind-mounts) +* [Launch a Dev Container](#launch-a-dev-container) + * [via VSCode](#via-vscode) + * [via `launch.sh`](#via-launchsh) + * [Single mode](#single-mode) + * [Unified mode](#unified-mode) + * [Isolated mode](#isolated-mode) + +## Prerequisites + +* [VSCode](https://code.visualstudio.com/download) +* [VSCode Remote Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) + +## Host bind mounts + +By default, the following directories are bind-mounted into the devcontainer: + +* `${repo}:/home/coder/cuspatial` +* `${repo}/../.aws:/home/coder/.aws` +* `${repo}/../.local:/home/coder/.local` +* `${repo}/../.cache:/home/coder/.cache` +* `${repo}/../.conda:/home/coder/.conda` +* `${repo}/../.config:/home/coder/.config` + +This ensures caches, configurations, dependencies, and your commits are persisted on the host across container runs. + +## Launch a Dev Container + +A devcontainer can be launched directly by VSCode, or via a custom `launch.sh` shell script. + +### via VSCode + +To launch a devcontainer from VSCode, open the cuSpatial repo and select the "Reopen in Container" button in the bottom right:
+ +Alternatively, open the VSCode command palette (typically `cmd/ctrl + shift + P`) and run the "Rebuild and Reopen in Container" command. + +### via `launch.sh` + +Use the `.devcontainer/launch.sh` script to start a new instance of the development container and launch a fresh VSCode window connected to it. + +VSCode extends its [single-window-per-folder](https://github.com/microsoft/vscode/issues/2686) process model to devcontainers. Opening the same devcontainer in separate windows doesn't create two separate containers -- instead you have two VSCode windows each connected to the same running container. + +`launch.sh` takes two arguments, a `mode` and a `package manager`. + +* The `mode` argument determines how the devcontainer interacts with the files on the host. +* The `package manager` argument can be either `conda`, or `pip`. This determines whether the devcontainer uses `conda` or `pip` to install the dependencies (the default is `conda`). `pip` is experimental/not working for normal dev, and is currently meant to aid in pip packaging work. + +#### Single mode + +`.devcontainer/launch.sh single` launches the devcontainer with the [default bind mounts](#host-bind-mounts). RMM and cuDF are installed via the package manager. + +Example: +```bash +# Launch a devcontainer that only mounts cuspatial and installs dependencies via conda +$ .devcontainer/launch.sh single conda + +# or installs dependencies via pip +$ .devcontainer/launch.sh single pip +``` + +#### Unified mode + +`.devcontainer/launch.sh unified` launches the devcontainer with the [default bind mounts](#host-bind-mounts), as well as additional `rmm` and `cudf` bind mounts (assumes RMM and cuDF are siblings to the cuspatial repository): + +* `${repo}/../.rmm:/home/coder/rmm` +* `${repo}/../.cudf:/home/coder/cudf` + +In this mode, RMM and cuDF will not be installed, but the devcontainer will install the dependencies necessary to build all three. + +Example: +```bash +# Launch a devcontainer that mounts rmm, cudf, and cuspatial from the host and installs dependencies via conda +$ .devcontainer/launch.sh unified conda + +# or installs dependencies via pip +$ .devcontainer/launch.sh unified pip +``` + +#### Isolated mode + +`.devcontainer/launch.sh isolated` launches the devcontainer without the deps/repo bind mounts, and instead contains a unique copy of the `cuspatial` source in the container's file system. + +Use this mode to launch multiple isolated development containers that can be checked out to separate branches of `cuspatial`. + +**Be sure to push any commits you want to persist. Once this container is removed, any unpushed changes will be lost!** + +Examples: +```bash +# Launch a devcontainer that is isolated from changes on the host and installs dependencies via conda +$ .devcontainer/launch.sh isolated conda + +# or installs dependencies via pip +$ .devcontainer/launch.sh isolated pip +```