1. 09 Apr, 2019 2 commits
    • Swann Perarnau's avatar
      [refactor] convert dma to new erros, create · 1a4d44d0
      Swann Perarnau authored
      Implement #31 for dma.
      Improve error management.
      Checkpatch dma
      1a4d44d0
    • Swann Perarnau's avatar
      [refactor] convert area to new errors, create · 9059049c
      Swann Perarnau authored
      Convert area/area_linux to new error handler.
      Implement #31 for area.
      Checkpatch area
      
      Note that area_linux is still using a dynamic data structure no matter
      what: a bitmask to the set of authorized nodes. The conversion to
      aml_bitmap wouldn't help as there's no default value available for all
      nodes on that type (similar to numa_all_nodes_ptr).
      9059049c
  2. 01 Apr, 2019 1 commit
  3. 29 Mar, 2019 3 commits
  4. 27 Mar, 2019 1 commit
  5. 26 Mar, 2019 3 commits
  6. 22 Mar, 2019 1 commit
    • Swann Perarnau's avatar
      [refactor] use autoconf + m4 for version mngmt · d8803390
      Swann Perarnau authored
      Use m4 to define autoconf-level version variables, following the naming
      scheme of semver.org
      
      To make use of these variables in the headers and sources, a
      generated-header is added in aml/utils/version.h
      
      Also add a simple test for that part of the lib.
      d8803390
  7. 20 Mar, 2019 2 commits
  8. 14 Mar, 2019 1 commit
  9. 13 Mar, 2019 1 commit
    • Nicolas Denoyelle's avatar
      [refactor] reorganize repository · 2ad4488c
      Nicolas Denoyelle authored
      - create one directory per building block in src and include
      - keep one directory for tests, \
        otherwise automake make them "test suites"
      - move to AC_OPENMP, which is from autoconf 2.62 (2008)
      2ad4488c
  10. 08 Mar, 2019 1 commit
    • Swann Perarnau's avatar
      [fix] Embed custom jemalloc into libaml · ac85bab6
      Swann Perarnau authored
      Force libtool to static link the PIC version of our jemalloc import into
      libaml, making libaml standalone. This requires us to test some
      additional libraries in our own configure (pthread, and dlopen).
      
      This also solves the long-standing issue of `make check` only working after
      `make install`, while removing our custom jemalloc from the installed
      libraries.
      
      Fixes #26.
      ac85bab6
  11. 15 Feb, 2019 1 commit
  12. 27 Aug, 2018 2 commits
    • Swann Perarnau's avatar
      [fix] fixup unit tests · c759c9df
      Swann Perarnau authored
      Mbind is giving us trouble again, will need to spend time looking at it
      carefully.
      c759c9df
    • Swann Perarnau's avatar
      [feature/refactor] add tileid function · 55500ab0
      Swann Perarnau authored
      Instead of asking the user to provide the offsets into a tiling, add a
      function providing a tileid. This tileid corresponds to the in-memory
      order of tiles, making the tilestart functions a lot simpler.
      
      We still need to split the tileid for tilestart because scratchpads
      create requests based on tileids.
      
      Also add a unit test for tiling_2d, to make sure we're not doing
      anything crazy.
      55500ab0
  13. 20 Aug, 2018 1 commit
  14. 20 Jul, 2018 1 commit
    • Swann Perarnau's avatar
      [refactor] move functional tests, proper OpenMP · 51167d12
      Swann Perarnau authored
      We are starting to work on benchmarks to evaluate the usefulness of this
      library. Instead of integrating them into the testing infrastructure, it
      makes more sense for them to have their own directory and a different
      way of handling them.
      
      This patch:
       - creates a benchmark directory for actual codes that we want to use as
         benchmarks of our library.
       - moves functional tests into it.
       - add proper OpenMP detection for these codes
      51167d12
  15. 02 Jul, 2018 2 commits
  16. 30 Mar, 2018 4 commits
    • Swann Perarnau's avatar
      [fix] enforce type convertion, better pointer management · 54d0b418
      Swann Perarnau authored
      Fix small issues with type convertion across several tests,
      as a change of architecture might trigger bad behavior in
      variadic functions.
      54d0b418
    • Swann Perarnau's avatar
      [test] add openmp version of mt stream_add · 956d9453
      Swann Perarnau authored
      This is a second type of use for the scratchpad: a single master
      thread is responsible for launching all data movements, but the tiles
      are worked on in parallel. We support this model by using a sequential
      scratch on top of a parallel dma.
      956d9453
    • Swann Perarnau's avatar
      [refactor] add openmp version of stream_add_pth · 21d3724e
      Swann Perarnau authored
      Add openmp version of the previous functional test. We also rename them,
      to mark the fact that those two tests are designed to use a *single-thread*
      to run the kernel across an entire tile.
      21d3724e
    • Swann Perarnau's avatar
      [refactor] make use of functional tests again · f47dc685
      Swann Perarnau authored
      This patch reintroduce the first functional test, a stream add
      implementation using pthreads for parallelism. We make use of our
      scratch_par implementation to implement a pipelined version of the
      application, where each worker thread is using its own batch of tiles,
      and migrating data asynchronously.
      f47dc685
  17. 28 Mar, 2018 1 commit
    • Swann Perarnau's avatar
      [feature] add a pthread based scratchpad · fa51aea5
      Swann Perarnau authored
      Add a scratchpad that creates one pthread per request, to call
      synchronous dma operations.
      
      The intent is to end up with a cross product of programming language
      support between dma and scratch:
      - scratch_par + dma_seq gives users parallel scratch requests
      - scratch_seq + dma_par gives users sequential access to parallel moves
      
      The two other options don't make as much sense though.
      fa51aea5
  18. 27 Mar, 2018 1 commit
    • Swann Perarnau's avatar
      [feature] add generic vector type to library · 72c8508d
      Swann Perarnau authored
      Add a generic vector type to the library, with some special features:
      - the elements are embedded in the vector, and not pointers
      - each element must include an int field that is used as a "key"
      - the element has a "null" value for its key, used to indicate that this
      element of the vector is null.
      - add/remove functions provide access to a new element/free it from the
      vector, but don't "destroy" it.
      - resize on add is exponential.
      
      This patch includes implementation and unit test.
      72c8508d
  19. 26 Mar, 2018 2 commits
    • Swann Perarnau's avatar
      [feature] make scratchpad track its own tiles · be88fe46
      Swann Perarnau authored
      Move the scratchpad tiles into an internal concern:
      - the scratchpad does the allocation
      - the scratchpad tracks available tiles internally
      - the user can ask for the scratch baseptr.
      
      This is necessary to abstract move-based scratchs, and to remove from the
      user responsibility of maintaining tiling and baseptr tracking.
      
      We still fail-hard when tiles are not available, and the design is not
      thread safe. But we are getting there.
      be88fe46
    • Swann Perarnau's avatar
      [feature] add sequential, copy-based scratchpad · 73b57ae5
      Swann Perarnau authored
      This is the initial implementation and validation of a scratchpad: a
      logic unit that handles tracking data across a "main" area and a
      "scratch" area.
      
      The API and internals will probably change again soon, as there's no
      clear way to implement a move based scratchpad on this one.
      
      Note that this implementation doesn't do any tracking, not really, and
      that's the next step.
      73b57ae5
  20. 23 Mar, 2018 3 commits
  21. 11 Mar, 2018 1 commit
    • 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
  22. 08 Mar, 2018 5 commits
    • 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