Skip to content

Latest commit

 

History

History
288 lines (209 loc) · 9.54 KB

CHANGELOG.md

File metadata and controls

288 lines (209 loc) · 9.54 KB

Change Log / Release Log for mallocMC

3.0.0-dev

Date: not yet released

This is a major release including breaking changes on the interface and build system level as well as many new features and bug fixes.

Features

  • New algorithm FlatterScatter
  • New prototype GallatinCuda (CUDA-only wrapper of a recent proposal)
  • mallocMC.cuh header for convenient use in native CUDA applications
  • Modern CMake support and complete re-organisation of the file tree
  • Modern package management with CMake Package Manager (CPM)
  • New interface: Allocator takes a tag instead of an Acc
  • C++20 is required now.

Bug fixes

  • Memfence before releasing a chunk in ScatterAlloc (and FlatterScatter)
  • Fix compilation error with multiple accelerators

Maintenance:

  • Update alpaka to 1.2.0 + patches (latest develop branch)
  • Update tooling (clang-format, clang-tidy, ...)
  • Add pre-commit
  • Add rudimentary CI (additional coverage through PIConGPU)
  • Add decent test coverage for FlatterScatter and ScatterAlloc

2.6.0

Date: 2024-08-28

This is mostly a maintenance release. Years of production use in PIConGPU have surfaced a number of bugs and inconsistencies that are addressed. We will drop the 'crp' suffix in our version numbers because the original version (that we distinguished from via 'crp') is no longer maintained.

Features

  • Compatibility with C++20
  • Use runtime selected number of access blocks
  • Full support for CPU accelerators
  • Scatter: optimize page search algorithm
  • Scatter: optimize hash and allocation size
  • Scatter: add more informations to classname()

Bug fixes

  • Scatter: Various deadlocks, data races and inconsistencies
  • Compilation failure without alpaka_ACC_GPU_CUDA_ONLY_MODE set
  • Adjustments to the examples to compile and run cleanly again
  • Alignment violation in edge cases of small allocations fixed
  • Remove undefined behaviour in handling bit masks

Maintenance

  • Update to alpaka 1.1.0
  • Minor adjustments in the README
  • Scatter: Internal refactorings
  • CI fixes

2.5.0crp

Date: 2021-02-18

This release removes the native usage of CUDA by alpaka. Attention: This release depends on an unreleased alpaka 0.5.0dev version before the heavy alpaka namespace refactoring.

Changes to mallocMC 2.4.0crp

Features

  • Port to alpaka #173

Bug fixes

  • fix HIP support (warpsize, activemask, compile issues) #182
  • fix data race and printf issue #189
  • fix data races in Scatter.hpp #190
  • fix clang cuda compile #192

Misc:

  • Added alpaka subtree and switched to C++14 #176
  • Added 3rd party catch.hpp and made CMake find it #179
  • Update documentation after switch to alpaka #194
  • Update .clang-format and apply clang-format #197

Thanks to Bernhard Manfred Gruber and Rene Widera for contributing to this release!

2.4.0crp

Date: 2020-05-28

This release removes the Boost dependency and switched to C++11.

Changes to mallocMC 2.3.1crp

Features

  • Cleaning, remove Boost dependency & C++11 Migration #169

Bug fixes

  • Choose the value for the -arch nvcc flag depending on CUDA version #164 #165

Misc:

  • Travis CI: GCC 5.5.0 + CUDA 9.1.85 #170
  • Adding headers to projects and applied clang-tidy #171
  • clang-format #172

Thanks to Sergei Bastrakov, Bernhard Manfred Gruber and Axel Huebl for contributing to this release!

2.3.1crp

Date: 2019-02-14

A critical bug was fixed which can result in an illegal memory access.

Changes to mallocMC 2.3.0crp

Bug fixes

  • fix illegal memory access in XMallocSIMD #150

Misc:

  • CMake: Honor <packageName>_ROOT Env Hints #154

2.3.0crp

Date: 2018-06-11

This release adds support for CUDA 9 and clang's -x cuda frontend and fixes several bugs. Global objects have been refactored to separate objects on host and device.

Changes to mallocMC 2.2.0crp

Features

  • CUDA 9 support #144 #145
  • clang++ -x cuda support #133
  • add destructiveResize method #136
  • heap as separate object on host and device, no more globals #116
  • use BOOST_STATIC_CONSTEXPR where possible #109

Bug fixes

  • fix uninitialized pointers #110 #112
  • fix crash in getAvailableSlots #106 #107
  • Fix uint32_t cstdint #104 #105
  • fix missing boost include #142
  • fix includes from C headers #121
  • fix missing local size change in finalizeHeap() #135
  • check heap pointer in Scatter creation policy #126

Misc:

  • better link usage and install docs #141
  • self consistent allocator #140
  • rename some shadowed variables in C++11 mode #108
  • properly enforce -Werror in Travis-CI #128
  • update Travis-CI image #119
  • improved docs #125 #127

Thanks to Carlchristian Eckert, René Widera, Axel Huebl and Alexander Grund for contributing to this release!

2.2.0crp

Date: 2015-09-25

This release fixes some minor bugs that occured after the release of 2.1.0crp, adds some documentation and improves the interoperability with other projects and build systems. We closed all issues documented in Milestone 2.2.0crp: Stabilizing the release

Changes to mallocMC 2.1.0crp

Features

  • the interface now provides the host function HeapInfoVector getHeapLocations() to obtain information about the location and size of existing mallocMC-heaps #86

Bug fixes

  • the function getAvailableSlots was always required in the policy classes, although the implementations might not provide it #89

Misc:

2.1.0crp

Date: 2015-02-11

This release fixes some bugs that occured after the release of 2.0.1crp and reduces the interface to improve interoperability with the default CUDA allocator. We closed all issues documented in Milestone New Features

Changes to mallocMC 2.0.1crp

Features

  • the possibility to overwrite the default implementation of new/delete and malloc/free was removed #72. This changes the interface, since users are now always forced to call mallocMC::malloc() and mallocMC::free(). This is intended to improve readability and allows to use the CUDA allocator inside mallocMC.
  • the policy Scatter now places the onpagetables data structure at the end of a page. This can greatly improve performance when using large pages and resetfreedpages=true #80

Bug fixes

  • in the policy Scatter, fullsegments and additional_chunks could grow too large in certain configurations #79

Misc:

2.0.1crp

Date: 2015-01-13

This release fixes several bugs that occured after the release of 2.0.0crp. We closed all issues documented in Milestone Bugfixes

Changes to mallocMC 2.0.0crp

Bug fixes

  • page table metadata was not correctly initialized with 0 #70
  • freeing pages would not work under certain circumstances #66
  • the bitmask in a page table entry could be wrong due to a racecondition #62
  • not all regions were initialized correctly #60
  • getAvailableSlots could sometimes miss blocks #59
  • the counter for elements in a page could get too high due to a racecondition #61
  • Out of Memory (OOM) Policy sometimes did not recognize allocation failures correctly #67

Misc:

2.0.0crp

Date: 2014-06-02

This release introduces mallocMC, which contains the previous algorithm and much code from ScatterAlloc 1.0.2crp. The project was renamed due to massive restructurization and because the code uses ScatterAlloc as a reference algorithm, but can be extended to include other allocators in the future. We closed all issues documented in Milestone Get Lib ready for PIConGPU

Changes to ScatterAlloc 1.0.2crp

Features

  • completely split into policies #17
  • configuration through structs instead of macro #17
  • function getAvailableSlots() #5
  • selectable data alignment #14
  • function finalizeHeap() #11

Bug fixes:

  • build warning for cmake #33

Misc:

1.0.2crp

Date: 2014-01-07

This is our first bug fix release. We closed all issues documented in Milestone Bug fixes

Changes to 1.0.1

Features:

  • added travis-ci.org support for compile tests #7

Bug fixes:

  • broken cmake/compile #1
  • g++ warnings #10
  • only N-1 access blocks used instead of N #2
  • 32bit bug: allocate more than 4GB #12

Misc: See the full changes at https://github.com/ComputationalRadiationPhysics/scatteralloc/compare/1.0.1...1.0.2crp