mirror of
https://github.com/NVIDIA/nvbench.git
synced 2026-04-20 14:58:54 +00:00
Add initial CI, presets, and devcontainers.
This commit is contained in:
198
.devcontainer/README.md
Normal file
198
.devcontainer/README.md
Normal file
@@ -0,0 +1,198 @@
|
||||
> **Note**
|
||||
> The instructions in this README are specific to Linux development environments. Instructions for Windows are coming soon!
|
||||
|
||||
[](https://codespaces.new/NVIDIA/cccl?quickstart=1&devcontainer_path=.devcontainer%2Fdevcontainer.json)
|
||||
|
||||
# CCCL Dev Containers
|
||||
|
||||
CCCL uses [Development Containers](https://containers.dev/) to provide consistent and convenient development environments for both local development and for CI. This guide covers setup in [Visual Studio Code](#quickstart-vscode-recommended) and [Docker](#quickstart-docker-manual-approach). The guide also provides additional instructions in case you want use WSL.
|
||||
|
||||
## Table of Contents
|
||||
1. [Quickstart: VSCode (Recommended)](#vscode)
|
||||
2. [Quickstart: Docker (Manual Approach)](#docker)
|
||||
3. [Quickstart: Using WSL](#wsl)
|
||||
|
||||
## Quickstart: VSCode (Recommended) <a name="vscode"></a>
|
||||
|
||||
### Prerequisites
|
||||
- [Visual Studio Code](https://code.visualstudio.com/)
|
||||
- [Remote - Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)
|
||||
- [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html)
|
||||
- [Docker](https://docs.docker.com/engine/install/) - This is only for completeness because it should already be implicitly installed by the Dev Containers extension
|
||||
|
||||
### Steps
|
||||
|
||||
1. Clone the Repository
|
||||
```bash
|
||||
git clone https://github.com/nvidia/cccl.git
|
||||
```
|
||||
2. Open the cloned directory in VSCode
|
||||
|
||||
3. Launch a Dev Container by clicking the prompt suggesting to "Reopen in Container"
|
||||
|
||||

|
||||
|
||||
- Alternatively, use the Command Palette to start a Dev Container. Press `Ctrl+Shift+P` to open the Command Palette. Type "Remote-Containers: Reopen in Container" and select it.
|
||||
|
||||

|
||||
|
||||
4. Select an environment with the desired CTK and host compiler from the list:
|
||||
|
||||

|
||||
|
||||
5. VSCode will initialize the selected Dev Container. This can take a few minutes the first time.
|
||||
|
||||
6. Once initialized, the local `cccl/` directory is mirrored into the container to ensure any changes are persistent.
|
||||
|
||||
7. Done! See the [contributing guide](../CONTRIBUTING.md#building-and-testing) for instructions on how to build and run tests.
|
||||
|
||||
### (Optional) Authenticate with GitHub for `sccache`
|
||||
|
||||
After starting the container, there will be a prompt to authenticate with GitHub. This grants access to a [`sccache`](https://github.com/mozilla/sccache) server shared with CI and greatly accelerates local build times. This is currently limited to NVIDIA employees belonging to the `NVIDIA` or `rapidsai` GitHub organizations.
|
||||
|
||||
Without authentication to the remote server, `sccache` will still accelerate local builds by using a filesystem cache.
|
||||
|
||||
Follow the instructions in the prompt as below and enter the one-time code at https://github.com/login/device
|
||||
|
||||

|
||||
|
||||
To manually trigger this authentication, execute the `devcontainer-utils-vault-s3-init` script within the container.
|
||||
|
||||
For more information about the sccache configuration and authentication, see the documentation at [`rapidsai/devcontainers`](https://github.com/rapidsai/devcontainers/blob/branch-23.10/USAGE.md#build-caching-with-sccache).
|
||||
|
||||
## Quickstart: Docker (Manual Approach) <a name="docker"></a>
|
||||
|
||||
### Prerequisites
|
||||
- [Docker](https://docs.docker.com/desktop/install/linux-install/)
|
||||
|
||||
### Steps
|
||||
1. Clone the repository and use the [`launch.sh`](./launch.sh) script to launch the default container environment
|
||||
```bash
|
||||
git clone https://github.com/nvidia/cccl.git
|
||||
cd cccl
|
||||
./.devcontainer/launch.sh --docker
|
||||
```
|
||||
This script starts an interactive shell as the `coder` user inside the container with the local `cccl/` directory mirrored into `/home/coder/cccl`.
|
||||
|
||||
For specific environments, use the `--cuda` and `--host` options:
|
||||
```bassh
|
||||
./.devcontainer/launch.sh --docker --cuda 12.2 --host gcc10
|
||||
```
|
||||
See `./.devcontainer/launch.sh --help` for more information.
|
||||
|
||||
2. Done. See the [contributing guide](../CONTRIBUTING.md#building-and-testing) for instructions on how to build and run tests.
|
||||
|
||||
## Available Environments
|
||||
|
||||
CCCL provides environments for both the oldest and newest supported CUDA versions with all compatible host compilers.
|
||||
|
||||
Look in the [`.devcontainer/`](.) directory to see the available configurations. The top-level [`devcontainer.json`](./devcontainer.json) serves as the default environment. All `devcontainer.json` files in the `cuda<CTK_VERSION>-<HOST-COMPILER>` sub-directories are variations on this top-level file, with different base images for the different CUDA and host compiler versions.
|
||||
|
||||
## VSCode Customization
|
||||
|
||||
By default, CCCL's Dev Containers come with certain VSCode settings and extensions configured by default, as can be seen in the [`devcontainer.json`](./devcontainer.json) file. This can be further customized by users without needing to modify the `devcontainer.json` file directly.
|
||||
|
||||
For extensions, the [`dev.containers.defaultExtensions` setting](https://code.visualstudio.com/docs/devcontainers/containers#_always-installed-extensions) allows listing extensions that will always be installed.
|
||||
|
||||
For more general customizations, VSCode allows using a dotfile repository. See the [VSCode documentation](https://code.visualstudio.com/docs/devcontainers/containers#_personalizing-with-dotfile-repositories) for more information.
|
||||
|
||||
## GitHub Codespaces
|
||||
|
||||
[](https://codespaces.new/NVIDIA/cccl?quickstart=1&devcontainer_path=.devcontainer%2Fdevcontainer.json)
|
||||
|
||||
One of the benefits of Dev Containers is that they integrate natively with [GitHub Codespaces](https://github.com/features/codespaces). Codespaces provide a VSCode development environment right in your browser running on a machine in the cloud. This provides a truly one-click, turnkey development environment where you can develop, build, and test with no other setup required.
|
||||
|
||||
Click the badge above or [click here](https://codespaces.new/NVIDIA/cccl?quickstart=1&devcontainer_path=.devcontainer%2Fdevcontainer.json) to get started with CCCL's Dev Containers on Codespaces. This will start the default Dev Container environment. [Click here](https://github.com/codespaces/new?hide_repo_select=true&ref=main&repo=296416761&skip_quickstart=true) to start a Codespace with a particular environment and hardware configuration as shown:
|
||||
|
||||

|
||||
|
||||
## For Maintainers: The `make_devcontainers.sh` Script
|
||||
|
||||
### Overview
|
||||
|
||||
[`make_devcontainers.sh`](./make_devcontainers.sh) generates devcontainer configurations for the unique combinations of CUDA Toolkit (CTK) versions and host compilers in [`ci/matrix.yaml`](../ci/matrix.yaml).
|
||||
|
||||
### How It Works:
|
||||
|
||||
1. Parses the matrix from `ci/matrix.yaml`.
|
||||
2. Use the top-level [`.devcontainer/devcontainer.json`](./devcontainer.json) as a template. For each unique combination of CTK version and host compiler, generate a corresponding `devcontainer.json` configuration, adjusting only the base Docker image to match the desired environment.
|
||||
3. Place the generated configurations in the `.devcontainer` directory, organizing them into subdirectories following the naming convention `cuda<CTK_VERSION>-<COMPILER_VERSION>`.
|
||||
|
||||
For more information, see the `.devcontainer/make_devcontainers.sh --help` message.
|
||||
|
||||
**Note**: When adding or updating supported environments, modify `matrix.yaml` and then rerun this script to synchronize the `devcontainer` configurations.
|
||||
|
||||
## Quickstart: Using WSL <a name="wsl"></a>
|
||||
|
||||
> [!NOTE]
|
||||
> _Make sure you have the Nvidia driver installed on your Windows host before moving further_. Type in `nvidia-smi` for verification.
|
||||
|
||||
### Install WSL on your Windows host
|
||||
|
||||
> [!WARNING]
|
||||
> Disclaimer: This guide was developed for WSL 2 on Windows 11.
|
||||
|
||||
1. Launch a Windows terminal (_e.g. Powershell_) as an administrator.
|
||||
|
||||
2. Install WSL 2 by running:
|
||||
```bash
|
||||
wsl --install
|
||||
```
|
||||
This should probably install Ubuntu distro as a default.
|
||||
|
||||
3. Restart your computer and run `wsl -l -v` on a Windows terminal to verify installation.
|
||||
|
||||
<h3 id="prereqs"> Install prerequisites and VS Code extensions</h3>
|
||||
|
||||
4. Launch your WSL/Ubuntu terminal by running `wsl` in Powershell.
|
||||
|
||||
5. Install the [WSL extension](ms-vscode-remote.remote-wsl) on VS Code.
|
||||
|
||||
- `Ctrl + Shift + P` and select `WSL: Connect to WSL` (it will prompt you to install the WSL extension).
|
||||
|
||||
- Make sure you are connected to WSL with VS Code by checking the bottom left corner of the VS Code window (should indicate "WSL: Ubuntu" in our case).
|
||||
|
||||
6. Install the [Dev Containers extension](ms-vscode-remote.remote-containers) on VS Code.
|
||||
|
||||
- In a vanilla system you should be prompted to install `Docker` at this point, accept it. If it hangs you might have to restart VS Code after that.
|
||||
|
||||
7. Install the [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html). **Make sure you install the WSL 2 version and not the native Linux one**. This builds on top of Docker so make sure you have Docker properly installed (run `docker --version`).
|
||||
|
||||
8. Open `/etc/docker/daemon.json` from within your WSL system (if the file does not exist, create it) and add the following:
|
||||
|
||||
```json
|
||||
{
|
||||
"runtimes": {
|
||||
"nvidia": {
|
||||
"path": "nvidia-container-runtime",
|
||||
"runtimeArgs": []
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
then run `sudo systemctl restart docker.service`.
|
||||
|
||||
---
|
||||
### Build CCCL in WSL using Dev Containers
|
||||
|
||||
9. Still on your WSL terminal run `git clone https://github.com/NVIDIA/cccl.git`
|
||||
|
||||
|
||||
10. Open the CCCL cloned repo in VS Code ( `Ctrl + Shift + P `, select `File: Open Folder...` and select the path where your CCCL clone is located).
|
||||
|
||||
11. If prompted, choose `Reopen in Container`.
|
||||
|
||||
- If you are not prompted just type `Ctrl + Shift + P` and `Dev Containers: Open Folder in Container ...`.
|
||||
|
||||
12. Verify that Dev Container was configured properly by running `nvidia-smi` in your Dev Container terminal. For a proper configuration it is important for the steps in [Install prerequisites and VS Code extensions](#prereqs) to be followed in a precise order.
|
||||
|
||||
From that point on, the guide aligns with our [existing Dev Containers native Linux guide](https://github.com/NVIDIA/cccl/blob/main/.devcontainer/README.md) with just one minor potential alteration:
|
||||
|
||||
13. If WSL was launched without the X-server enabled, when asked to "authenticate Git with your Github credentials", if you answer **Yes**, the browser might not open automatically, with the following error message.
|
||||
|
||||
> Failed opening a web browser at https://github.com/login/device
|
||||
exec: "xdg-open,x-www-browser,www-browser,wslview": executable file not found in $PATH
|
||||
Please try entering the URL in your browser manually
|
||||
|
||||
In that case type in the address manually in your web browser https://github.com/login/device and fill in the one-time code.
|
||||
46
.devcontainer/cuda11.1-gcc6/devcontainer.json
Normal file
46
.devcontainer/cuda11.1-gcc6/devcontainer.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"shutdownAction": "stopContainer",
|
||||
"image": "rapidsai/devcontainers:24.06-cpp-gcc6-cuda11.1-ubuntu18.04",
|
||||
"hostRequirements": {
|
||||
"gpu": "optional"
|
||||
},
|
||||
"initializeCommand": [
|
||||
"/bin/bash",
|
||||
"-c",
|
||||
"mkdir -m 0755 -p ${localWorkspaceFolder}/.{aws,cache,config}"
|
||||
],
|
||||
"containerEnv": {
|
||||
"SCCACHE_REGION": "us-east-2",
|
||||
"SCCACHE_BUCKET": "rapids-sccache-devs",
|
||||
"VAULT_HOST": "https://vault.ops.k8s.rapids.ai",
|
||||
"HISTFILE": "${containerWorkspaceFolder}/.cache/._bash_history",
|
||||
"DEVCONTAINER_NAME": "cuda11.1-gcc6",
|
||||
"CCCL_CUDA_VERSION": "11.1",
|
||||
"CCCL_HOST_COMPILER": "gcc",
|
||||
"CCCL_HOST_COMPILER_VERSION": "6",
|
||||
"CCCL_BUILD_INFIX": "cuda11.1-gcc6"
|
||||
},
|
||||
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
|
||||
"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"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"xaver.clang-format"
|
||||
],
|
||||
"settings": {
|
||||
"editor.defaultFormatter": "xaver.clang-format",
|
||||
"clang-format.executable": "/usr/local/bin/clang-format",
|
||||
"clangd.arguments": [
|
||||
"--compile-commands-dir=${workspaceFolder}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "cuda11.1-gcc6"
|
||||
}
|
||||
46
.devcontainer/cuda11.1-gcc7/devcontainer.json
Normal file
46
.devcontainer/cuda11.1-gcc7/devcontainer.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"shutdownAction": "stopContainer",
|
||||
"image": "rapidsai/devcontainers:24.06-cpp-gcc7-cuda11.1-ubuntu18.04",
|
||||
"hostRequirements": {
|
||||
"gpu": "optional"
|
||||
},
|
||||
"initializeCommand": [
|
||||
"/bin/bash",
|
||||
"-c",
|
||||
"mkdir -m 0755 -p ${localWorkspaceFolder}/.{aws,cache,config}"
|
||||
],
|
||||
"containerEnv": {
|
||||
"SCCACHE_REGION": "us-east-2",
|
||||
"SCCACHE_BUCKET": "rapids-sccache-devs",
|
||||
"VAULT_HOST": "https://vault.ops.k8s.rapids.ai",
|
||||
"HISTFILE": "${containerWorkspaceFolder}/.cache/._bash_history",
|
||||
"DEVCONTAINER_NAME": "cuda11.1-gcc7",
|
||||
"CCCL_CUDA_VERSION": "11.1",
|
||||
"CCCL_HOST_COMPILER": "gcc",
|
||||
"CCCL_HOST_COMPILER_VERSION": "7",
|
||||
"CCCL_BUILD_INFIX": "cuda11.1-gcc7"
|
||||
},
|
||||
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
|
||||
"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"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"xaver.clang-format"
|
||||
],
|
||||
"settings": {
|
||||
"editor.defaultFormatter": "xaver.clang-format",
|
||||
"clang-format.executable": "/usr/local/bin/clang-format",
|
||||
"clangd.arguments": [
|
||||
"--compile-commands-dir=${workspaceFolder}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "cuda11.1-gcc7"
|
||||
}
|
||||
46
.devcontainer/cuda11.1-gcc8/devcontainer.json
Normal file
46
.devcontainer/cuda11.1-gcc8/devcontainer.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"shutdownAction": "stopContainer",
|
||||
"image": "rapidsai/devcontainers:24.06-cpp-gcc8-cuda11.1-ubuntu18.04",
|
||||
"hostRequirements": {
|
||||
"gpu": "optional"
|
||||
},
|
||||
"initializeCommand": [
|
||||
"/bin/bash",
|
||||
"-c",
|
||||
"mkdir -m 0755 -p ${localWorkspaceFolder}/.{aws,cache,config}"
|
||||
],
|
||||
"containerEnv": {
|
||||
"SCCACHE_REGION": "us-east-2",
|
||||
"SCCACHE_BUCKET": "rapids-sccache-devs",
|
||||
"VAULT_HOST": "https://vault.ops.k8s.rapids.ai",
|
||||
"HISTFILE": "${containerWorkspaceFolder}/.cache/._bash_history",
|
||||
"DEVCONTAINER_NAME": "cuda11.1-gcc8",
|
||||
"CCCL_CUDA_VERSION": "11.1",
|
||||
"CCCL_HOST_COMPILER": "gcc",
|
||||
"CCCL_HOST_COMPILER_VERSION": "8",
|
||||
"CCCL_BUILD_INFIX": "cuda11.1-gcc8"
|
||||
},
|
||||
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
|
||||
"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"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"xaver.clang-format"
|
||||
],
|
||||
"settings": {
|
||||
"editor.defaultFormatter": "xaver.clang-format",
|
||||
"clang-format.executable": "/usr/local/bin/clang-format",
|
||||
"clangd.arguments": [
|
||||
"--compile-commands-dir=${workspaceFolder}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "cuda11.1-gcc8"
|
||||
}
|
||||
46
.devcontainer/cuda11.1-gcc9/devcontainer.json
Normal file
46
.devcontainer/cuda11.1-gcc9/devcontainer.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"shutdownAction": "stopContainer",
|
||||
"image": "rapidsai/devcontainers:24.06-cpp-gcc9-cuda11.1-ubuntu18.04",
|
||||
"hostRequirements": {
|
||||
"gpu": "optional"
|
||||
},
|
||||
"initializeCommand": [
|
||||
"/bin/bash",
|
||||
"-c",
|
||||
"mkdir -m 0755 -p ${localWorkspaceFolder}/.{aws,cache,config}"
|
||||
],
|
||||
"containerEnv": {
|
||||
"SCCACHE_REGION": "us-east-2",
|
||||
"SCCACHE_BUCKET": "rapids-sccache-devs",
|
||||
"VAULT_HOST": "https://vault.ops.k8s.rapids.ai",
|
||||
"HISTFILE": "${containerWorkspaceFolder}/.cache/._bash_history",
|
||||
"DEVCONTAINER_NAME": "cuda11.1-gcc9",
|
||||
"CCCL_CUDA_VERSION": "11.1",
|
||||
"CCCL_HOST_COMPILER": "gcc",
|
||||
"CCCL_HOST_COMPILER_VERSION": "9",
|
||||
"CCCL_BUILD_INFIX": "cuda11.1-gcc9"
|
||||
},
|
||||
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
|
||||
"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"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"xaver.clang-format"
|
||||
],
|
||||
"settings": {
|
||||
"editor.defaultFormatter": "xaver.clang-format",
|
||||
"clang-format.executable": "/usr/local/bin/clang-format",
|
||||
"clangd.arguments": [
|
||||
"--compile-commands-dir=${workspaceFolder}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "cuda11.1-gcc9"
|
||||
}
|
||||
46
.devcontainer/cuda11.1-llvm9/devcontainer.json
Normal file
46
.devcontainer/cuda11.1-llvm9/devcontainer.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"shutdownAction": "stopContainer",
|
||||
"image": "rapidsai/devcontainers:24.06-cpp-llvm9-cuda11.1-ubuntu18.04",
|
||||
"hostRequirements": {
|
||||
"gpu": "optional"
|
||||
},
|
||||
"initializeCommand": [
|
||||
"/bin/bash",
|
||||
"-c",
|
||||
"mkdir -m 0755 -p ${localWorkspaceFolder}/.{aws,cache,config}"
|
||||
],
|
||||
"containerEnv": {
|
||||
"SCCACHE_REGION": "us-east-2",
|
||||
"SCCACHE_BUCKET": "rapids-sccache-devs",
|
||||
"VAULT_HOST": "https://vault.ops.k8s.rapids.ai",
|
||||
"HISTFILE": "${containerWorkspaceFolder}/.cache/._bash_history",
|
||||
"DEVCONTAINER_NAME": "cuda11.1-llvm9",
|
||||
"CCCL_CUDA_VERSION": "11.1",
|
||||
"CCCL_HOST_COMPILER": "llvm",
|
||||
"CCCL_HOST_COMPILER_VERSION": "9",
|
||||
"CCCL_BUILD_INFIX": "cuda11.1-llvm9"
|
||||
},
|
||||
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
|
||||
"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"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"xaver.clang-format"
|
||||
],
|
||||
"settings": {
|
||||
"editor.defaultFormatter": "xaver.clang-format",
|
||||
"clang-format.executable": "/usr/local/bin/clang-format",
|
||||
"clangd.arguments": [
|
||||
"--compile-commands-dir=${workspaceFolder}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "cuda11.1-llvm9"
|
||||
}
|
||||
46
.devcontainer/cuda11.8-gcc11/devcontainer.json
Normal file
46
.devcontainer/cuda11.8-gcc11/devcontainer.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"shutdownAction": "stopContainer",
|
||||
"image": "rapidsai/devcontainers:24.06-cpp-gcc11-cuda11.8-ubuntu22.04",
|
||||
"hostRequirements": {
|
||||
"gpu": "optional"
|
||||
},
|
||||
"initializeCommand": [
|
||||
"/bin/bash",
|
||||
"-c",
|
||||
"mkdir -m 0755 -p ${localWorkspaceFolder}/.{aws,cache,config}"
|
||||
],
|
||||
"containerEnv": {
|
||||
"SCCACHE_REGION": "us-east-2",
|
||||
"SCCACHE_BUCKET": "rapids-sccache-devs",
|
||||
"VAULT_HOST": "https://vault.ops.k8s.rapids.ai",
|
||||
"HISTFILE": "${containerWorkspaceFolder}/.cache/._bash_history",
|
||||
"DEVCONTAINER_NAME": "cuda11.8-gcc11",
|
||||
"CCCL_CUDA_VERSION": "11.8",
|
||||
"CCCL_HOST_COMPILER": "gcc",
|
||||
"CCCL_HOST_COMPILER_VERSION": "11",
|
||||
"CCCL_BUILD_INFIX": "cuda11.8-gcc11"
|
||||
},
|
||||
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
|
||||
"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"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"xaver.clang-format"
|
||||
],
|
||||
"settings": {
|
||||
"editor.defaultFormatter": "xaver.clang-format",
|
||||
"clang-format.executable": "/usr/local/bin/clang-format",
|
||||
"clangd.arguments": [
|
||||
"--compile-commands-dir=${workspaceFolder}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "cuda11.8-gcc11"
|
||||
}
|
||||
46
.devcontainer/cuda12.4-gcc10/devcontainer.json
Normal file
46
.devcontainer/cuda12.4-gcc10/devcontainer.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"shutdownAction": "stopContainer",
|
||||
"image": "rapidsai/devcontainers:24.06-cpp-gcc10-cuda12.4-ubuntu20.04",
|
||||
"hostRequirements": {
|
||||
"gpu": "optional"
|
||||
},
|
||||
"initializeCommand": [
|
||||
"/bin/bash",
|
||||
"-c",
|
||||
"mkdir -m 0755 -p ${localWorkspaceFolder}/.{aws,cache,config}"
|
||||
],
|
||||
"containerEnv": {
|
||||
"SCCACHE_REGION": "us-east-2",
|
||||
"SCCACHE_BUCKET": "rapids-sccache-devs",
|
||||
"VAULT_HOST": "https://vault.ops.k8s.rapids.ai",
|
||||
"HISTFILE": "${containerWorkspaceFolder}/.cache/._bash_history",
|
||||
"DEVCONTAINER_NAME": "cuda12.4-gcc10",
|
||||
"CCCL_CUDA_VERSION": "12.4",
|
||||
"CCCL_HOST_COMPILER": "gcc",
|
||||
"CCCL_HOST_COMPILER_VERSION": "10",
|
||||
"CCCL_BUILD_INFIX": "cuda12.4-gcc10"
|
||||
},
|
||||
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
|
||||
"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"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"xaver.clang-format"
|
||||
],
|
||||
"settings": {
|
||||
"editor.defaultFormatter": "xaver.clang-format",
|
||||
"clang-format.executable": "/usr/local/bin/clang-format",
|
||||
"clangd.arguments": [
|
||||
"--compile-commands-dir=${workspaceFolder}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "cuda12.4-gcc10"
|
||||
}
|
||||
46
.devcontainer/cuda12.4-gcc11/devcontainer.json
Normal file
46
.devcontainer/cuda12.4-gcc11/devcontainer.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"shutdownAction": "stopContainer",
|
||||
"image": "rapidsai/devcontainers:24.06-cpp-gcc11-cuda12.4-ubuntu22.04",
|
||||
"hostRequirements": {
|
||||
"gpu": "optional"
|
||||
},
|
||||
"initializeCommand": [
|
||||
"/bin/bash",
|
||||
"-c",
|
||||
"mkdir -m 0755 -p ${localWorkspaceFolder}/.{aws,cache,config}"
|
||||
],
|
||||
"containerEnv": {
|
||||
"SCCACHE_REGION": "us-east-2",
|
||||
"SCCACHE_BUCKET": "rapids-sccache-devs",
|
||||
"VAULT_HOST": "https://vault.ops.k8s.rapids.ai",
|
||||
"HISTFILE": "${containerWorkspaceFolder}/.cache/._bash_history",
|
||||
"DEVCONTAINER_NAME": "cuda12.4-gcc11",
|
||||
"CCCL_CUDA_VERSION": "12.4",
|
||||
"CCCL_HOST_COMPILER": "gcc",
|
||||
"CCCL_HOST_COMPILER_VERSION": "11",
|
||||
"CCCL_BUILD_INFIX": "cuda12.4-gcc11"
|
||||
},
|
||||
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
|
||||
"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"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"xaver.clang-format"
|
||||
],
|
||||
"settings": {
|
||||
"editor.defaultFormatter": "xaver.clang-format",
|
||||
"clang-format.executable": "/usr/local/bin/clang-format",
|
||||
"clangd.arguments": [
|
||||
"--compile-commands-dir=${workspaceFolder}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "cuda12.4-gcc11"
|
||||
}
|
||||
46
.devcontainer/cuda12.4-gcc12/devcontainer.json
Normal file
46
.devcontainer/cuda12.4-gcc12/devcontainer.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"shutdownAction": "stopContainer",
|
||||
"image": "rapidsai/devcontainers:24.06-cpp-gcc12-cuda12.4-ubuntu22.04",
|
||||
"hostRequirements": {
|
||||
"gpu": "optional"
|
||||
},
|
||||
"initializeCommand": [
|
||||
"/bin/bash",
|
||||
"-c",
|
||||
"mkdir -m 0755 -p ${localWorkspaceFolder}/.{aws,cache,config}"
|
||||
],
|
||||
"containerEnv": {
|
||||
"SCCACHE_REGION": "us-east-2",
|
||||
"SCCACHE_BUCKET": "rapids-sccache-devs",
|
||||
"VAULT_HOST": "https://vault.ops.k8s.rapids.ai",
|
||||
"HISTFILE": "${containerWorkspaceFolder}/.cache/._bash_history",
|
||||
"DEVCONTAINER_NAME": "cuda12.4-gcc12",
|
||||
"CCCL_CUDA_VERSION": "12.4",
|
||||
"CCCL_HOST_COMPILER": "gcc",
|
||||
"CCCL_HOST_COMPILER_VERSION": "12",
|
||||
"CCCL_BUILD_INFIX": "cuda12.4-gcc12"
|
||||
},
|
||||
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
|
||||
"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"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"xaver.clang-format"
|
||||
],
|
||||
"settings": {
|
||||
"editor.defaultFormatter": "xaver.clang-format",
|
||||
"clang-format.executable": "/usr/local/bin/clang-format",
|
||||
"clangd.arguments": [
|
||||
"--compile-commands-dir=${workspaceFolder}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "cuda12.4-gcc12"
|
||||
}
|
||||
46
.devcontainer/cuda12.4-gcc7/devcontainer.json
Normal file
46
.devcontainer/cuda12.4-gcc7/devcontainer.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"shutdownAction": "stopContainer",
|
||||
"image": "rapidsai/devcontainers:24.06-cpp-gcc7-cuda12.4-ubuntu20.04",
|
||||
"hostRequirements": {
|
||||
"gpu": "optional"
|
||||
},
|
||||
"initializeCommand": [
|
||||
"/bin/bash",
|
||||
"-c",
|
||||
"mkdir -m 0755 -p ${localWorkspaceFolder}/.{aws,cache,config}"
|
||||
],
|
||||
"containerEnv": {
|
||||
"SCCACHE_REGION": "us-east-2",
|
||||
"SCCACHE_BUCKET": "rapids-sccache-devs",
|
||||
"VAULT_HOST": "https://vault.ops.k8s.rapids.ai",
|
||||
"HISTFILE": "${containerWorkspaceFolder}/.cache/._bash_history",
|
||||
"DEVCONTAINER_NAME": "cuda12.4-gcc7",
|
||||
"CCCL_CUDA_VERSION": "12.4",
|
||||
"CCCL_HOST_COMPILER": "gcc",
|
||||
"CCCL_HOST_COMPILER_VERSION": "7",
|
||||
"CCCL_BUILD_INFIX": "cuda12.4-gcc7"
|
||||
},
|
||||
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
|
||||
"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"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"xaver.clang-format"
|
||||
],
|
||||
"settings": {
|
||||
"editor.defaultFormatter": "xaver.clang-format",
|
||||
"clang-format.executable": "/usr/local/bin/clang-format",
|
||||
"clangd.arguments": [
|
||||
"--compile-commands-dir=${workspaceFolder}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "cuda12.4-gcc7"
|
||||
}
|
||||
46
.devcontainer/cuda12.4-gcc8/devcontainer.json
Normal file
46
.devcontainer/cuda12.4-gcc8/devcontainer.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"shutdownAction": "stopContainer",
|
||||
"image": "rapidsai/devcontainers:24.06-cpp-gcc8-cuda12.4-ubuntu20.04",
|
||||
"hostRequirements": {
|
||||
"gpu": "optional"
|
||||
},
|
||||
"initializeCommand": [
|
||||
"/bin/bash",
|
||||
"-c",
|
||||
"mkdir -m 0755 -p ${localWorkspaceFolder}/.{aws,cache,config}"
|
||||
],
|
||||
"containerEnv": {
|
||||
"SCCACHE_REGION": "us-east-2",
|
||||
"SCCACHE_BUCKET": "rapids-sccache-devs",
|
||||
"VAULT_HOST": "https://vault.ops.k8s.rapids.ai",
|
||||
"HISTFILE": "${containerWorkspaceFolder}/.cache/._bash_history",
|
||||
"DEVCONTAINER_NAME": "cuda12.4-gcc8",
|
||||
"CCCL_CUDA_VERSION": "12.4",
|
||||
"CCCL_HOST_COMPILER": "gcc",
|
||||
"CCCL_HOST_COMPILER_VERSION": "8",
|
||||
"CCCL_BUILD_INFIX": "cuda12.4-gcc8"
|
||||
},
|
||||
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
|
||||
"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"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"xaver.clang-format"
|
||||
],
|
||||
"settings": {
|
||||
"editor.defaultFormatter": "xaver.clang-format",
|
||||
"clang-format.executable": "/usr/local/bin/clang-format",
|
||||
"clangd.arguments": [
|
||||
"--compile-commands-dir=${workspaceFolder}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "cuda12.4-gcc8"
|
||||
}
|
||||
46
.devcontainer/cuda12.4-gcc9/devcontainer.json
Normal file
46
.devcontainer/cuda12.4-gcc9/devcontainer.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"shutdownAction": "stopContainer",
|
||||
"image": "rapidsai/devcontainers:24.06-cpp-gcc9-cuda12.4-ubuntu20.04",
|
||||
"hostRequirements": {
|
||||
"gpu": "optional"
|
||||
},
|
||||
"initializeCommand": [
|
||||
"/bin/bash",
|
||||
"-c",
|
||||
"mkdir -m 0755 -p ${localWorkspaceFolder}/.{aws,cache,config}"
|
||||
],
|
||||
"containerEnv": {
|
||||
"SCCACHE_REGION": "us-east-2",
|
||||
"SCCACHE_BUCKET": "rapids-sccache-devs",
|
||||
"VAULT_HOST": "https://vault.ops.k8s.rapids.ai",
|
||||
"HISTFILE": "${containerWorkspaceFolder}/.cache/._bash_history",
|
||||
"DEVCONTAINER_NAME": "cuda12.4-gcc9",
|
||||
"CCCL_CUDA_VERSION": "12.4",
|
||||
"CCCL_HOST_COMPILER": "gcc",
|
||||
"CCCL_HOST_COMPILER_VERSION": "9",
|
||||
"CCCL_BUILD_INFIX": "cuda12.4-gcc9"
|
||||
},
|
||||
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
|
||||
"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"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"xaver.clang-format"
|
||||
],
|
||||
"settings": {
|
||||
"editor.defaultFormatter": "xaver.clang-format",
|
||||
"clang-format.executable": "/usr/local/bin/clang-format",
|
||||
"clangd.arguments": [
|
||||
"--compile-commands-dir=${workspaceFolder}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "cuda12.4-gcc9"
|
||||
}
|
||||
46
.devcontainer/cuda12.4-llvm10/devcontainer.json
Normal file
46
.devcontainer/cuda12.4-llvm10/devcontainer.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"shutdownAction": "stopContainer",
|
||||
"image": "rapidsai/devcontainers:24.06-cpp-llvm10-cuda12.4-ubuntu20.04",
|
||||
"hostRequirements": {
|
||||
"gpu": "optional"
|
||||
},
|
||||
"initializeCommand": [
|
||||
"/bin/bash",
|
||||
"-c",
|
||||
"mkdir -m 0755 -p ${localWorkspaceFolder}/.{aws,cache,config}"
|
||||
],
|
||||
"containerEnv": {
|
||||
"SCCACHE_REGION": "us-east-2",
|
||||
"SCCACHE_BUCKET": "rapids-sccache-devs",
|
||||
"VAULT_HOST": "https://vault.ops.k8s.rapids.ai",
|
||||
"HISTFILE": "${containerWorkspaceFolder}/.cache/._bash_history",
|
||||
"DEVCONTAINER_NAME": "cuda12.4-llvm10",
|
||||
"CCCL_CUDA_VERSION": "12.4",
|
||||
"CCCL_HOST_COMPILER": "llvm",
|
||||
"CCCL_HOST_COMPILER_VERSION": "10",
|
||||
"CCCL_BUILD_INFIX": "cuda12.4-llvm10"
|
||||
},
|
||||
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
|
||||
"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"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"xaver.clang-format"
|
||||
],
|
||||
"settings": {
|
||||
"editor.defaultFormatter": "xaver.clang-format",
|
||||
"clang-format.executable": "/usr/local/bin/clang-format",
|
||||
"clangd.arguments": [
|
||||
"--compile-commands-dir=${workspaceFolder}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "cuda12.4-llvm10"
|
||||
}
|
||||
46
.devcontainer/cuda12.4-llvm11/devcontainer.json
Normal file
46
.devcontainer/cuda12.4-llvm11/devcontainer.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"shutdownAction": "stopContainer",
|
||||
"image": "rapidsai/devcontainers:24.06-cpp-llvm11-cuda12.4-ubuntu20.04",
|
||||
"hostRequirements": {
|
||||
"gpu": "optional"
|
||||
},
|
||||
"initializeCommand": [
|
||||
"/bin/bash",
|
||||
"-c",
|
||||
"mkdir -m 0755 -p ${localWorkspaceFolder}/.{aws,cache,config}"
|
||||
],
|
||||
"containerEnv": {
|
||||
"SCCACHE_REGION": "us-east-2",
|
||||
"SCCACHE_BUCKET": "rapids-sccache-devs",
|
||||
"VAULT_HOST": "https://vault.ops.k8s.rapids.ai",
|
||||
"HISTFILE": "${containerWorkspaceFolder}/.cache/._bash_history",
|
||||
"DEVCONTAINER_NAME": "cuda12.4-llvm11",
|
||||
"CCCL_CUDA_VERSION": "12.4",
|
||||
"CCCL_HOST_COMPILER": "llvm",
|
||||
"CCCL_HOST_COMPILER_VERSION": "11",
|
||||
"CCCL_BUILD_INFIX": "cuda12.4-llvm11"
|
||||
},
|
||||
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
|
||||
"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"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"xaver.clang-format"
|
||||
],
|
||||
"settings": {
|
||||
"editor.defaultFormatter": "xaver.clang-format",
|
||||
"clang-format.executable": "/usr/local/bin/clang-format",
|
||||
"clangd.arguments": [
|
||||
"--compile-commands-dir=${workspaceFolder}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "cuda12.4-llvm11"
|
||||
}
|
||||
46
.devcontainer/cuda12.4-llvm12/devcontainer.json
Normal file
46
.devcontainer/cuda12.4-llvm12/devcontainer.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"shutdownAction": "stopContainer",
|
||||
"image": "rapidsai/devcontainers:24.06-cpp-llvm12-cuda12.4-ubuntu20.04",
|
||||
"hostRequirements": {
|
||||
"gpu": "optional"
|
||||
},
|
||||
"initializeCommand": [
|
||||
"/bin/bash",
|
||||
"-c",
|
||||
"mkdir -m 0755 -p ${localWorkspaceFolder}/.{aws,cache,config}"
|
||||
],
|
||||
"containerEnv": {
|
||||
"SCCACHE_REGION": "us-east-2",
|
||||
"SCCACHE_BUCKET": "rapids-sccache-devs",
|
||||
"VAULT_HOST": "https://vault.ops.k8s.rapids.ai",
|
||||
"HISTFILE": "${containerWorkspaceFolder}/.cache/._bash_history",
|
||||
"DEVCONTAINER_NAME": "cuda12.4-llvm12",
|
||||
"CCCL_CUDA_VERSION": "12.4",
|
||||
"CCCL_HOST_COMPILER": "llvm",
|
||||
"CCCL_HOST_COMPILER_VERSION": "12",
|
||||
"CCCL_BUILD_INFIX": "cuda12.4-llvm12"
|
||||
},
|
||||
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
|
||||
"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"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"xaver.clang-format"
|
||||
],
|
||||
"settings": {
|
||||
"editor.defaultFormatter": "xaver.clang-format",
|
||||
"clang-format.executable": "/usr/local/bin/clang-format",
|
||||
"clangd.arguments": [
|
||||
"--compile-commands-dir=${workspaceFolder}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "cuda12.4-llvm12"
|
||||
}
|
||||
46
.devcontainer/cuda12.4-llvm13/devcontainer.json
Normal file
46
.devcontainer/cuda12.4-llvm13/devcontainer.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"shutdownAction": "stopContainer",
|
||||
"image": "rapidsai/devcontainers:24.06-cpp-llvm13-cuda12.4-ubuntu20.04",
|
||||
"hostRequirements": {
|
||||
"gpu": "optional"
|
||||
},
|
||||
"initializeCommand": [
|
||||
"/bin/bash",
|
||||
"-c",
|
||||
"mkdir -m 0755 -p ${localWorkspaceFolder}/.{aws,cache,config}"
|
||||
],
|
||||
"containerEnv": {
|
||||
"SCCACHE_REGION": "us-east-2",
|
||||
"SCCACHE_BUCKET": "rapids-sccache-devs",
|
||||
"VAULT_HOST": "https://vault.ops.k8s.rapids.ai",
|
||||
"HISTFILE": "${containerWorkspaceFolder}/.cache/._bash_history",
|
||||
"DEVCONTAINER_NAME": "cuda12.4-llvm13",
|
||||
"CCCL_CUDA_VERSION": "12.4",
|
||||
"CCCL_HOST_COMPILER": "llvm",
|
||||
"CCCL_HOST_COMPILER_VERSION": "13",
|
||||
"CCCL_BUILD_INFIX": "cuda12.4-llvm13"
|
||||
},
|
||||
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
|
||||
"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"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"xaver.clang-format"
|
||||
],
|
||||
"settings": {
|
||||
"editor.defaultFormatter": "xaver.clang-format",
|
||||
"clang-format.executable": "/usr/local/bin/clang-format",
|
||||
"clangd.arguments": [
|
||||
"--compile-commands-dir=${workspaceFolder}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "cuda12.4-llvm13"
|
||||
}
|
||||
46
.devcontainer/cuda12.4-llvm14/devcontainer.json
Normal file
46
.devcontainer/cuda12.4-llvm14/devcontainer.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"shutdownAction": "stopContainer",
|
||||
"image": "rapidsai/devcontainers:24.06-cpp-llvm14-cuda12.4-ubuntu20.04",
|
||||
"hostRequirements": {
|
||||
"gpu": "optional"
|
||||
},
|
||||
"initializeCommand": [
|
||||
"/bin/bash",
|
||||
"-c",
|
||||
"mkdir -m 0755 -p ${localWorkspaceFolder}/.{aws,cache,config}"
|
||||
],
|
||||
"containerEnv": {
|
||||
"SCCACHE_REGION": "us-east-2",
|
||||
"SCCACHE_BUCKET": "rapids-sccache-devs",
|
||||
"VAULT_HOST": "https://vault.ops.k8s.rapids.ai",
|
||||
"HISTFILE": "${containerWorkspaceFolder}/.cache/._bash_history",
|
||||
"DEVCONTAINER_NAME": "cuda12.4-llvm14",
|
||||
"CCCL_CUDA_VERSION": "12.4",
|
||||
"CCCL_HOST_COMPILER": "llvm",
|
||||
"CCCL_HOST_COMPILER_VERSION": "14",
|
||||
"CCCL_BUILD_INFIX": "cuda12.4-llvm14"
|
||||
},
|
||||
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
|
||||
"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"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"xaver.clang-format"
|
||||
],
|
||||
"settings": {
|
||||
"editor.defaultFormatter": "xaver.clang-format",
|
||||
"clang-format.executable": "/usr/local/bin/clang-format",
|
||||
"clangd.arguments": [
|
||||
"--compile-commands-dir=${workspaceFolder}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "cuda12.4-llvm14"
|
||||
}
|
||||
46
.devcontainer/cuda12.4-llvm15/devcontainer.json
Normal file
46
.devcontainer/cuda12.4-llvm15/devcontainer.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"shutdownAction": "stopContainer",
|
||||
"image": "rapidsai/devcontainers:24.06-cpp-llvm15-cuda12.4-ubuntu22.04",
|
||||
"hostRequirements": {
|
||||
"gpu": "optional"
|
||||
},
|
||||
"initializeCommand": [
|
||||
"/bin/bash",
|
||||
"-c",
|
||||
"mkdir -m 0755 -p ${localWorkspaceFolder}/.{aws,cache,config}"
|
||||
],
|
||||
"containerEnv": {
|
||||
"SCCACHE_REGION": "us-east-2",
|
||||
"SCCACHE_BUCKET": "rapids-sccache-devs",
|
||||
"VAULT_HOST": "https://vault.ops.k8s.rapids.ai",
|
||||
"HISTFILE": "${containerWorkspaceFolder}/.cache/._bash_history",
|
||||
"DEVCONTAINER_NAME": "cuda12.4-llvm15",
|
||||
"CCCL_CUDA_VERSION": "12.4",
|
||||
"CCCL_HOST_COMPILER": "llvm",
|
||||
"CCCL_HOST_COMPILER_VERSION": "15",
|
||||
"CCCL_BUILD_INFIX": "cuda12.4-llvm15"
|
||||
},
|
||||
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
|
||||
"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"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"xaver.clang-format"
|
||||
],
|
||||
"settings": {
|
||||
"editor.defaultFormatter": "xaver.clang-format",
|
||||
"clang-format.executable": "/usr/local/bin/clang-format",
|
||||
"clangd.arguments": [
|
||||
"--compile-commands-dir=${workspaceFolder}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "cuda12.4-llvm15"
|
||||
}
|
||||
46
.devcontainer/cuda12.4-llvm16/devcontainer.json
Normal file
46
.devcontainer/cuda12.4-llvm16/devcontainer.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"shutdownAction": "stopContainer",
|
||||
"image": "rapidsai/devcontainers:24.06-cpp-llvm16-cuda12.4-ubuntu22.04",
|
||||
"hostRequirements": {
|
||||
"gpu": "optional"
|
||||
},
|
||||
"initializeCommand": [
|
||||
"/bin/bash",
|
||||
"-c",
|
||||
"mkdir -m 0755 -p ${localWorkspaceFolder}/.{aws,cache,config}"
|
||||
],
|
||||
"containerEnv": {
|
||||
"SCCACHE_REGION": "us-east-2",
|
||||
"SCCACHE_BUCKET": "rapids-sccache-devs",
|
||||
"VAULT_HOST": "https://vault.ops.k8s.rapids.ai",
|
||||
"HISTFILE": "${containerWorkspaceFolder}/.cache/._bash_history",
|
||||
"DEVCONTAINER_NAME": "cuda12.4-llvm16",
|
||||
"CCCL_CUDA_VERSION": "12.4",
|
||||
"CCCL_HOST_COMPILER": "llvm",
|
||||
"CCCL_HOST_COMPILER_VERSION": "16",
|
||||
"CCCL_BUILD_INFIX": "cuda12.4-llvm16"
|
||||
},
|
||||
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
|
||||
"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"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"xaver.clang-format"
|
||||
],
|
||||
"settings": {
|
||||
"editor.defaultFormatter": "xaver.clang-format",
|
||||
"clang-format.executable": "/usr/local/bin/clang-format",
|
||||
"clangd.arguments": [
|
||||
"--compile-commands-dir=${workspaceFolder}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "cuda12.4-llvm16"
|
||||
}
|
||||
46
.devcontainer/cuda12.4-llvm9/devcontainer.json
Normal file
46
.devcontainer/cuda12.4-llvm9/devcontainer.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"shutdownAction": "stopContainer",
|
||||
"image": "rapidsai/devcontainers:24.06-cpp-llvm9-cuda12.4-ubuntu20.04",
|
||||
"hostRequirements": {
|
||||
"gpu": "optional"
|
||||
},
|
||||
"initializeCommand": [
|
||||
"/bin/bash",
|
||||
"-c",
|
||||
"mkdir -m 0755 -p ${localWorkspaceFolder}/.{aws,cache,config}"
|
||||
],
|
||||
"containerEnv": {
|
||||
"SCCACHE_REGION": "us-east-2",
|
||||
"SCCACHE_BUCKET": "rapids-sccache-devs",
|
||||
"VAULT_HOST": "https://vault.ops.k8s.rapids.ai",
|
||||
"HISTFILE": "${containerWorkspaceFolder}/.cache/._bash_history",
|
||||
"DEVCONTAINER_NAME": "cuda12.4-llvm9",
|
||||
"CCCL_CUDA_VERSION": "12.4",
|
||||
"CCCL_HOST_COMPILER": "llvm",
|
||||
"CCCL_HOST_COMPILER_VERSION": "9",
|
||||
"CCCL_BUILD_INFIX": "cuda12.4-llvm9"
|
||||
},
|
||||
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
|
||||
"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"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"xaver.clang-format"
|
||||
],
|
||||
"settings": {
|
||||
"editor.defaultFormatter": "xaver.clang-format",
|
||||
"clang-format.executable": "/usr/local/bin/clang-format",
|
||||
"clangd.arguments": [
|
||||
"--compile-commands-dir=${workspaceFolder}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "cuda12.4-llvm9"
|
||||
}
|
||||
46
.devcontainer/cuda12.4-oneapi2023.2.0/devcontainer.json
Normal file
46
.devcontainer/cuda12.4-oneapi2023.2.0/devcontainer.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"shutdownAction": "stopContainer",
|
||||
"image": "rapidsai/devcontainers:24.06-cpp-oneapi2023.2.0-cuda12.4-ubuntu22.04",
|
||||
"hostRequirements": {
|
||||
"gpu": "optional"
|
||||
},
|
||||
"initializeCommand": [
|
||||
"/bin/bash",
|
||||
"-c",
|
||||
"mkdir -m 0755 -p ${localWorkspaceFolder}/.{aws,cache,config}"
|
||||
],
|
||||
"containerEnv": {
|
||||
"SCCACHE_REGION": "us-east-2",
|
||||
"SCCACHE_BUCKET": "rapids-sccache-devs",
|
||||
"VAULT_HOST": "https://vault.ops.k8s.rapids.ai",
|
||||
"HISTFILE": "${containerWorkspaceFolder}/.cache/._bash_history",
|
||||
"DEVCONTAINER_NAME": "cuda12.4-oneapi2023.2.0",
|
||||
"CCCL_CUDA_VERSION": "12.4",
|
||||
"CCCL_HOST_COMPILER": "oneapi",
|
||||
"CCCL_HOST_COMPILER_VERSION": "2023.2.0",
|
||||
"CCCL_BUILD_INFIX": "cuda12.4-oneapi2023.2.0"
|
||||
},
|
||||
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
|
||||
"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"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"xaver.clang-format"
|
||||
],
|
||||
"settings": {
|
||||
"editor.defaultFormatter": "xaver.clang-format",
|
||||
"clang-format.executable": "/usr/local/bin/clang-format",
|
||||
"clangd.arguments": [
|
||||
"--compile-commands-dir=${workspaceFolder}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "cuda12.4-oneapi2023.2.0"
|
||||
}
|
||||
46
.devcontainer/devcontainer.json
Normal file
46
.devcontainer/devcontainer.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"shutdownAction": "stopContainer",
|
||||
"image": "rapidsai/devcontainers:24.06-cpp-gcc12-cuda12.4-ubuntu22.04",
|
||||
"hostRequirements": {
|
||||
"gpu": "optional"
|
||||
},
|
||||
"initializeCommand": [
|
||||
"/bin/bash",
|
||||
"-c",
|
||||
"mkdir -m 0755 -p ${localWorkspaceFolder}/.{aws,cache,config}"
|
||||
],
|
||||
"containerEnv": {
|
||||
"SCCACHE_REGION": "us-east-2",
|
||||
"SCCACHE_BUCKET": "rapids-sccache-devs",
|
||||
"VAULT_HOST": "https://vault.ops.k8s.rapids.ai",
|
||||
"HISTFILE": "${containerWorkspaceFolder}/.cache/._bash_history",
|
||||
"DEVCONTAINER_NAME": "cuda12.4-gcc12",
|
||||
"CCCL_CUDA_VERSION": "12.4",
|
||||
"CCCL_HOST_COMPILER": "gcc",
|
||||
"CCCL_HOST_COMPILER_VERSION": "12",
|
||||
"CCCL_BUILD_INFIX": "cuda12.4-gcc12"
|
||||
},
|
||||
"workspaceFolder": "/home/coder/${localWorkspaceFolderBasename}",
|
||||
"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"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"xaver.clang-format"
|
||||
],
|
||||
"settings": {
|
||||
"editor.defaultFormatter": "xaver.clang-format",
|
||||
"clang-format.executable": "/usr/local/bin/clang-format",
|
||||
"clangd.arguments": [
|
||||
"--compile-commands-dir=${workspaceFolder}"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "cuda12.4-gcc12"
|
||||
}
|
||||
BIN
.devcontainer/img/container_list.png
Normal file
BIN
.devcontainer/img/container_list.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 156 KiB |
BIN
.devcontainer/img/github_auth.png
Normal file
BIN
.devcontainer/img/github_auth.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 53 KiB |
BIN
.devcontainer/img/open_in_container_manual.png
Normal file
BIN
.devcontainer/img/open_in_container_manual.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 57 KiB |
BIN
.devcontainer/img/reopen_in_container.png
Normal file
BIN
.devcontainer/img/reopen_in_container.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
130
.devcontainer/launch.sh
Executable file
130
.devcontainer/launch.sh
Executable file
@@ -0,0 +1,130 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Ensure the script is being executed in the cccl/ root
|
||||
cd "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/..";
|
||||
|
||||
print_help() {
|
||||
echo "Usage: $0 [-c|--cuda <CUDA version>] [-H|--host <Host compiler>] [-d|--docker]"
|
||||
echo "Launch a development container. If no CUDA version or Host compiler are specified,"
|
||||
echo "the top-level devcontainer in .devcontainer/devcontainer.json will be used."
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " -c, --cuda Specify the CUDA version. E.g., 12.2"
|
||||
echo " -H, --host Specify the host compiler. E.g., gcc12"
|
||||
echo " -d, --docker Launch the development environment in Docker directly without using VSCode."
|
||||
echo " -h, --help Display this help message and exit."
|
||||
}
|
||||
|
||||
parse_options() {
|
||||
local OPTIONS=c:H:dh
|
||||
local LONG_OPTIONS=cuda:,host:,docker,help
|
||||
local PARSED_OPTIONS=$(getopt -n "$0" -o "${OPTIONS}" --long "${LONG_OPTIONS}" -- "$@")
|
||||
|
||||
if [[ $? -ne 0 ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
eval set -- "${PARSED_OPTIONS}"
|
||||
|
||||
while true; do
|
||||
case "$1" in
|
||||
-c|--cuda)
|
||||
cuda_version="$2"
|
||||
shift 2
|
||||
;;
|
||||
-H|--host)
|
||||
host_compiler="$2"
|
||||
shift 2
|
||||
;;
|
||||
-d|--docker)
|
||||
docker_mode=true
|
||||
shift
|
||||
;;
|
||||
-h|--help)
|
||||
print_help
|
||||
exit 0
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
*)
|
||||
echo "Invalid option: $1"
|
||||
print_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
launch_docker() {
|
||||
DOCKER_IMAGE=$(grep "image" "${path}/devcontainer.json" | sed 's/.*: "\(.*\)",/\1/')
|
||||
echo "Found image: ${DOCKER_IMAGE}"
|
||||
docker pull ${DOCKER_IMAGE}
|
||||
docker run \
|
||||
-it --rm \
|
||||
--user coder \
|
||||
--workdir /home/coder/cccl \
|
||||
--mount type=bind,src="$(pwd)",dst='/home/coder/cccl' \
|
||||
${DOCKER_IMAGE} \
|
||||
/bin/bash
|
||||
}
|
||||
|
||||
launch_vscode() {
|
||||
# Since Visual Studio Code allows only one instance per `devcontainer.json`,
|
||||
# this code prepares a unique temporary directory structure for each launch of a devcontainer.
|
||||
# By doing so, it ensures that multiple instances of the same environment can be run
|
||||
# simultaneously. The script replicates the `devcontainer.json` from the desired CUDA
|
||||
# and compiler environment into this temporary directory, adjusting paths to ensure the
|
||||
# correct workspace is loaded. A special URL is then generated to instruct VSCode to
|
||||
# launch the development container using this temporary configuration.
|
||||
local workspace="$(basename "$(pwd)")"
|
||||
local tmpdir="$(mktemp -d)/${workspace}"
|
||||
mkdir -p "${tmpdir}"
|
||||
mkdir -p "${tmpdir}/.devcontainer"
|
||||
cp -arL "${path}/devcontainer.json" "${tmpdir}/.devcontainer"
|
||||
sed -i 's@\\${localWorkspaceFolder}@$(pwd)@g' "${tmpdir}/.devcontainer/devcontainer.json"
|
||||
local path="${tmpdir}"
|
||||
local hash="$(echo -n "${path}" | xxd -pu - | tr -d '[:space:]')"
|
||||
local url="vscode://vscode-remote/dev-container+${hash}/home/coder/cccl"
|
||||
|
||||
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
|
||||
echo "Launching VSCode Dev Container URL: ${url}"
|
||||
code --new-window "${tmpdir}"
|
||||
exec "${launch}" "${url}" >/dev/null 2>&1
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
parse_options "$@"
|
||||
|
||||
# If no CTK/Host compiler are provided, just use the default environment
|
||||
if [[ -z ${cuda_version:-} ]] && [[ -z ${host_compiler:-} ]]; then
|
||||
path=".devcontainer"
|
||||
else
|
||||
path=".devcontainer/cuda${cuda_version}-${host_compiler}"
|
||||
if [[ ! -f "${path}/devcontainer.json" ]]; then
|
||||
echo "Unknown CUDA [${cuda_version}] compiler [${host_compiler}] combination"
|
||||
echo "Requested devcontainer ${path}/devcontainer.json does not exist"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if ${docker_mode:-'false'}; then
|
||||
launch_docker
|
||||
else
|
||||
launch_vscode
|
||||
fi
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
141
.devcontainer/make_devcontainers.sh
Executable file
141
.devcontainer/make_devcontainers.sh
Executable file
@@ -0,0 +1,141 @@
|
||||
#!/bin/bash
|
||||
|
||||
# This script parses the CI matrix.yaml file and generates a devcontainer.json file for each unique combination of
|
||||
# CUDA version, compiler name/version, and Ubuntu version. The devcontainer.json files are written to the
|
||||
# .devcontainer directory to a subdirectory named after the CUDA version and compiler name/version.
|
||||
# GitHub docs on using multiple devcontainer.json files:
|
||||
# https://docs.github.com/en/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers#devcontainerjson
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Ensure the script is being executed in its containing directory
|
||||
cd "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )";
|
||||
|
||||
|
||||
function usage {
|
||||
echo "Usage: $0 [--clean] [-h/--help] [-v/--verbose]"
|
||||
echo " --clean Remove stale devcontainer subdirectories"
|
||||
echo " -h, --help Display this help message"
|
||||
echo " -v, --verbose Enable verbose mode (set -x)"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Function to update the devcontainer.json file with the provided parameters
|
||||
update_devcontainer() {
|
||||
local input_file="$1"
|
||||
local output_file="$2"
|
||||
local name="$3"
|
||||
local cuda_version="$4"
|
||||
local compiler_name="$5"
|
||||
local compiler_exe="$6"
|
||||
local compiler_version="$7"
|
||||
local os="$8"
|
||||
local devcontainer_version="$9"
|
||||
|
||||
local IMAGE_ROOT="rapidsai/devcontainers:${devcontainer_version}-cpp-"
|
||||
local image="${IMAGE_ROOT}${compiler_name}${compiler_version}-cuda${cuda_version}-${os}"
|
||||
|
||||
jq --arg image "$image" --arg name "$name" \
|
||||
--arg cuda_version "$cuda_version" --arg compiler_name "$compiler_name" \
|
||||
--arg compiler_exe "$compiler_exe" --arg compiler_version "$compiler_version" --arg os "$os" \
|
||||
'.image = $image | .name = $name | .containerEnv.DEVCONTAINER_NAME = $name |
|
||||
.containerEnv.CCCL_BUILD_INFIX = $name |
|
||||
.containerEnv.CCCL_CUDA_VERSION = $cuda_version | .containerEnv.CCCL_HOST_COMPILER = $compiler_name |
|
||||
.containerEnv.CCCL_HOST_COMPILER_VERSION = $compiler_version '\
|
||||
"$input_file" > "$output_file"
|
||||
}
|
||||
|
||||
make_name() {
|
||||
local cuda_version="$1"
|
||||
local compiler_name="$2"
|
||||
local compiler_version="$3"
|
||||
|
||||
echo "cuda$cuda_version-$compiler_name$compiler_version"
|
||||
}
|
||||
|
||||
CLEAN=false
|
||||
VERBOSE=false
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--clean)
|
||||
CLEAN=true
|
||||
;;
|
||||
-h|--help)
|
||||
usage
|
||||
;;
|
||||
-v|--verbose)
|
||||
VERBOSE=true
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
MATRIX_FILE="../ci/matrix.yaml"
|
||||
|
||||
# Enable verbose mode if requested
|
||||
if [ "$VERBOSE" = true ]; then
|
||||
set -x
|
||||
cat ${MATRIX_FILE}
|
||||
fi
|
||||
|
||||
# Read matrix.yaml and convert it to json
|
||||
matrix_json=$(yq -o json ${MATRIX_FILE})
|
||||
|
||||
# Exclude Windows environments
|
||||
readonly matrix_json=$(echo "$matrix_json" | jq 'del(.pull_request.nvcc[] | select(.os | contains("windows")))')
|
||||
|
||||
# Get the devcontainer image version and define image tag root
|
||||
readonly DEVCONTAINER_VERSION=$(echo "$matrix_json" | jq -r '.devcontainer_version')
|
||||
|
||||
# Get unique combinations of cuda version, compiler name/version, and Ubuntu version
|
||||
readonly combinations=$(echo "$matrix_json" | jq -c '[.pull_request.nvcc[] | {cuda: .cuda, compiler_name: .compiler.name, compiler_exe: .compiler.exe, compiler_version: .compiler.version, os: .os}] | unique | .[]')
|
||||
|
||||
# Update the base devcontainer with the default values
|
||||
# The root devcontainer.json file is used as the default container as well as a template for all
|
||||
# other devcontainer.json files by replacing the `image:` field with the appropriate image name
|
||||
readonly base_devcontainer_file="./devcontainer.json"
|
||||
readonly NEWEST_GCC_CUDA_ENTRY=$(echo "$combinations" | jq -rs '[.[] | select(.compiler_name == "gcc")] | sort_by((.cuda | tonumber), (.compiler_version | tonumber)) | .[-1]')
|
||||
readonly DEFAULT_CUDA=$(echo "$NEWEST_GCC_CUDA_ENTRY" | jq -r '.cuda')
|
||||
readonly DEFAULT_COMPILER_NAME=$(echo "$NEWEST_GCC_CUDA_ENTRY" | jq -r '.compiler_name')
|
||||
readonly DEFAULT_COMPILER_EXE=$(echo "$NEWEST_GCC_CUDA_ENTRY" | jq -r '.compiler_exe')
|
||||
readonly DEFAULT_COMPILER_VERSION=$(echo "$NEWEST_GCC_CUDA_ENTRY" | jq -r '.compiler_version')
|
||||
readonly DEFAULT_OS=$(echo "$NEWEST_GCC_CUDA_ENTRY" | jq -r '.os')
|
||||
readonly DEFAULT_NAME=$(make_name "$DEFAULT_CUDA" "$DEFAULT_COMPILER_NAME" "$DEFAULT_COMPILER_VERSION")
|
||||
|
||||
update_devcontainer ${base_devcontainer_file} "./temp_devcontainer.json" "$DEFAULT_NAME" "$DEFAULT_CUDA" "$DEFAULT_COMPILER_NAME" "$DEFAULT_COMPILER_EXE" "$DEFAULT_COMPILER_VERSION" "$DEFAULT_OS" "$DEVCONTAINER_VERSION"
|
||||
mv "./temp_devcontainer.json" ${base_devcontainer_file}
|
||||
|
||||
# Create an array to keep track of valid subdirectory names
|
||||
valid_subdirs=()
|
||||
|
||||
# For each unique combination
|
||||
for combination in $combinations; do
|
||||
cuda_version=$(echo "$combination" | jq -r '.cuda')
|
||||
compiler_name=$(echo "$combination" | jq -r '.compiler_name')
|
||||
compiler_exe=$(echo "$combination" | jq -r '.compiler_exe')
|
||||
compiler_version=$(echo "$combination" | jq -r '.compiler_version')
|
||||
os=$(echo "$combination" | jq -r '.os')
|
||||
|
||||
name=$(make_name "$cuda_version" "$compiler_name" "$compiler_version")
|
||||
mkdir -p "$name"
|
||||
new_devcontainer_file="$name/devcontainer.json"
|
||||
|
||||
update_devcontainer "$base_devcontainer_file" "$new_devcontainer_file" "$name" "$cuda_version" "$compiler_name" "$compiler_exe" "$compiler_version" "$os" "$DEVCONTAINER_VERSION"
|
||||
echo "Created $new_devcontainer_file"
|
||||
|
||||
# Add the subdirectory name to the valid_subdirs array
|
||||
valid_subdirs+=("$name")
|
||||
done
|
||||
|
||||
# Clean up stale subdirectories and devcontainer.json files
|
||||
if [ "$CLEAN" = true ]; then
|
||||
for subdir in ./*; do
|
||||
if [ -d "$subdir" ] && [[ ! " ${valid_subdirs[@]} " =~ " ${subdir#./} " ]]; then
|
||||
echo "Removing stale subdirectory: $subdir"
|
||||
rm -r "$subdir"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
89
.devcontainer/verify_devcontainer.sh
Executable file
89
.devcontainer/verify_devcontainer.sh
Executable file
@@ -0,0 +1,89 @@
|
||||
#!/bin/bash
|
||||
|
||||
function usage {
|
||||
echo "Usage: $0"
|
||||
echo
|
||||
echo "This script is intended to be run within one of CCCL's Dev Containers."
|
||||
echo "It verifies that the expected environment variables and binary versions match what is expected."
|
||||
}
|
||||
|
||||
check_envvars() {
|
||||
for var_name in "$@"; do
|
||||
if [[ -z "${!var_name:-}" ]]; then
|
||||
echo "::error:: ${var_name} variable is not set."
|
||||
exit 1
|
||||
else
|
||||
echo "$var_name=${!var_name}"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
check_host_compiler_version() {
|
||||
local version_output=$($CXX --version)
|
||||
|
||||
if [[ "$CXX" == "g++" ]]; then
|
||||
local actual_version=$(echo "$version_output" | head -n 1 | cut -d ' ' -f 4 | cut -d '.' -f 1)
|
||||
local expected_compiler="gcc"
|
||||
elif [[ "$CXX" == "clang++" ]]; then
|
||||
if [[ $version_output =~ clang\ version\ ([0-9]+) ]]; then
|
||||
actual_version=${BASH_REMATCH[1]}
|
||||
else
|
||||
echo "::error:: Unable to determine clang version."
|
||||
exit 1
|
||||
fi
|
||||
expected_compiler="llvm"
|
||||
elif [[ "$CXX" == "icpc" ]]; then
|
||||
local actual_version=$(echo "$version_output" | head -n 1 | cut -d ' ' -f 3 )
|
||||
# The icpc compiler version of oneAPI release 2023.2.0 is 2021.10.0
|
||||
if [[ "$actual_version" == "2021.10.0" ]]; then
|
||||
actual_version="2023.2.0"
|
||||
fi
|
||||
expected_compiler="oneapi"
|
||||
else
|
||||
echo "::error:: Unexpected CXX value ($CXX)."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$expected_compiler" != "${CCCL_HOST_COMPILER}" || "$actual_version" != "$CCCL_HOST_COMPILER_VERSION" ]]; then
|
||||
echo "::error:: CXX ($CXX) version ($actual_version) does not match the expected compiler (${CCCL_HOST_COMPILER}) and version (${CCCL_HOST_COMPILER_VERSION})."
|
||||
exit 1
|
||||
else
|
||||
echo "Detected host compiler: $CXX version $actual_version"
|
||||
fi
|
||||
}
|
||||
|
||||
check_cuda_version() {
|
||||
local cuda_version_output=$(nvcc --version)
|
||||
if [[ $cuda_version_output =~ release\ ([0-9]+\.[0-9]+) ]]; then
|
||||
local actual_cuda_version=${BASH_REMATCH[1]}
|
||||
else
|
||||
echo "::error:: Unable to determine CUDA version from nvcc."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$actual_cuda_version" != "$CCCL_CUDA_VERSION" ]]; then
|
||||
echo "::error:: CUDA version ($actual_cuda_version) does not match the expected CUDA version ($CCCL_CUDA_VERSION)."
|
||||
exit 1
|
||||
else
|
||||
echo "Detected CUDA version: $actual_cuda_version"
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||
usage
|
||||
exit 0
|
||||
fi
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
check_envvars DEVCONTAINER_NAME CXX CUDAHOSTCXX CCCL_BUILD_INFIX CCCL_HOST_COMPILER CCCL_CUDA_VERSION CCCL_HOST_COMPILER_VERSION
|
||||
|
||||
check_host_compiler_version
|
||||
|
||||
check_cuda_version
|
||||
|
||||
echo "Dev Container successfully verified!"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user