Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Develop stream 2024-09-12 #462

Open
wants to merge 45 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
9075421
Fixed overflow bug for large sizes in thrust::shuffle
Beanavil Jul 24, 2024
e9397cc
Added definitions of execution space macros
Beanavil Jul 24, 2024
a7a5d20
Add missing overloads for thrust::pow
Beanavil Jul 25, 2024
7006599
Refactors thrust::unique_by_key to use cub::DeviceSelect::UniqueByKey
Beanavil Jul 25, 2024
e5dbdaa
Fix a typo in thrust-config.cmake
Beanavil Jul 25, 2024
bd43018
Check that thrust::pair is trivially copyable
Beanavil Jul 25, 2024
b7b785e
Remove double ignore in discard_iterator.h docs
Beanavil Jul 25, 2024
93b72cd
Replace deprecated _VSTD macro with std
Beanavil Jul 25, 2024
f3e2676
Update mode example to use thrust::unique_count
Beanavil Jul 25, 2024
44d7369
Ensure that thrust fancy iterators are trivially_copy_constructible w…
Beanavil Jul 25, 2024
a32a67c
Use checked allocators in CUB catch2 tests
Beanavil Jul 30, 2024
b741017
Refactors thrust::copy_if to use cub::DeviceSelect
Beanavil Jul 25, 2024
158fa53
Refactor thrust::[stable_]partition[_copy] to use cub::DevicePartition
Beanavil Jul 25, 2024
bc6c83b
Fix include of <thrust/random.h> with NVC++
Beanavil Jul 25, 2024
489c073
Cleanup diagnostic handling
Beanavil Jul 25, 2024
9f5a3ba
Rework config.h
Beanavil Jul 29, 2024
1020a11
Bump version to 2.4.0
Beanavil Jul 25, 2024
917c255
Fix issues with ambiguous calls to addressof in thrust::optional
Beanavil Jul 25, 2024
5af1ef7
Try harder to unwrap nested thrust::tuple_of_iterator_references, CUD…
Beanavil Jul 29, 2024
bd5228c
Added missing element from thrust's tuple implementation
Beanavil Jul 25, 2024
099a901
Ensure that we can run reduce_by_key with const inputs
Beanavil Jul 25, 2024
9508470
Leave definitions of __host__ and __device__
Beanavil Jul 30, 2024
6791366
Patched up CI because of CCCL2.4.0 tests' build failure
Beanavil Jul 30, 2024
9fe0b04
Updated tests and examples for __host__ __device__ use
Beanavil Jul 31, 2024
15a07b0
Updated CHANGELOG
Beanavil Jul 31, 2024
158a1e1
Added operator to transform_reduce benchmark
NB4444 Aug 1, 2024
d0bf50f
Added mem allocator in benchmarks
NB4444 Aug 1, 2024
aa64ae7
Changes for review
NB4444 Aug 8, 2024
0673125
ci: set up sccache
Snektron Jul 26, 2024
75c44cf
Added helper functions for choosing between different custom reporter
NB4444 Aug 8, 2024
a36adac
Added json and csv custom reporter for benchmarks
NB4444 Aug 13, 2024
e00ad3a
Changes for review
NB4444 Aug 15, 2024
1cc4c8b
Added hipstdpar tests
Beanavil Aug 8, 2024
568f6f9
Relocated our ParallelSTL additions
Beanavil Aug 8, 2024
f584551
Fixed several naming issues
Beanavil Aug 8, 2024
387dbcf
Added missing unimplemented algorithms
Beanavil Aug 9, 2024
8aff938
Split hipstdpar_lib.hpp
Beanavil Aug 9, 2024
e2d548f
Added relevant information to README and CHANGELOG regarding HIPSTDPAR
Beanavil Aug 23, 2024
28da1b1
Clarified upstream LLVM offload support
Beanavil Sep 13, 2024
ed35b28
Emit error when HIPSTDPAR macros are not defined
Beanavil Sep 20, 2024
5023555
Move forwarding calls to rocPRIM to thrust's stubs
Beanavil Sep 20, 2024
e340947
Fix path to hipstdpar impl headers
Beanavil Nov 4, 2024
1f060d8
Prevent building hipstdpar tests when no compatible libstdc++ is present
Beanavil Nov 4, 2024
5fdf870
Disable TBB tests build
Beanavil Nov 6, 2024
5be02c2
Merge branch 'develop' into develop-upstream-12-9-2024
NB4444 Nov 14, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ Documentation for rocThrust available at

* Merged changes from upstream CCCL/thrust 2.4.0

### Changes

* Split the contents of HIPSTDPAR's forwarding header into several implementation headers.

## (Unreleased) rocThrust 3.2.0 for ROCm 6.3

### Additions
Expand All @@ -33,6 +37,7 @@ Documentation for rocThrust available at

* Merged changes from upstream CCCL/thrust 2.2.0
* Updated the contents of `system/hip` and `test` with the upstream changes to `system/cuda` and `testing`
* Added HIPSTDPAR library as part of rocThrust.

### Changes

Expand Down
35 changes: 34 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ works on HIP and ROCm software. Currently there is no CUDA backend in place.

Software requirements include:

* CMake (3.5.1 or later)
* CMake (3.10.2 or later)
* AMD [ROCm](https://rocm.docs.amd.com) Software (1.8.0 or later)
* Including the [HipCC](https://github.com/ROCm/HIP) compiler, which must be set
as your C++ compiler for ROCm
Expand Down Expand Up @@ -266,6 +266,39 @@ make -j4
./benchmarks/benchmark_thrust_bench
```

## HIPSTDPAR
rocThrust also hosts the header files for [HIPSTDPAR](https://rocm.blogs.amd.com/software-tools-optimization/hipstdpar/README.html#c-17-parallel-algorithms-and-hipstdpar).
Within these headers, a great part of the C++ Standard Library parallel algorithms are overloaded so that rocThrust's and rocPRIM's implementations of those algorithms are used when they are invoked with the `parallel_unsequenced_policy` policy.
When compiling with the proper flags (see [LLVM (AMD's fork) docs](https://github.com/ROCm/llvm-project/blob/rocm-6.2.x/clang/docs/HIPSupport.rst#implementation-driver) for the complete list), the HIPSTDPAR headers are implicitly included by the compiler, and therefore the execution of these parallel algorithms will be offloaded to AMD devices.
AlexVlx marked this conversation as resolved.
Show resolved Hide resolved

### Install
HIPSTDPAR is currently packaged along rocThrust. The `hipstdpar` package is set up as a virtual package provided by `rocthrust`, so the latter needs to be installed entirely for getting HIPSTDPAR's headers. Conversely, installing the `rocthrust` package will also include HIPSTDPAR's headers in the system.

### Tests
rocThrust also includes some tests for checking the correct building of HIPSTDPAR implementations. These are located under the [tests/hipstdpar](/test/hipstdpar/) folder. When configuring the project with the `BUILD_TEST` option on, these tests will also be enabled. Additionally, one can configure **only** HIPSTDPAR's tests by disabling `BUILD_TEST` and enabling `BUILD_HIPSTDPAR_TEST`. In general, the following steps can be followed for building and running the tests:

```sh
git clone https://github.com/ROCm/rocThrust

# Go to rocThrust directory, create and go to the build directory.
cd rocThrust; mkdir build; cd build

# Configure rocThrust.
[CXX=hipcc] cmake ../. -D BUILD_TEST=ON # Configure rocThrust's and HIPSTDPAR's tests.
[CXX=hipcc] cmake ../. -D BUILD_TEST=OFF -D BUILD_HIPSTDPAR_TEST=ON # Only configure HIPSTDPAR's tests.

# Build
make -j4

# Run tests.
ctest --output-on-failure
```

#### Requirements
* [rocPRIM](https://github.com/ROCm/rocPRIM) and [rocThrust](https://github.com/ROCm/rocThrust) libraries
* [TBB](https://www.intel.com/content/www/us/en/developer/tools/oneapi/onetbb.html) library
* CMake (3.10.2 or later)

## Support

You can report bugs and feature requests through the GitHub
Expand Down