From b0a09bd4583f98ae5953dbe4db5a39d630348e4e Mon Sep 17 00:00:00 2001 From: "Saad Rahim (AMD)" <44449863+saadrahim@users.noreply.github.com> Date: Wed, 20 Sep 2023 11:58:19 -0600 Subject: [PATCH] Fixing documentation (#325) --- README.md | 2 +- docs/.sphinx/_toc.yml.in | 11 - docs/contributing/contributing.md | 10 - docs/contributing/release_process.md | 85 -------- docs/contributing/submitting_a_pr.md | 295 --------------------------- docs/index.rst | 2 +- docs/releases/releases.md | 60 ------ docs/releases/versioning.md | 71 ------- docs/setup/cmake_options.md | 139 ------------- docs/setup/requirements.md | 83 -------- 10 files changed, 2 insertions(+), 756 deletions(-) delete mode 100644 docs/contributing/contributing.md delete mode 100644 docs/contributing/release_process.md delete mode 100644 docs/contributing/submitting_a_pr.md delete mode 100644 docs/releases/releases.md delete mode 100644 docs/releases/versioning.md delete mode 100644 docs/setup/cmake_options.md delete mode 100644 docs/setup/requirements.md diff --git a/README.md b/README.md index 354a1f79..3b2e2b98 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Thrust is a parallel algorithm library. This library has been ported to [HIP](ht ### Software * CMake (3.5.1 or later) -* AMD [ROCm](https://rocm.github.io/install.html) platform (1.8.0 or later) +* AMD [ROCm](https://rocm.docs.amd.com) platform (1.8.0 or later) * Including [HipCC](https://github.com/ROCm-Developer-Tools/HIP) compiler, which must be set as C++ compiler on ROCm platform. * [rocPRIM](https://github.com/ROCmSoftwarePlatform/rocPRIM) library diff --git a/docs/.sphinx/_toc.yml.in b/docs/.sphinx/_toc.yml.in index 8186d298..221d8445 100644 --- a/docs/.sphinx/_toc.yml.in +++ b/docs/.sphinx/_toc.yml.in @@ -6,18 +6,7 @@ root: index subtrees: - caption: Setup entries: - - file: setup/requirements - - file: setup/cmake_options - file: setup/installing - caption: API entries: - file: cpp_api -- caption: Releases - entries: - - file: releases/versioning - - file: releases/releases -- caption: Contributing - entries: - - file: contributing/contributing - - file: contributing/submitting_a_pr - - file: contributing/release_process diff --git a/docs/contributing/contributing.md b/docs/contributing/contributing.md deleted file mode 100644 index 6539768c..00000000 --- a/docs/contributing/contributing.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -has_children: true -has_toc: true -nav_order: 4 ---- - -# Contributing - -We welcome contributions - just send us a pull request! - diff --git a/docs/contributing/release_process.md b/docs/contributing/release_process.md deleted file mode 100644 index db21f60b..00000000 --- a/docs/contributing/release_process.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -parent: Contributing -nav_order: 1 ---- - -# Release Process - -## Create a Changelog Entry - -Every release must have a changelog entry. -The changelog entry should include: -* A summary of the major accomplishments of the release. -* A list of all the changes in the release. -* A list of all the bugs fixed by the release. - -Contributions from new collaborators should be acknowledged in the changelog. - -## Create Git Annotated Tags and GitHub Releases - -Each release needs to have a Git annotated tag and a GitHub release for that tag. -The changelog for the release should be used for the text of the GitHub release. - -## Update Compiler Explorer - -Thrust and CUB are bundled together on -[Compiler Explorer](https://www.godbolt.org/) (CE) as libraries for the CUDA -language. When releasing a new version of these projects, CE will need to be -updated. - -There are two files in two repos that need to be updated: - -### libraries.yaml - -- Repo: https://github.com/compiler-explorer/infra -- Path: bin/yaml/libraries.yaml - -This file tells CE how to pull in library files and defines which versions to -fetch. Look for the `thrustcub:` section: - -```yaml - thrustcub: - type: github - method: clone_branch - repo: NVIDIA/thrust - check_file: dependencies/cub/cub/cub.cuh - targets: - - 1.9.9 - - 1.9.10 - - 1.9.10-1 - - 1.10.0 -``` - -Simply add the new version tag to list of `targets:`. This will check out the -specified tag to `/opt/compiler-explorer/libs/thrustcub//`. - -### cuda.amazon.properties - -- Repo: https://github.com/compiler-explorer/compiler-explorer -- File: etc/config/cuda.amazon.properties - -This file defines the library versions displayed in the CE UI and maps them -to a set of include directories. Look for the `libs.thrustcub` section: - -```yaml -libs.thrustcub.name=Thrust+CUB -libs.thrustcub.description=CUDA collective and parallel algorithms -libs.thrustcub.versions=trunk:109090:109100:109101:110000 -libs.thrustcub.url=http://www.github.com/NVIDIA/thrust -libs.thrustcub.versions.109090.version=1.9.9 -libs.thrustcub.versions.109090.path=/opt/compiler-explorer/libs/thrustcub/1.9.9:/opt/compiler-explorer/libs/thrustcub/1.9.9/dependencies/cub -libs.thrustcub.versions.109100.version=1.9.10 -libs.thrustcub.versions.109100.path=/opt/compiler-explorer/libs/thrustcub/1.9.10:/opt/compiler-explorer/libs/thrustcub/1.9.10/dependencies/cub -libs.thrustcub.versions.109101.version=1.9.10-1 -libs.thrustcub.versions.109101.path=/opt/compiler-explorer/libs/thrustcub/1.9.10-1:/opt/compiler-explorer/libs/thrustcub/1.9.10-1/dependencies/cub -libs.thrustcub.versions.110000.version=1.10.0 -libs.thrustcub.versions.110000.path=/opt/compiler-explorer/libs/thrustcub/1.10.0:/opt/compiler-explorer/libs/thrustcub/1.10.0/dependencies/cub -libs.thrustcub.versions.trunk.version=trunk -libs.thrustcub.versions.trunk.path=/opt/compiler-explorer/libs/thrustcub/trunk:/opt/compiler-explorer/libs/thrustcub/trunk/dependencies/cub -``` - -Add a new version identifier to the `libs.thrustcub.versions` key, using the -convention `X.Y.Z-W -> XXYYZZWW`. Then add a corresponding UI label (the -`version` key) and set of colon-separated include paths for Thrust and CUB -(`path`). The version used in the `path` entries must exactly match the tag -specified in `libraries.yaml`. diff --git a/docs/contributing/submitting_a_pr.md b/docs/contributing/submitting_a_pr.md deleted file mode 100644 index 9c175765..00000000 --- a/docs/contributing/submitting_a_pr.md +++ /dev/null @@ -1,295 +0,0 @@ ---- -parent: Contributing -nav_order: 0 ---- - -# Submitting a PR - -Thrust uses Github to manage all open-source development, including bug -tracking, pull requests, and design discussions. This document details how to get -started as a Thrust contributor. - -An overview of this process is: - -1. [Clone the Thrust repository](#clone-the-thrust-repository) -1. [Setup a fork of Thrust](#setup-a-fork-of-thrust) -1. [Setup your environment](#setup-your-environment) -1. [Create a development branch](#create-a-development-branch) -1. [Local development loop](#local-development-loop) -1. [Push development branch to your fork](#push-development-branch-to-your-fork) -1. [Create pull request](#create-pull-request) -1. [Address feedback and update pull request](#address-feedback-and-update-pull-request) -1. [When your PR is approved...](#when-your-pr-is-approved) - -## Clone the Thrust Repository - -To get started, clone the main repository to your local computer. Thrust should -be cloned recursively to setup the CUB submodule (required for `CUDA` -acceleration). - -``` -git clone --recursive https://github.com/NVIDIA/thrust.git -cd thrust -``` - -## Setup a Fork of Thrust - -You'll need a fork of Thrust on Github to create a pull request. To setup your -fork: - -1. Create a Github account (if needed) -2. Go to [the Thrust Github page](https://github.com/NVIDIA/thrust) -3. Click "Fork" and follow any prompts that appear. - -Once your fork is created, setup a new remote repo in your local Thrust clone: - -``` -git remote add github-fork git@github.com:/thrust.git -``` - -If you need to modify CUB, too, go to -[the CUB Github page](https://github.com/NVIDIA/cub) and repeat this process. -Create CUB's `github-fork` remote in the `thrust/dependencies/cub` submodule. - -## Setup Your Environment - -### Git Environment - -If you haven't already, this is a good time to tell git who you are. This -information is used to fill out authorship information on your git commits. - -``` -git config --global user.name "John Doe" -git config --global user.email johndoe@example.com -``` - -### Configure CMake builds - -Thrust uses [CMake](https://www.cmake.org) for its primary build system. To -configure, build, and test your checkout of Thrust: - -``` -# Create build directory: -mkdir build -cd build - -# Configure -- use one of the following: -cmake .. # Command line interface -cmake -DTHRUST_INCLUDE_CUB_CMAKE=ON .. # Enables CUB development targets -ccmake .. # ncurses GUI (Linux only) -cmake-gui # Graphical UI, set source/build directories in the app - -# Build: -cmake --build . -j # invokes make (or ninja, etc) - -# Run tests and examples: -ctest -``` - -See [CMake Options](../setup/cmake_options.md) for details on customizing the build. To -enable CUB tests and examples, set the `THRUST_INCLUDE_CUB_CMAKE` option to -`ON`. Additional CMake options for CUB are listed -[here](https://github.com/NVIDIA/cub/blob/main/CONTRIBUTING.md#cmake-options). - -## Create a Development Branch - -All work should be done in a development branch (also called a "topic branch") -and not directly in the `main` branch. This makes it easier to manage multiple -in-progress patches at once, and provides a descriptive label for your patch -as it passes through the review system. - -To create a new branch based on the current `main`: - -``` -# Checkout local main branch: -cd /path/to/thrust/sources -git checkout main - -# Sync local main branch with github: -git pull - -# Create a new branch named `my_descriptive_branch_name` based on main: -git checkout -b my_descriptive_branch_name - -# Verify that the branch has been created and is currently checked out: -git branch -``` - -Thrust branch names should follow a particular pattern: - -- For new features, name the branch `feature/` -- For bugfixes associated with a github issue, use `bug/github/-` - - Internal nvidia and gitlab bugs should use `nvidia` or `gitlab` in place of - `github`. - -If you plan to work on CUB as part of your patch, repeat this process in the -`thrust/dependencies/cub` submodule. - -## Local Development Loop - -### Edit, Build, Test, Repeat - -Once the topic branch is created, you're all set to start working on Thrust -code. Make some changes, then build and test them: - -``` -# Implement changes: -cd /path/to/thrust/sources -emacs thrust/some_file.h # or whatever editor you prefer - -# Create / update a unit test for your changes: -emacs testing/some_test.cu - -# Check that everything builds and tests pass: -cd /path/to/thrust/build/directory -cmake --build . -j -ctest -``` - -### Creating a Commit - -Once you're satisfied with your patch, commit your changes: - -#### Thrust-only Changes - -``` -# Manually add changed files and create a commit: -cd /path/to/thrust -git add thrust/some_file.h -git add testing/some_test.cu -git commit - -# Or, if possible, use git-gui to review your changes while building your patch: -git gui -``` - -#### Thrust and CUB Changes - -``` -# Create CUB patch first: -cd /path/to/thrust/dependencies/cub -# Manually add changed files and create a commit: -git add cub/some_file.cuh -git commit - -# Create Thrust patch, including submodule update: -cd /path/to/thrust/ -git add dependencies/cub # Updates submodule info -git add thrust/some_file.h -git add testing/some_test.cu -git commit - -# Or, if possible, use git-gui to review your changes while building your patch: -cd /path/to/thrust/dependencies/cub -git gui -cd /path/to/thrust -git gui # Include dependencies/cub as part of your commit - -``` - -#### Writing a Commit Message - -Your commit message will communicate the purpose and rationale behind your -patch to other developers, and will be used to populate the initial description -of your Github pull request. - -When writing a commit message, the following standard format should be used, -since tools in the git ecosystem are designed to parse this correctly: - -``` -First line of commit message is a short summary (<80 char) - -Detailed description of change begins on third line. This portion can -span multiple lines, try to manually wrap them at something reasonable. - -Blank lines can be used to separate multiple paragraphs in the description. - -If your patch is associated with another pull request or issue in the main -Thrust repository, you should reference it with a `#` symbol, e.g. -#1023 for issue 1023. - -For issues / pull requests in a different github repo, reference them using -the full syntax, e.g. NVIDIA/cub#4 for issue 4 in the NVIDIA/cub repo. - -Markdown is recommended for formatting more detailed messages, as these will -be nicely rendered on Github, etc. -``` - -## Push Development Branch to your Fork - -Once you've committed your changes to a local development branch, it's time to -push them to your fork: - -``` -cd /path/to/thrust/checkout -git checkout my_descriptive_branch_name # if not already checked out -git push --set-upstream github-fork my_descriptive_branch_name -``` - -`--set-upstream github-fork` tells git that future pushes/pulls on this branch -should target your `github-fork` remote by default. - -If have CUB changes to commit as part of your patch, repeat this process in the -`thrust/dependencies/cub` submodule. - -## Create Pull Request - -To create a pull request for your freshly pushed branch, open your github fork -in a browser by going to `https://www.github.com//thrust`. A -prompt may automatically appear asking you to create a pull request if you've -recently pushed a branch. - -If there's no prompt, go to "Code" > "Branches" and click the appropriate -"New pull request" button for your branch. - -If you would like a specific developer to review your patch, feel free to -request them as a reviewer at this time. - -The Thrust team will review your patch, test it on NVIDIA's internal CI, and -provide feedback. - - -If have CUB changes to commit as part of your patch, repeat this process with -your CUB branch and fork. - -## Address Feedback and Update Pull Request - -If the reviewers request changes to your patch, use the following process to -update the pull request: - -``` -# Make changes: -cd /path/to/thrust/sources -git checkout my_descriptive_branch_name -emacs thrust/some_file.h -emacs testing/some_test.cu - -# Build + test -cd /path/to/thrust/build/directory -cmake --build . -j -ctest - -# Amend commit: -cd /path/to/thrust/sources -git add thrust/some_file.h -git add testing/some_test.cu -git commit --amend -# Or -git gui # Check the "Amend Last Commit" box - -# Update the branch on your fork: -git push -f -``` - -At this point, the pull request should show your recent changes. - -If have CUB changes to commit as part of your patch, repeat this process in the -`thrust/dependencies/cub` submodule, and be sure to include any CUB submodule -updates as part of your commit. - -## When Your PR is Approved - -Once your pull request is approved by the Thrust team, no further action is -needed from you. We will handle integrating it since we must coordinate changes -to `main` with NVIDIA's internal perforce repository. - diff --git a/docs/index.rst b/docs/index.rst index a2160f3e..383b9d2d 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -5,7 +5,7 @@ rocThrust User Guide Overview ======== -Thrust is a parallel algorithm library. This library has been ported to `HIP `_ / `ROCm `_ platform, which uses the `rocPRIM `_ library. The HIP ported library works on HIP/ROCm platforms. Currently there is no CUDA backend in place. +rocThrust is a parallel algorithm library. This library has been ported to `HIP `_ / `ROCm `_ platform, which uses the `rocPRIM `_ library. The HIP ported library works on HIP/ROCm platforms. Currently there is no CUDA backend in place. Indices and tables diff --git a/docs/releases/releases.md b/docs/releases/releases.md deleted file mode 100644 index 81a5f2f3..00000000 --- a/docs/releases/releases.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -has_children: true -has_toc: true -nav_order: 3 ---- - -# Releases - -| Version | Included In | -|-----------------|-------------------------------------------| -| 2.0.1 | CUDA Toolkit 12.0 | -| 2.0.0 | TBD | -| 1.17.2 | TBD | -| 1.17.1 | TBD | -| 1.17.0 | TBD | -| 1.16.0 | TBD | -| 1.15.0 | NVIDIA HPC SDK 22.1 & CUDA Toolkit 11.6 | -| 1.14.0 | NVIDIA HPC SDK 21.9 | -| 1.13.1 | CUDA Toolkit 11.5 | -| 1.13.1 | CUDA Toolkit 11.5 | -| 1.13.0 | NVIDIA HPC SDK 21.7 | -| 1.12.1 | CUDA Toolkit 11.4 | -| 1.12.0 | NVIDIA HPC SDK 21.3 | -| 1.11.0 | CUDA Toolkit 11.3 | -| 1.10.0 | NVIDIA HPC SDK 20.9 & CUDA Toolkit 11.2 | -| 1.9.10-1 | NVIDIA HPC SDK 20.7 & CUDA Toolkit 11.1 | -| 1.9.10 | NVIDIA HPC SDK 20.5 | -| 1.9.9 | CUDA Toolkit 11.0 | -| 1.9.8-1 | NVIDIA HPC SDK 20.3 | -| 1.9.8 | CUDA Toolkit 11.0 Early Access | -| 1.9.7-1 | CUDA Toolkit 10.2 for Tegra | -| 1.9.7 | CUDA Toolkit 10.2 | -| 1.9.6-1 | NVIDIA HPC SDK 20.3 | -| 1.9.6 | CUDA Toolkit 10.1 Update 2 | -| 1.9.5 | CUDA Toolkit 10.1 Update 1 | -| 1.9.4 | CUDA Toolkit 10.1 | -| 1.9.3 | CUDA Toolkit 10.0 | -| 1.9.2 | CUDA Toolkit 9.2 | -| 1.9.1-2 | CUDA Toolkit 9.1 | -| 1.9.0-5 | CUDA Toolkit 9.0 | -| 1.8.3 | CUDA Toolkit 8.0 | -| 1.8.2 | CUDA Toolkit 7.5 | -| 1.8.1 | CUDA Toolkit 7.0 | -| 1.8.0 | | -| 1.7.2 | CUDA Toolkit 6.5 | -| 1.7.1 | CUDA Toolkit 6.0 | -| 1.7.0 | CUDA Toolkit 5.5 | -| 1.6.0 | | -| 1.5.3 | CUDA Toolkit 5.0 | -| 1.5.2 | CUDA Toolkit 4.2 | -| 1.5.1 | CUDA Toolkit 4.1 | -| 1.5.0 | | -| 1.4.0 | CUDA Toolkit 4.0 | -| 1.3.0 | | -| 1.2.1 | | -| 1.2.0 | | -| 1.1.1 | | -| 1.1.0 | | -| 1.0.0 | | - diff --git a/docs/releases/versioning.md b/docs/releases/versioning.md deleted file mode 100644 index e5f0e8eb..00000000 --- a/docs/releases/versioning.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -parent: Releases -nav_order: 1 ---- - -# Versioning - -Thrust has its own versioning system for releases, independent of the - versioning scheme of the NVIDIA HPC SDK or the CUDA Toolkit. - -Today, Thrust version numbers have a specific [semantic meaning](https://semver.org/). -Releases prior to 1.10.0 largely, but not strictly, followed these semantic - meanings. - -The version number for a Thrust release uses the following format: - `MMM.mmm.ss-ppp`, where: - -* `THRUST_VERSION_MAJOR`/`MMM`: Major version, up to 3 decimal digits. - It is incremented when changes that are API-backwards-incompatible are made. -* `THRUST_VERSION_MINOR`/`mmm`: Minor version, up to 3 decimal digits. - It is incremented when breaking API, ABI, or semantic changes are made. -* `THRUST_VERSION_SUBMINOR`/`ss`: Subminor version, up to 2 decimal digits. - It is incremented when notable new features or bug fixes or features that are - API-backwards-compatible are made. -* `THRUST_PATCH_NUMBER`/`ppp`: Patch number, up to 3 decimal digits. - This is no longer used and will be zero for all future releases. - -The `` header defines `THRUST_*` macros for all of the - version components mentioned above. -Additionally, a `THRUST_VERSION` macro is defined, which is an integer literal - containing all of the version components except for `THRUST_PATCH_NUMBER`. - -## Trunk Based Development - -Thrust uses [trunk based development](https://trunkbaseddevelopment.com). -There is a single long-lived branch called `main`, which is public and the - "source of truth". -All other branches are downstream from `main`. -Engineers may create branches for feature development. -Such branches always merge into `main`. -There are no release branches. -Releases are produced by taking a snapshot of `main` ("snapping"). -After a release has been snapped from `main`, it will never be changed. - -## Branches and Tags - -The following tag names are used in the Thrust project: - -* `nvhpc-X.Y`: the tag that directly corresponds to what has been - shipped in the NVIDIA HPC SDK release X.Y. -* `cuda-X.Y`: the tag that directly corresponds to what has been shipped - in the CUDA Toolkit release X.Y. -* `A.B.C`: the tag that directly corresponds to Thrust version A.B.C. -* `A.B.C-rcN`: the tag that directly corresponds to Thrust version A.B.C - release candidate N. - -The following branch names are used in the Thrust project: - -* `main`: the "source of truth" development branch of Thrust. -* `old-master`: the old "source of truth" branch, before unification of - public and internal repositories. -* `feature/`: feature branch for a feature under development. -* `bug//-`: bug fix branch, where - `bug-system` is `github` or `nvidia`. - -On the rare occasion that we cannot do work in the open, for example when - developing a change specific to an unreleased product, these branches may - exist on an internal NVIDIA GitLab instance instead of the public GitHub. -By default, everything should be in the open on GitHub unless there is a strong - motivation for it to not be open. - diff --git a/docs/setup/cmake_options.md b/docs/setup/cmake_options.md deleted file mode 100644 index 81013c70..00000000 --- a/docs/setup/cmake_options.md +++ /dev/null @@ -1,139 +0,0 @@ ---- -parent: Setup -nav_order: 1 ---- - -# CMake Options - -A Thrust build is configured using CMake options. These may be passed to CMake -using - -``` -cmake -D= /path/to/thrust/sources -``` - -or configured interactively with the `ccmake` or `cmake-gui` interfaces. - -Thrust supports two build modes. By default, a single configuration is built -that targets a specific host system, device system, and C++ dialect. -When `THRUST_ENABLE_MULTICONFIG` is `ON`, multiple configurations -targeting a variety of systems and dialects are generated. - -The CMake options are divided into these categories: - -1. [Generic CMake Options](#generic-cmake-options): Options applicable to all - Thrust builds. -1. [Single Config CMake Options](#single-config-cmake-options) Options - applicable only when `THRUST_ENABLE_MULTICONFIG` is disabled. -1. [Multi Config CMake Options](#multi-config-cmake-options) Options applicable - only when `THRUST_ENABLE_MULTICONFIG` is enabled. -1. [CUDA Specific CMake Options](#cuda-specific-cmake-options) Options that - control CUDA compilation. Only available when one or more configurations - targets the CUDA system. -1. [TBB Specific CMake Options](#tbb-specific-cmake-options) Options that - control TBB compilation. Only available when one or more configurations - targets the TBB system. - -## Generic CMake Options - -- `CMAKE_BUILD_TYPE={Release, Debug, RelWithDebInfo, MinSizeRel}` - - Standard CMake build option. Default: `RelWithDebInfo` -- `THRUST_ENABLE_HEADER_TESTING={ON, OFF}` - - Whether to test compile public headers. Default is `ON`. -- `THRUST_ENABLE_TESTING={ON, OFF}` - - Whether to build unit tests. Default is `ON`. -- `THRUST_ENABLE_EXAMPLES={ON, OFF}` - - Whether to build examples. Default is `ON`. -- `THRUST_ENABLE_MULTICONFIG={ON, OFF}` - - Toggles single-config and multi-config modes. Default is `OFF` (single config). -- `THRUST_ENABLE_EXAMPLE_FILECHECK={ON, OFF}` - - Enable validation of example outputs using the LLVM FileCheck utility. - Default is `OFF`. -- `THRUST_ENABLE_INSTALL_RULES={ON, OFF}` - - If true, installation rules will be generated for thrust. Default is `ON`. - -## Single Config CMake Options - -- `THRUST_HOST_SYSTEM={CPP, TBB, OMP}` - - Selects the host system. Default: `CPP` -- `THRUST_DEVICE_SYSTEM={CUDA, TBB, OMP, CPP}` - - Selects the device system. Default: `CUDA` -- `THRUST_CPP_DIALECT={11, 14, 17, 20}` - - Selects the C++ standard dialect to use. Default is `14` (C++14). - -## Multi Config CMake Options - -- `THRUST_MULTICONFIG_ENABLE_DIALECT_CPPXX={ON, OFF}` - - Toggle whether a specific C++ dialect will be targeted. - - Possible values of `XX` are `{11, 14, 17, 20}`. - - By default, only C++14 is enabled. -- `THRUST_MULTICONFIG_ENABLE_SYSTEM_XXXX={ON, OFF}` - - Toggle whether a specific system will be targeted. - - Possible values of `XXXX` are `{CPP, CUDA, TBB, OMP}` - - By default, only `CPP` and `CUDA` are enabled. -- `THRUST_MULTICONFIG_WORKLOAD={SMALL, MEDIUM, LARGE, FULL}` - - Restricts the host/device combinations that will be targeted. - - By default, the `SMALL` workload is used. - - The full cross product of `host x device` systems results in 12 - configurations, some of which are more important than others. - This option can be used to prune some of the less important ones. - - `SMALL`: (3 configs) Minimal coverage and validation of each device system against the `CPP` host. - - `MEDIUM`: (6 configs) Cheap extended coverage. - - `LARGE`: (8 configs) Expensive extended coverage. Includes all useful build configurations. - - `FULL`: (12 configs) The complete cross product of all possible build configurations. - -| Config | Workloads | Value | Expense | Note | -|----------|-----------|------------|-----------|------------------------------| -| CPP/CUDA | `F L M S` | Essential | Expensive | Validates CUDA against CPP | -| CPP/OMP | `F L M S` | Essential | Cheap | Validates OMP against CPP | -| CPP/TBB | `F L M S` | Essential | Cheap | Validates TBB against CPP | -| CPP/CPP | `F L M ` | Important | Cheap | Tests CPP as device | -| OMP/OMP | `F L M ` | Important | Cheap | Tests OMP as host | -| TBB/TBB | `F L M ` | Important | Cheap | Tests TBB as host | -| TBB/CUDA | `F L ` | Important | Expensive | Validates TBB/CUDA interop | -| OMP/CUDA | `F L ` | Important | Expensive | Validates OMP/CUDA interop | -| TBB/OMP | `F ` | Not useful | Cheap | Mixes CPU-parallel systems | -| OMP/TBB | `F ` | Not useful | Cheap | Mixes CPU-parallel systems | -| TBB/CPP | `F ` | Not Useful | Cheap | Parallel host, serial device | -| OMP/CPP | `F ` | Not Useful | Cheap | Parallel host, serial device | - -## CUDA Specific CMake Options - -- `THRUST_INCLUDE_CUB_CMAKE={ON, OFF}` - - If enabled, the CUB project will be built as part of Thrust. Default is - `OFF`. - - This adds CUB tests, etc. Useful for working on both CUB and Thrust - simultaneously. - - CUB configurations will be generated for each C++ dialect targeted by - the current Thrust build. -- `THRUST_INSTALL_CUB_HEADERS={ON, OFF}` - - If enabled, the CUB project's headers will be installed through Thrust's - installation rules. Default is `ON`. - - This option depends on `THRUST_ENABLE_INSTALL_RULES`. -- `THRUST_ENABLE_COMPUTE_XX={ON, OFF}` - - Controls the targeted CUDA architecture(s) - - Multiple options may be selected when using NVCC as the CUDA compiler. - - Valid values of `XX` are: - `{35, 37, 50, 52, 53, 60, 61, 62, 70, 72, 75, 80}` - - Default value depends on `THRUST_DISABLE_ARCH_BY_DEFAULT`: -- `THRUST_ENABLE_COMPUTE_FUTURE={ON, OFF}` - - If enabled, CUDA objects will target the most recent virtual architecture - in addition to the real architectures specified by the - `THRUST_ENABLE_COMPUTE_XX` options. - - Default value depends on `THRUST_DISABLE_ARCH_BY_DEFAULT`: -- `THRUST_DISABLE_ARCH_BY_DEFAULT={ON, OFF}` - - When `ON`, all `THRUST_ENABLE_COMPUTE_*` options are initially `OFF`. - - Default: `OFF` (meaning all architectures are enabled by default) -- `THRUST_ENABLE_TESTS_WITH_RDC={ON, OFF}` - - Whether to enable Relocatable Device Code when building tests. - Default is `OFF`. -- `THRUST_ENABLE_EXAMPLES_WITH_RDC={ON, OFF}` - - Whether to enable Relocatable Device Code when building examples. - Default is `OFF`. - -## TBB Specific CMake Options - -- `THRUST_TBB_ROOT=` - - When the TBB system is requested, set this to the root of the TBB installation - (e.g. the location of `lib/`, `bin/` and `include/` for the TBB libraries). - diff --git a/docs/setup/requirements.md b/docs/setup/requirements.md deleted file mode 100644 index 016230e1..00000000 --- a/docs/setup/requirements.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -parent: Setup -nav_order: 0 ---- - -# Requirements - -All requirements are applicable to the `main` branch on GitHub. -For details on specific releases, please see the [CHANGELOG.md]. - -## Usage Requirements - -To use the NVIDIA C++ Standard Library, you must meet the following - requirements. - -### System Software - -Thrust and CUB require either the [NVIDIA HPC SDK] or the [CUDA Toolkit]. - -Releases of Thrust and CUB are only tested against the latest releases of NVHPC - and CUDA. -It may be possible to use newer version of Thrust and CUB with an older NVHPC or - CUDA installation by using a Thrust and CUB release from GitHub, but please - be aware this is not officially supported. - -### C++ Dialects - -Thrust and CUB support the following C++ dialects: - -- C++11 (deprecated) -- C++14 -- C++17 -- C++20 - -### Compilers - -Thrust and CUB support the following compilers when used in conjunction with - NVCC: - -- NVCC (latest version) -- NVC++ (latest version) -- GCC 5+ -- Clang 7+ -- MSVC 2019+ (19.20/16.0/14.20) - -Unsupported versions may emit deprecation warnings, which can be - silenced by defining `THRUST_IGNORE_DEPRECATED_COMPILER` during compilation. - -### Device Architectures - -Thrust and CUB support all NVIDIA device architectures since SM 35. - -### Host Architectures - -Thrust and CUB support the following host architectures: - -- aarch64. -- x86-64. -- ppc64le. - -### Host Operating Systems - -Thrust and CUB support the following host operating systems: - -- Linux. -- Windows. - -## Build and Test Requirements - -To build and test Thrust and CUB yourself, you will need the following in - addition to the above requirements: - -- [CMake]. - - - -[changelog]: ./releases/changelog.md - -[NVIDIA HPC SDK]: https://developer.nvidia.com/hpc-sdk -[CUDA Toolkit]: https://developer.nvidia.com/cuda-toolkit - -[CMake]: https://cmake.org -