Skip to content

alpaka-group/mallocMC

Repository files navigation

mallocMC

mallocMC: Memory Allocator for Many Core Architectures

This project provides a framework for fast memory managers on many core accelerators. It is based on alpaka to run on many different accelerators and comes with multiple allocation algorithms out-of-the-box. Custom ones can be added easily due to the policy-based design.

Usage

Follow the step-by-step instructions in Usage.md to replace your new/malloc calls with a blacingly fast mallocMC heap! 🚀

Install

mallocMC is header-only, but requires a few other C++ libraries to be available. Our installation notes can be found in INSTALL.md.

Contributing

Rules for contributions are found in CONTRIBUTING.md.

On the Algorithms

This library was originally inspired by the ScatterAlloc algorithm, forked from the ScatterAlloc project, developed by the Managed Volume Processing group at Institute for Computer Graphics and Vision, TU Graz (kudos!). The currently shipped algorithms are using similar ideas but differ from the original one significantly.

From the original project page (which is no longer existent to the best of our knowledge):

ScatterAlloc is a dynamic memory allocator for the GPU. It is
designed concerning the requirements of massively parallel
execution.

ScatterAlloc greatly reduces collisions and congestion by
scattering memory requests based on hashing. It can deal with
thousands of GPU-threads concurrently allocating memory and its
execution time is almost independent of the thread count.

ScatterAlloc is open source and easy to use in your CUDA projects.

Our Homepage: https://www.hzdr.de/crp

Versions and Releases

Official releases can be found in the Github releases. We try to stick to semantic versioning but we'll bump the major version number for major features. Development happens on the dev branch. Changes there have passed the CI and a code review but we make no guarantees about API or feature stability in this branch.

Literature

Just an incomplete link collection for now:

  • Paper by Markus Steinberger, Michael Kenzel, Bernhard Kainz and Dieter Schmalstieg

  • 2012, May 5th: Presentation at Innovative Parallel Computing 2012 by Bernhard Kainz

  • Junior Thesis DOI by Carlchristian Eckert (2014)

License

We distribute the modified software under the same license as the original software from TU Graz (by using the MIT License). Please refer to the LICENSE file.