diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
index 68194d0f9..974aea1ee 100644
--- a/.devcontainer/Dockerfile
+++ b/.devcontainer/Dockerfile
@@ -1,18 +1,20 @@
# syntax=docker/dockerfile:1.5
-ARG CUDA=12.0
-ARG LLVM=16
-ARG RAPIDS=23.08
-ARG DISTRO=ubuntu22.04
-ARG REPO=rapidsai/devcontainers
-
+ARG BASE
ARG PYTHON_PACKAGE_MANAGER=conda
-FROM ${REPO}:${RAPIDS}-cpp-llvm${LLVM}-cuda${CUDA}-${DISTRO} as pip-base
+FROM ${BASE} as pip-base
+
+ENV DEFAULT_VIRTUAL_ENV=rapids
+
+RUN apt update -y \
+ && DEBIAN_FRONTEND=noninteractive apt install -y \
+ sqlite3 libsqlite3-dev libtiff-dev libcurl4-openssl-dev \
+ && rm -rf /tmp/* /var/tmp/* /var/cache/apt/* /var/lib/apt/lists/*;
-FROM ${REPO}:${RAPIDS}-cpp-mambaforge-${DISTRO} as conda-base
+FROM ${BASE} as conda-base
-COPY --from=pip-base /etc/skel/.config/clangd/config.yaml /etc/skel/.config/clangd/config.yaml
+ENV DEFAULT_CONDA_ENV=rapids
FROM ${PYTHON_PACKAGE_MANAGER}-base
diff --git a/.devcontainer/README.md b/.devcontainer/README.md
index c2f5fe9bc..18243943c 100644
--- a/.devcontainer/README.md
+++ b/.devcontainer/README.md
@@ -9,11 +9,6 @@ This container is a turnkey development environment for building and testing the
* [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
@@ -35,76 +30,6 @@ This ensures caches, configurations, dependencies, and your commits are persiste
## 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 a Docker [volume](https://docs.docker.com/storage/volumes/).
-
-Use this mode to launch multiple isolated development containers that can be checked out to separate branches of `cuspatial`.
-
-The Docker volume persists after the devcontainer is removed, ensuring you don't pending lose work by accidentally removing the devcontainer.
-
-However, you will need to manually remove the volume once you've committed and pushed your changes:
-
-* Use the [`docker volume ls`](https://docs.docker.com/engine/reference/commandline/volume_ls/) command to list all volumes
-* Use [`docker volume rm`](https://docs.docker.com/engine/reference/commandline/volume_rm/) or [`docker volume prune`](https://docs.docker.com/engine/reference/commandline/volume_prune/) to clean up unused volumes
-
-Alternatively, use the "Dev Volumes" tab of the VSCode Dev Containers extension to view and remove unused volumes.
-
-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
-```
diff --git a/.devcontainer/conda/isolated/.devcontainer/devcontainer.json b/.devcontainer/conda/isolated/.devcontainer/devcontainer.json
deleted file mode 100644
index e55b955e4..000000000
--- a/.devcontainer/conda/isolated/.devcontainer/devcontainer.json
+++ /dev/null
@@ -1,93 +0,0 @@
-{
- "shutdownAction": "stopContainer",
-
- "build": {
- "context": "${localWorkspaceFolder}/.devcontainer",
- "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile",
- "args": {
- "CUDA": "12.0",
- "LLVM": "16",
- "PYTHON_PACKAGE_MANAGER": "conda"
- }
- },
- "hostRequirements": {
- "gpu": true
- },
-
- "features": {
- "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:23.8": {}
- },
-
- "overrideFeatureInstallOrder": [
- "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils"
- ],
-
- "initializeCommand": [
- "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs}"
- ],
-
- "updateContentCommand": [
- "/bin/bash", "-c", "sudo chown -R $(id -u):$(id -g) /home/coder/${localWorkspaceFolderBasename} && mkdir -m 0755 -p ~/.config/clangd && cp -n /etc/skel/.config/clangd/config.yaml ~/.config/clangd/config.yaml && cp -ar /workspaces/${localWorkspaceFolderBasename} /home/coder/ && rapids-make-vscode-workspace --update"
- ],
-
- "containerEnv": {
- "DEFAULT_CONDA_ENV": "rapids"
- },
-
- "workspaceFolder": "/home/coder",
- "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/${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=${localWorkspaceFolderBasename}-conda-isolated-${devcontainerId},target=/home/coder/${localWorkspaceFolderBasename},type=volume"
- ],
-
- "customizations": {
- "vscode": {
- "extensions": [
- "llvm-vs-code-extensions.vscode-clangd",
- "mutantdino.resourcemonitor",
- "ms-vscode.cpptools",
- "nvidia.nsight-vscode-edition",
- "seaube.clangformat",
- "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",
- "files.trimFinalNewlines": true,
- "files.insertFinalNewline": true,
- "files.trimTrailingWhitespace": true,
- "files.associations": {
- "*.cu": "cuda-cpp",
- "*.cuh": "cuda-cpp",
- "**/libcudacxx/include/**/*": "cpp",
- "**/libcudacxx-src/include/**/*": "cpp"
- },
- "files.watcherExclude": {
- "**/build/**": true,
- "**/_skbuild/**": true,
- "**/target/**": true
- },
- "python.linting.flake8Enabled": true,
- "[c]": {
- "editor.defaultFormatter": "seaube.clangformat"
- },
- "[cpp]": {
- "editor.defaultFormatter": "seaube.clangformat"
- },
- "[cuda-cpp]": {
- "editor.defaultFormatter": "seaube.clangformat"
- }
- }
- }
- }
-}
diff --git a/.devcontainer/conda/single/.devcontainer/devcontainer.json b/.devcontainer/conda/single/.devcontainer/devcontainer.json
deleted file mode 100644
index 7b0865cf1..000000000
--- a/.devcontainer/conda/single/.devcontainer/devcontainer.json
+++ /dev/null
@@ -1,95 +0,0 @@
-{
- "shutdownAction": "stopContainer",
-
- "build": {
- "context": "${localWorkspaceFolder}/.devcontainer",
- "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile",
- "args": {
- "CUDA": "12.0",
- "LLVM": "16",
- "PYTHON_PACKAGE_MANAGER": "conda"
- }
- },
- "hostRequirements": {
- "gpu": true
- },
-
- "features": {
- "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:23.8": {}
- },
-
- "overrideFeatureInstallOrder": [
- "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils"
- ],
-
- "initializeCommand": [
- "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}/single}"
- ],
-
- "updateContentCommand": [
- "/bin/bash",
- "-c",
- "mkdir -m 0755 -p ~/.config/clangd && cp -n /etc/skel/.config/clangd/config.yaml ~/.config/clangd/config.yaml"
- ],
-
- "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,target=/home/coder/.conda/envs,type=bind,consistency=consistent"
- ],
-
- "customizations": {
- "vscode": {
- "extensions": [
- "llvm-vs-code-extensions.vscode-clangd",
- "mutantdino.resourcemonitor",
- "ms-vscode.cpptools",
- "nvidia.nsight-vscode-edition",
- "seaube.clangformat",
- "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",
- "files.trimFinalNewlines": true,
- "files.insertFinalNewline": true,
- "files.trimTrailingWhitespace": true,
- "files.associations": {
- "*.cu": "cuda-cpp",
- "*.cuh": "cuda-cpp",
- "**/libcudacxx/include/**/*": "cpp",
- "**/libcudacxx-src/include/**/*": "cpp"
- },
- "files.watcherExclude": {
- "**/build/**": true,
- "**/_skbuild/**": true,
- "**/target/**": true
- },
- "python.linting.flake8Enabled": true,
- "[c]": {
- "editor.defaultFormatter": "seaube.clangformat"
- },
- "[cpp]": {
- "editor.defaultFormatter": "seaube.clangformat"
- },
- "[cuda-cpp]": {
- "editor.defaultFormatter": "seaube.clangformat"
- }
- }
- }
- }
-}
diff --git a/.devcontainer/conda/unified/.devcontainer/devcontainer.json b/.devcontainer/conda/unified/.devcontainer/devcontainer.json
deleted file mode 100644
index da741fc06..000000000
--- a/.devcontainer/conda/unified/.devcontainer/devcontainer.json
+++ /dev/null
@@ -1,103 +0,0 @@
-{
- "shutdownAction": "stopContainer",
-
- "build": {
- "context": "${localWorkspaceFolder}/.devcontainer",
- "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile",
- "args": {
- "CUDA": "12.0",
- "LLVM": "16",
- "PYTHON_PACKAGE_MANAGER": "conda"
- }
- },
- "hostRequirements": {
- "gpu": true
- },
-
- "features": {
- "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:23.8": {}
- },
-
- "overrideFeatureInstallOrder": [
- "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils"
- ],
-
- "initializeCommand": [
- "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/unified} ${localWorkspaceFolder}/../{rmm,kvikio,cudf,raft,cumlprims_mg,cuml,cugraph-ops,cugraph,cuspatial}"
- ],
-
- "updateContentCommand": [
- "/bin/bash",
- "-c",
- "mkdir -m 0755 -p ~/.config/clangd && cp -n /etc/skel/.config/clangd/config.yaml ~/.config/clangd/config.yaml"
- ],
-
- "containerEnv": {
- "DEFAULT_CONDA_ENV": "rapids"
- },
-
- "workspaceFolder": "/home/coder",
- "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind,consistency=consistent",
- "mounts": [
- "source=${localWorkspaceFolder}/../rmm,target=/home/coder/rmm,type=bind,consistency=consistent",
- "source=${localWorkspaceFolder}/../kvikio,target=/home/coder/kvikio,type=bind,consistency=consistent",
- "source=${localWorkspaceFolder}/../cudf,target=/home/coder/cudf,type=bind,consistency=consistent",
- "source=${localWorkspaceFolder}/../raft,target=/home/coder/raft,type=bind,consistency=consistent",
- "source=${localWorkspaceFolder}/../cumlprims_mg,target=/home/coder/cumlprims_mg,type=bind,consistency=consistent",
- "source=${localWorkspaceFolder}/../cuml,target=/home/coder/cuml,type=bind,consistency=consistent",
- "source=${localWorkspaceFolder}/../cugraph-ops,target=/home/coder/cugraph-ops,type=bind,consistency=consistent",
- "source=${localWorkspaceFolder}/../cugraph,target=/home/coder/cugraph,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}/../.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/unified,target=/home/coder/.conda/envs,type=bind,consistency=consistent"
- ],
-
- "customizations": {
- "vscode": {
- "extensions": [
- "llvm-vs-code-extensions.vscode-clangd",
- "mutantdino.resourcemonitor",
- "ms-vscode.cpptools",
- "nvidia.nsight-vscode-edition",
- "seaube.clangformat",
- "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",
- "files.trimFinalNewlines": true,
- "files.insertFinalNewline": true,
- "files.trimTrailingWhitespace": true,
- "files.associations": {
- "*.cu": "cuda-cpp",
- "*.cuh": "cuda-cpp",
- "**/libcudacxx/include/**/*": "cpp",
- "**/libcudacxx-src/include/**/*": "cpp"
- },
- "files.watcherExclude": {
- "**/build/**": true,
- "**/_skbuild/**": true,
- "**/target/**": true
- },
- "python.linting.flake8Enabled": true,
- "[c]": {
- "editor.defaultFormatter": "seaube.clangformat"
- },
- "[cpp]": {
- "editor.defaultFormatter": "seaube.clangformat"
- },
- "[cuda-cpp]": {
- "editor.defaultFormatter": "seaube.clangformat"
- }
- }
- }
- }
-}
diff --git a/.devcontainer/cuda11.8-conda/devcontainer.json b/.devcontainer/cuda11.8-conda/devcontainer.json
new file mode 100644
index 000000000..a39cea813
--- /dev/null
+++ b/.devcontainer/cuda11.8-conda/devcontainer.json
@@ -0,0 +1,37 @@
+{
+ "build": {
+ "context": "${localWorkspaceFolder}/.devcontainer",
+ "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile",
+ "args": {
+ "CUDA": "11.8",
+ "PYTHON_PACKAGE_MANAGER": "conda",
+ "BASE": "rapidsai/devcontainers:23.10-cpp-llvm16-cuda11.8-mambaforge-ubuntu22.04"
+ }
+ },
+ "hostRequirements": {"gpu": "optional"},
+ "features": {
+ "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:23.10": {}
+ },
+ "overrideFeatureInstallOrder": [
+ "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils"
+ ],
+ "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-cuda11.8-envs}"],
+ "postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; . rapids-post-attach-command; fi"],
+ "workspaceFolder": "/home/coder",
+ "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuspatial,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}-cuda11.8-envs,target=/home/coder/.conda/envs,type=bind,consistency=consistent"
+ ],
+ "customizations": {
+ "vscode": {
+ "extensions": [
+ "ms-python.flake8",
+ "nvidia.nsight-vscode-edition"
+ ]
+ }
+ }
+}
diff --git a/.devcontainer/cuda11.8-pip/devcontainer.json b/.devcontainer/cuda11.8-pip/devcontainer.json
new file mode 100644
index 000000000..15c5136c5
--- /dev/null
+++ b/.devcontainer/cuda11.8-pip/devcontainer.json
@@ -0,0 +1,36 @@
+{
+ "build": {
+ "context": "${localWorkspaceFolder}/.devcontainer",
+ "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile",
+ "args": {
+ "CUDA": "11.8",
+ "PYTHON_PACKAGE_MANAGER": "pip",
+ "BASE": "rapidsai/devcontainers:23.10-cpp-llvm16-cuda11.8-ubuntu22.04"
+ }
+ },
+ "hostRequirements": {"gpu": "optional"},
+ "features": {
+ "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:23.10": {}
+ },
+ "overrideFeatureInstallOrder": [
+ "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils"
+ ],
+ "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip,local/share/${localWorkspaceFolderBasename}-cuda11.8-venvs}"],
+ "postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; . rapids-post-attach-command; fi"],
+ "workspaceFolder": "/home/coder",
+ "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuspatial,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}/../.local/share/${localWorkspaceFolderBasename}-cuda11.8-venvs,target=/home/coder/.local/share/venvs,type=bind,consistency=consistent"
+ ],
+ "customizations": {
+ "vscode": {
+ "extensions": [
+ "ms-python.flake8",
+ "nvidia.nsight-vscode-edition"
+ ]
+ }
+ }
+}
diff --git a/.devcontainer/cuda12.0-conda/devcontainer.json b/.devcontainer/cuda12.0-conda/devcontainer.json
new file mode 100644
index 000000000..949e4d2f8
--- /dev/null
+++ b/.devcontainer/cuda12.0-conda/devcontainer.json
@@ -0,0 +1,37 @@
+{
+ "build": {
+ "context": "${localWorkspaceFolder}/.devcontainer",
+ "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile",
+ "args": {
+ "CUDA": "12.0",
+ "PYTHON_PACKAGE_MANAGER": "conda",
+ "BASE": "rapidsai/devcontainers:23.10-cpp-mambaforge-ubuntu22.04"
+ }
+ },
+ "hostRequirements": {"gpu": "optional"},
+ "features": {
+ "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:23.10": {}
+ },
+ "overrideFeatureInstallOrder": [
+ "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils"
+ ],
+ "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-cuda12.0-envs}"],
+ "postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; . rapids-post-attach-command; fi"],
+ "workspaceFolder": "/home/coder",
+ "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuspatial,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}-cuda12.0-envs,target=/home/coder/.conda/envs,type=bind,consistency=consistent"
+ ],
+ "customizations": {
+ "vscode": {
+ "extensions": [
+ "ms-python.flake8",
+ "nvidia.nsight-vscode-edition"
+ ]
+ }
+ }
+}
diff --git a/.devcontainer/cuda12.0-pip/devcontainer.json b/.devcontainer/cuda12.0-pip/devcontainer.json
new file mode 100644
index 000000000..113e80533
--- /dev/null
+++ b/.devcontainer/cuda12.0-pip/devcontainer.json
@@ -0,0 +1,36 @@
+{
+ "build": {
+ "context": "${localWorkspaceFolder}/.devcontainer",
+ "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile",
+ "args": {
+ "CUDA": "12.0",
+ "PYTHON_PACKAGE_MANAGER": "pip",
+ "BASE": "rapidsai/devcontainers:23.10-cpp-llvm16-cuda12.0-ubuntu22.04"
+ }
+ },
+ "hostRequirements": {"gpu": "optional"},
+ "features": {
+ "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:23.10": {}
+ },
+ "overrideFeatureInstallOrder": [
+ "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils"
+ ],
+ "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip,local/share/${localWorkspaceFolderBasename}-cuda12.0-venvs}"],
+ "postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; . rapids-post-attach-command; fi"],
+ "workspaceFolder": "/home/coder",
+ "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuspatial,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}/../.local/share/${localWorkspaceFolderBasename}-cuda12.0-venvs,target=/home/coder/.local/share/venvs,type=bind,consistency=consistent"
+ ],
+ "customizations": {
+ "vscode": {
+ "extensions": [
+ "ms-python.flake8",
+ "nvidia.nsight-vscode-edition"
+ ]
+ }
+ }
+}
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
deleted file mode 100644
index 841df8838..000000000
--- a/.devcontainer/devcontainer.json
+++ /dev/null
@@ -1,89 +0,0 @@
-{
- "shutdownAction": "stopContainer",
-
- "build": {
- "context": "${localWorkspaceFolder}/.devcontainer",
- "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile",
- "args": {
- "CUDA": "12.0",
- "LLVM": "16",
- "PYTHON_PACKAGE_MANAGER": "conda"
- }
- },
- "hostRequirements": {
- "gpu": true
- },
-
- "features": {
- "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:23.8": {}
- },
-
- "overrideFeatureInstallOrder": [
- "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils"
- ],
-
- "initializeCommand": [
- "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}/single}"
- ],
-
- "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,target=/home/coder/.conda/envs,type=bind,consistency=consistent"
- ],
-
- "customizations": {
- "vscode": {
- "extensions": [
- "llvm-vs-code-extensions.vscode-clangd",
- "mutantdino.resourcemonitor",
- "ms-vscode.cpptools",
- "nvidia.nsight-vscode-edition",
- "seaube.clangformat",
- "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",
- "files.trimFinalNewlines": true,
- "files.insertFinalNewline": true,
- "files.trimTrailingWhitespace": true,
- "files.associations": {
- "*.cu": "cuda-cpp",
- "*.cuh": "cuda-cpp",
- "**/libcudacxx/include/**/*": "cpp",
- "**/libcudacxx-src/include/**/*": "cpp"
- },
- "files.watcherExclude": {
- "**/build/**": true,
- "**/_skbuild/**": true,
- "**/target/**": true
- },
- "python.linting.flake8Enabled": true,
- "[c]": {
- "editor.defaultFormatter": "seaube.clangformat"
- },
- "[cpp]": {
- "editor.defaultFormatter": "seaube.clangformat"
- },
- "[cuda-cpp]": {
- "editor.defaultFormatter": "seaube.clangformat"
- }
- }
- }
- }
-}
diff --git a/.devcontainer/launch.sh b/.devcontainer/launch.sh
deleted file mode 100755
index 60bc3e38a..000000000
--- a/.devcontainer/launch.sh
+++ /dev/null
@@ -1,52 +0,0 @@
-#! /usr/bin/env bash
-
-launch_devcontainer() {
-
- # Ensure we're in the repo root
- cd "$( cd "$( dirname "$(realpath -m "${BASH_SOURCE[0]}")" )" && pwd )/..";
-
- local mode="${1:-single}";
- local pkgs="${2:-conda}";
-
- case "${pkgs}" in
- pip ) ;;
- conda ) ;;
- * ) pkgs="conda";;
- esac
-
- case "${mode}" in
- single ) ;;
- unified ) ;;
- isolated) ;;
- * ) mode="single";;
- esac
-
- local flavor="${pkgs}/${mode}";
- local workspace="$(basename "$(pwd)")";
- local tmpdir="$(mktemp -d)/${workspace}";
- local path="$(pwd)/.devcontainer/${flavor}";
-
- 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";
-
- 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}";
- exec "${launch}" "${url}" >/dev/null 2>&1;
- fi
-}
-
-launch_devcontainer "$@";
diff --git a/.devcontainer/pip/isolated/.devcontainer/devcontainer.json b/.devcontainer/pip/isolated/.devcontainer/devcontainer.json
deleted file mode 100644
index f1b0e9d6a..000000000
--- a/.devcontainer/pip/isolated/.devcontainer/devcontainer.json
+++ /dev/null
@@ -1,92 +0,0 @@
-{
- "shutdownAction": "stopContainer",
-
- "build": {
- "context": "${localWorkspaceFolder}/.devcontainer",
- "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile",
- "args": {
- "CUDA": "12.0",
- "LLVM": "16",
- "PYTHON_PACKAGE_MANAGER": "pip"
- }
- },
- "hostRequirements": {
- "gpu": true
- },
-
- "features": {
- "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:23.8": {}
- },
-
- "overrideFeatureInstallOrder": [
- "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils"
- ],
-
- "initializeCommand": [
- "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip}"
- ],
-
- "updateContentCommand": [
- "/bin/bash", "-c", "sudo chown -R $(id -u):$(id -g) /home/coder/${localWorkspaceFolderBasename} && mkdir -m 0755 -p ~/.config/clangd && cp -n /etc/skel/.config/clangd/config.yaml ~/.config/clangd/config.yaml && cp -ar /workspaces/${localWorkspaceFolderBasename} /home/coder/ && rapids-make-vscode-workspace --update"
- ],
-
- "containerEnv": {
- "DEFAULT_VIRTUAL_ENV": "rapids"
- },
-
- "workspaceFolder": "/home/coder",
- "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/${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=${localWorkspaceFolderBasename}-pip-isolated-${devcontainerId},target=/home/coder/${localWorkspaceFolderBasename},type=volume"
- ],
-
- "customizations": {
- "vscode": {
- "extensions": [
- "llvm-vs-code-extensions.vscode-clangd",
- "mutantdino.resourcemonitor",
- "ms-vscode.cpptools",
- "nvidia.nsight-vscode-edition",
- "seaube.clangformat",
- "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",
- "files.trimFinalNewlines": true,
- "files.insertFinalNewline": true,
- "files.trimTrailingWhitespace": true,
- "files.associations": {
- "*.cu": "cuda-cpp",
- "*.cuh": "cuda-cpp",
- "**/libcudacxx/include/**/*": "cpp",
- "**/libcudacxx-src/include/**/*": "cpp"
- },
- "files.watcherExclude": {
- "**/build/**": true,
- "**/_skbuild/**": true,
- "**/target/**": true
- },
- "python.linting.flake8Enabled": true,
- "[c]": {
- "editor.defaultFormatter": "seaube.clangformat"
- },
- "[cpp]": {
- "editor.defaultFormatter": "seaube.clangformat"
- },
- "[cuda-cpp]": {
- "editor.defaultFormatter": "seaube.clangformat"
- }
- }
- }
- }
-}
diff --git a/.devcontainer/pip/single/.devcontainer/devcontainer.json b/.devcontainer/pip/single/.devcontainer/devcontainer.json
deleted file mode 100644
index a93626950..000000000
--- a/.devcontainer/pip/single/.devcontainer/devcontainer.json
+++ /dev/null
@@ -1,96 +0,0 @@
-{
- "shutdownAction": "stopContainer",
-
- "build": {
- "context": "${localWorkspaceFolder}/.devcontainer",
- "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile",
- "args": {
- "CUDA": "12.0",
- "LLVM": "16",
- "PYTHON_PACKAGE_MANAGER": "pip"
- }
- },
- "hostRequirements": {
- "gpu": true
- },
-
- "features": {
- "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:23.8": {}
- },
-
- "overrideFeatureInstallOrder": [
- "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils"
- ],
-
- "initializeCommand": [
- "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip,local/${localWorkspaceFolderBasename}/single}"
- ],
-
- "updateContentCommand": [
- "/bin/bash",
- "-c",
- "mkdir -m 0755 -p ~/.config/clangd && cp -n /etc/skel/.config/clangd/config.yaml ~/.config/clangd/config.yaml"
- ],
-
- "containerEnv": {
- "PYTHONSAFEPATH": "true",
- "PYTHONUNBUFFERED": "true",
- "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}/../.local/${localWorkspaceFolderBasename}/single,target=/home/coder/.local,type=bind,consistency=consistent"
- ],
-
- "customizations": {
- "vscode": {
- "extensions": [
- "llvm-vs-code-extensions.vscode-clangd",
- "mutantdino.resourcemonitor",
- "ms-vscode.cpptools",
- "nvidia.nsight-vscode-edition",
- "seaube.clangformat",
- "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",
- "files.trimFinalNewlines": true,
- "files.insertFinalNewline": true,
- "files.trimTrailingWhitespace": true,
- "files.associations": {
- "*.cu": "cuda-cpp",
- "*.cuh": "cuda-cpp",
- "**/libcudacxx/include/**/*": "cpp",
- "**/libcudacxx-src/include/**/*": "cpp"
- },
- "files.watcherExclude": {
- "**/build/**": true,
- "**/_skbuild/**": true,
- "**/target/**": true
- },
- "python.linting.flake8Enabled": true,
- "[c]": {
- "editor.defaultFormatter": "seaube.clangformat"
- },
- "[cpp]": {
- "editor.defaultFormatter": "seaube.clangformat"
- },
- "[cuda-cpp]": {
- "editor.defaultFormatter": "seaube.clangformat"
- }
- }
- }
- }
-}
diff --git a/.devcontainer/pip/unified/.devcontainer/devcontainer.json b/.devcontainer/pip/unified/.devcontainer/devcontainer.json
deleted file mode 100644
index dff5e2d7c..000000000
--- a/.devcontainer/pip/unified/.devcontainer/devcontainer.json
+++ /dev/null
@@ -1,102 +0,0 @@
-{
- "shutdownAction": "stopContainer",
-
- "build": {
- "context": "${localWorkspaceFolder}/.devcontainer",
- "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile",
- "args": {
- "CUDA": "12.0",
- "LLVM": "16",
- "PYTHON_PACKAGE_MANAGER": "pip"
- }
- },
- "hostRequirements": {
- "gpu": true
- },
-
- "features": {
- "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:23.8": {}
- },
-
- "overrideFeatureInstallOrder": [
- "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils"
- ],
-
- "initializeCommand": [
- "/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip,local/unified} ${localWorkspaceFolder}/../{rmm,kvikio,cudf,raft,cumlprims_mg,cuml,cugraph-ops,cugraph,cuspatial}"
- ],
-
- "updateContentCommand": [
- "/bin/bash",
- "-c",
- "mkdir -m 0755 -p ~/.config/clangd && cp -n /etc/skel/.config/clangd/config.yaml ~/.config/clangd/config.yaml"
- ],
-
- "containerEnv": {
- "DEFAULT_VIRTUAL_ENV": "rapids"
- },
-
- "workspaceFolder": "/home/coder",
- "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/${localWorkspaceFolderBasename},type=bind,consistency=consistent",
- "mounts": [
- "source=${localWorkspaceFolder}/../rmm,target=/home/coder/rmm,type=bind,consistency=consistent",
- "source=${localWorkspaceFolder}/../kvikio,target=/home/coder/kvikio,type=bind,consistency=consistent",
- "source=${localWorkspaceFolder}/../cudf,target=/home/coder/cudf,type=bind,consistency=consistent",
- "source=${localWorkspaceFolder}/../raft,target=/home/coder/raft,type=bind,consistency=consistent",
- "source=${localWorkspaceFolder}/../cumlprims_mg,target=/home/coder/cumlprims_mg,type=bind,consistency=consistent",
- "source=${localWorkspaceFolder}/../cuml,target=/home/coder/cuml,type=bind,consistency=consistent",
- "source=${localWorkspaceFolder}/../cugraph-ops,target=/home/coder/cugraph-ops,type=bind,consistency=consistent",
- "source=${localWorkspaceFolder}/../cugraph,target=/home/coder/cugraph,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}/../.config,target=/home/coder/.config,type=bind,consistency=consistent",
- "source=${localWorkspaceFolder}/../.local/unified,target=/home/coder/.local,type=bind,consistency=consistent"
- ],
-
- "customizations": {
- "vscode": {
- "extensions": [
- "llvm-vs-code-extensions.vscode-clangd",
- "mutantdino.resourcemonitor",
- "ms-vscode.cpptools",
- "nvidia.nsight-vscode-edition",
- "seaube.clangformat",
- "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",
- "files.trimFinalNewlines": true,
- "files.insertFinalNewline": true,
- "files.trimTrailingWhitespace": true,
- "files.associations": {
- "*.cu": "cuda-cpp",
- "*.cuh": "cuda-cpp",
- "**/libcudacxx/include/**/*": "cpp",
- "**/libcudacxx-src/include/**/*": "cpp"
- },
- "files.watcherExclude": {
- "**/build/**": true,
- "**/_skbuild/**": true,
- "**/target/**": true
- },
- "python.linting.flake8Enabled": true,
- "[c]": {
- "editor.defaultFormatter": "seaube.clangformat"
- },
- "[cpp]": {
- "editor.defaultFormatter": "seaube.clangformat"
- },
- "[cuda-cpp]": {
- "editor.defaultFormatter": "seaube.clangformat"
- }
- }
- }
- }
-}
diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml
index 213950723..7dbcbda29 100644
--- a/.github/workflows/pr.yaml
+++ b/.github/workflows/pr.yaml
@@ -23,6 +23,7 @@ jobs:
- wheel-tests-cuspatial
- wheel-build-cuproj
- wheel-tests-cuproj
+ - devcontainer
secrets: inherit
uses: rapidsai/shared-action-workflows/.github/workflows/pr-builder.yaml@branch-23.10
checks:
@@ -102,3 +103,11 @@ jobs:
with:
build_type: pull-request
script: ci/test_wheel_cuproj.sh
+ devcontainer:
+ secrets: inherit
+ uses: rapidsai/shared-action-workflows/.github/workflows/build-in-devcontainer.yaml@branch-23.10
+ with:
+ build_command: |
+ sccache -z;
+ build-all -DBUILD_TESTS=ON -DBUILD_BENCHMARKS=ON --verbose;
+ sccache -s;
diff --git a/.gitignore b/.gitignore
index f080d2c06..a6627d3e7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -155,3 +155,4 @@ notebooks/cu_taxi.zones.*
# clang tooling
compile_commands.json
+.clangd/
diff --git a/ci/release/update-version.sh b/ci/release/update-version.sh
index 2637a503e..5c17f032a 100755
--- a/ci/release/update-version.sh
+++ b/ci/release/update-version.sh
@@ -65,7 +65,6 @@ sed_runner "s/RAPIDS_VERSION_NUMBER=\".*/RAPIDS_VERSION_NUMBER=\"${NEXT_SHORT_TA
# Need to distutils-normalize the original version
NEXT_SHORT_TAG_PEP440=$(python -c "from setuptools.extern import packaging; print(packaging.version.Version('${NEXT_SHORT_TAG}'))")
-NEXT_FULL_TAG_PEP440=$(python -c "from setuptools.extern import packaging; print(packaging.version.Version('${NEXT_FULL_TAG}'))")
DEPENDENCIES=(
cudf
@@ -86,8 +85,8 @@ for DEP in "${DEPENDENCIES[@]}"; do
done
# Version in pyproject.toml
-sed_runner "s/^version = .*/version = \"${NEXT_FULL_TAG_PEP440}\"/g" python/cuspatial/pyproject.toml
-sed_runner "s/^version = .*/version = \"${NEXT_FULL_TAG_PEP440}\"/g" python/cuproj/pyproject.toml
+sed_runner "s/^version = .*/version = \"${NEXT_FULL_TAG}\"/g" python/cuspatial/pyproject.toml
+sed_runner "s/^version = .*/version = \"${NEXT_FULL_TAG}\"/g" python/cuproj/pyproject.toml
# Dependency versions in dependencies.yaml
sed_runner "/-cu[0-9]\{2\}==/ s/==.*/==${NEXT_SHORT_TAG_PEP440}.*/g" dependencies.yaml
@@ -106,3 +105,8 @@ sed_runner "s/cuspatial:[0-9]\+.[0-9]/cuspatial:${NEXT_SHORT_TAG}/g" README.md
sed_runner "s/cuspatial=[0-9]\+.[0-9]/cuspatial=${NEXT_SHORT_TAG}/g" README.md
sed_runner "s/notebooks:[0-9]\+.[0-9]/notebooks:${NEXT_SHORT_TAG}/g" README.md
+# .devcontainer files
+find .devcontainer/ -type f -name devcontainer.json -print0 | while IFS= read -r -d '' filename; do
+ sed_runner "s@rapidsai/devcontainers:[0-9.]*@rapidsai/devcontainers:${NEXT_FULL_TAG}@g" "${filename}"
+ sed_runner "s@rapidsai/devcontainers/features/rapids-build-utils:[0-9.]*@rapidsai/devcontainers/features/rapids-build-utils:${NEXT_SHORT_TAG_PEP440}@"
+done
diff --git a/conda/environments/all_cuda-118_arch-x86_64.yaml b/conda/environments/all_cuda-118_arch-x86_64.yaml
index 88b40d1cd..83ac445cb 100644
--- a/conda/environments/all_cuda-118_arch-x86_64.yaml
+++ b/conda/environments/all_cuda-118_arch-x86_64.yaml
@@ -7,6 +7,7 @@ channels:
- nvidia
dependencies:
- c-compiler
+- clang-tools=16.0.6
- cmake>=3.26.4
- cuda-version=11.8
- cudatoolkit
diff --git a/conda/environments/all_cuda-120_arch-x86_64.yaml b/conda/environments/all_cuda-120_arch-x86_64.yaml
index 312191cf9..f628e67b4 100644
--- a/conda/environments/all_cuda-120_arch-x86_64.yaml
+++ b/conda/environments/all_cuda-120_arch-x86_64.yaml
@@ -7,6 +7,7 @@ channels:
- nvidia
dependencies:
- c-compiler
+- clang-tools=16.0.6
- cmake>=3.26.4
- cuda-cudart-dev
- cuda-cupti-dev
diff --git a/cpp/.clangd b/cpp/.clangd
index b066cf511..7c4fe036d 100644
--- a/cpp/.clangd
+++ b/cpp/.clangd
@@ -1,24 +1,32 @@
-# Apply this config conditionally to all C files
+# https://clangd.llvm.org/config
+
+# Apply a config conditionally to all C files
If:
PathMatch: .*\.(c|h)$
-CompileFlags:
- Compiler: /nvme/0/vyasr/rapids/compose/etc/conda/cuda_11.8/envs/rapids/bin/gcc
---
-# Apply this config conditionally to all C++ headers
+# Apply a config conditionally to all C++ files
If:
- PathMatch: .*\.(c|h)pp$
-CompileFlags:
- Compiler: /nvme/0/vyasr/rapids/compose/etc/conda/cuda_11.8/envs/rapids/bin/g++
+ PathMatch: .*\.(c|h)pp
---
-# Apply this config conditionally to all CUDA headers
+# Apply a config conditionally to all CUDA files
If:
- PathMatch: .*\.cuh?$
+ PathMatch: .*\.cuh?
CompileFlags:
- Compiler: /usr/local/cuda/bin/nvcc
+ Add:
+ - "-x"
+ - "cuda"
+ # No error on unknown CUDA versions
+ - "-Wno-unknown-cuda-version"
+ # Allow variadic CUDA functions
+ - "-Xclang=-fcuda-allow-variadic-functions"
+Diagnostics:
+ Suppress:
+ - "variadic_device_fn"
+ - "attributes_not_allowed"
---
@@ -27,24 +35,31 @@ CompileFlags:
Add:
# report all errors
- "-ferror-limit=0"
+ - "-fmacro-backtrace-limit=0"
+ - "-ftemplate-backtrace-limit=0"
+ # Skip the CUDA version check
+ - "--no-cuda-version-check"
Remove:
- # strip CUDA fatbin args
- - "-Xfatbin*"
- # strip CUDA arch flags
+ # remove gcc's -fcoroutines
+ - -fcoroutines
+ # remove nvc++ flags unknown to clang
+ - "-gpu=*"
+ - "-stdpar*"
+ # remove nvcc flags unknown to clang
- "-arch*"
- "-gencode*"
- "--generate-code*"
- # strip CUDA flags unknown to clang
+ - "-ccbin*"
+ - "-t=*"
+ - "--threads*"
+ - "-Xptxas*"
+ - "-Xcudafe*"
+ - "-Xfatbin*"
+ - "-Xcompiler*"
+ - "--diag-suppress*"
+ - "--diag_suppress*"
+ - "--compiler-options*"
- "--expt-extended-lambda"
- "--expt-relaxed-constexpr"
- "-forward-unknown-to-host-compiler"
- "-Werror=cross-execution-space-call"
-Hover:
- ShowAKA: No
-InlayHints:
- Enabled: No
-Diagnostics:
- Suppress:
- - "variadic_device_fn"
- - "attributes_not_allowed"
- - "-Wdeprecated-declarations"
diff --git a/cpp/cuproj/CMakeLists.txt b/cpp/cuproj/CMakeLists.txt
index 2f4dadf8a..6d6df5d33 100644
--- a/cpp/cuproj/CMakeLists.txt
+++ b/cpp/cuproj/CMakeLists.txt
@@ -91,6 +91,8 @@ include(cmake/modules/ConfigureCUDA.cmake)
# add third party dependencies using CPM
rapids_cpm_init()
+include(cmake/thirdparty/get_rmm.cmake)
+
# find or install GoogleTest and Proj
if (CUPROJ_BUILD_TESTS)
include(cmake/thirdparty/get_gtest.cmake)
@@ -103,6 +105,8 @@ endif()
add_library(cuproj INTERFACE)
add_library(cuproj::cuproj ALIAS cuproj)
+target_link_libraries(cuproj INTERFACE rmm::rmm)
+
set_target_properties(cuproj
PROPERTIES BUILD_RPATH "\$ORIGIN"
INSTALL_RPATH "\$ORIGIN"
diff --git a/dependencies.yaml b/dependencies.yaml
index b57f3c2e3..eb564f809 100644
--- a/dependencies.yaml
+++ b/dependencies.yaml
@@ -12,8 +12,11 @@ files:
- develop
- docs
- py_version
+ - depends_on_rmm
+ - depends_on_cudf
+ - depends_on_cuml
+ - depends_on_cupy
- run_python_cuspatial
- - run_python_cuproj
- test_python_cuspatial
- test_python_cuproj
- notebooks
@@ -32,6 +35,7 @@ files:
output: none
includes:
- cudatoolkit
+ - depends_on_cuml
- notebooks
- py_version
checks:
@@ -51,6 +55,8 @@ files:
extras:
table: build-system
includes:
+ - depends_on_rmm
+ - depends_on_cudf
- build_cpp
- build_python
- build_wheels
@@ -60,6 +66,8 @@ files:
extras:
table: project
includes:
+ - depends_on_rmm
+ - depends_on_cudf
- run_python_cuspatial
py_test_cuspatial:
output: [pyproject]
@@ -75,6 +83,7 @@ files:
extras:
table: build-system
includes:
+ - depends_on_rmm
- build_cpp_cuproj
- build_python_cuproj
- build_wheels
@@ -84,7 +93,8 @@ files:
extras:
table: project
includes:
- - run_python_cuproj
+ - depends_on_rmm
+ - depends_on_cupy
py_test_cuproj:
output: [pyproject]
pyproject_dir: python/cuproj
@@ -198,15 +208,6 @@ dependencies:
- cython>=3.0.0
- scikit-build>=0.13.1
- setuptools
- - output_types: conda
- packages: &build_python_packages_conda
- - &cudf_conda cudf==23.10.*
- - &rmm_conda rmm==23.10.*
- - output_types: requirements
- packages:
- # pip recognizes the index as a global option for the requirements.txt file
- # This index is needed for cudf and rmm.
- - --extra-index-url=https://pypi.nvidia.com
specific:
- output_types: conda
matrices:
@@ -220,35 +221,13 @@ dependencies:
packages:
- *gcc_aarch64
- *sysroot_aarch64
- - output_types: [requirements, pyproject]
- matrices:
- - matrix: {cuda: "12.0"}
- packages:
- - cudf-cu12==23.10.*
- - rmm-cu12==23.10.*
- - matrix: {cuda: "11.8"}
- packages: &build_python_packages_cu11
- - &cudf_cu11 cudf-cu11==23.10.*
- - &rmm_cu11 rmm-cu11==23.10.*
- - {matrix: {cuda: "11.5"}, packages: *build_python_packages_cu11}
- - {matrix: {cuda: "11.4"}, packages: *build_python_packages_cu11}
- - {matrix: {cuda: "11.2"}, packages: *build_python_packages_cu11}
- - {matrix: null, packages: [*cudf_conda, *rmm_conda] }
build_python_cuproj:
common:
- output_types: [conda, requirements, pyproject]
packages:
- - cython>=0.29,<0.30
+ - cython>=3.0.0
- scikit-build>=0.13.1
- setuptools
- - output_types: conda
- packages:
- - *rmm_conda
- - output_types: requirements
- packages:
- # pip recognizes the index as a global option for the requirements.txt file
- # This index is needed for cudf and rmm.
- - --extra-index-url=https://pypi.nvidia.com
specific:
- output_types: conda
matrices:
@@ -262,18 +241,6 @@ dependencies:
packages:
- *gcc_aarch64
- *sysroot_aarch64
- - output_types: [requirements, pyproject]
- matrices:
- - matrix: {cuda: "12.0"}
- packages:
- - rmm-cu12==23.10.*
- - matrix: {cuda: "11.8"}
- packages:
- - *rmm_cu11
- - {matrix: {cuda: "11.5"}, packages: *build_python_packages_cu11}
- - {matrix: {cuda: "11.4"}, packages: *build_python_packages_cu11}
- - {matrix: {cuda: "11.2"}, packages: *build_python_packages_cu11}
- - {matrix: null, packages: [*rmm_conda] }
build_wheels:
common:
- output_types: [requirements, pyproject]
@@ -316,6 +283,9 @@ dependencies:
- output_types: [conda, requirements]
packages:
- pre-commit
+ - output_types: conda
+ packages:
+ - clang-tools=16.0.6
docs:
common:
- output_types: [conda]
@@ -339,22 +309,9 @@ dependencies:
- pydeck
- shapely
- scikit-image
- - output_types: conda
- packages:
- - &cuml_conda cuml==23.10.*
- specific:
- output_types: [requirements, pyproject]
- matrices:
- - {matrix: null, packages: [*cuml_conda]}
- - matrix: {cuda: "12.0"}
- packages:
- - cuml-cu12==23.10.*
- - matrix: {cuda: "11.8"}
- packages: ¬ebooks_packages_cu11
- - &cuml_cu11 cuml-cu11==23.10.*
- - {matrix: {cuda: "11.5"}, packages: *notebooks_packages_cu11}
- - {matrix: {cuda: "11.4"}, packages: *notebooks_packages_cu11}
- - {matrix: {cuda: "11.2"}, packages: *notebooks_packages_cu11}
+ packages:
+ - pyproj
py_version:
specific:
- output_types: conda
@@ -375,70 +332,135 @@ dependencies:
- output_types: [conda, requirements, pyproject]
packages:
- geopandas>=0.11.0
+ test_python_cuspatial:
+ common:
+ - output_types: [conda, requirements, pyproject]
+ packages:
+ - pytest
+ - pytest-cov
+ - pytest-xdist
+ test_python_cuproj:
+ common:
+ - output_types: [conda, requirements, pyproject]
+ packages:
+ - pytest
+ - pytest-cov
+ - pytest-xdist
+ - geopandas>=0.11.0
+ - output_types: [requirements, pyproject]
+ packages:
+ - pyproj
+
+ depends_on_rmm:
+ common:
- output_types: conda
packages:
- - *cudf_conda
- - *rmm_conda
+ - &rmm_conda rmm==23.10.*
- output_types: requirements
packages:
# pip recognizes the index as a global option for the requirements.txt file
- # This index is needed for cudf and rmm.
- --extra-index-url=https://pypi.nvidia.com
specific:
- output_types: [requirements, pyproject]
matrices:
- - matrix: {cuda: "12.0"}
- packages:
- - cudf-cu12==23.10.*
+ - matrix: {cuda: "12.2"}
+ packages: &rmm_packages_pip_cu12
- rmm-cu12==23.10.*
+ - {matrix: {cuda: "12.1"}, packages: *rmm_packages_pip_cu12}
+ - {matrix: {cuda: "12.0"}, packages: *rmm_packages_pip_cu12}
- matrix: {cuda: "11.8"}
- packages: &run_python_cuspatial_packages_cu11
- - cudf-cu11==23.10.*
+ packages: &rmm_packages_pip_cu11
- rmm-cu11==23.10.*
- - {matrix: {cuda: "11.5"}, packages: *run_python_cuspatial_packages_cu11}
- - {matrix: {cuda: "11.4"}, packages: *run_python_cuspatial_packages_cu11}
- - {matrix: {cuda: "11.2"}, packages: *run_python_cuspatial_packages_cu11}
- - {matrix: null, packages: [*cudf_conda, *rmm_conda]}
- run_python_cuproj:
+ - {matrix: {cuda: "11.5"}, packages: *rmm_packages_pip_cu11}
+ - {matrix: {cuda: "11.4"}, packages: *rmm_packages_pip_cu11}
+ - {matrix: {cuda: "11.2"}, packages: *rmm_packages_pip_cu11}
+ - {matrix: null, packages: [*rmm_conda]}
+
+ depends_on_cudf:
common:
- output_types: conda
packages:
- - *rmm_conda
- - cupy>=12.0.0
+ - &cudf_conda cudf==23.10.*
- output_types: requirements
packages:
# pip recognizes the index as a global option for the requirements.txt file
- # This index is needed for rmm
- - --extra-index-url=https://pypi.ngc.nvidia.com
- - &cupy_pip cupy-cuda11x>=12.0.0
- - output_types: pyproject
- packages:
- - *cupy_pip
+ - --extra-index-url=https://pypi.nvidia.com
specific:
- output_types: [requirements, pyproject]
matrices:
- - matrix: {cuda: "12.0"}
- packages:
- - rmm-cu12==23.10.*
+ - matrix: {cuda: "12.2"}
+ packages: &cudf_packages_pip_cu12
+ - cudf-cu12==23.10.*
+ - {matrix: {cuda: "12.1"}, packages: *cudf_packages_pip_cu12}
+ - {matrix: {cuda: "12.0"}, packages: *cudf_packages_pip_cu12}
- matrix: {cuda: "11.8"}
- packages: &run_python_cuproj_packages_cu11
- - rmm-cu11==23.10.*
- - {matrix: {cuda: "11.5"}, packages: *run_python_cuproj_packages_cu11}
- - {matrix: {cuda: "11.4"}, packages: *run_python_cuproj_packages_cu11}
- - {matrix: {cuda: "11.2"}, packages: *run_python_cuproj_packages_cu11}
- - {matrix: null, packages: [*rmm_conda]}
- test_python_cuspatial:
+ packages: &cudf_packages_pip_cu11
+ - cudf-cu11==23.10.*
+ - {matrix: {cuda: "11.5"}, packages: *cudf_packages_pip_cu11}
+ - {matrix: {cuda: "11.4"}, packages: *cudf_packages_pip_cu11}
+ - {matrix: {cuda: "11.2"}, packages: *cudf_packages_pip_cu11}
+ - {matrix: null, packages: [*cudf_conda]}
+
+ depends_on_cuml:
common:
- - output_types: [conda, requirements, pyproject]
+ - output_types: conda
packages:
- - pytest
- - pytest-cov
- - pytest-xdist
- test_python_cuproj:
+ - &cuml_conda cuml==23.10.*
+ - output_types: requirements
+ packages:
+ # pip recognizes the index as a global option for the requirements.txt file
+ - --extra-index-url=https://pypi.nvidia.com
+ specific:
+ - output_types: [requirements, pyproject]
+ matrices:
+ - matrix: {cuda: "12.2"}
+ packages: &cuml_packages_pip_cu12
+ - cuml-cu12==23.10.*
+ - {matrix: {cuda: "12.1"}, packages: *cuml_packages_pip_cu12}
+ - {matrix: {cuda: "12.0"}, packages: *cuml_packages_pip_cu12}
+ - matrix: {cuda: "11.8"}
+ packages: &cuml_packages_pip_cu11
+ - cuml-cu11==23.10.*
+ - {matrix: {cuda: "11.5"}, packages: *cuml_packages_pip_cu11}
+ - {matrix: {cuda: "11.4"}, packages: *cuml_packages_pip_cu11}
+ - {matrix: {cuda: "11.2"}, packages: *cuml_packages_pip_cu11}
+ - {matrix: null, packages: [*cuml_conda]}
+
+ depends_on_cupy:
common:
- - output_types: [conda, requirements, pyproject]
+ - output_types: conda
packages:
- - pytest
- - pytest-cov
- - pytest-xdist
- - geopandas>=0.11.0
+ - cupy>=12.0.0
+ specific:
+ - output_types: [requirements, pyproject]
+ matrices:
+ # All CUDA 12 + x86_64 versions
+ - matrix: {cuda: "12.2", arch: x86_64}
+ packages: &cupy_packages_cu12_x86_64
+ - cupy-cuda12x>=12.0.0
+ - {matrix: {cuda: "12.1", arch: x86_64}, packages: *cupy_packages_cu12_x86_64}
+ - {matrix: {cuda: "12.0", arch: x86_64}, packages: *cupy_packages_cu12_x86_64}
+
+ # All CUDA 12 + aarch64 versions
+ - matrix: {cuda: "12.2", arch: aarch64}
+ packages: &cupy_packages_cu12_aarch64
+ - cupy-cuda12x -f https://pip.cupy.dev/aarch64 # TODO: Verify that this works.
+ - {matrix: {cuda: "12.1", arch: aarch64}, packages: *cupy_packages_cu12_aarch64}
+ - {matrix: {cuda: "12.0", arch: aarch64}, packages: *cupy_packages_cu12_aarch64}
+
+ # All CUDA 11 + x86_64 versions
+ - matrix: {cuda: "11.8", arch: x86_64}
+ packages: &cupy_packages_cu11_x86_64
+ - cupy-cuda11x>=12.0.0
+ - {matrix: {cuda: "11.5", arch: x86_64}, packages: *cupy_packages_cu11_x86_64}
+ - {matrix: {cuda: "11.4", arch: x86_64}, packages: *cupy_packages_cu11_x86_64}
+ - {matrix: {cuda: "11.2", arch: x86_64}, packages: *cupy_packages_cu11_x86_64}
+
+ # All CUDA 11 + aarch64 versions
+ - matrix: {cuda: "11.8", arch: aarch64}
+ packages: &cupy_packages_cu11_aarch64
+ - cupy-cuda11x -f https://pip.cupy.dev/aarch64 # TODO: Verify that this works.
+ - {matrix: {cuda: "11.5", arch: aarch64}, packages: *cupy_packages_cu11_aarch64}
+ - {matrix: {cuda: "11.4", arch: aarch64}, packages: *cupy_packages_cu11_aarch64}
+ - {matrix: {cuda: "11.2", arch: aarch64}, packages: *cupy_packages_cu11_aarch64}
+ - {matrix: null, packages: [cupy-cuda11x>=12.0.0]}
diff --git a/python/cuproj/pyproject.toml b/python/cuproj/pyproject.toml
index 7a25d921a..525c9fda6 100644
--- a/python/cuproj/pyproject.toml
+++ b/python/cuproj/pyproject.toml
@@ -16,7 +16,7 @@
build-backend = "setuptools.build_meta"
requires = [
"cmake>=3.26.4",
- "cython>=0.29,<0.30",
+ "cython>=3.0.0",
"ninja",
"rmm==23.10.*",
"scikit-build>=0.13.1",
@@ -49,6 +49,7 @@ classifiers = [
[project.optional-dependencies]
test = [
"geopandas>=0.11.0",
+ "pyproj",
"pytest",
"pytest-cov",
"pytest-xdist",