stdgpu v1.3.0 Release Notes

Release Date: 2020-06-02 // almost 4 years ago
  • 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 and floor2 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* and destroy* unit tests #175
    • platform: Add automatic dispatching of backend-specific definitions #119
    • platform: Change detection of device code for OpenMP #174
    • ranges: Add size() and empty() functions as well as additional constructors #122
    • ๐Ÿ—„ ranges: Add index64_t constructor and deprecate index_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-const begin() and end() 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

Previous changes from v1.2.0

  • This version of stdgpu introduces a lightweight backend system including CUDA and OpenMP backends, the integration of Azure Pipelines CI as well as codecov CI, support for the Clang compiler, removal of unnecessary requirements to the container's value types, as well as significant improvements to the test coverage and the documentation.

    ๐Ÿ†• New Features & Enhancements

    • General: Add backend system #31
    • General: Add OpenMP backend #32 #59
    • ๐Ÿ‘ท General: Add Azure Pipelines CI #34 #37 #41
    • General: Add code coverage report generation #65
    • ๐Ÿ‘ท General: Add codecov CI task #72
    • ๐Ÿ‘ General: Add Clang support #40
    • General: Add changelog file #48
    • General: Add contributing file #49
    • General: Add issue templates #81
    • ๐Ÿšš Container: Remove DefaultConstructible requirement from template type #58
    • Container: Add get_allocator() function #56
    • bitset: Add further missing member functions #53
    • deque: Add at(), shrink_to_fit() and remove CopyAssignable requirement from type T #45
    • memory: Add safe_host_allocator and deprecate safe_pinned_host_allocator #36
    • memory: Add and use destroy* functions #60
    • ๐Ÿ—„ memory: Add allocator_traits and deprecate old specialized version #61 #66
    • ๐Ÿ—„ mutex: Add mutex_array::reference class and deprecate mutex_ref #55 #63
    • unordered_map,unordered_set: Add single-parameter createDeviceObject() function #46 #52
    • vector: Add at(), shrink_to_fit() and remove CopyAssignable requirement from type T #44
    • README: Improve consistency with doxygen version #42
    • README: Add badges #35 #79 #85 #86
    • README,doc: Significantly improve description and readability #50
    • doc: Include config.h and cleanup macro definitions #47
    • scripts: Improve console output and internal structure #33
    • scripts: Port install script to native CMake install command-line interface #82
    • ๐Ÿ— test: Adjust test array sizes and build flags #64
    • โœ… test: Explicitly instantiate templates #70
    • โœ… test: Also include deprecated functions into unit tests #80
    • โœ… test: Improve coverage of several (member) functions #74 #75 #76 #77 #78 #84

    ๐Ÿ› Bug Fixes

    • README: Fix alignment of title #43
    • โœ… atomic: Fix compare_exchange and add more operators as well as tests #83
    • cmake: Fix minimum required version #71
    • deque: Fix compilation error when calling device_range() #67
    • unordered_base: Fix compilation errors with CUDA backend #69
    • unordered_map,unordered_set: Fix delegate calls to unordered_base #68
    • vector: Disallow non-defined bool specialization #57

    ๐Ÿ—„ Deprecated Features

    • ๐Ÿ“Œ memory: safe_pinned_host_allocator, default_allocator_traits
    • mutex: mutex_ref
    • unordered_map,unordered_set: createDeviceObject(index_t, index_t), excess_count(), total_count()