This release of stdgpu introduces a new experimental HIP backend adding support for AMD GPUs, significant improvements to the API documentation as well as many new code examples, the integration of clang-tidy and cppcheck in the CI, as well as a tremendous amount of warning fixes to enable clean builds at very high warning levels.
New Features & Enhancements
- General: Add experimental HIP backend #121 #143
- General: Add support for Compute Capability 3.0 in CUDA backend #153
- General: Add clang-tidy support #129 #138
- General: Add cppcheck support #149
- General: Add CI job for documentation creation #109
- General: Deprecate misleading/obsolete cmake options #103
- atomic: Make all operations follow sequentially consistent ordering #176
- atomic: Add backend documentation of template parameter #177
- atomic: Cleanup backend-specific internals of CUDA backend #152
- bit: Add
ceil2
andfloor2
functions #105 - bit: Rename functions to match most recent draft of C++20 #110
- bitset: Remove dependency to cstdlib #145
- cstddef: Hide initializers for clearer documentation #166
- cstdlib: Deprecate
sizedivPow2
#161 - limits: Add implementation for non-specialized template and documentation for every type #167
- memory: Add
construct_at
function #95 - memory: Cleanup global variables and simplify
allocate
/deallocate
logic #104 - memory: Improve
construct*
anddestroy*
unit tests #175 - platform: Add automatic dispatching of backend-specific definitions #119
- platform: Change detection of device code for OpenMP #174
- ranges: Add
size()
andempty()
functions as well as additional constructors #122 - ranges: Add
index64_t
constructor and deprecateindex_t
version #102 - unordered_map,unordered_set: Improve robustness of Fibonacci Hashing #111
- README,doc: Significantly improve introduction, examples, and documentation #114 #116 #162 #165 #170 #171 #172 #181
- doc: Group all class and function definitions into modules #169
- doc: Cleanup unnecessary documentation #168
- examples: Add many new examples and improve existing ones #173
- test: Disable unused GMock #160
- cmake: Make installable package relocatable #180
- cmake: Add option to treat warnings as errors #108
- cmake: Generate compile flags more robustly #128
- cmake: Simplify architecture flag generation in CUDA backend #154
- cmake: Install backend-specific find modules in subdirectories #117
- cmake: Update support for CMake 3.17+ #123
Bug Fixes
- General: Increase warning level and fix conversion and float-equal warnings #98
- General: Increase MSVC warning level and fix related warnings #107 #156
- General: Fix Clang warnings #91 #147
- General: Fix format warnings #101
- General: Fix sign-conversion warnings #100
- General: Fix shadow warnings #90
- General: Fix numerous clang-tidy warnings #130 #131 #132 #133 #134 #135 #136 #137 #140 #141
- examples: Pass containers by reference for OpenMP backend #182
- src,test: Improve consistency and cleanup includes #118
- test: Fix missing namespace for
uint8_t
#142 - test: Pass containers by const reference to functors #158
- test: Fix double-promotion warnings in backend code #151
- test: Fix conversion warning and missing namespace #124
- test: Fix missing include in device_info cpp files #120
- bit: Fix potential negative bit shift in unit test #159
- bit,bitset: Fix missing post-conditions and remove unnecessary dependency #112
- bitset: Fix deprecated-copy warning #144
- compiler: Fix NVCC detection #155
- compiler,platform: Use unique numbers as internal macro definitions #139
- contract: Enforce user semicolon for all possible expansions #148 #150
- limits: Suppress long double device code warning with MSVC #178
- platform: Move
STDGPU_HAS_CXX_17
to compiler #146 - ranges: Fix compilation with 64-bit index type #157
- ranges: Fix compilation error with select functor #125
- deque,vector: Fix overflow in test #99
- doc: Fix several minor documentation bugs #164
- scripts: Use released thrust version #126
- cmake: Fix error with unspecified build type #179
- cmake: Fix parsing of thrust version #163
- cmake: Workaround bug in imported rocthrust target name #127
- cmake: Properly handle CUDA toolkit dependency #96
- cmake: Add missing dependency checks in package config #94
- cmake: Fix selection of header files for installation #93
- cmake: Fix inconsistent thrust detection across the backends #92
- CI: Fix codecov task #113
- CI: Fix potentially missing OpenMP runtime package #106
Deprecated Features
- bit:
ispow2()
,log2pow2()
,mod2()
- cstdlib:
sizedivPow2(std::size_t, std::size_t)
,sizediv_t
- memory:
safe_pinned_host_allocator
,default_allocator_traits
- mutex:
mutex_ref
- ranges:
device_range(T*, index_t)
,host_range(T*, index_t)
, non-constbegin()
andend()
member functions - unordered_map,unordered_set:
createDeviceObject(index_t, index_t)
,excess_count()
,total_count()
- CMake Configuration Options:
STDGPU_ENABLE_AUXILIARY_ARRAY_WARNING
,STDGPU_ENABLE_MANAGED_ARRAY_WARNING
,STDGPU_USE_FAST_DESTROY
,STDGPU_USE_FIBONACCI_HASHING