1. 30 Aug, 2019 3 commits
    • Swann Perarnau's avatar
      [feature] add extra argument to dma operator · 7eb3d520
      Swann Perarnau authored
      Some operators will need an extra argument (like transforms).
      7eb3d520
    • Swann Perarnau's avatar
      [feature] extend dma to support custom operators · 42d0d493
      Swann Perarnau authored
      Change the DMA generic API to allow for a custom function pointer to
      perform a specific request. Requires us to change a bit the underlying
      management structures.
      42d0d493
    • Nicolas Denoyelle's avatar
      [feature] add area options on mmap · c3a501b9
      Nicolas Denoyelle authored
      ## Change area mmap interface to include implementation specific options.
      
      ### Summary of changes in mmap interface
      Previous mmap interface was:
      ```
      int aml_area_mmap(struct aml_area *area, void*ptr, size_t size);
      ```
      First, in this interface, the purpose of ptr is fuzzy as it is implementation specific and neither
      the user nor aml generic interface knows what to do with it in a generic way.
      Second, this interface does not allow for extensive options. In particular, linux mmap allow
      multiple arguments that cannot be elegantly passed with this interface.
      Instead we aml_mmap replace with this new interface:
      ```
      int aml_area_mmap(struct aml_area *area, size_t size, struct aml_area_options *options);
      ```
      Where the last field clearly state it is used for options and can always be NULL so that it can explicitly be used without knowledge of options implementation.
      c3a501b9
  2. 13 Aug, 2019 1 commit
    • Swann Perarnau's avatar
      [refactor] redesign DMAs to support layouts · d8f56ffc
      Swann Perarnau authored
      Refactor the DMA API to work on layouts internally. The resulting code
      ends up simpler for most cases, as long as we add a generic copy
      function.
      
      One things missing:
      - a good API to expose the collection of copy functions we have.
      
      One question not solved:
      - should the DMA ask for a copy function on each operation ?
      d8f56ffc
  3. 15 Jul, 2019 1 commit
  4. 09 Apr, 2019 4 commits
  5. 29 Mar, 2019 1 commit
  6. 27 Mar, 2019 1 commit
  7. 20 Mar, 2019 2 commits
  8. 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
  9. 15 Feb, 2019 1 commit
  10. 06 Aug, 2018 1 commit
  11. 24 Jul, 2018 1 commit
  12. 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
  13. 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
  14. 23 Aug, 2017 1 commit
  15. 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
  16. 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