1. 22 Mar, 2018 1 commit
  2. 20 Mar, 2018 1 commit
  3. 11 Mar, 2018 4 commits
    • Swann Perarnau's avatar
      [feature] implement simple, working dma engine · 15cd651b
      Swann Perarnau authored
      This patch adds the basics for a dma interface, including
      type-dependent requests structures, and an API based on explicit
      copy/move calls.
      
      The APIs is flexible enough to deal with sync/async calls. The internal
      design is inspired by aml_area, with the goal that create/init stay type
      specific, but the core interactions are generic.
      15cd651b
    • Swann Perarnau's avatar
      [refactor/feature] change tilings to use uuids · 8a150cf2
      Swann Perarnau authored
      Using variable arguments on the tile id for retrieving tiling info makes
      the API difficult to use when more than one tile must be used at the
      same time.
      
      We change the API to use a tileid, with the assumption that any valuable
      tiling will be able to define a workable uuid scheme.
      8a150cf2
    • Swann Perarnau's avatar
      [features] add missing macros and prototypes · 24a640a2
      Swann Perarnau authored
      A few missing declarations in aml.h, to make it easier to deal with the
      library.
      24a640a2
    • Swann Perarnau's avatar
      [fix] area_binding should create the binding · f79e5b43
      Swann Perarnau authored
      As we cannot find out in advance the binding an area uses, it is not
      possible to use a correctly allocated pointer to aml_area_binding.
      
      Fixes a segfault we observed outside of current unit-tests.
      f79e5b43
  4. 08 Mar, 2018 7 commits
    • Swann Perarnau's avatar
      [feature] areas can now provide their binding · 1e0d24b8
      Swann Perarnau authored
      Allows memory movement logic to ask a target area how memory should be
      bound to it.
      
      Note that it would be safer in the long term to have areas take a
      binding at creation time, and translate to nodemasks internally.
      1e0d24b8
    • Swann Perarnau's avatar
      [feature] add init functions to area_linux · 085b9762
      Swann Perarnau authored
      Still the same schema, although it looks a bit messier on linux because
      of all the options needed.
      085b9762
    • Swann Perarnau's avatar
      [feature] add proper init functions for area_posix · 8d2cc6ae
      Swann Perarnau authored
      Same schema as for arena, we create init functions for each type of
      area, to make sure that users know what they are working with.
      
      The functions are easy here, as posix is more an allocator than anything
      proper.
      8d2cc6ae
    • Swann Perarnau's avatar
      [feature] add proper arena init · 261755e7
      Swann Perarnau authored
      Add arena_jemalloc initialization, working the same way than tiling and
      binding initializations.
      
      We made the choice of not building generic arena allocation functions,
      as the benefit of that isn't exactly obvious right now.
      
      Also, we want users to understand the kind of arenas and areas they are
      manipulating.
      261755e7
    • Swann Perarnau's avatar
      [refactor] rename create/purge to avoid confusion · 2ae0aedb
      Swann Perarnau authored
      create -> register
      purge -> deregister
      
      create is a name we are using elsewhere for dynamic allocation.
      And those names match better what we are doing.
      2ae0aedb
    • Swann Perarnau's avatar
      [feature] Add initial tiling and binding support · bcb6c923
      Swann Perarnau authored
      Implement 1d tiling and simple binding support. The idea is to allow
      an application to explain the AML how data should be organized, and to
      be able to reuse this info when dealing with memory movement.
      
      The current interfaces are not great, but they work.
      bcb6c923
    • Swann Perarnau's avatar
      [feature] ignore all executables · 000e11d1
      Swann Perarnau authored
      Use a gitignore trick to ignore all files that don't have an extension.
      That will cover all binary files generated by make on Linux.
      000e11d1
  5. 01 Feb, 2018 3 commits
    • Swann Perarnau's avatar
      [fix] Make install rule and pkg-config data valid · ddec9292
      Swann Perarnau authored
      The jemalloc subpackage install rule is too big, and includes stuff that
      we don't need to add to the target system. This patch makes sure we only
      install the valuable stuff.
      
      We also correct the pkg-config data to match the new installs.
      ddec9292
    • Swann Perarnau's avatar
      [fix] Make jemalloc link properly with aml · f8e57eeb
      Swann Perarnau authored
      Using both --with-jemalloc-prefix=jemk_ and --with-install-suffix=-aml
      ensures that the libjemalloc we build for our internal use has unique
      functions names and library names.
      
      This patch fixes a problem with the libtool configuration, where we had
      to link a static jemalloc library into the shared aml library to make
      everything work. Instead, we can now use the proper LIBADD variables
      with the unique library.
      
      Note that with this patch the `make check` target requires a `make
      install` beforehand.
      f8e57eeb
    • Swann Perarnau's avatar
      [refactor] new version of the API · a002945c
      Swann Perarnau authored
      This is the result of countless interations on the internal design of
      the various building blocks we want to have for this library.
      
      At this point, I hope that this is stable enough. There are still some
      tweaks needed here and there, but the core is implemented AND tested.
      
      Some of the design decisions made:
      - all functions are public, but most are not meant to be used directly.
      - intended public functions take "generic" structs as arguments
      - intended actual implementations rely on more complex structures, with
      their own family of data and operators.
      - split all objects between data and operator structs.
      
      Exemple:
      - area.c and arena.c are generic dispatch functions to call the actual,
        specific implementations.
      - struct aml_area and struct_aml_arena are the same.
      
      Currently implement:
      - 2 area types: posix (malloc) and linux (numa).
      - 1 arena type: jemalloc
      a002945c
  6. 25 Oct, 2017 1 commit
  7. 06 Oct, 2017 1 commit
    • Swann Perarnau's avatar
      [refactor] Implement new API, based on jemalloc · 66564c2f
      Swann Perarnau authored
      This is a redesign of the library, as a hierarchy of core objects
      implementing its various features. The idea is to create an API that is
      as flexible and customizable as possible, by exposing as much as
      possible of its internals, so that users can create customs versions
      easily.
      
      We also move away from memkind as a possible backend, opting instead to
      vendor the jemalloc interface and implement everything ourselves on top
      of that.
      
      We expect to start building the low-level pieces using hwloc as a
      backend soon, at least in terms of accessing available devices.
      66564c2f
  8. 23 Aug, 2017 2 commits
  9. 22 Aug, 2017 1 commit
    • Swann Perarnau's avatar
      [refactor] Rework code for better abstractions · a41b0412
      Swann Perarnau authored
      This is a rewrite of the existing code into a memory library exposing
      more of its internal abstractions. This refactoring is required to:
      - make progress faster by focusing on the core new features
      - abstract more of the underlying components and expose those
      abstractions
      - build upon existing libraries (memkind) for the internal stuff.
      
      Memkind is used as a crutch here, we do not intend to use it in the long
      term, as some of its internal are opposed to what we want (topology
      management in particular).
      
      Nevertheless, it currently provides a good allocator internally, and
      decent access to deep memory, for now.
      
      Over time, we figured out that the best way to build this API was to
      create several layers of APIs, each with more abstractions over the
      devices. At the same time, we want each layer to expose its internal
      mechanisms, so that a user can customize any of them.
      
      This is why we end up with areas and dma engines, and we will add in the
      future other stuff, like data decomposition and distribution methods, as
      well as direct support for "pipelining".
      a41b0412
  10. 21 Aug, 2017 1 commit
  11. 16 Aug, 2017 1 commit
  12. 27 Feb, 2017 1 commit
    • Swann Perarnau's avatar
      Implement non-transparent memory interface · 27252580
      Swann Perarnau authored
      This is a mmap-based, non-transparent version of the library, with a
      unit test checking that we can call move_pages properly from it.
      
      No node tracking performed. Memcpy not working.
      27252580
  13. 21 Feb, 2017 1 commit
  14. 30 Jun, 2016 1 commit
    • Swann Perarnau's avatar
      Add first working version: limit numa allocs · 80669c37
      Swann Perarnau authored
      This is the first working version of the library. It does very little:
      - only numa support
      - one allocation per node only
      - limited tests
      - limited set of functions
      
      Nevertheless, this gives a good idea of what the API should look like, and the
      kind of benchmarks we can write with it.
      80669c37
  15. 23 Jun, 2016 1 commit